目录
(一)protobuf 的基本介绍
1. 序列化概念
2. ProtoBuf 是什么
3. ProtoBuf 的使用特点
(二)protobuf 安装
2.1 protobuf ——Windows
1. 下载ProtoBuf编译器
2. 配置环境变量
3. 检查是否配置成功
2.2 protobuf —— Linux
1、下载ProtoBuf
2、安装ProtoBuf
3、检查是否安装成功
(一)protobuf 的基本介绍
1. 序列化概念
序列化和反序列化
- 序列化:把对象转换为字节序列的过程称为对象的序列化。
- 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
什么情况下需要序列化
- 存储数据:当你想把的内存中的对象状态保存到⼀个⽂件中或者存到数据库中时。
- ⽹络传输:⽹络直接传输数据,但是⽆法直接传输对象,所以要在传输前序列化,传输完成后反 序列化成对象。例如我们之前学习过socket编程中发送与接收数据。
如何实现序列化
- xml 、json、protobuf
2. ProtoBuf 是什么
protobuf 是由 Google 开发的一种语言无关、平台无关的可扩展机制,用于序列化结构化数据,类似于 XML 或 JSON,但更小、更快、更简单。Protobuf 通过定义数据结的
.proto
文件来描述数据的格式,然后使用 Protobuf 编译器(protoc)生成特定语言的数据访问类。
简单来讲,ProtoBuf是让结构数据序列化的⽅法,其具有以下特点:
- 高效性:生成的代码在序列化和反序列化数据时比 XML 和 JSON 更快,占用空间更小。
- 跨语言支持:支持多种编程语言,如 C++, Java, Python 等。
- 扩展性:可以在不破坏现有代码的情况下添加新的字段。
- 二进制格式:数据以二进制形式存储,这使得它比文本格式(如 XML 和 JSON)更紧凑,但可读性较差。
3. ProtoBuf 的使用特点
- 1. 编写.proto⽂件,⽬的是为了定义结构对象(message)及属性内容。
- 2. 使⽤protoc编译器编译.proto⽂件,⽣成⼀系列接⼝代码,存放在新⽣成头⽂件和源⽂件中。
- 3. 依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对.proto⽂件中定义的字段进⾏ 设置和获取,和对message对象进⾏序列化和反序列化。
(二)protobuf 安装
2.1 protobuf ——Windows
1. 下载ProtoBuf编译器
下载地址:https://github.com/protocolbuffers/protobuf/releases
可以不⽤下载最新版本,我以v27.2为例,具体的下载根据自己电脑情况选择
下载之后将压缩包解压到本地⽬录下。解压后的⽂件内包含bin、include⽂件,以及⼀个readme.txt.
2. 配置环境变量
把解压后⽂件中的bin⽬录配置到系统环境变量的Path中去
3. 检查是否配置成功
打开cmd
- 输⼊: protoc--version
查看版本,有显示说明成功
到这一步,恭喜你ProtoBuf安装成功!!!
2.2 protobuf —— Linux
1、下载ProtoBuf
下载ProtoBuf前⼀定要安装依赖库:autoconfautomakelibtoolcurlmakeg++unzip
如未安装,安装命令如下:
- Ubuntu⽤⼾选择:
sudo apt-get install autoconf automake libtool curl make g++ unzip -y
- CentOS⽤⼾选择:
sudo yum install autoconf automake libtool curl make gcc-c++ unzip
ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases
可以不⽤下载最新版本,这里我换一个以v21.11为例:
- 如果要在C++下使⽤ProtoBuf,可以选择cpp.zip;
- 如果要在JAVA下使⽤ProtoBuf,可以选择java.zip;
- 其他语⾔选择对应的链接即可。
- 希望⽀持全部语⾔,选择all.zip。
在这⾥我们希望⽀持全部语⾔,所以选择protobuf-all-21.11.zip,右键将下载链接复制出来。 下载命令:
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-all
21.11.zip
下载完成后,解压zip包:
unzip protobuf-all-21.11.zip
解压完成后,会⽣成 protobuf-21.11 ⽂件,进⼊⽂件:
2、安装ProtoBuf
进⼊解压好的⽂件,执⾏以下命令:
第⼀步执⾏ autogen.sh , ./autogen.sh 但如果下载的是具体的某⼀⻔语⾔,不需要执⾏这⼀步。
第⼆步执⾏ configure ,有两种执⾏⽅式,任选其⼀即可,如下:
- 1 、 protobuf 默认安装在 /usr/local ⽬录, lib 、 bin 都是分散的 ./configure
- 2 、修改安装⽬录,统⼀安装在 /usr/local/protobuf 下 ./configure --prefix=/usr/local/protobuf
再依次执行
make // 执⾏ 15 分钟左右
make check // 执⾏ 15 分钟左右
sudo make install
执⾏ make check 后,出现以下内容就可以执⾏ sudo make install
到此,需要你回忆⼀下在执⾏configure时,如果当时选择了第⼀种执⾏⽅式,也就是 ./configure ,那么到这就可以正常使⽤protobuf了。如果选择了第⼆种执⾏⽅式,即修改了安装 ⽬录,那么还需要在/etc/profile中添加⼀些内容:
sudo vim /etc/profile
# 添加内容如下:
#(动态库搜索路径) 程序加载运⾏期间查找动态链接库时指定除了系统默认路径之外的其他路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
#(静态库搜索路径)程序编译期间查找动态链接库时指定查找共享库的路径
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
#执⾏程序搜索路径
export PATH=$PATH:/usr/local/protobuf/bin/
#c程序头⽂件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
#c++程序头⽂件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
#pkg-config 路径
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
最后⼀步,重新执⾏/etc/profile⽂件:
source /etc/profile
3、检查是否安装成功
输⼊ protoc --version 查看版本,有显⽰说明安装成功。