博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java使用GoogleProtocolBuffer简单说明
阅读量:7222 次
发布时间:2019-06-29

本文共 1985 字,大约阅读时间需要 6 分钟。

  hot3.png

145344_36DW_2370543.png

###关于数据结构文件的描述符的含义1.required  (表示必须存在)2.optional  (表示可选,不一定需要有值)3.repeated  (表示集合类)

###定义一个简单的数据结构package com.test;option java_outer_classname = "PersonData";message person {      // ID(必需)      required int32 id = 1;      // 姓名(必需)      required string name = 2 [default = 'Test'];     // 年龄(可选)      optional string age= 3;      // 朋友的引用(集合)      repeated int32 ids= 4 [packed=true];  }

### 使用protoc工具转换为Java类###参数:-I 表示结构文件所在的目录,####    --java_out 表示输出的文件目录####  第三个参数person.proto 表示使用的是哪个结构文件protoc -I=.\ --java_out=.\ person.proto转换完成后把java文件考入对应的java包中,并在项目中引入GoogleProtocolBuffer的使用jar包                
            
com.google.protobuf
            
protobuf-java
            
2.6.1
        

以下是生成后的Java测试:

package com.k.ctc.code;import com.test.PersonData;/** * @author Kai * @Date 2015-11-23 17:54:48 * @Desc */public class MainLauncher {    public static void main(String[] params) throws Exception {        long time1 = System.currentTimeMillis();        PersonData.person p = PersonData.person.newBuilder().setId(1).setAge("18").setName("LiLei").build();        System.out.println("======================================");        System.out.println(p);        byte[] bytes = p.toByteArray();        System.out.println("======================================");        System.out.println(bytes.length);        PersonData.person p1 = PersonData.person.parseFrom(bytes);        System.out.println("======================================");        System.out.println(p1);        long time2 = System.currentTimeMillis();        System.out.println("======================================");        System.out.println("time:" + (time2 - time1));    }}

执行结果是:

======================================id: 1name: "LiLei"age: "18"======================================13======================================id: 1name: "LiLei"age: "18"======================================time:125

转载于:https://my.oschina.net/Kxvz/blog/538881

你可能感兴趣的文章
在html中显示Flash的代码
查看>>
C/C++STL常用容器用法总结
查看>>
gdal库集成MrSID库的做法
查看>>
missing ';' before 'namesapce'错误的解决
查看>>
js 浏览器滑动页面滚动条时,获取元素距离浏览器顶部距离,并且固定浮动导航...
查看>>
iphone Three20如何添加到工程,以及如何添加删除图片的按钮。
查看>>
内核堆分配函数brk()源码分析
查看>>
gops —— Go 程序诊断分析工具
查看>>
PHP json_decode返回null解析失败原因
查看>>
SpringMVC与Struts2的对比
查看>>
Java_eclipse软件与git配合使用创建git仓库
查看>>
极路由饥饿营销引质疑 联合创始人拿数据正面回应
查看>>
配置visual studio code for Mac 调试c/c++
查看>>
9、android开发之java.lang.verifyError(转载)
查看>>
创造特殊的构造函数——寄生构造函数模式
查看>>
[笔记]使用clearfix清除浮动
查看>>
postgres常用命令
查看>>
Hive metastore三种配置方式
查看>>
识别浏览器方法
查看>>
ubuntu 14.04 如何安装nvidia显卡驱动 [转载]
查看>>