码迷,mamicode.com
首页 > 其他好文 > 详细

Protocol Buffers基础(一)

时间:2021-04-22 15:46:36      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:round   unzip   module   png   传输   conf   buffer   img   mamicode   

本文是protobuf的基础教程,适合没有任何框架基础的人学习。。protobuf是Google的语言无关,平台无关的可扩展机制,用于对结构化数据进行序列化。什么意思呢?举个例子,我有一个数据结构Person,里面有一堆信息。比如这样。

技术图片

我们知道,在网络中我们传输的都是tcp包或者是udp包,所以,我们需要将这个数据先变成二进制流,再进行切割封装。到对面的时候这个数据结构已经被损坏了。别人可能根本不能提取出Name,phones这些信息。所以我们需要对数据结构进行序列化,将他变成二进制流,方便我们处理。比如一些简单的方式json。

技术图片

 

 

 变成了这样。过去还是用xml等工具进行序列化,但是不如json直观,所以现在大部分的web传输数据都是json格式。但是json有个缺点,速度太慢,而且太浪费空间,所以在高性能的传输中并不好用。这时候就是用google的protobuf了。

我们可以直接在官方的github上面下载protobuf,而且他自带示例。https://github.com/protocolbuffers/protobuf

在github下面的表格中我们可以看到protobuf可以支持c++,java,js等多种语言,我们这里为了方便采用ubuntu/c++进行讲解。

protobuf在安装之前,需要安装一些依赖的类库,可以使用这个命令安装 sudo apt-get install autoconf automake libtool curl make g++ unzip

之后下载

git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh

安装
 ./configure
 make
 make check
 sudo make install
 sudo ldconfig # refresh shared library cache.
这个ldconfig就是将protoc解析器的命令写到环境变量里面去,让你可以像ls一样直接使用。这个protoc是一个protobuf提供的文本解析工具,类似于cjson这样的工具,用来解析*.proto文件。
有关proto文件的语法Google的官方教程里面有简单的介绍https://developers.google.com/protocol-buffers/docs/overview
技术图片
我们可以使用这个解析器在当前目录生成相应的代码protoc -I=./ --cpp_out=./ ./addressbook.proto
技术图片

 

 

 

Protocol Buffers基础(一)

标签:round   unzip   module   png   传输   conf   buffer   img   mamicode   

原文地址:https://www.cnblogs.com/yanrongcqk/p/14681937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!