【Protobuf java版本安装步骤】教程文章相关的互联网学习教程文章

Google Protobuf 使用 Java 版【代码】

一 . Protobuf 的入门  Protobuf 是一个灵活,高效,结构化的数据序列化框架, 相比于 XML 等传统的序列化工具,它更小,更快,更灵活,更简单. Protobuf 支持数据结构化一次可以到处使用.甚至跨语言使用.同通过代码生成工具可以自动生成不同语言版本的源代码,甚至可以在使用不同版本的数据结构中进行数据传递,实现数据结构的向前兼容.    Google 的 protobuf 在业界非常流行,很多商业项目选择 protobuf 作为编码解码框架,这里我们一...

在java项目中使用protobuf

1 通用方式第一步,定义数据结构第二步,使用protoc.exe生成java代码第三步,序列化第四步,反序列化2 grpc方式grpc官方推荐的方式,通过maven插件来生成java代码。参考https://www.cnblogs.com/liugh/p/7505533.html 原文:https://www.cnblogs.com/hustdc/p/9131346.html

protobuf vs java

生成 java 代码时的警告:The default outer class name, "Auth", conflicts with a type declared in the proto file and an alternative outer class name is used: "AuthOuterClass". To avoid this warning, please use the java_outer_classname option to specify a different outer class name for the .proto file原因:1.Java保存的文件名必须与类名一致;2.如果文件中只有一个类,文件名必须与类名一致;3.一个Java文件中...

Protobuf java版本安装步骤

1,安装mavena.下载apache-maven-3.2.5,链接:http://mirrors.hust.edu.cn/apache//maven/maven-3/3.2.5/binaries/b.解压到指定目录:(我使用的目录为)/Users/zhoufei/Documents/Tools/apache-maven-3.2.5c.打开终端,配置环境变量:vi ~/.bash_profileMAVEN_HOME=/Users/zhoufei/Documents/Tools/apache-maven-3.2.5 //maven解压目录export PATH=$PATH:$MAVEN_HOME/binexport JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6....

使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题【代码】

使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题 1.产生的bug XXXXXXXXRequest.Builder request = XXXXXXXXRequest.newBuilder(); XXXXXXResponse response = XXXXXXResponse.newBuilder().build(); JsonFormat format = new JsonFormat(); return format.printToString(response);使用这个方法会导致 字段值是默认值的数据忽略,返回的结果缺少自己想要的值 2.解决办法 1.如果你的项目中允许 使用其他的工具 ...

使用JsonFormat映射protobuf和javabean【代码】【图】

使用JsonFormat映射protobuf和javabean protobuf2protobuf3总结JsonFomat是谷歌官方推出的protobuf映射工具,可以将protobuf对象转换成JSON,所以我们可以使用JsonFomat转换成的json在javabean和protobuf对象间转换。 JsonFormat有两个版本:com.googlecode.protobuf.format.JsonFormat(以下简称为F.JsonFormat)和com.google.protobuf.util.JsonFormat(以下简称为U.JsonFormat)。前者相对简单,后者可以指定需要转换的默认字段...

Java序列化和Protobuf【代码】

序列化 原理无非将对象压缩成字符流,需要的时候再取出来; 这种情况在分布式用的比较多,类似的Xml和Json也可以实现这种效果;下面放一个Java序列化的例子 1.创建实例化对象 package com.bean;import java.io.Serializable; import java.util.List;/*** @author: jane* @CreateTime: 2020/5/11* @Description:*/ public class MyProto implements Serializable {int userID;String userName;List<String> hobby;public MyProto(in...

java-Protobuf getAllFields()性能【代码】

我们使用protobuf作为消息传递,每条消息都循环遍历set字段,并对其进行处理. 我们使用for ( final Map.Entry<Descriptors.FieldDescriptor, Object> entry : msg.getAllFields().entrySet()) {FieldDescriptor field = entry.getKey();Object value = entry.getValue();在事件探查器下,我们发现此GetAllFields大部分时间都在使用,并且我进行了一些研究,似乎没有其他方法. 我知道我们可以使用以下方法:for ( final FieldDescriptor ...

如何使用Java反射创建Protobuf实例?【代码】

通常,您将创建一个protobuf类实例,如下所示:Bar.Builder bld = Bar.newBuilder(); bld.setXYZ(...我有一个用Java反射实例化protobuf类的用例:Class clsBar = Class.forName("com.xyz.Foo$Bar"); Object instance = clsBar.newInstance(); // error here! Method mth = clsBar.getMethod(...);上面的代码与普通的Java类一起正常工作.但是对于生成的protobuf类“ com.xyz.Foo $Bar”,它给我一个NoSuchMethodException,因为那里没有...

java-在哪里可以找到Datastore Admin v1 API的Protobuf定义?

我正在尝试使用最近在Google Analytics(分析)中宣布的Datastore Admin API v1,并想知道在哪里可以找到相关API的protobuf? 我在googleapis存储库中找到了一些protobuf,但是已经不推荐使用Datastore Admin API v1beta1的protobuf. 此外,我想问问是否有人知道为什么Admin API原型未在Maven Central中发布? 通用数据存储区API原型are.解决方法:哎呀. 同时,您可以使用现有的原型并更改一行: 从:包google.datastore.admin.v1beta1; 至...

java-如何序列化protobuf中的反向关系【代码】

我有以下原始文件message Person {// IDrequired int32 id = 1;// namerequired string name = 2;// emailoptional string email = 3;// tasksrepeated Task tasks = 4; }message Task {//IDrequired int32 id = 1;//owneroptional Person owner =2;}一个人有任务清单,这是一对多关系.在任务中,我将反向关系设置为人,即一对一关系. 我的问题是:当我在人员对象中构建任务时,如何序列化与当前人员的反向关系,因为尚未构建人员对象.请...

如何通过给定的消息类型名称和原始字节来获取Java Object的protobuf?【代码】

我有字符串和原始字节的消息类型名称.如何通过这些材料创建java对象?b.protopakage foo; message Bar {required int32 id = 1;required string name = 2; }TestMain.javafoo.Bar bar = foo.Bar.newBuilder() .setId(1).setName("foobar").build(); byte[] rawbytes = bar.toByteArray(); String typeName = bar.getDescriptorForType().getFullName();foo.Bar b = (foo.Bar) howTo(rawbyte, typeName);解决方法:正如我在评论中所说...

java – protobuf中ByteSize()的等价物【代码】

Java中的protobuf是否有等效的ByteSize()?我想在序列化之前获得protobuf的大小. 就像是:Protobuf.Builder buffer = Protobuf.newBuilder(); 我现在需要缓冲区的大小.知道如何获得它吗?解决方法:构建协议缓冲区,并调用getSerializedSize().

java – 在新的.proto文件中使用已编译的Protobuf-classes【代码】

我导入了一个包含protobuf生成的类的库. 我想发送此类的对象作为其他protobuf消息的一部分.但protoc(显然是?)抱怨缺少定义:Couldn’t resolve reference to Type ‘ExistingProtobufLibraryClass’.我当然可以从库的源代码复制现有的.proto源代码,但后来我怀疑protoc会生成这个类的两个版本,这会非常烦人. 任何想法如何解决这个问题?解决方法:您需要导入现有的proto类.import "somepath/existing_protobuf_library_class.proto"...

ZeroMQ Protobuf的替代品(ZeroMQ死于Java吗?)

我正在为我们的Java项目寻找Message Queue,并来到ZeroMQ Protobuf因为ZeroMQ不提供序列化器,我们已经使用了Protobuf. 但是,在检查ZeroMQ问题时,我发现Java绑定jzmq已经发布了2年#442而jeromqJava implementationBased on libzmq 3.2.5.ZeroMQ 4.x完全没有Java解决方案. (最新3.x发布时间为2014/10/14)解决方法:Nanomsg被设计为ZeroMQ的替代和升级,并且有几个Java绑定.最新的一个在2月更新.