优秀的protobuf实例
来源:互联网 发布:w10系统优化加速 编辑:程序博客网 时间:2024/06/06 14:38
关于protobuf的理论性简介可以看一下:http://blog.csdn.net/caisini_vc/article/details/5599468
那我来个简单的介绍,首先它是一个牛X的东西,谷歌推出的开源项目。它的作用是传递序列化数据用的。我们知道,在网络上或本地用于格式传输,大家可以用xml或json。
那protobuf的直接优点是:相较于xml字符冗余比较OK,写过IM通信的人会有深刻感受,使用基于xml的xmpp协议,%70的流量都是xml格式符;相较于json,又有良好的扩展性,我们知道xml一定是比json扩展性强的!
总结一下,protobuf具有良好的扩展性和不会有太多的格式标示符占用序列化空间,另外解析速度上也要有优势!缺点是可读性差,xml和json具有良好的可读性,但protobuf是采用二进制进行编码,需要序列化成对象后,查看其内容。
在实际的项目中,已经有上百万用户的APP应用采用protobuf,并成功验证OK
实例很简单:
1.编辑一个proto文件,取名叫User.proto
package protobuf; option java_package = "com.poxiao.protobuf"; option java_outer_classname = "UserProtobuf"; message userBuf { required int32 ID = 1; required string Url = 2; required bool IsSD = 3;}
2.使用protoc.exe生成上面编辑格式的java对应文件
命令(到所在文件目录执行哦) protoc.exe --java_out=./ User.proto
执行完成后,如果什么都没显示并且所在文件夹下多出一个以我们的包名“com.poxiao.protobuf”,为目录结构的文件夹就证明,这步我们执行OK
3.上java代码,放在main方法里
// 序列化过程// UserProtobuf是生成类的名字,即proto文件中的java_outer_classname// userBuf是里面某个序列的名字,即proto文件中的message testBufUserProtobuf.userBuf.Builder builder = UserProtobuf.userBuf.newBuilder();builder.setID(777);builder.setUrl("shiqi");builder.setIsSD(true);// testBufUserProtobuf.userBuf info = builder.build();byte[] result = info.toByteArray();// 反序列化过程try {UserProtobuf.userBuf testBuf = UserProtobuf.userBuf.parseFrom(result);System.out.println(testBuf);} catch (InvalidProtocolBufferException e) {e.printStackTrace();}
结果输出:
ID: 777
Url: "shiqi"
IsSD: true
4.需要用的工具protoc.exe ,protobuf-java-2.4.1.jar 下载地址(不收费哦):
http://download.csdn.net/detail/feixue1232/9148063
- 优秀的protobuf实例
- ProtoBuf的实例
- Akka和ProtoBuf的简单实例
- java中使用Protobuf的实例(Demo)
- java中使用Protobuf的实例(Demo)
- java中使用Protobuf的实例(Demo)
- grpc+protobuf 的C++ service 实例解析
- java中Protobuf的使用实例
- google protobuf 简单实例
- Android中基于protobuf的socket通信的实例
- Windows VS2008 使用 protobuf(version2.5.0) 的实例
- 学习XML和VBSCLASS的优秀实例
- iPad 界面设计的优秀实例之FLUD
- 【ProtoBuf】对 ProtoBuf 的调研
- protobuf文件嵌套结构实例
- protobuf嵌套类操作实例
- protobuf文件嵌套结构实例
- 谷歌 Google ProtoBuf用法实例
- Docker基础技术:Linux CGroup
- HDU 5240 Exam
- 栈的应用_数值转换
- Docker基础技术:AUFS
- Jasmine: JavaScript 单元测试框架
- 优秀的protobuf实例
- jQuery选择器总结
- 对于新手 接口的理解
- Developing Skills
- 多个输入
- EM算法小结
- 【2015合肥网络赛】(没有补完)
- IOS 点击屏幕空白部分关闭键盘方法
- Java资源大全