Protobuf的简要介绍及使用详解
#代码知识 发布时间: 2026-01-12
一、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进行编译
在proto.exe的下载地址 https://repo1.maven.org/maven2/com/google/protobuf/protoc/ 编译Entity.proto文件
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类解压缩数据
总结
代码知识SEO上一篇 : Android+OpenCV4.2.0环境配置详解(Android studio)
下一篇 : JavaScript Blob对象原理及用法详解
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!