protobuf使用简介
来源:互联网 发布:windows的发展过程 编辑:程序博客网 时间:2024/06/11 19:38
1 protobuf介绍
Protobuf全称Google Protocol Buffers
http://code.google.com/p/protobuf
结构化数据存储格式(xml, json)
用于通信协议、数据存储等
高效的序列化和反序列化
语言无关、平台无关、扩展性好
官方支持C++, Java, Python三种语言
2 下载安装
(1)下载
需要两个包,protobuf-2.5.0.tar.gz,protoc-2.5.0-win32.zip。
本来可以到https://code.google.com/p/protobuf/downloads/list下载,不过被墙了。
可以移步到这里下载:http://download.csdn.net/detail/erli11/7408633
下载相同版本供java使用的protobuf-java-2.5.0.jar:
http://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar
3 demo展示
(1)创建proto文件
在protoc-2.5.0-win32目录(包含protoc.ext可执行文件),创建msg.proto
package discover;option java_package = "com.sg.discover";option java_outer_classname = "SocialRecommend"; message RecommendInfo {optional string hid = 1;optional string tags = 2;repeated TopicInfo topicList = 3;} message TopicInfo { optional string name = 1; optional string type = 2; repeated string entities = 3; repeated string tags = 4; }
(2)使用如下命令编译proto文件,生成对应Java代码
注:编译成功无消息输出,会产生文件;
./ 与 msg.proto中间有空格
(3)序列化
private SocialRecommend.RecommendInfo transRecommendInfoToPB(RecommendBean recommendInfo) {SocialRecommend.RecommendInfo.Builder builder = SocialRecommend.RecommendInfo.newBuilder();builder.setHid(recommendInfo.hid);builder.setTags(recommendInfo.tags);for(int i = 0; i< recommendInfo.topicList.size(); i++){TopicInfo topicInfo = recommendInfo.topicList.get(i);SocialRecommend.TopicInfo kvTopic = trasnTopicInfoToPB(topicInfo);builder.addTopicList(kvTopic);}return builder.build();}
byte[] pbByteArray = pb.toByteArray();
(4)反序列化
SocialRecommend.RecommendInfo msg = SocialRecommend.RecommendInfo.parseFrom(pbByteArray); System.out.println(msg);
0 0
- protobuf使用简介
- ProtoBuf安装和使用简介
- protobuf简介
- protobuf简介
- protobuf简介
- protobuf 简介
- protobuf简介
- Protobuf简介
- protobuf简介
- protobuf简介
- protobuf简介
- Protobuf 简介
- PHP中使用Protobuf简介以及安装使用
- 【Proto文件】Google开源技术 Protobuf 简介与使用
- 在C#中使用gRPC及protobuf简介
- protobuf使用
- protobuf 使用
- protobuf使用
- Win7系统如何设置QQ监控孩子上网(图文)
- ThinkPHP总结
- 使用jrtplib(RTP)传输H.264视频文件(1)
- vs2010安装记录+计算机丢失tbb_debug.dll”问题解决办法
- Mtk Android 暗码格式定制功能
- protobuf使用简介
- mahout 实现canopy
- LOAD DATA INFILE 语法
- HTML_登录时的JS验证方法
- Ignatius and the Princess III --undo
- java测试题-3(null+“abc”)
- 使用 jQuery UI 主题
- 电脑玩网络游戏退出非常缓慢怎么办
- 使用jrtplib(RTP)传输H.264视频文件(2)