标签:java value date 自定义 表示 lan 压缩 一个 amp
title: java自定义序列化协议
tags: [序列化,protobuf]
date: 2018/5/15 20:26:25
categories:
相信大家见识过很序列化的框架 : fastjson , hessian ,kryo,protobuf,jdk序列化
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;
}
}
原本的4个字节 第1个字节表示一共占几个字节(前面7位)+ 是否还有字节(第8位)
第2个字节开始表示int有效数据
可能不止下面这些包含,以后单独再学习
标签:java value date 自定义 表示 lan 压缩 一个 amp
原文地址:https://www.cnblogs.com/skystarry/p/14941343.html