博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CRC32用途及写法
阅读量:6602 次
发布时间:2019-06-24

本文共 1274 字,大约阅读时间需要 4 分钟。

hot3.png

CRC32

 

今天在看rocketmq源码时,看到CRC32,就记录下来以供学习。主要用途: 

在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制。循环冗余校验CRC(Cyclic Redundancy Check/Code)是对一个传送数据块进行校验,是一种高效的差错控制方法。

if (!checksum(ctx, request, requestHeader)) {            response.setCode(ResponseCode.SYSTEM_ERROR);            response.setRemark("crc32 not match");            return response;}private boolean checksum(ChannelHandlerContext ctx, RemotingCommand request,        RegisterBrokerRequestHeader requestHeader) {        if (requestHeader.getBodyCrc32() != 0) {            final int crc32 = UtilAll.crc32(request.getBody());            if (crc32 != requestHeader.getBodyCrc32()) {                log.warn(String.format("receive registerBroker request,crc32 not match,from %s",                    RemotingHelper.parseChannelRemoteAddr(ctx.channel())));                return false;            }        }        return true;    }public static int crc32(byte[] array) {        if (array != null) {            return crc32(array, 0, array.length);        }        return 0;    }public static int crc32(byte[] array, int offset, int length) {        CRC32 crc32 = new CRC32();        crc32.update(array, offset, length);        return (int) (crc32.getValue() & 0x7FFFFFFF);    }

 

转载于:https://my.oschina.net/penghaozhong/blog/3049088

你可能感兴趣的文章
[Android组件化]组件化数据分享
查看>>
# Ruby 数据抓取写入 xls (unirest, nokogiri, spreadsheet)
查看>>
[转]23个最有用的Elasticsearch检索技巧
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
HTML5开发中的javascript闭包
查看>>
[译] 如何使用 HTTP Headers 来保护你的 Web 应用
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
你真的会用strong-weak dance吗?
查看>>
ionic3 教程(二)登录页制作
查看>>
Python正则表达式初识(四)
查看>>
C++课大作业 魔兽世界Part 2
查看>>
不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析
查看>>
Java并发系列—工具类:CyclicBarrier
查看>>
不务正业的前端之SSO(单点登录)实践
查看>>
android 一套代码多用 以及 多套代码用于一个项目
查看>>
HashMap 之元素删除
查看>>
Cocos Creator 实现画板(你画我猜)
查看>>
springmvc+dubbo整合学习
查看>>