系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

FlatBuffers官方版

v2.0.0

FlatBuffers官方版

  • 软件大小:1.95 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2022-01-27 15:11
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

FlatBuffers简介

FlatBuffers是一个序列化库。在互联网上开发游戏或其他软件时,可以使用这个软件来提高数据访问的效率。该软件的主要优点是无需解析/解包即可访问序列化数据,这使得数据读取速度更快。对于需要读取海量数据资源的游戏非常有帮助。该软件支持多种语言编辑,可以部署到任何平台进行开发。可以在自己的软件上附加一个序列化的数据读取功能,解决数据读取效率慢的问题。软件可以使用很多场景。例如,开源移动游戏引擎Cocos2d-x使用它来序列化所有游戏数据。比如通讯软件和网站平台可以通过这个软件提高数据读取效率和加载网站帖子的速度!

FlatBuffers软件功能

1.无需解析/解包即可访问序列化数据。

FlatBuffers的不同之处在于它在一个扁平的二进制缓冲区中表示分层数据,这样即使不需要解析/解包也可以直接访问分层数据,并且它还支持数据结构的演进(前向/后向兼容)。

2.内存效率和速度

访问数据所需的唯一内存是缓冲区内存。它需要0个额外的分配(在C ++中,其他语言可能不同)。FlatBuffers也非常适合与mmap(或stream)一起使用,并且只需要将部分缓冲区存储在内存中。只有通过额外的间接调用(vtable)来允许格式演变和可选字段,访问才能接近原始结构访问的速度。它针对的是不希望花费时间和空间(大量内存分配)来访问或构建序列化数据的项目,例如游戏或任何其他对能量敏感的应用程序。

3.灵活性

可选字段不仅意味着你有很好的兼容性(对于长寿游戏来说,这变得越来越重要:你不必用每个新版本更新所有数据!)。这也意味着,关于写什么数据,不写什么数据,如何设计数据结构,你有很多选择。

4.微小的代码空间

生成的代码量很小,只有很小的头作为最小的依赖,非常容易集成。同样,请参考基准部分了解详情。

5.强型

错误发生在编译时,而不是手动编写重复且容易出错的运行时。可以为您生成有用的代码。

6.使用方便

生成的C ++代码允许代码的简洁访问和构造。是一个可选特性,可以在需要时在运行时高效解析模式和文本表示,如ON(比其他ON解析器更快,内存使用更高效)。

Java、Kotlin和Go代码支持对象重用。C #有一个高效的基于结构的访问器。

7.没有依赖关系的跨平台代码

C ++代码可以与任何最新的gcc/clang和VS2010一起使用。附件是构建文件(Andid。mk文件和所有其他平台的cmake)进行测试和示例。

FlatBuffers软件特色

FlatBuffers是一个跨平台序列化库,旨在最大限度地提高内存效率。它使您能够直接访问序列化数据,而无需先解析/解包,同时仍然具有良好的前向/后向兼容性。

支持的编程语言

C++

C#

C

爪哇

JavaScpt

龙虾

左上臂

服务器端编程语言(Professional Hypertext Preprocessor的缩写)

计算机编程语言

TypeScpt

FlatBuffers教程

用于c

c语言绑定存在于一个名为FlatCC的独立项目中。

flatcc模式编译器可以通过C库在线离线生成代码。它还可以生成缓冲区验证器和快速开解析器、打印机。

已经采取了非常谨慎的措施来确保与主要flatc项目的兼容性。

支撑平台

Ubuntu(clang / gcc,ninja / gnu make)

OS-X(c/gcc,ninja/gnu make)

Windows MSVC 2010、2013、2015

CI在OS-X、Ubuntu和Windows上构建gcc、clang和MSVC的最新版本,偶尔会编译旧的编译器版本。请参见主项目状态。

包括Centos在内的其他平台可能运行良好,但没有定期测试。

Monster样例项目是专门为C99编写的,遵循C ++版本,所以不适合MSVC 2010。

模块化对象创建

在本教程中,我们使用调用Monster__as_ot来创建根缓冲区对象,因为在简单的用例中更容易。有时我们需要更多的模块化,所以我们可以重用函数以同样的方式创建嵌套表和根表。为此,我们需要flatcc _ builder _ buffer _ _ call。最好在最高驱动程序级别隔离flatcc_builder调用,这样我们就可以得到:

在自上而下的方法中,同样的原理适用于start/endvs start/end_as_ot。

自上而下的例子

本教程使用自下而上的方法。在C语言中,也可以使用自顶向下的方法,开始和结束相互嵌套的对象。在本教程中,没有深度嵌套,因此差异有限,但它说明了这一点:

基本思维

C-API确实支持读取二进制架构(。通过从reflection.fbs体系结构生成的代码,示例用法显示了如何使用这个文件。反模式文件是在运行时分发中预先生成的。

变化与反思

C-API不像C ++那样支持突变,阅读器接口也不支持突变标量(而且即使经过验证,这样做也是不安全的)。

的生成的读取器接口支持在将向量转换为变量类型后就地对向量进行排序,因为在构造缓冲区时这样做是不切实际的。这在构建器文档中有所描述。

反例使用这个函数按名称查找对象。

您可以将现有缓冲区中的复杂对象用作构建新缓冲区的来源。这可能非常有效,因为语义是在没有字节顺序转换或临时堆栈分配的情况下直接复制的。

标量、结构和字符串及其向量都可以用作源。

目前无法使用现有的表或表的向量作为源,但可以在某个时候为此添加支持。

命名空间

FLATBUFFERS_WRAP_NAMESPACE当每个函数都有一个很长的名称空间前缀时,本教程中使用的方法非常方便。但这并不总是最好的方法。如果命名空间不存在,或者简单且内容丰富,那么我们不妨直接使用前缀。上面提到的反例使用了这种方法。

现有成员

不是所有的语言都支持测试是否有字段,但是在C语言中,我们可以通过测试来详细解释本教程的读者部分。记得把法力值设为默认值150,所以应该不存在。

添加联合的替代方法

在本教程中,我们使用调用来添加联合。在这里,我们展示了完成同一件事的不同方法。最后一种形式很少使用,但它是底层实现。通过在不同的时间点添加类型和数据,表中的小值可以组合在一起。

为什么不与flatc工具集成?

本文考虑如何将C代码生成器集成到flatc工具中,但它要么需要删除模式编译器的C实现,否则会导致过多的代码重复,要么必须使用复杂的中间表示。发明的。这两个选项都不是很吸引人,用flatcc工具代替flatcFlatBuffers C运行时库也没什么大不了的。

写入方式

任何C语言家族的用户和其他IDL用户都应该熟悉模式的语法(也称为IDL,接口定义语言)。让我们先看一个例子:

桌子

表是在FlatBuffers中定义对象的主要方式,它由一个名称(这里是Monster)和一个字段列表组成。每个字段都有名称、类型和可选默认值。如果架构中未指定默认值,则标量类型使用0,其他类型为空。某些语言支持将标量默认值设置为null。这使得标量成为可选的。

该字段不必出现在导线表示中,您可以选择在构造对象时忽略该字段。您可以灵活地添加字段,而不用担心数据膨胀。这种设计也是FlatBuffer的前向和后向兼容机制。注意:

您只能在表定义的末尾向架构中添加新字段。旧数据仍将被正确读取,并在读取时为您提供默认值。旧代码只会忽略新字段。如果您想灵活地使用模式中字段的任何顺序,您可以手动分配标识(类似于协议缓冲区),请参见标识下的种类。

您不能从模式中删除不再使用的字段,但可以停止将它们写入数据,以达到几乎相同的效果。此外,您可以将它们标记为不推荐使用,这将防止在生成的C ++中生成访问器,作为强制不再使用该字段的一种方式。(注意:这可能是代码!)。

您可以更改字段名和表名,如果可以,您可以使用代码中断函数,直到您也重命名它。

结构

与表类似,只是现在所有字段都不是可选的(因此没有默认值),字段可能不会被添加或丢弃。结构只能包含标量或其他结构。将它用于简单的对象,您可以确定这些对象不会被更改(Vec3在示例中非常清楚)。结构使用的内存比表少,访问速度甚至更快(它们总是内联存储在其父对象中,不使用虚拟表)。

种类

内置标量类型为

8位:字节(int8)、字节(uint8)、字节16位:短字节(int16)、字节16

32位:int(int32)、uint(uint32)、float(float32)

位:long(int)、ulong(uint)、double(float)

括号中的类型名是别名,例如,uint8可以替换ubyte,int32可以替换int而不影响代码生成。

内置非标量类型:

任何其他类型的向量(对于[type])。不支持嵌套向量,但内部向量可以包装在表中。

Stng,可能只包含UTF 8位或7位ASCII码。对于其他文本编码或常规二进制数据,请使用vector ([byte]或[ubyte])。

对其他表或结构、枚举或联合的引用(见下文)。

一旦使用了字段,您就不能更改字段类型,除非是相同大小的数据,在这种情况下,are related _ cast将为您带来理想的结果,例如uint、int。如果当前数据中没有使用高位的值,可以将A更改为A。

排列

数组是固定长度元素的便捷快捷方式。该数组可用于替换以下模式:

两种表示都是二进制等价的。

数组结构目前仅在中受支持。

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件