protobuf的安装和使用

以下全部基于win7系统。

protobuf是什么,有什么用网上说的已经很多了。这里就是说一下怎么使用。就当给自己做个笔记吧。

.proto文件的语法什么的也请网上查看,挺多的。

第一步: 下载protoc.exe 和 protobuf-java-2.4.1.jar。这里要注意版本区别(网上不少人说要下载protoc-2.4.1-win32.zip,但是没有找到)。其实protobuf就不用安装,只是使用protoc.exe生成一下java文件罢了。

下载路径 http://pan.baidu.com/s/1sj0VX1r

也可以下载最新版:https://developers.google.com/protocol-buffers/docs/downloads

第二步:下载好后任意放到一个文件夹,这里我放到了E:/protobuf下。然后新建一个person.proto文件:

option java_package = "com.zh.test";  
option java_outer_classname = "Persons";
message PersonInfo  {  required int32 id = 1;required string name = 2;
} 

第三步:生成java文件。在cmd中执行命令E:\protobuf>protoc.exe --java_out=./ person.proto。注意:./后面有一个空格

    然后就能看到在当前文件夹下生成一个com文件夹,这就是上面生成的.java文件的包了。逐级打开包就能看到Persons.java文件了。

第四步:把生成的Persons.java文件拷贝的项目中,然后就可以测试了,看如下代码

public class TestProtobuf {public static void main(String[] args) {Persons.PersonInfo.Builder builder=Persons.PersonInfo.newBuilder();  builder.setId(1);builder.setName("zhang");Persons.PersonInfo info=builder.build();  byte[] result=info.toByteArray();System.out.println("==========="+result);try {Persons.PersonInfo msg = Persons.PersonInfo.parseFrom(result);System.out.println(msg.getId());System.out.println(msg.getName());} catch (InvalidProtocolBufferException e) {e.printStackTrace();}}}

 

OK,到这里就完成了序列化。

 

转载于:https://www.cnblogs.com/qlong8807/p/4403021.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7优化设置_win7蓝牙怎么打开?

当电脑需要连接蓝牙设备的时候,就需要打开蓝牙设置才行。鉴于一些win7的用户还不知道蓝牙功能在哪,win7蓝牙怎么打开,故系统圣地分享本篇教程。1、win7蓝牙怎么打开?首先要你的电脑支持蓝牙功能。如果你的电脑有蓝牙功能的话那么在电脑的右下…

Struts2 通配符

在配置<action …./>元素时&#xff0c;需要指定name,class和method属性&#xff0c;这三个属性都支持通配符。 例如&#xff1a; 1.<action name ”*Action” class “student.RegisterAction” method “{1}”> 如果用户请求的URL为loginAction.action,则调用…

Doxygen从零学起———安装和配置

Doxygen可以为多种语言生成说明文档&#xff08;从程序的源代码中提取其中按照约定格式写的注释中提取信息&#xff09; 例如C, Objective-C, C#, C, PHP, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, D ,从这期开始&#xff0c;我将系…

JAVA Drp项目实战—— Unable to compile class for JSP 一波三折

交代下背景。电脑系统是64位的&#xff0c;用的是64位的Tomcat。安装是32位的Myeclipse10&#xff0c;java环境也是32位的。Tomcat在開始启动时会报这样一个错误&#xff0c;“Cant load IA 64-bit .dll on a AMD32-bit platform”。可是不耽误使用&#xff0c;近期在敲Drp项目…

Java中的ClassLoader

Java中类的加载过程&#xff08;如Dog类&#xff09;&#xff1a; 通过类型信息定位Dog.class文件。载入Dog.class文件&#xff0c;创建相应的Class对象。执行父类的静态字段定义时初始化语句和父类的静态初始化块。执行子类的静态字段定义时初始化语句和子类的静态初始化块。当…

excel删除无尽空白行_excel如何批量删除空白行 巧用 ctrl+G 只需1秒 最常用的技巧...

工作中我们使用excel通常都会遇到这种情况&#xff0c;就是表格中有很多多余的空行。我们需要把多余的空行删除。 如果空行只有一两行的话&#xff0c;可以把鼠标放在空白行上&#xff0c;然后点击鼠标右键&#xff0c;在弹出的菜单中选择删除菜单。 在弹出的删除确定窗口中&am…

Doxygen for C++使用说明——注释代码一

写这一节的时候&#xff0c;我在想网上有众多的参考文献&#xff0c;外加官网上的&#xff0c;要是我再将它们重复一遍&#xff0c;也没什么意思。网上资料很多&#xff0c;但是他们有一个共同的缺点是都是罗列用法&#xff0c;然后显示效果。这些都是比较散的&#xff0c;我想…

DevOps的前世今生

2019独角兽企业重金招聘Python工程师标准>>> 目前在国外&#xff0c;互联网巨头如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb&#xff0c;传统软件公司如Adobe、IBM、Microsoft、SAP等&#xff0c;亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐…

【转】最牛B的编码套路

最近&#xff0c;我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”&#xff08;练习编程&#xff09;&#xff0c;写成于2005年&#xff0c;读后令我惊讶不已&#xff1a; 与你所相信的恰恰相反&#xff0c;单纯地每天埋头于工作并不能算是真正意义上的…

ecshop 广告设置

最近公司准备做个商城&#xff0c;让我从JAVA转过去&#xff0c;好吧&#xff0c;先看下吧&#xff0c;反正也得做。接到手里的是一套已经成型的模板&#xff0c;但是二次开发必须得了解下机制、文件、响应、设置什么的&#xff0c;也是个新手&#xff0c;写点东西给后面更新的…

linux 信号_Linux信号机制

信号就是一条消息&#xff0c;通知进程系统中发生了什么事&#xff0c;每种信号都对应着某种系统事件。一般的底层硬件异常是由内核的异常处理程序处理的&#xff0c;它对用户进程来说是透明的。而信号机制&#xff0c;提供了一种方法通知用户进程发生了这些异常。例如&#xf…

DOxygen for C++使用说明——添加数学公式

公式 Doxygen允许你把 公式显示在最终的输出中&#xff08;这个功能仅限于HTML和输出&#xff09;.为了可以在HTML documentation显示公式&#xff08;转化为图片&#xff09;&#xff0c;你必须安装以下软件&#xff1a; latex: 编译器, 被用来解析公式, 首先提取公式写到一…

VC2010下Qt5的中文乱码问题

要搞清楚这个问题&#xff0c;先要弄明白编码。但是编码问题实在太复杂&#xff0c;这里肯定讲不开。 我先找一个例子&#xff0c;比如&#xff1a;“中文” 的 Unicode 码点/UTF8编码/GBK 分别是多少。 先去这个网站&#xff0c;输入 “中文” 查询对应的 Unicode 码点/UTF8编…

Tomcat 的 DefaultServlet

问题描述&#xff1a; 群里有人测试 Spring MVC&#xff0c;没有配置任何Controller&#xff0c;只配置了一个view resolver&#xff0c;指定了前缀后缀。 然后&#xff0c;他问的是 当访问 localhost:8080/test 的时候&#xff0c;为什么会被重定向到 localhost:8080/test/ &a…

Python学习(七)面向对象 ——封装

Python 类的封装 承接上一节&#xff0c;学了Student类的定义及实例化&#xff0c;每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩&#xff0c;可定义函数 print_score() 该函数为类外的函数&#xff0c;如下&#xff1a; 1 class Student(object):2 def …

spss练习数据_SPSS篇——如何在成千上百万个数据中标识重复个案

本文就带大家来学习一个小技巧&#xff0c;如何运用SPSS标识重复个案。我们都知道在Excel中&#xff0c;通常会用到“筛选”功能来选出指定条件相同的单元格。那么在SPSS中&#xff0c;如何在成千上百万个数据中筛选出重复的个案呢&#xff1f; 小编就是要告诉你&#xff0c;几…

DOxygen for C++使用说明——Markdown支持

自Doxygen 版本1.8.0&#xff0c;Markdown被引进。 接下来&#xff0c;我们将先简单介绍标准的Markdown语法&#xff0c;读者可以进入Markdown官网查询更详细的细节。然后讨论一下Doxygen支持的Markdown扩展&#xff0c;最后讨论一下Doxygen对Markdown标准的实现细节。 Stand…

方程式漏洞之复现window2008/win7 远程命令执行漏洞

前几天就想写的&#xff0c;因为一些缘故就没写。此次是在外网环境下进行的。大家在内网中也一个样。 方法&#xff1a; 使用Eternalblue模块&#xff0c;剑测是否有漏洞然后msf生成一个dll直接反弹shell. PS&#xff1a;win版本的不知道缘何生成出来的dll是0kb 我就在自己本地…

C++空类和string类

1. 空类 1.1 空类默认哪六个成员函数。 1 class Empty2 {3 public:4 Empty(); //缺省构造函数 Empty e;5 Empty( const Empty& ); //拷贝构造函数 Empty e2(e1);6 ~Empty(); //析构函数7 Empty& operator( const Empty& ); //赋值运算符…

客服会话 小程序 如何发起_小程序、公众号、App三者如何融合布局?这里有一份避坑指南...

对产品经理来说&#xff0c;小程序无疑是2020年最火爆的词之一了。我们能看到&#xff0c;就在今年疫情期间&#xff0c;小程序DAU达到4.5亿&#xff0c;而超市、生鲜果蔬、社区购物等都同比增长100个点左右&#xff0c;小程序的商业价值很明显地在快速释放。小程序如此火爆&am…