学习使用Protobuf,创建java文件

windows :

步骤一:两个文件:proto.exe,  protobuf-Java-2.4.1.jar

步骤二:建立一个工程CreateProtoBuf,在下面建立一个proto文件件,用来存放【proto】文件

步骤三:将proto,exe放在工程下,

步骤四:建立一个msg.proto文件:

 option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf"; message Person
{
required string name = ;
required int32 id = ;
optional string email = ; enum PhoneType
{
MOBILE = ;
HOME = ;
WORK = ;
} message PhoneNumber
{
required string number = ;
optional PhoneType type = [default = HOME];
} repeated PhoneNumber phone = ; message CountryInfo
{
required string name = ;
required string code = ;
optional int32 number = ;
}
} message AddressBook
{
repeated Person person = ;
}

步骤五:生成 java文件:在proto.exe目录下:protoc  --java_out=./src   ./proto/msg.proto

步骤六:测试实例

 package com.protobuftest.protobuf;

 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; public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
builder.setEmail("xiaoxiangzi@email.com");
builder.setId();
builder.setName("筱灬湘子");
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("").setType(PersonProbuf.Person.PhoneType.MOBILE));
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("").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)
{
e.printStackTrace();
} System.out.println(buf);
}
}

工程目录如下:

(一)Protobuf的Java使用的更多相关文章

  1. ProtoBuf 的java使用

    碰巧用到Proto,算是笔记吧算是笔记吧, windows : 1,两个文件:proto.exe,  protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个pro ...

  2. windows环境下protobuf的java操作{编译,序列化,反序列化}

    google protocol buffer的使用和原理 概况: Protocol Buffers(也就是protobuf)是谷歌的语言中立的.平台中立的.可扩展的用于序列化结构化的数据: windo ...

  3. protobuf基于java和javascript的使用

    目录 ProtoBuf介绍 整理下java和JavaScript的例子 demo测试 java作为服务端+客户端测试 客户端前端调用示例 项目地址 参考 ProtoBuf介绍 ProtoBuf 是go ...

  4. 用Maven实现一个protobuf的Java例子

    注:试验环境在Mac Idea环境下 1. 介绍Protocol Buffers Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RP ...

  5. Google Protobuf 使用 Java 版

    一 . Protobuf 的入门 Protobuf 是一个灵活,高效,结构化的数据序列化框架, 相比于 XML 等传统的序列化工具,它更小,更快,更灵活,更简单. Protobuf 支持数据结构化一次 ...

  6. protobuf for java

    本文档为java编程人员使用protocol buffer提供了一个基本的介绍,通过一个简单的例程进行介绍.通过本文,你可以了解到如下信息: 1.在一个.proto文件中定义一个信息格式. 2.使用p ...

  7. protobuf在java应用中通过反射动态创建对象(DynamicMessage)

    ---恢复内容开始--- 最近编写一个游戏用到protobuf数据格式进行前后台传输,苦于protobuf接受客户端的数据时是需要数据类型的如xxx.parseForm(...),这样就要求服务器在接 ...

  8. protobuf 编译 java js文件详解

    首先下载protobuf.exe 下载地址:https://download.csdn.net/download/qq_34756156/10220137 MessageBody.proto synt ...

  9. Protobuf协议--java实现

    Protobuf协议,全称:Protocol Buffer 它跟JSON,XML一样,是一个规定好的数据传播格式.不过,它的序列化和反序列化的效率太变态了…… 来看看几张图你就知道它有多变态.  pr ...

随机推荐

  1. MYSQL INSERT INTO SELECT 不插入重复数据

    INSERT INTO `b_common_member_count` (uid) SELECT uid FROM `b_common_member` WHERE uid NOT IN (SELECT ...

  2. myeclipse9或myeclipse10安装svn的方法

    下载最新的SVN包   site-1.6.5.zip 从中解压出features与plugins文件夹,复制到C:\toBeInstalledSVN 里面,其它的*.xml文件不要 复制下列java代 ...

  3. 前端开发者进阶之ECMAScript新特性【一】--Object.create

    Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数:prototype 必需.  要用作原型的对象. 可以为 nul ...

  4. viewpager的简单使用,以及ValueAnimator的用法示例

    之前在网上看到一篇viewpager简单使用的例子程序,主要采用了上部标签button+中间指示作用的imageview+下部viewpager的结构,点击上部标签,或者滑动viewpager,均可以 ...

  5. 配置Tomcat的访问日志格式化输出

    博客搬家,本文新地址:http://www.zicheng.net/article/9   本文描述如何配置tomcat的访问日志,按我们的要求输出指定的日志格式. 且在Nginx+Tomcat的配置 ...

  6. C#、.NET网络请求总结(WebClient和WebRequest)

    1.关于WebClient第三方的封装,支持多文件上传等 using System; using System.Collections.Generic; using System.Text; usin ...

  7. memcpy 和直接赋值的性能差异

    不废话,看代码: #include <time.h> #include <stdint.h> #include <iostream> #define ARR_LEN ...

  8. Log4net对文件的支持

    RollingFileAppender循环记录日志(指定文件最大长度) <appender name="RollingFileAppender" type="log ...

  9. JavaScript备忘录(1)——内置类型

    JavaScript有一些内置类型,还有很多常用的内置的方法,本文稍作总结,以备查阅. 值类型 我的理解,值类型是分配在栈上的,而引用类型(当然也包括引用类型内部的值类型)是分配在堆上的.值类型是不可 ...

  10. 回归 从注释开始 appledoc

    好久没有管理这个blog了,些许空虚.不知道今天的回归能否坚持.简单介绍一个第三方注释 -- appledoc appledoc http://gentlebytes.com/appledoc/ 安装 ...