- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要通过网络传输大文件,并且需要每小时为它们创建校验和。所以生成校验和的速度对我来说至关重要。
我无法使 zlib.crc32 和 zlib.adler32 在 Windows XP Pro 64 位机器上处理大于 4GB 的文件。我怀疑我在这里达到了 32 位限制?使用 hashlib.md5 我可以获得结果,但问题是速度。为 4.8GB 的文件生成 md5 大约需要 5 分钟。任务管理器显示该进程仅使用一个核心。
我的问题是:
PS:我正在研究类似于“ Assets 管理”系统的东西,有点像 svn,但 Assets 由大型压缩图像文件组成。这些文件有微小的增量变化。检测更改和错误检测需要哈希/校验和。
最佳答案
这是算法选择问题,而不是库/语言选择问题!
似乎主要考虑两点:
显然,第二个问题的答案类似于“允许某些假阴性”,因为相对于 4Gb 消息,任何 32 位散列的可靠性,甚至在中度嘈杂的 channel 中,实际上并不是绝对的。
假设可以通过多线程改进 I/O,我们可以选择不需要顺序扫描完整消息的哈希。相反,我们也许可以并行处理文件,对各个部分进行散列处理,然后组合散列值或附加它们,以形成更长、更可靠的错误检测设备。
下一步可能是将这种文件处理形式化为有序的部分,并按原样传输它们(在收件人端重新粘合在一起)。这种方法,连同有关文件生成方式的附加信息(例如,它们可能会像日志文件一样被追加专门修改),甚至可能允许限制所需的哈希计算量。这种方法增加的复杂性需要权衡快速 CRC 计算的愿望。
旁注:Alder32 不限于低于特定阈值的消息大小。它可能只是 zlib API 的限制。 (顺便说一句,我找到的关于 zlib.adler32 的引用文献使用了一个缓冲区,而且......在我们的大量消息的上下文中要避免这种方法,有利于流式处理:从文件中读取一点,计算,重复。 .)
关于python - 在 python 中为大文件创建校验和的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532720/
如何在 PHP 中生成 CRC-8 校验和? 最佳答案 function crcnifull ($dato, $byte) { static $PolyFull=0x8c; for ($i=0
我正在编写代码来使用 32 位无符号整数计算 CRC16。当尝试打印执行 CRC 操作的 XOR 函数的返回值时,它总是打印 0。我尝试了各种调试方法,例如打印语句,但是,我似乎无法弄清楚! 这是我的
ThinkPHP3.2.3验证码显示、刷新、校验 ,具体如下: 显示验证码 首先在Home/Controller下创建一个公共控制器PublicController
我想将自定义验证绑定(bind)到 TimePicker 自定义控件,但下面的代码显示“无法将内容添加到 TimePicker 的对象类型。”。
目录 Spring 校验(validator,JSR-303)实现 什么是JSR-303规范 与Spring MVC结合 实体类添加
导包和配置 导入 JSR 303 的包、hibernate valid 的包 ?
我是一名优秀的程序员,十分优秀!