本文转载自:http://wsjiang.iteye.com/blog/2095561
最近要在产品中改进对象的序列化了。以前用的是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
相关推荐
protocol buffer jar架包和Windows下的代码生成工具(protobuf-java-2.5.0.jar protoc-2.5.0-win32)
源代码+工具(包括win32的)
资源包含: protobuf-2.6.1.zip源码; protoc-2.6.1-win32; protobuf-java-2.6.1.jar; 一个序列化反序列化实例
Protoc是Protobuf的编译器,可以将 proto 文件编译成目标语言了。 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合...下载 protoc-3.0.0-win32然后解压,解压后目录下有proto.exe文件,可以直接使用
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台
protocol buffer工具
支持google protocol buffer协议的wireshark版本。 1. 支持UDP(原生) 2. 支持TCP,需要固定包头+protobuf二进制负载内容。 包头长度不包含自身,只包含protobuf二进制内容的长度。 包头长度为固定的4个字节。 3....
This package contains a precompiled binary version of the protocol buffer compiler (protoc). This binary is intended for users who want to use Protocol Buffers in languages other than C++ but do not ...
protoc-2.4.1-win32.zip
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
Google Protocol Buffer,3.5.1、2.5.1,编译工具下载 .
Protocol Buffer 允许在信息类型里面定义其它的信息类型。 ● 如果想在Person外边使用Address这个类型,那么就需要这样用:Person.Address。 Protocol Buffer 开发环境: -- IDE:VSCode -- VSCode的扩展...
This package contains a precompiled binary version of the protocol buffer compiler (protoc). This binary is intended for users who want to use Protocol Buffers in languages other than C++ but do not ...
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现,如:java、c#、c++、javascript、go 、python、ruby和php等,每一种实现都包含了相应语言的...
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild
Hadoop在访问本地文件和hdfs文件系统时,需要使用本地库,本地库中使用了Windows的...ProtocolBuffer 2.5.0 CMake 3.13.2 VS2010 mingw-w64 x86_64 8.1.0 请加星支持一下: https://github.com/caidaol/hadoopbuild