Google protobuf 协议的使用

本文档详细介绍了Google Protobuf的使用,包括其高性能特点、工作流程、JAVA代码生成及示例。通过编写.proto文件定义数据格式,使用protoc工具生成JAVA代码,然后利用生成的类进行数据的序列化和反序列化。示例中展示了Person和AddressBook的数据结构,以及如何通过builder构建和parseFrom方法转换数据。
摘要由CSDN通过智能技术生成

Google protobuf 是一个高性能的通信协议,具有多语言支持,协议数据小,方便传输,高性能等特点。通过将数据序列化成二进制数组,并将二进制数组反序列化成数据对象。用于取代JSON,XML,作为服务器优秀的通信协议。

本文档的示例用JAVA编写

先去google的网站上下载protobuf 协议的支撑包地址:http://code.google.com/p/protobuf/downloads/list 要下载两个东西一个是 protobuf-2.4.1.zip 支撑包,protoc-2.4.1-win32.zip代码生成工具

稍微讲一下google protobuf的工作流程;首先,编写后缀为.proto的数据格式文件,该文件用来定义数据格式

其次,protobuf的代码生成工具,生成你想要的代码,这里生成JAVA。

能后,调用protobuf生成的类提供的.proto数据结构的解析以及进行.proto数据序列化反序列化的方法,进行数据的二进制序列化以及反序列化

最后,你就可以像使用JSON那样,进行数据的传递了

继续讲怎么用,下载下来包后,把protobuf-2.4.1.zip 包解压,找到JAVA文件夹,将JAVA文件下的src打成jar导入你的项目里(当然你亦可以直接引用不打jar),后面的方法需要调用这个jar的接口

引入项目后,在你项目src跟目录下,编写数据结构文件,这里为User.proto,文件如下

package test;  
  
option java_package = "com.example.test";  
option java_outer_classname = "TestUserProtos";

message User{


required int32 id =1;
required string name =2;
required double weight =3;
required double height =4;
required int32 age =5;
}  


这是一个简单的数据结构,看起来就更JAVA一样

第一行为包名,可以不管他

option java_package = "com.example.test";   指定生成的报名
option java_outer_classname = "TestUserProtos"; 指定生成的类名

能后就是数据体了

数据类型bool,int32,float,double和string也可以使用自己定义的类型,类类型,这个下面有

每个字段必须提供一个修饰词:
1、required: 表示字段必须提供,不能为空.否则,message会被认为是未初始化的,识图build为初始化的message会抛出RuntimeException,解析未初始化的message会抛出IOException..除此之外,一个required字段与optional字段完全相同.


2、optional:可选字段,可以设置也可以不设置.如果没有设置,会设置一个缺省值.你可以指定一个缺省值,正像电话号码的type字段,否则,使用系统的缺省值:数字类型缺省为0,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值