一、简介
FlatBuffers为Google发布的一个跨平台,提供多种语言接口,注重性能和资源使用的序列化类库。
官网介绍:
https://google.github.io/flatbuffers/flatbuffers_guide_tutorial.html
二、序列化和反序列化
序列化:序列化是指把一个实例对象变成二进制内容(本质上就是一个字节数组)。把实例对象序列化的原因:序列化后可以把byte[]保存到文件中,或者把byte[]通过网络传输到远程,这样,就相当于把实例对象存储到文件或者通过网络传输出去了。
反序列化:即把一个二进制内容(字节数组)变回实例对象。有了反序列化,保存到文件中的byte[]数组又可以“变回”实例对象,或者从网络上读取byte[]并把它“变回”实例对象。
总结下来:序列化是把对象转为字节序列的过程。
反序列化是把字节序列转为对象的过程。
序列化的两个主要用途:①把对象的字节序列永久的保存到硬盘上,通常存放在一个文件中。
②在网络上传送对象的字节序列(网络传输对象)。
三、flatbuffers的优点
①速度更快。
②高效的内存使用,占用空间小。
③使用简单,跨平台。
四、下载安装flatbuffers
不管是Windows还是Linux,由于按照网上的命令教程安装失败,直接下载了安装包进行安装。
1.Windows下
https://github.com/google/flatbuffers/releases 直接下载flatc
解压出来之后即可得到flatc.exe应用程序
在flatc.exe应用程序的相同目录下编写一个后缀名为.fbs的文本
打开cmd,cd到flatc.exe应用程序的目录下,写入
flatc -c -o ./ ./名字.fbs 或者 flatc --cpp 名字.fbs
命令,即可得到名字_generated.h文件。
2.Linux下
下载勾选的任意一个均可,下载之后解压。
利用./flatc -c -o ./ ./名字.fbs 或者 ./flatc --cpp 名字.fbs命令进行转换,此时会报错,错误信息是“libstdc++.so.6: version `GLIBCXX_3.4.26‘not found’”。
按照以下步骤安装完之后,在执行上述命令,即可转换成功。
步骤如下:
查看GLIBCXX当前版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
发现到3.4.25就截止了
执行下面命令
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9
sudo apt install libstdc++6
之后再使用进行查看,可以看到3.4.26
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
这样Linux下的flatc就安装完成了,可以按照上述操作进行转换。