资讯专栏INFORMATION COLUMN

protobuf基于java入门

lentoo / 1712人阅读

摘要:基于入门编写文件将文件转换为代码下载该工具将加入到所在目录命令行进入所在目录执行序列化反序列化实例化添加数据小明小黄建立实体数据将数据写入流中读取流

protobuf基于java入门 1. 编写protobuf文件——person.proto
package protobuf;
option java_package="com.sean.person";
option java_outer_classname = "PersonEntity";
message Person{
    required int32 id = 1;
    required string name = 2;
    optional string email=3;
    repeated string friends = 4;
}
2.将protobuf文件转换为java代码

下载protoc.exe该工具

将person.proto加入到protoc.exe所在目录

命令行进入protoc.exe所在目录

执行protoc ./person.proto --java_out=./

3.序列化 4.反序列化
public class Test {
    public static void main(String[] args) throws IOException {
        //实例化builder
        PersonEntity.Person.Builder personBuilder = PersonEntity.Person.newBuilder();
        //添加数据
        personBuilder.setId(1).setName("Sean").setEmail("123@qq.com").addFriends("小明").addFriends("小黄");
        //建立实体数据
        PersonEntity.Person msg = personBuilder.build();
        //将数据写入流中
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        msg.writeTo(output);

        byte[] bytes = output.toByteArray();
        System.out.println("person size: "+bytes.length);

        //读取流
        ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
        PersonEntity.Person person = PersonEntity.Person.parseFrom(bis);
        System.out.println("person ID: " + person.getId());
        System.out.println("person name: " + person.getName());
        System.out.println("person email: " + person.getEmail());
        System.out.println("person friends: "+person.getFriendsList());
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67199.html

相关文章

  • Python gRPC 入门

    摘要:消息格式有三个字段,在消息中承载的数据分别对应于每一个字段。所以应该为那些频繁出现的消息元素保留之内的标识号。示例编译这里我们用编译一下,看得到什么文件名使用以下命令编译生成了两个文件此文件包含生成的和类。 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文通过一个简单的 Hello World 例子来向您介绍 gRPC 。 gR...

    ideaa 评论0 收藏0
  • netty 基于 protobuf 协议 实现 websocket 版本的简易客服系统

    摘要:结构作为服务端作为序列化数据的协议前端通讯演示地址服务端实现启动类长连接示例主线程组从线程组请求的解码和编码把多个消息转换为一个单一的或是,原因是解码器会在每个消息中生成多个消息对象主要用于处理大数据流,比如一个大小的文件如果你直接传输肯定 结构 netty 作为服务端 protobuf 作为序列化数据的协议 websocket 前端通讯 演示 GitHub 地址 showImg(...

    wua_wua2012 评论0 收藏0
  • netty 基于 protobuf 协议 实现 websocket 版本的简易客服系统

    摘要:结构作为服务端作为序列化数据的协议前端通讯演示地址服务端实现启动类长连接示例主线程组从线程组请求的解码和编码把多个消息转换为一个单一的或是,原因是解码器会在每个消息中生成多个消息对象主要用于处理大数据流,比如一个大小的文件如果你直接传输肯定 结构 netty 作为服务端 protobuf 作为序列化数据的协议 websocket 前端通讯 演示 GitHub 地址 showImg(...

    Shihira 评论0 收藏0
  • Google Protobuf 编解码

    摘要:优点在谷歌内部长期使用产品成熟度高跨语言支持多种语言包括和编码后的消息更小更加有利于存储和传输编解码的性能非常高支持不同协议版本的前向兼容支持定义可选和必选字段的入门是一个灵活高效结构化的数据序列化框架相比与等传统的序列化工具它更小更快更简 Google Protobuf 优点: 在谷歌内部长期使用, 产品成熟度高. 跨语言、支持多种语言, 包括 C++、Java 和 Python....

    Eric 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<