Protobuf在Java中的使用
2015-09-30 10:59
471 查看
1.Protobuf的理解
是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构,总的来说就是传输协议中的一种。Protobuf的官方网址为http://code.google.com/apis/protocolbuffers/docs/tutorials.html。
核心:
1,.proto文件相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样
2,modifiers
2-1 required 不可以增加或删除的字段,必须初始化
2-2 optional 可选字段,可删除,可以不初始化
2-3 repeated 可重复字段, 对应到java文件里,生成的是List
3,Message
在proto文件里,数据的协议时以Message的形式表现的。
4, Build
生成具体的java类时,例如Person.java,同时会存在build方法。文档的意思是对于转化后的数据,具有唯一性,build提供了便利的方法来初始化这些数据。
2.Protobuf的安装与在netty中的使用
1.首先要在Java项目中新创建一个.proto文件,相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样option java_package = "cn.huikey.chat.proto";//写的是生成文件的包名 option java_outer_classname = "ChatMessage";//生成的类文件名
//消息类 message Message{ optional string senderName = 2; optional string receiverName=6; optional string content=9; optional string type=10; optional string palindType=11; optional int32 status=12; }
</pre><pre name="code" class="java" style="font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px;">3.添加jar,protocol.exe(jar与exe必须为同一版本),编写cmd文件
@ECHO OFF cd /d D:\MyEclipseWork\ProtobufServer\proto //proto文件名根目录 protoc --java_out=../chat chatMessage.proto //资源包+空格+proto文件名 pause
4.运行cmd文件即可
5.protobuf在netty中的使用
1.protobuf的数据读取a.数据的写入
Builder Builder = Message.newBuilder(); Builder.setType("0"); Builder.setReceiverName("admin"); byte[] Bytes = Builder.build().toByteArray(); ByteBuf Buf = Unpooled.buffer(Bytes.length); Buf.writeBytes(Bytes); channel.writeAndFlush(Buf);
b.数据的读取
Message message=(Message) msg; System.out.println(message);
c.Protobuf的赋值
ChatMessage.Message.newBuilder() .setType(Contact.FRIENDSTRUE) .setReceiverName(message.getReceiverName()
.setSenderName(message.getSenderName()) .setStatus(Contact.SUCCESS) .setContent("添加好友成功!")).build;
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- 我是运营,我没有假期