标签: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
标签:round unzip module png 传输 conf buffer img mamicode
原文地址:https://www.cnblogs.com/yanrongcqk/p/14681937.html