FlatBuffers(序列化库)下载地址

时间:2021-08-31 02:06编辑:未知

FlatBuffers(序列化库)下载地址详细介绍

软件大小:1.95 MB

软件语言:简体中文

更新时间:2021-05-12

授权:免费软件

适用平台:WinAll

推荐度:6分

软件介绍

  FlatBuffers是一款很专业且出色的跨平台序列化库,旨在最大程度地提升内存效率,适用于多种不一样的编程语言,包括C++,C#,C,Java,Python,PHP等,FlatBuffers是一个二进制缓冲区,与大部分内存数据结构不同,FlatBuffers用严格的对齐和字节顺序规则来确保这部分缓冲区是跨平台的,你可以在模式中概念对象种类,也可以将其编译为C++或Java以达成低至零的读写开销,FlatBuffers应用范围很广,可用它来序列化游戏数据,也可将其用于推广客户端与服务器之间的通信,需要的话就赶快下载吧!

软件功能

  撰写一个构造文件,该文件可让你概念可能要序列化的数据结构

  用flatc(FlatBuffer编译器)生成带有帮程序类的C ++头文件(或Java / Kotlin / C#/ Go / Python ..类),以访问和架构序列化数据。

  用FlatBufferBuilder该类架构一个平面二进制缓冲区。生成的函数使你可以递归地将对象添加到此缓冲区中,一般就像进行单个函数调用一样容易。

  回读时,你可以从二进制缓冲区中获得指向根对象的指针

  可将缓冲区存储或发送到某个地方

  对于表对象,FlatBuffers提供了向前/向后兼容性与字段的通常可选性,以支持大部分形式的格式演变。

  FlatBuffers还提供“裸”结构,该结构不提供向前/向后兼容性,但可以更小(对于不太可能更改的很小的对象(比如坐标对或RGBA颜色)非常有用)。

  可以或有关格式的大部分信息纳入生成的代码中,从而降低存储数据所需的内存与访问数据的时间。

软件特点

  在不分析/解包的状况下访问序列化数据

  FlatBuffers独一无二之处在于,它在平坦的二进制缓冲区中表示层次结构数据,使得即便不进行分析/解包也可以直接访问分层数据,同时还支持数据结构的演进(forward /向后兼容)。

  内存效率和速度

  访问数据所需的唯一内存是缓冲区的内存。它需要0个额外的分配(在C ++中,其他语言可能会有所不同)。FlatBuffers也很合适与mmap(或流)一块用,仅需要将部分缓冲区存储在内存中。访问仅通过一个额外的间接调用(一种vtable)即可接近原始结构访问的速度,以允许格式演变和可选字段。它针对那些不期望花浪费时间间和空间(很多内存分配)来访问或架构序列化数据的项目,比如在游戏或任何其他对性能敏锐的应用程序中。有关详细情况,请参见基准。

  灵活

  可选字段不只意味着你具备非常不错的前后兼容性(对于长寿命游戏也愈加要紧:不必用每一个新版本更新所有数据!)。这也意味着你在写入哪些数据,不写入哪些数据与怎么样设计数据结构方面有不少选择。

  微小的代码占用空间

  生成的代码极少,只有一个小的标头作为最小的依靠关系,很易于集成。同样,请参阅基准测试部分以知道详细情况。

  强种类

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

  用便捷

  生成的C ++代码允许简单的访问和架构代码。然后是可选功能,可以在需要时在运行时高效地分析模式和类似JSON的文本表示形式(比其他JSON分析器更快,更高效地用内存)。Java,Kotlin和Go代码支持对象重用。C#具备高效的基于结构的访问器。

  不需要依靠项的跨平台代码

  C ++代码可与任何最新的gcc / clang和VS2010一块用。随附用于测试和示例的构建文件(Android .mk文件,与用于所有其他平台的cmake)。

官方课程

  撰写FlatBuffer模式

  要开始用FlatBuffers,第一需要创建一个schema文件,该文件概念要序列化的每一个数据结构的格式。这是schema为大家的概念模板的模板:

  如你所见,schema 接口概念语言(IDL)的语法与C系列语言和其他IDL语言的语法相似。让大家检查其中的每一个部分schema以确定其用途。

  该schema带开始namespace申报。这将为生成的代码确定相应的包/名字空间。在大家的示例中,大家在Sample名字空间内部具备MyGame名字空间。

  下面,大家有一个enum概念。在此示例中,大家有一个enum种类为byte,名为Color。大家在这三个值enum:Red,Green,和Blue。大家指定Red = 0和Blue = 2,但未指定的显式值Green。因为an的行为enum是在未指定的状况下递增,因此Green将收到的隐式值1。

  紧随其后的enum是一个union。在union这个例子不是很有用,由于它仅包含一个table(命名Weapon)。假如大家创建了多个表,期望union它们可以被引用,则可以向中添加更多元素union Equipment。

  之后union是struct Vec3,它表示具备3尺寸的浮点向量。大家用了struct这里,过了table,由于structs为理想的,不会改变,由于它们用更少的内存,并具备更快的查找数据结构。

  该Monster表是FlatBuffer中的主要对象。这将用作存储大家的orc怪物的模板。大家为字段指定了一些默认值,比如mana:short = 150。假如未指定,则标量字段(如int,uint或float)将默认设置为,0而字符串和表格将默认设置为null。应该注意的另一件事是线路friendly:bool = false ;。因为你不可以从中删除字段table(以支持向后兼容性),因此可以将字段设置为deprecated,这将预防在生成的代码中为此字段生成访问器。deprecated但,用时要小心,由于它可能会破坏用此访问器的旧代码。

  该Weapon表是在FlatBuffer中用的子表。它被用两次:一次在Monster表中,一次在Equipment联合中。对于大家来讲Monster,它用于在大家vector of tables的weapons字段中填充一个via字段Monster。它也是Equipment工会引用的唯一表。

  的最后一部分schema是root_type。根种类声明将是序列化数据的根表。在大家的例子中,根种类是大家的Monster表。

  标量种类还可以用别名种类名字,比如int16代替short和float32代替float。因此,大家也可以将该Weapon表撰写为:

  编译怪物的模式

  撰写FlatBuffers模式后,下一步就是对其进行编译。

  假如你尚未如此做,请根据以下说明来构建flatcFlatBuffer编译器。

  一旦flatc构建成功,请为你的语言编译构造:

  读写Monster FlatBuffers

  目前,大家已经为编程语言编译了构造,大家可以开始创建一些怪物,然后从FlatBuffers对其进行序列化/反序列化。

  创建和撰写Orc FlatBuffers

  第一步是导入/包括库,生成的文件等。

  目前大家筹备开始构建一些缓冲区。为了开始,大家需要创建一个实例,该实例FlatBufferBuilder将包含缓冲区的增长。你可以传递缓冲区的初始大小(此处为1024字节),假如需要,该大小将自动增长:

  创建完之后builder,大家就可以开始序列化数据了。在制作orc怪物之前,让大家创建一些Weapon:aSword和an Axe。

  目前,让大家创建大家的怪物orc。为此orc,让他red发怒,定坐落于,并给他很多的生命值300。大家可以给他一个向量的武器(大家Sword和Axe以前)。在这样的情况下,大家将为他配备Axe,由于它是两者中功能最强大的。最后,让大家用一些潜在的宝藏来填补他的库存,一旦他被击败,这部分宝藏就可以被拿走。

  在序列化怪物之前,大家需要第一序列化包含在其中的所有对象,即,大家用深度优先的预遍历序列化数据树。一般在任何树形结构上都比较容易做到这一点。

  大家序列化了两个内置数据种类(string和vector),并捕获了它们的返回值。这部分值是序列化数据中的偏移量,指示它们的存储地方,以便在向怪物添加字段时可以在下面引用它们。

  注意:要创建一个vector嵌套对象(比如tables,strings或other vector),请将其偏移量采集到一个临时数据结构中,然后创建一个vector包含其偏移量的附加对象。

  假如不是从一个现有些数组创建向量,而是逐个序列化元素,请注意,这是相反的顺序,由于缓冲区是从头开始构建的。

  比如,看一下Weapon大家先前创建的两个(Sword和Axe)。它们都是FlatBuffer table,它们的偏移量目前存储在内存中。因此,大家可以创建一个FlatBuffervector来包含这部分偏移量。

  请注意,还有其他的便利重载CreateVector,它允许你处置不在a中的数据,std::vector或者允许你通过调用lambda来生成元素。对于的容易见到状况,std::vector也有CreateVectorOfStrings。

  请注意,结构的向量与表的序列化方法不同,由于结构以内联方法存储在向量中。比如,为path上面的字段创建一个向量:

  目前大家已经序列化了兽人的非标量组件,因此大家可以序列化怪物本身:

  假如你不想在a中设置每一个字段table,则可以更便捷地手工设置怪物的每一个字段,而不是调用CreateMonster。以下代码段在功能上等同于上面的代码,但提供了更多的灵活性。

  在完成序列化之前,让大家迅速看一下FlatBuffer union Equipped。每一个FlatBuffer都有两部分union。第一个_type是生成的隐藏字段,用于保存所table引用的种类union。这使你可以在运行时知晓要转换为哪类型型。第二是union的数据。

  在大家的示例中,大家添加到的最后两件事Monster是Equipped Type和Equipped本身。

  这是这部分行的重复,以帮更了解地突出显示它们:

  创建缓冲区后,orc变量中的数据根将具备偏移量,因此可以通过调用适合的finish办法来完成缓冲区。

  目前可以筹备将缓冲区存储在某个地方,通过互联网发送,进行压缩或进行任何其他操作。你可以如此访问缓冲区:

FlatBuffers(序列化库)下载地址截图

FlatBuffers(序列化库)下载地址下载地址

普通下载河南电信下载东北电信下载东北联通下载本地高速下载

本文标签: 绿色软件下载

上一篇:VRLook(VR全景图查看器)下载地址

下一篇:没有了