crc算法的应用 CRC16 CRC32
2023-12-26 10:48:13
提到crc算法,可能比较陌生,但是在日常开发中,有如下应用
本质是一个哈希函数,用于文件校验处理。
CRC16
redis集群使用了crc16 来计算对应的哈希值来计算与 16384 取模,确定当前 key 所在的哈希槽,从而确定所在的节点,做到数据分区,突破单节点请求处理的限制。
HASH_SLOT = CRC16(key) mod 16384
https://github.com/redis/redis/blob/7.2.3/src/crc16.c
redis 的 crc16 源码
使用场景
按位计算
程序空间十分苛刻但 CRC 计算速度要求不高的微控制器系统按字节计算
程序空间较大且 CRC 计算速度要求较高的计算机或微控制器系统,半字节计算
程序空间不太大,且 CRC 计算速度又不可以太慢的微控制器系统。
CRC32
一般在压缩文件里见到的多,在压缩完成在使用压缩文件打开会有 CRC?一列。
使用场景
主要在压缩方面
java 实现
开源组件里的引用
hadoop
kafka
java 自带
java.util.zip.CRC32
在 java 9 之前具体算法细节在 jvm 实现,通过 native 进行调用,在 java 9 中重写了该类,底层使用了 intel 的 SSE4.2 指令集。
参考链接
https://jingyan.baidu.com/article/ce4366493cd4157672afd35b.html
https://baike.baidu.com/item/CRC32/7460858
https://www.cnblogs.com/wql025/p/14430778.html
https://www.cnblogs.com/wulinn/p/11607114.html
文章来源:https://blog.csdn.net/zlpzlpzyd/article/details/135213415
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!