当前位置:   article > 正文

crc算法的应用 CRC16 CRC32_crc演算应用

crc演算应用

目录

CRC16

使用场景

CRC32

使用场景

java 实现

开源组件里的引用

java 自带


提到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

https://github.com/apache/hadoop/blob/master/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/PureJavaCrc32C.java

kafka

https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java

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://zhuanlan.zhihu.com/p/567234595

https://blog.51cto.com/u_16175513/7148293

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/683708
推荐阅读
相关标签
  

闽ICP备14008679号