protobuf 简单介绍

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的调用方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值