检查网上下载“学习资料”的完整性,用这招就够了
当今时代无数老师们的珍贵资料,每一份都值得大家潜心学习。但是时间宝贵,要如何才能保证学习资料的正确性是第一重要的事情。
二狗子有一个专门存放“学习资料”的服务器,同时也会定期在本地电脑中备份相同的资料。最近,朋友问二狗子要一份“高数的自我修养”,二狗子就将服务器上的外链发给了他,并炫耀了一下自己服务器性能有多强,下载速度良心。朋友很是开心,同样炫耀了一下他的 5G 手机,并给自己的下载时速截图,P 上了一个大拇指表情。
不完整的“学习资料”
“高数的自我修养.zip”在谈笑间下载完成。朋友也掀开捂好的被窝,点开了资料,关上了灯开始学习。
“欢迎您收看本次天气预报,我们明天再见!”
很明显,这份“学习资料”有问题,30 分钟了连反双曲线函数都没讲到。
朋友非常愤怒,指责二狗子肯定是同班同学派来阻止他学习进步的内鬼。但是二狗子肯定不是这样的人。二狗子还去翻看了本地的学习资料,确确实实详详细细的介绍了“反双曲线函数原理和使用。”
那么这个内鬼是谁呢?
二狗子仔细分析了下,觉得有以下几种可能:
1、朋友在下载时,有部分数据丢失了;
2、对应文件中毒了,有部分文件损坏了;
3、朋友的同班同学为了防止他学习进步,黑进了服务器,篡改对应文件;
朋友无法好好学习的悲痛告诉我们一个经验:从网上下载任何有价值的数据,尤其是“学习资料”,都需要检查下载文件的完整性,确保下载的文件与原始文件完全相同。
当你需要确保文件完整性的时候除了看一遍这个文件,还有其他简单的方法么?这就要说到 MD5 算法了。
什么是 MD5 算法
从字面上理解,MD5 即代表信息摘要算法 5。
它第一次出现是在 1992 年 8 月,罗纳德·李维斯特向互联网工程任务组(IETF)提交了一份重要文件,详细描述了这种算法的原理。由于这种算法的公开性和安全性,在 90 年代被广泛使用在各种程序语言中,用以确保资料传递无误。该算法大致实现思路是接受随机数据(文本或二进制)作为输入值,并生成固定长度的“ 哈希值”作为输出值。输入数据可以是任何大小或长度,但是输出“哈希值”的长度始终是固定的。
从上面的示例中可以看到,就算输入的值长度都不相同,该算法都会生成固定大小(32 位十六进制)的 MD5 哈希值,举例:6e854a5fd2a642730994b36f90621782
哈希值对于每个文件都是唯一的,即便文件大小和类型相同,不同的文件也会拥有不同的 MD5 哈希值。因此只需要对比二狗子的“高数的自我修养.zip”的 MD5 值和朋友下载文件 MD5 值,就可以知道文件是否是同一个。
具体操作就是,二狗子先给服务器上的学习资料生成对应的 MD5 哈希值。当朋友将文件下载到 PC 后,再次为下载的文件生成一段 MD5 哈希值。这两个哈希值如果是一致的,就代表学习资料是完整的,没有任何数据丢失。反之则代表资料是错误的。一顿对比操作后,朋友发现确实是下载的文件不一样,二狗子重新给朋友发送了正确的学习资料,这下他终于可以好好进步了。
自从闹了这一出,二狗子在上传和下载学习资料时,也养成了比对 MD5 哈希值的习惯,就再也不用担心拿错资料,安心勤奋地学习,最终考上了心爱的大学,找到了满意的工作,赚到了足够的工资,下单了所有文件全部使用 MD5 校验的又拍云存储。
往期技术文章都在微信同步分享,可以添加微信:upyun0001
推荐阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
作者 | 车漾(阿里云高级技术专家)、顾荣(南京大学 副研究员) 导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7 年的不断开发迭代,支撑大数据处理场景的数据统一管理和高效缓存功能日趋成熟。然而,随着云原生人工智能(Cloud Native AI)的兴起,灵活的计算存储分离架构大行其道。在此背景下,用户在云上训练大规模深度学习模型引发的数据缓存需求日益旺盛。为此,阿里云容器服务团队与 Alluxio 开源社区和南京大学顾荣老师等人通力合作寻找相关解决方案,当前已经提供 K8s 上运行模型训练数据加速的基础方案,包括容器化部署、生命周期管理以及性能优化(持续中),从而降低数据访问高成本和复杂度,进一步助力云上普惠 AI 模型训练。 AI 训练新趋势:基于 Kubernetes 的云上深度学习 1. 背景介绍 近些年,以深度学习为代表的人工智能技术取得了飞速的发展,正落地应用于各行各业。随着深度学习的广泛应用,众多领域产生了大量强烈的高效便捷训练人工智能模型方面的需求。另外,在云计算时代,以 Docker、Kubernetes 以主的容器及其编排...
- 下一篇
Node接入层可视化逻辑编排,还可以这样做?
背景:Node前后端分离带来的变化 2016年跨境供应链体验技术部经历了从Java webx MVC技术架构演进到Node前后端分离的技术架构。 前后端分离优势 前后端分离以后,Node服务端扮演了web接入层的角色,起到了web端和Java微服务端的桥梁作用,从架构层解决了以下问题: VM层前后端耦合严重(技术域、物理层); 开发职责边界不清;开发环境重度依赖、协同效率低下; 时常引发质量问题; 技术栈的耦合,不利于前端体验、性能优化方面的工作。 前后端分离新问题 但技术没有银弹,每一次系统架构升级,必然也会带来新的问题和挑战。例如 线上问题,排查链路变长,重心慢慢转向前端。(该部分,我们团队也孵化出了扁鹊平台,用于实时诊断全链路Node异常日志) Node前后端分离后,前端代码自然而然也就拆分成了Node端开发和web端开发。前端整体工作量大概上涨了10-20%(node端开发),且node端开发工作相对简单,核心、复杂的逻辑依旧在web端(后面会解释为什么node端的开发相对web端简单)。 前端同学开始需要关心更多领域的问题,包括应用运维、服务端性能评估、水平鉴权等。...
相关文章
文章评论
共有0条评论来说两句吧...