Protobuf的简要介绍及使用详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Protobuf的简要介绍及使⽤详解
⼀、protobuf的应⽤场景
在官⽅⽂档中可以看到
protocol buffers 是⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数
据存储等。

Protocol Buffers 是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法-可类⽐ XML,但是⽐ XML
更⼩(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

可以看到protobuf 与json相⽐具有压缩⽐⾼、解压缩速度更快的优点
⼆、protobuf的使⽤
protobuf在使⽤上较为复杂,过程可以分为以下⼏步:
编写java 的POJO类
通过⼯具将java的POJO类,⽣成protobuf数据格式下的(在idea中可以下载Pojo2Proto插件)
新建⼀个以.proto的⽂件,并写⼊Pojo2Proto插件⽣成数据
通过proto.exe程序将.proto⽂件编译⽣成java类,该JAVA类中定义有PB对该类的数据格式定义、get/set操作、解/压锁数据的⽅法
POJO类数据:
public class Entity {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
⽣成的protobuf的数据:
syntax = "proto3";
message Entity {
string key = 1;
string value = 2;
}
通过protoc.exe进⾏编译
protoc-3.9.2-windows-x86_64.exe ./src/main/proto/Entity.proto --java_out=./src/main/java/src/
编译后⽣成有 Entity OuterClass类的⽂件通过 Entity OuterClass类压缩数据
StreamWrap.Entity.Builder builder = StreamWrap.Entity.newBuilder();
//构造数据
builder.setKey("123");
builder.setValue("123");
StreamWrap.Entity entity = builder.build();
//将该PB类转换为⼆进制数据格式
byte[] buff = entity.toByteArray();
通过EntityOuterClass类解压缩数据
总结
到此这篇关于Protobuf的简要介绍及使⽤的⽂章就介绍到这了,更多相关Protobuf使⽤内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

相关文档
最新文档