2019独角兽企业重金招聘Python工程师标准>>>


protobuf转换方法

  1. 编写protobuf代码如下:
package netty;
option java_package = "com.clq.netty.protoc";
option java_outer_classname = "SubsribeReqProto";message SubScribeReq{required int32 subReqID = 1;required string userName = 2;required string productName = 3;repeated string address = 4;
}
package netty;
option java_package = "com.clq.netty.protoc";
option java_outer_classname = "SubsribeRespProto";message SubScribeResp{required int32 subReqID = 1;required string respCode = 2;required string desc = 3;
}

2 . 执行如下命令(首先下载proto.exe 地址:https://download.csdn.net/download/u012516914/10564014):

E:\tmp\protoc-2.5.0-win32> ./protoc.exe --java_out=./ SubscribeReq.proto
E:\tmp\protoc-2.5.0-win32> ./protoc.exe --java_out=./ SubscribeResp.proto

3 . 拷贝生成代码到IDE编辑器,下载地址见:https://download.csdn.net/download/u012516914/10564014 如果报错,则添加protobuf-java

        <dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>2.5.0</version></dependency>

4 . 执行测试protobuf测试

package com.clq.netty.protoc;import com.google.protobuf.InvalidProtocolBufferException;import java.util.ArrayList;
import java.util.List;/*** Created by clq on 2018/7/24.*/
public class TestSubsribeReqProto {private static byte[] encode(SubsribeReqProto.SubScribeReq req) {return req.toByteArray();}private static SubsribeReqProto.SubScribeReq decode(byte[] body) throws InvalidProtocolBufferException {return SubsribeReqProto.SubScribeReq.parseFrom(body);}private static SubsribeReqProto.SubScribeReq createSubScripeReq() {SubsribeReqProto.SubScribeReq.Builder builder = SubsribeReqProto.SubScribeReq.newBuilder();builder.setSubReqID(1);builder.setUserName("clq");builder.setProductName("xxxx usb key");List<String> address = new ArrayList<>();address.add("河南郑州");address.add("河南洛阳");builder.addAllAddress(address);return builder.build();}public static void main(String[] args) {SubsribeReqProto.SubScribeReq subScripeReq = createSubScripeReq();System.out.println("Before encode:" + subScripeReq.toString());SubsribeReqProto.SubScribeReq subScripeReq1 = createSubScripeReq();System.out.println("After encode:" + subScripeReq1);System.out.println("Assert equ:" + subScripeReq1.equals(subScripeReq));}
}

5 . 打印结果

Before encode:subReqID: 1
userName: "clq"
productName: "xxxx usb key"
address: "\346\262\263\345\215\227\351\203\221\345\267\236"
address: "\346\262\263\345\215\227\346\264\233\351\230\263"After encode:subReqID: 1
userName: "clq"
productName: "xxxx usb key"
address: "\346\262\263\345\215\227\351\203\221\345\267\236"
address: "\346\262\263\345\215\227\346\264\233\351\230\263"Assert equ:true

转载于:https://my.oschina.net/u/1787735/blog/1863115

protobuf序列化使用说明相关推荐

  1. 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )

    文章目录 一.TCP 粘包和分包 二.TCP 粘包和分包解决方案 三.客户端 Android 应用使用 Protobuf 四.服务器端 Java 服务器使用 Protobuf 五.参考资料 一.TCP ...

  2. 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )

    文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...

  3. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )

    文章目录 一.Protobuf 序列化 二.Protobuf 反序列化 三.完整代码 四.参考资料 一.Protobuf 序列化 在上一篇博客 [Android Protobuf 序列化]Protob ...

  4. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 )

    文章目录 一.Protobuf 源码分析 二.创建 Protobuf 对象 三.完整代码示例 四.参考资料 一.Protobuf 源码分析 Protobuf 源文件如下 : addressbook.p ...

  5. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

    文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...

  6. 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )

    文章目录 一.protoc 编译器简介 二.下载 protoc 编译器 三.使用 protoc 编译器编译 addressbook.proto 源文件 四.参考资料 一.protoc 编译器简介 在上 ...

  7. 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )

    文章目录 一.Protobuf 简介 二.Protobuf 优缺点分析 1.Protobuf 优点 2.Protobuf 缺点 三.参考资料 一.Protobuf 简介 Protobuf 是 Goog ...

  8. net自带二进制序列化,XML序列化和ProtoBuf序列化的压缩对比

    测试结果: ProtoBuf Length:115 BinaryFormatter Length:1177 XmlSerializer Length:814 xml length:825 做了一个各种 ...

  9. Protobuf序列化原理

    一.Protobuf序列化原理简介 1.1序列化 序列化是将数据结构或对象转换成二进制字节流的过程. Protobuf对于不同的字段类型采用不同的编码方式和数据存储方式对消息字段进行序列化,以确保得到 ...

最新文章

  1. 30年间,软件开发行业为何Bug纷飞?
  2. 运维基础(9)Linux性能调优三大系统
  3. 引入mysql+命名空间_C#连接MySQL操作详细教程
  4. 基于visual Studio2013解决算法导论之011快排改良
  5. 推荐系统国内外团队介绍
  6. win10上的docker怎么设置开机不要自动启动 [问题点数:20分,结帖人xyq1986]
  7. eclipse mysql jndi_裴东辉-MyEclipse和Eclipse中使用JNDI来配置程序的开发,以及服务器的配置 - 裴东辉...
  8. Loadrunner脚本编程(4)-数据类型操作和字符串操作
  9. XJOI 3877 红蓝字符串
  10. angular-输入验证
  11. 做终端的朋友们,再忙也要学学服务器
  12. 2020-12-29 zabbix 安装 snmpwalk 命令和基本使用
  13. matlab小波分解图像,MATLAB小波图像分解
  14. 心电信号越界怎么回事_一种心电信号处理方法
  15. 华为模拟器eNSP免费下载
  16. np.minimum()用法、广播机制
  17. 弗洛伊德的兔子与乌龟
  18. List of file signatures
  19. 国内的智能家居品牌有哪些
  20. java中二维数组的定义

热门文章

  1. jdbcdbcpc3p0
  2. 创建SSH keys用于添加到Git服务器上
  3. MyEclipse项目里面出现红叉的解决方案?
  4. 旅行 jzoj 1281
  5. [转载]Informix平安特征庇护数据的详细方法
  6. 人工智能学习(二)安装tensorflow与pytorch
  7. [冲啊!!!!!]小白SLAM相关基础知识
  8. 百度地图离线_3大主流导航地图,你用的哪个?
  9. 以下属于单例模式的优点的是_单例模式的优缺点和使用场景
  10. OpenCV图像处理(4)——去除小面积