1.编写一个.proto文件命名为:addressbook.proto,该文件内容来自protocal-buffers官网

2.使用protoc-2.6.0-win32.zip解压后的protoc.exe生成Java类

查询protoc.exe帮助:

生成Java类:

在Eclipse中的项目目录结构图如下:

说明:

上图中:addressbook.proto数据格式文件,AddressBookProtos.java是生成的java类,protobuf-java-2.5.0.jar是Java运行时类库。

3.使用AddressBookProtos类来实现对象的序列号和反序列化,了解Protocol-buffers jar的相关API

代码实例:

运行结果:

探究AddressBookProtos类:

a.构造Person对象,Person类继承自com.google.protobuf.GeneratedMessage类,而GeneratedMessage类继承自AbstractMessage类,并且实现了序列化接口Serializable。在AbstractMessage类中重写了toString()方法,具体内容如下:

于是有了Person对象调用toString()方法后直接输出Person对象的文本内容。

b.toByteString()返回的ByteString是一个不可变的byte序列,由AbstractMessage类实现。toByteArray()返回byte[]。这两个方法都是对象进行序列化的方法。

c.isInitialized()判断对象的字段是否初始化,该方法与Person类的initFields()方法相关。

initFields()源代码:

initFields()方法的调用是在Person类的默认实力对象初始化之后调用的,在Person类的静态代码块中可以看到:

d.Person类提供了一系列的反序列化的重载方法用来讲数据反序列化为Person对象。

e.关于Person对象的Build

Person类中有一个Builder的内部类,该类用来构建Person对象,并且为Person对象添加数据。

4.通过学习官网的实例,手绘一张Java使用protobuf的基本流程图

本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1563449,如需转载请自行联系原作者

protobuf在java中使用_记录:Protocol Buffers(protobuf)在Java开发中使用相关推荐

  1. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术

    软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...

  2. java学习里程碑_记录您的里程和社区运行情况:Java EE 7真实体验

    java学习里程碑 miles2run.org是跟踪跑步活动并与亲朋好友共享的简便方法. 可以创建然后跟踪基于天或基于距离的目标. 它还允许创建社区运行目标,并使多个跑步者参与并跟踪他们朝着该目标的活 ...

  3. java字符串拼接_为什么阿里巴巴不建议在for循环中使用quot;+quot;进行字符串拼接...

    点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 字符串,是 Java 中最 ...

  4. java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程

    java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...

  5. java gis项目_记录:GIS常用开发工具

    一.GIS软件 ArcGIS Erdas Envi QGIS:开源 国产:超图.中地MapGIS 二.二次开发编程语言 页面前端:html.css.JavaScript .JQuery.Bootstr ...

  6. 什么是Protocol Buffers / protobuf / protobuffer?一种服务器和客户端的消息交互方式

    Table of Contents Protocol Buffers 定义消息类型 指定字段类型 分配字段编号 指定字段规则 添加更多消息类型 添加评论 保留字段 您产生了什么.proto? 标量值类 ...

  7. java流程审批_基于SSM框架下的JAVA企业流程审批系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个企业流程审批系统(现代企业对资金流的控制十分严格,但是绝大部分企业的费用审批还停滞在手动填单.逐级递交.逐级审批的现状,既没有效率也不利于 ...

  8. java报价系统_基于SSM框架下的JAVA产品报价系统

    每天记录学习,每天会有好心情.*^_^* 今天和一个朋友共同完成了一个产品报价系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他 ...

  9. git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法

    前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Book​git-scm.com 安 ...

最新文章

  1. 在Intellij Idea中使用jstl标签库
  2. 自制单选多选日历文本框文本域控件
  3. php 自带sql防注入函数,php 最简单sql防注入函数与方法_PHP教程
  4. Oracle 游标的各种写法
  5. 微信小程序之通过Canvas生成图片保存到手机相册
  6. 清理Mac OSX中安装的nvidia CUDA driver
  7. 学成在线--0.项目概述
  8. cfiledialog 保存 扩展名_儿童美术:油画棒 插画一组超萌的大饼脸小孩 保存了跟小朋友一起画吧...
  9. Java-break-continue
  10. ArrayList(4)时间复杂度
  11. python调用rest api_调用rest api使用python将数据推送到运动学
  12. 垃圾收集器(CMS收集器 , G1收集器…)
  13. 面试时如何在众多Java工程师中脱颖而出
  14. 软件工程工具图(软件开发过程中可能用到的工具图)
  15. plt.gca()画框及打标签
  16. 应用分发是什么意思?APP内测分发步骤
  17. 计算机ps工具字母,PhotoShop7怎么把英文字母抠出来 一个工具搞定
  18. 6. 批量处理分析数据
  19. 原来PWM这么简单!通过锯齿波作为载波和调制波经过比较,产生相应的PWM输出波形
  20. 景区自定义手绘地图叠加

热门文章

  1. 详解3DTouch集成篇
  2. 基于Eclipse+Java Swing + Mysql图书管理系统
  3. MRT退休后的HEG(HDF-EOS To GeoTIFF Conversion Tool )工具安装
  4. macbook蓝牙pan未连接_机械键盘也能这么萌?洛斐DOT小黄鸭键鼠,蓝牙一键切换!...
  5. Electron-Builder打包时报错could not find: “C:\Users\XX\AppData\Local\Temp\t-bDWVX6\0-messages.nsh“
  6. win10 删除无用的bios引导
  7. Liunx Mint下载方案Aria2、web面板AriaNG搭建
  8. Latex之页边距设置
  9. Qualtrics初体验——10年不融资,价值80亿美金
  10. 华三模拟器HCL常用命令