首页 » SEO优化 » protobufphp实例技巧_java中运用protobuf在maven项目中写一个示例

protobufphp实例技巧_java中运用protobuf在maven项目中写一个示例

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

protobuf在google中是一个比较核心的根本库,作为分布式运算涉及到大量的不同业务的通报,如何高效简洁的表示、操作这些业务在google这样的大规模运用中是至关主要的。
而protobuf这样的库恰好是在效率、数据大小、易用性之间取得了很好的平衡。

官方文档http://code.google.com/p/protobuf/

protobufphp实例技巧_java中运用protobuf在maven项目中写一个示例

2. protobuf的优缺陷

Protobuf的优点如下:A、性能好,效率高: 序列化后字节占用空间比XML少3-10倍,序列化的韶光效率比XML快20-100倍。
B、有代码天生机制: 将对构造化数据的操作封装成一个类,便于利用。
C、支持向后和向前兼容: 当客户端和做事器同时利用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户真个利用D、支持多种编程措辞: Protobuf目前已经支持Java,C++,Python、Go、Ruby等多种措辞。

protobufphp实例技巧_java中运用protobuf在maven项目中写一个示例
(图片来自网络侵删)

Protobuf的缺陷如下:A、二进制格式导致可读性差B、缺少自描述

2. idea安装protobuf插件

安装插件protobuf Support,之后重启

3. 配置maven依赖

<dependencies> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.4.0</version> </dependency></dependencies><build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.4.1.Final</version> </extension> </extensions> <plugins> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.5.0</version> <configuration> <protocArtifact> com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier} </protocArtifact> <pluginId>grpc-java</pluginId> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins></build>4. 书写proto文件

syntax="proto3";optionjava_package="com.jihite";optionjava_outer_classname="PersonModel";messagePerson{ int32id=1; stringname=2; stringemail=3;}5. 转换成java文件

6. 测试

把天生的类考的代码路径下,用下面测试用例测试

packagecom.jihite;importcom.google.protobuf.InvalidProtocolBufferException;importorg.junit.Test;publicclassprotobufTest{ @Test publicvoidtestN()throwsInvalidProtocolBufferException{ PersonModel.Person.Builderbuilder=PersonModel.Person.newBuilder(); builder.setId(1); builder.setName("jihite"); builder.setEmail("jihite@jihite.com"); PersonModel.Personperson=builder.build(); System.out.println("before:"+person); System.out.println("===Person Byte:"); for(byteb:person.toByteArray()) { System.out.print(b); } System.out.println("================"); byte[]byteArray=person.toByteArray(); PersonModel.Personp2=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:1name:"jihite"email:"jihite@jihite.com"===PersonByte:811861061051041051161012617106105104105116101641061051041051161014699111109================afterid:1aftername:jihiteafteremail:jihite@jihite.com

标签:

相关文章

25岁入行IT,开启人生新篇章

随着互联网的飞速发展,IT行业已成为我国最具活力和潜力的产业之一。近年来,越来越多的年轻人选择投身IT行业,为自己的未来铺就一条宽...

SEO优化 2024-12-26 阅读0 评论0

Python,开源、高效、可扩展的编程语言

Python,作为一种解释型、面向对象、动态数据类型的高级编程语言,自1991年诞生以来,以其简洁、高效、易学等特性,在各个领域得...

SEO优化 2024-12-26 阅读0 评论0

Python编程语言,从入门到精通

Python,作为一种解释型、面向对象、动态数据类型的高级编程语言,自1991年诞生以来,凭借其简洁、易读的语法和强大的库支持,迅...

SEO优化 2024-12-26 阅读0 评论0

PE40协议,引领智能电网变革的先锋力量

随着我国经济的快速发展,能源需求日益增长,能源安全问题逐渐凸显。为了应对这一挑战,我国政府高度重视智能电网建设,积极推动电力行业技...

SEO优化 2024-12-26 阅读0 评论0

0536it,介绍我国信息技术产业的崛起之路

随着我国经济社会的快速发展,信息技术产业作为国家战略性新兴产业,得到了前所未有的重视。其中,0536it作为我国信息技术产业的一颗...

SEO优化 2024-12-26 阅读0 评论0