数据序列化工具——flatbuffer

flatbuffer是一款类似于protobuf的数据序列化工具。所有数据序列化,简单来说,就是将某程数据结构按照一定的格式进行编码与解码,以方便在不同的进程间传递后,能够正确的还原成之前的数据结构。

flatbuffer大体上的用法与protobuf是类似的。所不同的是,它支持union定义,并可以通过as方法来简单的将由union包裹的数据进行类型转换,省去了一些麻烦。另外,它使用offset形式进行数据存储,从理论上来说,可以加快访问速度。(有待验证)

一个示例:

namespace com.cnblogs;

enum RequestType: byte {
  RequestDataA = 0,
RequestDataB } table RequestDataA { setting:
bool; }
table RequestDataB {
  setting: bool;
}
union RequestDataField { RequestDataA,
RequestDataB } table Request { type: RequestType; message: RequestDataField; } root_type Request;

如上的结构,就可以通过type成员和as方法来简单的进行request的类型区别与转换。

资料参考:

[中文]

https://www.cnblogs.com/hgwang/p/9964151.html

https://www.cnblogs.com/frankwt/p/12943924.html

[英文]

https://google.github.io/flatbuffers/

原文地址:https://www.cnblogs.com/qyit/p/13389455.html