crc算法的应用 CRC16 CRC32

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305318.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaSwing车辆租赁管理系统

一、 引言 车辆租赁管理系统是一种便捷的解决方案,用于有效管理汽车租赁业务。本博客将介绍一个基于Java Swing的车辆租赁管理系统的开发,并展示相应的数据库设计。 二、 开发环境 Java Swing MySQL数据库 三、 数据库设计 在MySQL数据库中&#xf…

【C语言】程序练习(二)

大家好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、运算符练习 1 算术运算符 1.1 练习题: 2 自加自减运算符 3 关系运…

最新AI系统ChatGPT网站系统源码,Midjourney绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图+思维导图一站式解决方案

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

射频PCB电路布局设计及布线注意事项

在电子产品和设备中,电路板是一个不可缺少的部件,它起着电路系统的电气和机械等的连接作用。如何将电路中的元器件按照一定的要求,在PCB上排列组合起来,是PCB设计师的主要任务之一。布局设计不是简单的将元器件在PCB上排列起来&am…

【ZYNQ】教你用 Vivado HLS 快速设计一个 IP

Xilinx 推出的 Vivado HLS 工具可以直接使用 C、C或 System C 来对 Xilinx 系列的 FPGA 进行编程,从而提高抽象的层级,大大减少了使用传统 RTL 描述进行 FPGA 开发所需的时间。 Vivado HLS 的功能简单地来说就是把 C、C 或 SystemC 的设计转换成 RTL 实…

分布式事务的8种解决方案(荣耀典藏版)

大家好,我是月夜枫,在上篇文章中,我们已经谈到了分布式中至关重要的两个理论:CAP 理论和 BASE 理论。 今天将带大家探讨分布式事务里的“八奇技”,帮助大家在实际的分布式系统中更好地运用事务。 时光穿梭机&#xff…

Redis缓存雪崩、缓存击穿、缓存穿透

1. 什么是缓存雪崩 当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,…

CodeWhisperer——轻松使用一个超级强大的工具

CodeWhisperer 简介 CodeWhisperer是亚⻢逊云科技出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。 CodeWhisperer有以下几个主要用途: 解决编程问题,提供代码建议,学习编程知识等等,并且CodeWhisper…

第一节 初始化项目

系列文章目录 第一节 初始化项目 文章目录 操作步骤 总结 操作步骤 打开cmd 输入 vue ui 在打开的网页中点击“创建”,复制文件夹路径并粘贴点击“在此创建新项目” 输入项目名称 点击下一步选择手动配置 选择babel、router、vuex、css pre-processors、 linter建…

大数据与人工智能|万物皆算法(第三节)

要点一:数据与智能的关系 1. 一切的核心都是数据,数据和智能之间是密切相关的。 数据是对客观现实的描述,而信息是数据转化而来的。 例如,24是数据,但说“今天的气温是24摄氏度”是信息,而说“班可以分成24…

Unity TextMeshPro中文字体的转换与显示

Unity TextMeshPro功能非常强大,但是我们用默认的字体格式却无法显示中文,必须把字体转换之后才能正常显示中文。 具体转换方法: 1、准备好字体,ttf或otf格式都可以,如:SOURCEHANSANSCN-NORMAL.OTF 2、准…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代,搜索引擎已经是许多应用的核心组件之一,近年随着大模型以及AI技术(如:自然语言处理NLP)的流行,这些技术的结合将会创造出更多的应用场景,比如:电商商品搜索、…