Protocol Buffers的学习笔记
来源:互联网 发布:淘宝立体3d服装制作 编辑:程序博客网 时间:2024/05/22 05:27
介绍——what
通常解释为,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。简要理解为,Protocol Buffers是数据结构化格式,类似于JSON、XML。
使用——how
使用Protocol Buffers可以分为以下几个步骤:
- 定义*.proto格式文件,用来结构化数据,或者使用Protocol 语法来定义一个数据结构(C/S间通信或者对象序列化的数据结构)。
- 运行protocol编译器编译*.proto文件为指定语言(Java、go、c都可以)的类。
- 数据的读和写(序列化和反序列化)——每个protocol编译后的类都有使用二进制格式写和读你所定义的类型的消息的方法 。
例子
step 1——————创建Model.proto文件
package protobufmessage People{ required string name = 1; required int32 id = 2; optional string email = 3;}
step 2——————–编译为指定语言的类
//安装Protocol Buffers 编译器protoc//编译Model.protoprotoc --java(生成类的语言)_out=./src(生成目录) ./proto/Model.proto(根据的proto文件)
step 3——————–序列化和反序列化
//example1--序列化将数据传输出去,网络输出//构建数据Model.People.Builder peopleBuilder = Model.People.newBuilder();peopleBuilder.setName("name1") ;peopleBuilder.setId(10) ;peopleBuilder.setEmail("1343483119@qq.com")Model.People people=peopleBuilder.build();//将对象写入输出流,通过二进制输出。ByteArrayOutputStream output = new ByteArrayOutputStream(); people.writeTo(output); byte[] byteArray = output.toByteArray(); ////////////////////////////example2--反序列化,对象数据从二进制中读取出来,byteArray为网络上传过来的二进制ByteArrayInputStream input = new ByteArrayInputStream(byteArray); // 反序列化 Model.People people= Model.People.parseFrom(input);//获取people中的信息
好处——Why
没有对比就没有伤害
Protobuf:优点,传输速度快,可以方便的生成数据存取类,数据更小,在大多数平台上都有很好的支持。缺点,应用不够广,二进制格式导致可读性差,缺乏自描述。
JSON:人类可读/可编辑,可以提前解析模式,卓越的浏览器支持,比XML更冗长。
XML:人类可读/可编辑,可以提前解析模式,SOAP等标准
良好的工具支持(xsd,xslt,sax,dom等),相当冗长。
阅读全文
0 0
- Protocol Buffers的学习笔记
- Protocol Buffers 学习
- Protocol Buffers学习2
- Protocol Buffers之学习
- Protocol Buffers 安装使用笔记
- protocol buffers java使用笔记
- caffe之Protocol Buffers学习
- Protocol Buffers 的使用 (一)
- protocol buffers的使用示例
- protocol buffers的使用示例
- Wire protocol buffers的使用
- Protocol Buffers的简单介绍
- protocol buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- linux磁盘分区,挂载磁盘,以及卸载磁盘
- <C++ Primer_5th>习题_3.2
- java任务--Volume
- 调整数组顺序使奇数位于偶数前面
- gcc -c
- Protocol Buffers的学习笔记
- jsp实现登录验证的过滤器
- <C++ Primer_5th>习题_3.3
- Java多线程CountDownLatch的使用
- ubuntu16.04 安装pycharm
- oracle 配置st_geometry
- <C++ Primer_5th>习题_3.4
- RPC作品开发记录
- gRPC学习笔记