了解传输的数据的新的类型(二进制)FlatBuffers

17 篇文章 0 订阅
4 篇文章 0 订阅

google flatBuffers  工作原理
(高效、开源、跨平台)
flatBuffers 是google专门为游戏开发创建的开源的、高效的跨平台序列化库。
facebook以其取代json来提升数据处理性能。

(可以用它来进行和json对比,因为我们现在使用的最多的就是json了)

json是一种现在用起来比较多的一种轻量级的数据交换格式,它体量轻,可读性强,通常比老式xml用起来会更加的友好,不依赖于开发的语言的数据格式,(缺点)但是,解析数据并将它转换为如java对象的时候,会消耗时间和存储资源。

facebook中性能的提高据说是使用了flatBuffers来替换了json

为什么flatbuffers会如此奏效?:
1)由于是二进制的形式进行存储,访问序列化数据时也无需数据解析的过程,即便对于层次化数据也无需解析。【是因为不需要进行初始化解析器(初始化意味着简历复杂的字段映射)和解析数据,这些都是需要花费时间的】。
2)flatBuffers数据不需要分配比自身使用缓冲区还要多的内存,我们不必要像在json中那样为解析数据的整个层次分配额外对象。


实现:(android 应用程序使用flatBuffers)
1)json 数据在应用程序之外的某个地方被装换成flatBuffers格式的文件(eg:将二进制数据以文件的形式来提交,还可以从api直接返回flatBuffers二进制文件。)
2)在flatc(flatBuffers编译器)的帮组下,手工生成数据模型(Java类)
3)json文件存在一定的局限性,(不能够使用null字段,日期格式也别解析为字符串)

flatBuffers编译器(flatc)
google所属的源代码构建,源代码构建过程在flatBuffers构建文档中心都有描述。
若是mac用户,需要这样构建:
1、在\{extract derectory}\build/XcodeFlatBuffers.xcodeprej路径下,打开已经下载的源代码。
2、点击play按钮或+R ,运行flatc scheme (默认情况下应该是别选中)
3、flatc可执行文件就会在项目的根目录下出现。
 
 可以使用了schema编译器把给定的schema(在java、c#、Python、GO、c++语言的schema)生成为模型类,还可以将json转化为flatBuffers的二进制文件。


 // schema文件:
 // 该文件定义了要进行的序列化和反序列化的数据结构,将会用于创建java模型,把json转换成flatbuffers的二进制文件。
// 相应文档的连接: https://api.gihub.com/users/google/repos








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值