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语言例子相关推荐

  1. java protobuf 例子_用Maven实现一个protobuf的Java例子

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

  2. 学习java web感想_学了近一个月的java web 感想

    对于每天学习的新知识进行一定的总结,是有必要的. 之前我学的每一门知识,我都没有怎么总结自己的问题,也没有怎么去想想该怎样才能学的更好,把知识掌握的更牢固.从现在开始呢,我会每半个月,或每一个月总结总 ...

  3. 用python中函数输出杨辉三角_用Python输出一个杨辉三角的例子

    这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的 ...

  4. python输出杨辉三角啊二维数组_用Python输出一个杨辉三角的例子

    这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的 ...

  5. 用java做一个简单记事本_用记事本写一个简单的java程序

    用记事本写一个简单的java程序 第一步: 安装好jdk,并设置好环境变量. 桌面-计算机(右键)-属性-高级系统设置-环境变量-path-在变量值后加上:和jdk安装路径加上(路径即为C:\Prog ...

  6. java main 运行_使用maven运行Java Main的三种方法解析

    导读热词 maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compi ...

  7. java框架核心技术_你必须掌握的 21 个 Java 核心技术!(干货)

    点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘 ...

  8. java环境搭建_记一次阿里云服务器Java相关环境搭建的过程

    Java在Web开发中有着不可或缺的地位,在我们通常开发中,为了使编写的demo或者项目能够让更多的朋友看到,我们通常会将项目打包发布到网络中的服务器上,以便让更多的人访问到我们的劳动成果上.想着我们 ...

  9. java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑

    这篇日记是对最近几周Java大作业写的一个3D打怪挖矿游戏进行记录和总结.另一个目的也是因为我发现身边很多朋友对3D游戏逻辑很有兴趣.所以写这篇日记可以介绍一下一个3D游戏是如何实现基础功能的.即使没 ...

最新文章

  1. SpringBoot在IDEA中实现热部署
  2. 海量日志数据分析与应用》场景介绍及技术点分析
  3. Android elevation的使用阴影
  4. 网上路径的图片有时候遍历不出来_最短路径问题(1)——Dijkstra算法
  5. orcadcapture安装_电路原理图设计软件(OrCAD Capture CIS 中文版) 16.6 免费安装版
  6. Unable to instantiate application 解决方法
  7. sagemath matlab,sagemath 是否真的好用?还是隐藏了大坑?
  8. Java模拟猜数字小游戏,有次数限制,并且输出猜测次数。
  9. 使用ADF Faces 之二:数据可视化组件 Thematic Map
  10. 计算机开机的四个画面,教你修改电脑开机时“欢迎使用”四个字!
  11. PS CS6正版带序列号百度网盘下载地址
  12. 大剖析:中国数万亿家装市场,为何出不了一个30亿美金的Houzz?
  13. 自动化测试概述/自动化工具
  14. 在vue项目中使用echarts中的dataset制作多维度的柱状图
  15. 拨开发展迷雾,将“智慧”嵌入全业务场景【2022戴尔科技峰会预告】
  16. python网络安全应用中心_安全人员常用的python库
  17. 科技型中小企业评价入库好处有哪些
  18. 河池学院计算机宿舍,【2021】河池学院学校食堂环境与寝室宿舍介绍_优优招生网...
  19. 几种光纤接口(ST,SC,LC,FC)-
  20. Office 365 ProPlus用户基本上已经拥有Office 2019

热门文章

  1. [ARM-assembly]-ARM交叉编译器下编译的各个镜像的反汇编文件分析
  2. java查看虚拟机信息_java分析工具系列4:jinfo(实时的调整和查看虚拟机信息)...
  3. c++对象长度之静态数据成员(3)
  4. 2.1.4 进程通信
  5. c语言冒泡排序(解析)
  6. Thymeleaf抽取公共页面片段
  7. 【LeetCode】376. 摆动序列(图解)
  8. 为什么HTTPS是安全的
  9. 一定是你想要的微服务资源springboot、springcloud、docker、dubbo
  10. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations