本文系转载备份!
最近要在产品中改进对象的序列化了。以前用的是java默认序列化实现功能,在产品上线之前要对关键的对象进行序列化/反序列化优化,以期改善存储效率。这里选取了Protocol buffer作为最终的方案,原因主要有以下几个方面:
1、java默认序列化效率较低。
2、apache的thrift方案并无明显优势,但是使用成本较高,安装等较为麻烦。
3、虽然PB不支持map,但是我们的应用中map用的较少,即使使用了存储的数据量也较少,可以转化为list方案进行存储。
以上只是我选择序列化方案的一些考虑。下面是PB的2.3.0版本的安装与使用示例:
protobuf原理文档 参阅:http://www.cnblogs.com/shitouer/archive/2013/04/10/google-protocol-buffers-tutorial.html
安装&使用:
A、windows 安装 protocol buffer (如果没有安装Maven,先安装maven,并且mvn -version 验证安装成功)
B、下载protobuf 2.3.0 包: protoc-2.3.0-win32.zip 和 protobuf-2.3.0.zip
C、将两个包解压到某一目录 如:D:\dev\
D、将D:\dev\protoc-2.3.0-win32中的protoc.exe拷贝到c:\windows\system32中
E、将定义数据结构的proto文件test.proto放到某一目录 如:D:\dev\protobuf-2.3.0\files\proto
package com.test; option java_package = "com.test"; option java_outer_classname = "TestPBDO"; message TestPB { enum UpdateType { //消息类型 UPDATETYPE_LOCATION = 1; //位置更新类型 UPDATETYPE_TIME = 2; //时间戳更新类型 UPDATETYPE_DELETE = 3; //删除类型,冗余 } optional UpdateType update_type = 1; //更新类型 optional int64 user_id = 2; //用户id optional double user_nick= 3; //用户nick }
F、控制台:定位到test.proto文件所在目录 D:\dev\protobuf-2.3.0\files\proto
G、运行命令:protoc --java_out=. test.proto
相关推荐
编译好的protoc 以及libprotobuf.lib、libprotobuf-lite.lib和libprotoc.lib,还有用到的头文件
Protocol Buffer使用
用Java语言实现的利用Protocol Buffer进行数据保存的实例,具体的体现是一个学生记录管理。一个Demo,为了帮大家理解Protocol Buffer的。
Protocol Buffer 2.5.0 jar包
Android端中使用Netty+Protocol Buffer实现聊天室功能
protocolbuffer案例代码
C++实例Protocol Buffer技术详解,感兴趣的朋友可以了解下
Google_Protocol_Buffer_的使用和原理
Protocol Buffer文件编译成Java文件所需要的相关工具,jar包,exe编译工具等。
01 Protocol Buffer技术详解(语言规范).doc
Protocol_Buffer官网文档中文版
比较详细的Protocol_Buffer中文翻译
Protocol Buffer sublime text 3插件,官方网址: https://github.com/vihangm/sublime-protobuf-syntax
尽管其功能和用途与XML基本相似,但是 Protocol Buffers更为轻便。Google宣称其效率对于XML有很大提升,文本比XML要小3-10倍,而解析效率却提升至20-100倍。Protocol Buffers是一个平台中立,编程语言无关的,可扩展...
google的protocol buffer 3.0.0最新beta版本,在Ubuntu 14.04下编译通过并且运行,也进行过交叉编译运用于arm
protocol buffer jar架包和Windows下的代码生成工具(protobuf-java-2.5.0.jar protoc-2.5.0-win32)
protocolbuffer技术用到的源码包及安装包
源代码+工具(包括win32的)