java protobuf 例子_用 Maven 实现一个 protobuf 的 Java语言例子
1. 介绍Protocol Buffers
在我们学习Java语言的路上,我们知道Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化,常用于RPC 系统(Remote Procedure Call Protocol System)和持续数据存储系统,希望大家对Java语言的学习有所帮助。
其类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差,类似的还有json、Java的Serializable等。
很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
2. Idea 安装protobuf插件
安装插件protobuf Support,之后重启
3. 配置依赖
pom.xml添加
com.google.protobuf
protobuf-java
3.4.0
kr.motd.maven
os-maven-plugin
1.4.1.Final
org.xolstice.maven.plugins
protobuf-maven-plugin
0.5.0
com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier}
grpc-java
compile
compile-custom
4. 书写proto文件
syntax = "proto3";
option java_package = "com.jihite";
option java_outer_classname = "PersonModel";
message Person {
int32 id = 1;
string name = 2;
string email = 3;
}
5. 转化成Java文件
6. 测试
把生成的类考的代码路径下,用下面测试用例测试
package com.jihite;
import com.google.protobuf.InvalidProtocolBufferException;
import org.junit.Test;
public class protobufTest {
@Test
public void testN() throws InvalidProtocolBufferException {
PersonModel.Person.Builder builder = PersonModel.Person.newBuilder();
builder.setId(1);
builder.setName("jihite");
builder.setEmail("jihite@jihite.com");
PersonModel.Person person = builder.build();
System.out.println("before:" + person);
System.out.println("===Person Byte:");
for (byte b : person.toByteArray()) {
System.out.print(b);
}
System.out.println("================");
byte[] byteArray = person.toByteArray();
PersonModel.Person p2 = PersonModel.Person.parseFrom(byteArray);
System.out.println("after id:" + p2.getId());
System.out.println("after name:" + p2.getName());
System.out.println("after email:" + p2.getEmail());
}
}
结果
before:id: 1
name: "jihite"
email: "jihite@jihite.com"
===Person Byte:
811861061051041051161012617106105104105116101641061051041051161014699111109================
after id:1
after name:jihite
after email:jihite@jihite.com
如有问题请加微信号:Iotek666,本微信号会不定期推送技术相关优质文章、热点资讯、视频资源及生活趣事,也很乐意与您一起交流IT知识,让我们在闲暇之余巩固一下自己的知识体系 ,扩充一下自己的知识面。快利用琐碎时间给自己充电吧!
希望这篇文章可以帮助到你,总之同学们,IT资讯尽在职坐标。
java protobuf 例子_用 Maven 实现一个 protobuf 的 Java语言例子相关推荐
- java protobuf 例子_用Maven实现一个protobuf的Java例子
注:试验环境在Mac Idea环境下 1. 介绍Protocol Buffers Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RP ...
- 学习java web感想_学了近一个月的java web 感想
对于每天学习的新知识进行一定的总结,是有必要的. 之前我学的每一门知识,我都没有怎么总结自己的问题,也没有怎么去想想该怎样才能学的更好,把知识掌握的更牢固.从现在开始呢,我会每半个月,或每一个月总结总 ...
- 用python中函数输出杨辉三角_用Python输出一个杨辉三角的例子
这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的 ...
- python输出杨辉三角啊二维数组_用Python输出一个杨辉三角的例子
这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的 ...
- 用java做一个简单记事本_用记事本写一个简单的java程序
用记事本写一个简单的java程序 第一步: 安装好jdk,并设置好环境变量. 桌面-计算机(右键)-属性-高级系统设置-环境变量-path-在变量值后加上:和jdk安装路径加上(路径即为C:\Prog ...
- java main 运行_使用maven运行Java Main的三种方法解析
导读热词 maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compi ...
- java框架核心技术_你必须掌握的 21 个 Java 核心技术!(干货)
点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘 ...
- java环境搭建_记一次阿里云服务器Java相关环境搭建的过程
Java在Web开发中有着不可或缺的地位,在我们通常开发中,为了使编写的demo或者项目能够让更多的朋友看到,我们通常会将项目打包发布到网络中的服务器上,以便让更多的人访问到我们的劳动成果上.想着我们 ...
- java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑
这篇日记是对最近几周Java大作业写的一个3D打怪挖矿游戏进行记录和总结.另一个目的也是因为我发现身边很多朋友对3D游戏逻辑很有兴趣.所以写这篇日记可以介绍一下一个3D游戏是如何实现基础功能的.即使没 ...
最新文章
- SpringBoot在IDEA中实现热部署
- 海量日志数据分析与应用》场景介绍及技术点分析
- Android elevation的使用阴影
- 网上路径的图片有时候遍历不出来_最短路径问题(1)——Dijkstra算法
- orcadcapture安装_电路原理图设计软件(OrCAD Capture CIS 中文版) 16.6 免费安装版
- Unable to instantiate application 解决方法
- sagemath matlab,sagemath 是否真的好用?还是隐藏了大坑?
- Java模拟猜数字小游戏,有次数限制,并且输出猜测次数。
- 使用ADF Faces 之二:数据可视化组件 Thematic Map
- 计算机开机的四个画面,教你修改电脑开机时“欢迎使用”四个字!
- PS CS6正版带序列号百度网盘下载地址
- 大剖析:中国数万亿家装市场,为何出不了一个30亿美金的Houzz?
- 自动化测试概述/自动化工具
- 在vue项目中使用echarts中的dataset制作多维度的柱状图
- 拨开发展迷雾,将“智慧”嵌入全业务场景【2022戴尔科技峰会预告】
- python网络安全应用中心_安全人员常用的python库
- 科技型中小企业评价入库好处有哪些
- 河池学院计算机宿舍,【2021】河池学院学校食堂环境与寝室宿舍介绍_优优招生网...
- 几种光纤接口(ST,SC,LC,FC)-
- Office 365 ProPlus用户基本上已经拥有Office 2019
热门文章
- [ARM-assembly]-ARM交叉编译器下编译的各个镜像的反汇编文件分析
- java查看虚拟机信息_java分析工具系列4:jinfo(实时的调整和查看虚拟机信息)...
- c++对象长度之静态数据成员(3)
- 2.1.4 进程通信
- c语言冒泡排序(解析)
- Thymeleaf抽取公共页面片段
- 【LeetCode】376. 摆动序列(图解)
- 为什么HTTPS是安全的
- 一定是你想要的微服务资源springboot、springcloud、docker、dubbo
- org.springframework.dao.InvalidDataAccessApiUsageException: Write operations