Google ProtocolBuffers2.4.1应用说明(一)

1.概念

Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++、Java以及Python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据。相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。

如何使用?

a. 工具protoc.exe

b.创建.proto 文件

c.将.proto文件编译java类

d.message 的名称不能与java_outer_classname 名称相同,不然编译不过。

创建Person.proto文件

package com.xishinet.net.bean;

option java_package = "com.leehongee.net.bean";

option java_outer_classname = "Request";

message Person {

     optional int64 id=1;

     optional string name=2;

     optional string sex=3;

     optional string tel=4;

}

Person 为定义一个消息类型为Person

Person共有三个字段

都为optional(可选的)

int64对应java的long

string对应java的String

在消息定义中,每个字段都有唯一的一个标识符,可以理解为索引,用于识别各个字段

id=1,name=2,sex=3,tel=4,1,2,3,4并不是默认值

默认值可以这样设置:optional int32 result_per_page = 3 [default = 10];

required:一个格式良好的消息一定要含有1个这种字段。表示该值是必须要设置的;

optional:消息格式中该字段可以有0个或1个值(不超过1个)

repeated:在一个格式良好的消息中,这种字段可以重复任意多次(包括0次)。

重复的值的顺序会被保留。表示该值可以重复,相当于java中的List。

由于一些历史原因,基本数值类型的repeated的字段并没有被尽可能地高效编码。在新的代码中,用户应该使用特殊选项[packed=true]来保证更高效的编码

repeated int32 samples = 4 [packed=true];

备注:可以讲Person.proto放到你解压的protoc-2.4.1-win32.zip里面的protoc.exe同一级目录

然后cmd cd到该目录 执行protoc.exe --java_out=./ Person.proto,此时在这个目录下回生成Person.java文件

protoc.exe -I=.   --java_out=.  Request.proto

protoc.exe -proto_path=SRC --cpp_out=DST SRC/Request.proto

//此段代码是令 生成的java代码 继承GeneratedMessageLite
//继承GeneratedMessageLite的好处是  可以使用jboss提供的 编解码器
//可以认为是 比写项
option optimize_for = LITE_RUNTIME;

原文地址:https://www.cnblogs.com/leehongee/p/3323776.html