Java protobuf框架使用向导
来源:互联网 发布:linux修改vim配置 编辑:程序博客网 时间:2024/06/02 04:34
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。
AD:2014WOT全球软件技术峰会北京站 课程视频发布
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。
下面介绍的是使用Java ProtoBuf的基本步骤:
1.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载
2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)
http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1
3.在proto.exe同级目录,编写一个msg.proto文件:
- package tutorial;
- option java_package = "com.protobuftest.protobuf";
- option java_outer_classname = "PersonProbuf";
- message Person {
- required string name = 1;
- required int32 id = 2;
- optional string email = 3;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
- message PhoneNumber {
- required string number = 1;
- optional PhoneType type = 2 [default = HOME];
- }
- repeated PhoneNumber phone = 4;
- message CountryInfo {
- required string name = 1;
- required string code = 2;
- optional int32 number = 3;
- }
- }
- message AddressBook {
- repeated Person person = 1;
- }
4.使用如下命令编译这个文件:
5.将生成的ProtoBufferPractice.java文件引入eclipse
6.把下载的protobuf-java-2.4.1.jar也引入工程
7.使用方法:
- package com.protobuftest;
- import java.util.List;
- import com.google.protobuf.InvalidProtocolBufferException;
- import com.protobuftest.protobuf.PersonProbuf;
- import com.protobuftest.protobuf.PersonProbuf.Person;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;
- public class ProtoBufTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
- builder.setEmail("kkk@email.com");
- builder.setId(1);
- builder.setName("TestName");
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
- Person person = builder.build();
- byte[] buf = person.toByteArray();
- try {
- Person person2 = PersonProbuf.Person.parseFrom(buf);
- System.out.println(person2.getName() + ", " + person2.getEmail());
- List<PhoneNumber> lstPhones = person2.getPhoneList();
- for (PhoneNumber phoneNumber : lstPhones) {
- System.out.println(phoneNumber.getNumber());
- }
- } catch (InvalidProtocolBufferException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(buf);
- }
- }
源文档 <http://blog.csdn.net/csharp25/article/details/6632127>
原文链接:http://www.cnblogs.com/brainy/archive/2012/05/11/2496581.html
- Java protobuf框架使用向导
- Java protobuf框架使用向导
- Java protobuf框架使用向导
- Java protobuf框架使用向导
- Protobuf Java使用向导
- ProtoBuf 的java使用
- ProtoBuf 的java使用
- ProtoBuf 的java使用
- protobuf 的java使用
- protoBuf的使用---java
- ProtoBuf 的java使用
- protobuf java使用
- protobuf java中的使用
- Java 如何使用protobuf
- java中使用protobuf
- ProtoBuf 的java使用
- java protobuf使用
- 【JAVA】protobuf的使用
- 函数指针和 宏定义
- HDU 4044 GeoDefense 树形DP+分组背包
- 为伊消得人憔悴--调试
- win8 + Ubuntu14.04 双系统
- 黑马程序员——集合
- Java protobuf框架使用向导
- 11
- 刚才写代码遇到一个很不起眼的bug, 火眼金睛的猿们来看看吧
- CentOS 构建LAMP
- 栈区,堆区,常量区,静态区代码区
- 【网络安全】802.1X技术基础
- 浅谈C++的常引用
- ++i 与 i++ 四种层次认知
- Web应用解决中文乱码的两种方式