一 .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:
7.常用语法:
message BusinessPacket{
message BusinessHeader{
required SubType sub_type = 1; //subtype为业务子类型
}
required BusinessHeader bheader = 1;
required ChatMsg msg = 2;
}
message ChatMsg
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