1.Protocol Buffers简介

Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言。

2.protobuf相比Xml的优点

•更简单
•数据描述文件只需原来的1/10至1/3
•解析速度是原来的20倍至100倍
•减少了二义性
•生成了更容易在编程中使用的数据访问类
3.安装
yum -y install  protobuf-compiler protobuf-static protobuff protobuf-devel
4.使用
vi helloworld.proto
 
输入下面的数据:

message helloworld {

required int32 id = 1; // ID

required string str = 2; // str

}

5.编译 .proto

protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/helloworld.proto

protoc -I=. --cpp_out=. ./helloworld.proto

命令将生成:

helloworld.pb.h , 定义了 C++ 类的头文件

helloworld.pb.cc , C++ 类的实现文件

6.测试程序

#include "helloworld.pb.h" //包含生成的头文件
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[]) {
helloworld msg;
msg.set_id(101);
msg.set_str("hello");
// 序列化消息
char buff[1024] = {0};
msg.SerializeToArray(buff, 1024);
//解析消息
helloworld msgread;
msgread.ParseFromArray(buff, 1024);
cout << msgread.id() << endl;
cout << msgread.str() << endl;
}

  

  

 7.编译运行

g++ -o main  main.cpp helloworld.pb.cc -lprotobuf -lpthread

./main

 

最新文章

  1. Hibernate中的PO
  2. $(function(){})和$(document).ready(function(){}) 的用法
  3. Flash视频播放器开发经验总结
  4. 文章投稿 latex 生成 pdf的字体Embeded问题解决(转自兵马俑BBS)
  5. php redis 分布式类
  6. 计算Excel中的Sheet个数
  7. loadrunner_Controller技巧_overlay
  8. Uva 10935 Throwing cards away I
  9. LoadRunner获取一个独特的价值在执行的场景
  10. Matlab学习第二天 利用插值
  11. PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)
  12. MacVim小试
  13. 201521123070 《JAVA程序设计》第14周学习总结
  14. 剑指架构师系列-MySQL的安装及主从同步
  15. 【CSA72G】【XSY3316】rectangle 线段树 最小生成树
  16. scala读取配置文件
  17. 超详细的java集合讲解
  18. Linux 系统下实践 VLAN
  19. word2vec原理推导与代码分析
  20. tumblr热度

热门文章

  1. java substring
  2. telnet 使用
  3. String字符串类课后作业
  4. ECMAScript6 面向对象 时钟效果
  5. 腾讯的一道JavaScript面试题
  6. 【编辑器】【Sublime Text】使用笔记
  7. JQuery随笔
  8. A、B、C、D和E类IP地址
  9. No module named * 但是已经安装了找不到解决办法
  10. 关于Erlang中的behaviour