protobuf序列化使用说明
2019独角兽企业重金招聘Python工程师标准>>>
protobuf转换方法
- 编写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序列化使用说明相关推荐
- 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )
文章目录 一.TCP 粘包和分包 二.TCP 粘包和分包解决方案 三.客户端 Android 应用使用 Protobuf 四.服务器端 Java 服务器使用 Protobuf 五.参考资料 一.TCP ...
- 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )
文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...
- 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )
文章目录 一.Protobuf 序列化 二.Protobuf 反序列化 三.完整代码 四.参考资料 一.Protobuf 序列化 在上一篇博客 [Android Protobuf 序列化]Protob ...
- 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 )
文章目录 一.Protobuf 源码分析 二.创建 Protobuf 对象 三.完整代码示例 四.参考资料 一.Protobuf 源码分析 Protobuf 源文件如下 : addressbook.p ...
- 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )
文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...
- 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )
文章目录 一.protoc 编译器简介 二.下载 protoc 编译器 三.使用 protoc 编译器编译 addressbook.proto 源文件 四.参考资料 一.protoc 编译器简介 在上 ...
- 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )
文章目录 一.Protobuf 简介 二.Protobuf 优缺点分析 1.Protobuf 优点 2.Protobuf 缺点 三.参考资料 一.Protobuf 简介 Protobuf 是 Goog ...
- net自带二进制序列化,XML序列化和ProtoBuf序列化的压缩对比
测试结果: ProtoBuf Length:115 BinaryFormatter Length:1177 XmlSerializer Length:814 xml length:825 做了一个各种 ...
- Protobuf序列化原理
一.Protobuf序列化原理简介 1.1序列化 序列化是将数据结构或对象转换成二进制字节流的过程. Protobuf对于不同的字段类型采用不同的编码方式和数据存储方式对消息字段进行序列化,以确保得到 ...
最新文章
- halcon中面到面的距离_halcon学习笔记——(8)由标定板得到测量平面位姿-阿里云开发者社区...
- 工程监测管理平台、工程数据看板、工程总览、动态模型、数据分析、数据跟踪、建筑工地、数据报表、警点管控、现场记录、观测记录、测点管理、模型管理、文档管理、墙体下沉、成员管理、axure原型、产品原型
- JXL读取,写入Excel
- jQuery创建、删除和修改html标签
- 修改antd下拉框样式
- 【wpa_supplicant】从 assoc 动作窥伺supplicant与driver的交互(二)
- 直接创建和使用struct函数
- 汇编语言--如何调用子程序
- 教你如何把软件转移到另一台电脑?
- 分享一下个人3年的运维经验
- 文章阅读 - 机器学习检测DNS隧道
- Python自动化-APPium原理解析与实际测试案例分享
- lua对接bmob数据库
- 高中数学怎么学好如何轻松学好高中数学
- android课程设计计步器,数字计步器课程设计.doc
- sentinel 史上最全
- Android SDK 国内下载代理设置
- WPF简单图片浏览器
- git branch常用分支操作
- Leetcode 官网及使用