一、protobuf的应用场景
在官方文档中可以看到
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
可以看到protobuf 与json相比具有 压缩比高 、解压缩速度更快的优点
二、protobuf的使用
protobuf在使用上较为复杂,过程可以分为以下几步:
POJO类数据:
public class Entity { private String key; private String value; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
生成的protobuf的数据:
syntax = "proto3"; message Entity { string key = 1; string value = 2; }
通过protoc.exe进行编译
在proto.exe的下载地址 https://repo1.maven.org/maven2/com/google/protobuf/protoc/ 编译Entity.proto文件
protoc-3.9.2-windows-x86_64.exe ./src/main/proto/Entity.proto --java_out=./src/main/java/src/
编译后生成有 Entity OuterClass类的文件 通过 Entity OuterClass类压缩数据
StreamWrap.Entity.Builder builder = StreamWrap.Entity.newBuilder(); //构造数据 builder.setKey("123"); builder.setValue("123"); StreamWrap.Entity entity = builder.build(); //将该PB类转换为二进制数据格式 byte[] buff = entity.toByteArray();
通过EntityOuterClass类解压缩数据
总结
到此这篇关于Protobuf的简要介绍及使用的文章就介绍到这了,更多相关Protobuf使用内容请搜索亿速云以前的文章或继续浏览下面的相关文章希望大家以后多多支持亿速云!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。