protobuf java小栗子
来源:互联网 发布:云南财经大学网络英语 编辑:程序博客网 时间:2024/06/10 05:49
protobuf java小栗子
近来在项目中发现用到了Protocol Buffers,作为netty传输的协议,通过写个例子进行感受下其高效的序列化和反序列化~
1. 所用环境windows ,语言java
下载生成器与对应版本的jar包
当前例子所用:protoc.exe, protobuf-java-2.4.1.jar
2. 编写proto文件,例子如下:
package org.demo.protobuf;option java_package = "org.demo.protobuf";option java_outer_classname = "MsgSendProto";message MsgSend { required string msgID = 1; required string phone = 2; required int64 doneTime = 3; required int32 enterpriseID = 4; optional string enterpriseName = 5; required int32 result = 6; required int32 channelID = 7; required int32 carrier = 8; required int32 busyType = 9; optional int32 size = 10; optional int32 unit = 11;}
3. 在protoc.exe所在目录打开cmd,用以下命令执行编译刚刚编写proto文件,成功后无消息输出,在相应的目录下会产生java文件MsgSendProto.java
protoc.exe --java_out=./ MsgSend.proto
4. 在工程中导入protobuf-java-2.4.1.jar,编写个简单的测试类,感受下其序列化与反序列化~
public class MsgSendProtoBufTest { public static void main(String[] args) { // 先进行序列化 MsgSendProto.MsgSend.Builder builder = MsgSendProto.MsgSend.newBuilder(); builder.setMsgID("20151101"); builder.setPhone("13100000000"); builder.setDoneTime(System.currentTimeMillis()); builder.setEnterpriseID(1); builder.setEnterpriseName("enterprise"); builder.setResult(1); builder.setChannelID(1); builder.setCarrier(1); builder.setBusyType(1); builder.setSize(5); builder.setUnit(1); MsgSendProto.MsgSend msgSend = builder.build(); byte[] buf = msgSend.toByteArray(); try { // 再反序列化输出看看 MsgSendProto.MsgSend msgReceive = MsgSendProto.MsgSend.parseFrom(buf); System.out.println(msgReceive.toString()); } catch (Exception e) { e.printStackTrace(); } System.out.println(buf); }}
结果输出,表明能正常序列化与反序列化~
0 0
- protobuf java小栗子
- 结合Netty与Protobuf小栗子
- 关于java反射的一些小栗子
- Java Assert小栗子(图片,请另存为后查看)
- Java中calendar定时任务的小栗子~
- DLX模板+小栗子
- ajax的小栗子
- 2个小栗子~
- python小栗子
- 典型小栗子
- 轮播图(小栗子)
- keras theano 小栗子
- jsonp 小栗子
- 验证码 小栗子
- 递归小栗子
- Google protobuf for java 小试
- protobuf-java中的一些小技巧
- 正则表达使用小栗子
- 并查集 + 拓扑排序 hdu1811 Rank of Tetris
- java面向对象(二)
- android打包传递
- 《New York Times》的newsletter,如何创造高打开率?
- 基于mini2440 的 bootloader 设计 ---- 9、中断初始化
- protobuf java小栗子
- popupWindow各种情况的隐藏方法
- MQTT协议实现(一)
- 挑战poj
- spring获取数组参数(一)
- Android之手机现场保护Saving activity state
- PHP手册
- gdb 调试网络程序发现connect 失败(interrupted system call)
- java程序员第十二课 -JSP技术、JavaBean知识和EL表达式(重点)