protobuf (protocol buffer)
一种google公司推广的, 灵活, 高效, 自动化的机制, 用于序列化结构化数据, 他的首要目的是可以使用特殊生成的源代码轻松地在各种数据流中使用各种语言编写和读取结构化数据。您甚至可以更新数据结构,而不会破坏根据“旧”格式编译的已部署程序。
格式:
option java_package = \"protobuf\"; // 一些参数 包
option java_outer_classname = \"PersonProtos\"; // 类名
message name { // 类似于一个类
required string id = \"213\"; // required 是序列化必须有的
optional int param1 = 12; // optional 是序列化是可选的 一个或零个
optional int param2 = 99;
}
上面也是有点简单的英语
这里说一下windows环境怎么安装protobuf 这个也困扰了我很久了.. 首先从
https://github.com/protocolbuffers/protobuf/releases 这里找的你需要的版本 当然你也可以从别的地方找, 注意windows用户需要下载的是win32的版本, 不要下成了源码, 导致因为需要编译的原因不能用.
下面介绍的是java api的用法:(非maven)
我们通过
protoc --java_out={输出目录} {配置文件目录}
生成我们的java类 当然你也可以通过 -help来查询是不是有其他选项(后面会介绍maven如何使用)
生成我们的java类之后 通过maven的方式对类进行序列化反序列化
首先引入依赖
<!-- google protobuf 一个序列化反序列化工具 --> <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java --> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>2.5.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> <dependency> <!-- 不是必须的 --> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>3.5.1</version> </dependency>
然后在测试类中调用
PersonProtos.Person.Builder builder = PersonProtos.Person.newBuilder();
builder.setId(\"123\");
builder.setParam1(123);
builder.setParam2(231);
PersonProtos.Person person = builder.build();
byte[] b = person.toByteArray(); // 序列化
try {
PersonProtos.Person ps = PersonProtos.Person.parseFrom(b); // 反序列化
System.out.println(ps.getId());
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
上面就是简单的protobuf的调用方式.
继续阅读与本文标签相同的文章
上一篇 :
3D打印机器人有“骨骼”,还会卖萌
-
Flink Checkpoint 问题排查实用指南
2026-05-18栏目: 教程
-
[集合]AbstractCollection源码解析(2)
2026-05-18栏目: 教程
-
月活用户达7.55亿,阿里淘系如何在后流量时代引爆用户增长?
2026-05-18栏目: 教程
-
再议 C 语言中的指针与数组(4)
2026-05-18栏目: 教程
-
Apache Flink 进阶入门(二):Time 深度解析
2026-05-18栏目: 教程
