码迷,mamicode.com
首页 > 编程语言 > 详细

java自定义序列化协议

时间:2021-06-28 20:08:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:java   value   date   自定义   表示   lan   压缩   一个   amp   


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

  • 开发
  • java

序列化协议

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

  • 序列化:让java跨越时间和空间一样的存在 。
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有效数据

报文协议

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

包含内容
  • 头部
  • 长度
  • 命令字(定位:模块+方法)
  • 密签
  • 数据(序列化咯)
组装顺序

java自定义序列化协议

标签:java   value   date   自定义   表示   lan   压缩   一个   amp   

原文地址:https://www.cnblogs.com/skystarry/p/14941343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!