ProtoBuffer 使用简要介绍

一 .ProtoBuffer: 

特点:

1、平台无关、语言无关。

2、二进制、数据自描述。

3、提供了完整详细的操作API。

4、高性能 比xml要快20-100倍

5、尺寸小 比xml要小3-10倍 高可扩展性

6、数据自描述、前后兼容 

使用介绍:

1:https://code.google.com/p/protobuf/downloads/list  下载 protoc-2.5.0-win32,然后解压,配置protoc环境变量

2:cmd命令  输入protoc --version查询版本好,如果查到版本号,说明安装成功

3.在proto.exe同一级文件夹下写.proto文件

4.用cd命令打开文件所在目录,例如文件在 E:\tools\Computer\protoc-2.5.0-win32下:

 E:\tools\Computer\protoc-2.5.0-win32> protoc.exe --java_out =./ msg.proto

5.完成

6.API:

http://www.boyunjian.com/javadoc/org.apache.servicemix.bundles/org.apache.servicemix.bundles.protobuf-java/2.4.1_1/_/com/google/protobuf/Internal.EnumLiteMap.html

7.常用语法:

message BusinessPacket{

  message BusinessHeader{    

   required SubType sub_type = 1;  //subtype为业务子类型 

 }

  required BusinessHeader bheader = 1;

  required ChatMsg msg = 2;

}

message ChatMsg

 {  optional FIR fir = 1; optional SEC sec = 2; optional THI thi = 3; }

a:字段

required:必须赋值的字段  

optional:可有可无的字段

repeated:可重复字段(变长字段),类似于数值

b: 可以指定的最小的Tag为1,最大为2^29

-1.但是不能使用19000到19999之间的值,这些值是预留给protocol buffer的

c:注释

 //注释

d:可以嵌套结构体类型

e:类型 

f:序列化与反序列化

序列化: 

Protocol.DataPacket p6 = Protocol.DataPacket.newBuilder()
        .setHeader(getPushDataHeader())
        .setContent(com.google.protobuf.ByteString.copyFromUtf8(json.toString()))
        .build();

return Protocol.Packet.newBuilder()
        .setHeader(packetHeader)
        .setContent(p6.toByteString())
        .build();

反序列化   

常用数据类型转换方法

Protocol 内置:

ByteString  转String :toStringUtf8
String 转Byte:ByteString.copyFromUtf8(string) 
Packet 转ByteString :toByteString 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值