java自定义序列化协议

时间:2021-06-28 20:08:42   收藏:0   阅读:0

title: java自定义序列化协议
tags: [序列化,protobuf]
date: 2018/5/15 20:26:25
categories:


序列化协议

相信大家见识过很序列化的框架 : fastjson , hessian ,kryo,protobuf,jdk序列化

protobuf

int 本身是4个字节,但是大部分情况下没有4个字节,所以protobuf就用位运算对int进行了压缩

int 1~5个字节, 因为它每个字节只保存7位,第8位用来表示后面还有没有字节

while(true){
    if(value & ~0x7F == 0){ // 如果小于1个字节
        writeRawByte(value);return; 
    }else{// 大于1个字节,
        // 先写第一个字节7位,并标记第8位为1
        writeRawByte((value & 0x7F) | ox80);
        // 右移截断已经写入的7位,继续循环
        value >>>= 7;
    }
}
自定义
也拿int来举例,但是可以有不一样的序列化规则
~ ~ 0000 0101 ==> 0000 0101 1000 0001

原本的4个字节 第1个字节表示一共占几个字节(前面7位)+ 是否还有字节(第8位)

					第2个字节开始表示int有效数据

报文协议

可能不止下面这些包含,以后单独再学习

包含内容
组装顺序
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!