Protocol Buffers
Protocol Buffers是兼容任意开发语言,兼容任意平台的数据存储结构格式。比xml的存储方式占用空单更少,读取更快,更简单。可用任意主流开发语言轻轻松松读写。
官方文档
学习如何使用 protobuf 的最佳方式是跟随我们 开发者指南中的教程。
如果您希望通过代码示例来学习,请查阅 examples 目录 中的例子。
完整的文档可在 Protocol Buffers 文档网站 上找到。
Git
镜像Git源码
可选开发语言列举
C++, C#, Dart, Go, Java, Kotlin, Objective-C, Python, Ruby 如果使用版本: proto3,也可用于 PHP.
示例
//1. , 创建一个数据结构protobuf文件:message.proto
message Person {
optional string name = 1;
optional int32 id = 2;
optional string email = 3;
}
使用Java创建导出一个Proto
shell指令生成java类:
protoc --java_out=. message.proto
指令生成:Person.java文件。
app/build.gradle添加库
plugins {
id "com.google.protobuf" version "0.9.4"
}
java中使用
public class Main {
public static void main(String[] args) {
// 创建一个Person对象并设置字段
Person person = Person.newBuilder()
.setName("John Doe")
.setAge(30)
.setIsStudent(true)
.build();
// 序列化Person对象到二进制
byte[] bytes = person.toByteArray();
// 反序列化二进制数据到Person对象
Person receivedPerson = Person.parseFrom(bytes);
// 打印结果
System.out.println("Name: " + receivedPerson.getName());
System.out.println("Age: " + receivedPerson.getAge());
System.out.println("Is Student: " + receivedPerson.getIsStudent());
}
}
//2. 使用C++ 调用上面Java导出的protobuf对象
// Java code
Person john = Person.newBuilder()
.setId(1234)
.setName("John Doe")
.setEmail("jdoe@example.com")
.build();
output = new FileOutputStream(args[0]);
john.writeTo(output);
//3.使用其他语言调用1(java)创建的protobuf
快速导入
- 下载源码编译:github.com/protocolbuf…
- 查询使用文:protobuf.dev/overview
- 使用自己熟悉的开发语言,练习:protobuf.dev/getting-sta…
Protobuf 的使用 (java)
-
创建一个.proto文件,定义好消息体
-
用protobuf编译器编译生成java文件
-
import生成的java文件到需要使用的类中,就可以使用protobuf
更详情文档:juejin.cn/spost/74605…