java中Protobuf的使用实例

来源:互联网 发布:域名免费备案 编辑:程序博客网 时间:2024/05/17 01:13

 最近公司项目中有埋点的需求,采用的是protocolbuffer的数据格式,所以去研究了protobuf的使用,在此记录一下

1.什么是protocolbuffer?

protocol buffer是google的一个开源项目,它是用于结构化数据串行化的灵活、高效、自动的方法,例如XML,不过它比xml更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。

2.使用

2.1下载protoc-2.4.1-win32.zip,http://download.csdn.net/detail/tiandiwuya/9792888

2.2下载 一个protobuf-Java-2.4.1.jar文件,http://download.csdn.net/detail/tiandiwuya/9792889

2.3.用记事本编写一个.proto文件:

如:我编写的是msg.proto

package protobuf;
option java_package = "com.sq.protobuf";
option java_outer_classname = "FirstProtobuf";
message testBuf  {
  required int32 ID = 1;
  required string Url = 2;
}
将其放在与刚解压的protoc.exe同级目录中。
2.4使用如下命令编译这个文件:

protoc.exe --java_out./ msg.proto


2.5将生成的FirstProtobuf.java文件引入eclipse,把下载的protobuf-java-2.4.1.jar也引入工程

2.6建立测试文件

public class test2 {public static void main(String[] args) {//序列化FirstProtobuf.testBuf.Builder builder = FirstProtobuf.testBuf.newBuilder();builder.setID(117);builder.setUrl("bangde");// testBufFirstProtobuf.testBuf info = builder.build();byte[] result = info.toByteArray();System.out.println("反序列化过程:"+result.toString());//反序列化过程try {FirstProtobuf.testBuf testBuf = FirstProtobuf.testBuf.parseFrom(result);System.out.println("反序列化过程:"+"\n"+testBuf);} catch (InvalidProtocolBufferException e) {e.printStackTrace();}}}
结果:



0 0
原创粉丝点击