学习笔记-Protobuf快速入门

简介

protocol是谷歌的语言中立、平台中立、可扩展的结构化数据序列化机制——比XML,但更小、更快、更简单。您可以一次定义数据的结构化方式,然后可以使用特殊生成的源代码轻松地使用各种语言在各种数据流中写入和读取结构化数据。

案例

1.下载protoc:下载地址

选择对应的版本,下载后将bin目录加入系统环境变量中

2.编写.protoc文件

1
2
3
4
5
6
7
8
9
10
syntax = "proto2";
option java_generic_services = true;
option java_package = "io.demo.proto";
option java_outer_classname = "ProtoUser";

message User {
required int32 id = 1;
optional string name = 2;
optional string mail = 3;
}

3.生成Java文件

1
protoc --java_out=../java user.proto

4.引入依赖

1
2
3
4
5
6
7
8
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.17.3</version>
</dependency>
</dependencies>

5.测试序列化和发序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UserTest {
public static void main(String[] args) {
ProtoUser.User user = ProtoUser.User.newBuilder()
.setId(1)
.setName("麦奇")
.setMail("mikey@outlook.com").build();
System.out.println(user);

byte[] bytes = user.toByteArray();
try {
ProtoUser.User parseFrom = ProtoUser.User.parseFrom(bytes);
System.out.println(parseFrom);
}catch (Exception e){
e.printStackTrace();
}
}
}

工具

protoman:一款http上protobuf的API客户端

官网:http://www.electronjs.org/apps/protoman

添加对应的proto文件即可进行发送请求,其Content-Type设置为application/x-protobuf
image.png

资料

java教程:https://developers.google.com/protocol-buffers/docs/javatutorial
java代码生成:https://developers.google.com/protocol-buffers/docs/reference/java-generated


学习笔记-Protobuf快速入门
https://mikeygithub.github.io/2021/11/25/yuque/学习笔记-Protobuf快速入门/
作者
Mikey
发布于
2021年11月25日
许可协议