




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ProtocolBuffer的应用与原理,周华彬研发三部2011.12,定义,protocolbuffers是一个语言中立,平台中立,可扩展的序列化结构化数据的一种方式,可用于通讯协议,数据存储等方面。二进制与json和xml是同一个层次的东东支持的语言Java,C+,Python三种,PalmcityConfidential,Protocolbuffer的优劣,比json和XML1.简单;2.小巧:3-10倍3.效率高:20-100倍4.跨语言5.有自动工具生成访问类不足1.不适合描述符号文本2.不如XML易阅读和编辑3.需要工具预先生成序列化类,PalmcityConfidential,序列化反序列化对比测试,PalmcityConfidential,Protobuf是较优化的,跨语言;可选jackson,解析json效率高;hessian支持rpc,Protocolbuffer使用,1.下载资源下载地址为:,PalmcityConfidential,B.编译执行命令javac-d.-classpath.;protobuf-java-2.x.0.jarAddPerson.javaListPeople.javacomexampletutorialAddressBookProtos.javaC.执行运行AddPerson,在命令中执行命令java-cp.;protobuf-java-2.X.0.jarAddPersonaddr.dat,按照提示输入相应的信息,将保存到addr.dat中,PalmcityConfidential,显示数据执行命令w:jdk6binjava-cp.;protobuf-java-2.3.0.jarListPeopleaddr.dat,PalmcityConfidential,过程1-proto文件,proto文件,定义程序中需要处理的结构化数据,在protobuf的术语中,结构化数据被称为Mto文件非常类似java或者C语言的数据定义。清单1显示了例子应用中的proto文件内容。packagelm;messagehelloworldrequiredint32id=1;/IDrequiredstringstr=2;/stroptionalint32opt=3;/optionalfield,PalmcityConfidential,编译成-C+protoc-I=.-cpp_out=.to编译成-JAVAprotoc-java_out=.to编译成-pythonprotoc-python_out=.to,PalmcityConfidential,C+读取,linux安装protobuf$unzipprotobuf-2.3.0.zip$cdprotobuf-2.3.0$./configure&make&makeinstall$vi/etc/profileexportLD_LIBRARY_PATH=/usr/local/lib:/lib:/usr/libexportLD_RUN_PATH=$LD_LIBRARY_PATHexportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig$protocI.cpp_out./to$makecpp$./list_people_cppaddr.datAddr.dat是windows下生成的数据文件,复制到linux后可直接读取。环境变量必须设置,否则编译会出错,PalmcityConfidential,原理之解析与串行化,每个ProtocolBuffer类有些方法用于读写消息的二进制数据(ParseFromIstream(istream*input):从给定的C+istream解析消息。SerializeToOstream(ostream*output):将消息写入到给定的C+ostream中。他们是成对使用的,提供二进制数据的串行化和解析。,PalmcityConfidential,ProtocolBuffer与面向对象设计,ProtocolBuffer类只是用于存取数据的,类似于C+中的结构体,他们并没有在面向对象方面做很好的设计。如果你想要给这些类添加更多的行为,最好的方法是包装(wrap)。包装同样适合于复用别人写好的.proto文件。这种情况下,你可以把ProtocolBuffer生成类包装的很适合于你的应用,并隐藏一些数据和方法,暴露有用的函数等等。你不可以通过继承来给自动生成的类添加行为。这会破坏他们的内部工作机制。,PalmcityConfidential,更新proto文件时的规则,在新的proto文件中就要遵守如下规则:对已存在的任何字段,你都不能更改其标识(tag)号。你绝对不能添加或删除任何required的字段。你可以添加新的option
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭关系与心理健康的关系
- 心理治疗细则
- 园艺工作环境与安全保障
- 2025重庆永川区双石镇招聘1人笔试备考题库及答案解析
- 2025重庆垫江县科学技术局公益性岗位人员招聘1人笔试备考题库及答案解析
- 农产品溯源追溯体系的信息化
- 2025浙江嘉兴市海宁市司法局招聘合同制人员1人笔试含答案
- 2025银行基金笔试题库及答案
- 2025天津市建华中学诚聘教师笔试备考试题及答案解析
- 创意无限的主题乐园
- 2025全国企业员工全面质量管理知识竞赛试题及答案
- 水利水电工程单元工程施工质量验收标准第8部分:安全监测工程
- DB4419T 23-2024 建设工程施工无废工地管理规范
- 反诈知识竞赛题库及答案(共286题)
- 轧机设备安装施工方案
- DB31∕T 926-2015 城镇供水管道水力冲洗技术规范
- (完整版)IATF16949新版过程乌龟图的编制与详解课件
- 制药企业仓库温湿度分布的验证
- 满堂脚手架工程施工方案
- LY∕T 2705-2016 樟脑磺酸
- GB∕T 3099.4-2021 紧固件术语 控制、检查、交付、接收和质量
评论
0/150
提交评论