问题标签 [flatbuffers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - Flatbuffers GoLang-在序列化和反序列化数据时无法理解我的错误,导致无法检索数据
我是 Flatbuffers 和 GoLang 的新手。我正在尝试实现一个将对象转换为 flatbuffer 并检索相同对象的函数。这是我的代码。 更新代码
架构文件
buf 对象是一个字节数组。但是,当我生成 AnnGot obj 时,我仍然得到与 buf 几乎相同的字节数组。因此,当我在互联网上阅读有关此主题的各种帖子时,我尝试将该 buf 转换为二进制类型,然后检索 buf 并尝试检索数据(如代码的注释部分所示)。这次对象 buffy 中没有任何数据。我仍然不清楚我在整个代码中犯了什么错误。
请指出我正确的方向。非常感谢您对此的任何帮助。
谢谢,汤姆
python - 如何在python中从flatbuffer的二进制字符串ubyte向量中提供数据?
我有下表中提到的字段:
并生成以下 API
除此之外,我还有一个二元搅拌bin_data
,现在我想将该数据填充到data
Blob 的向量中。怎么做 ?
我有以下代码:
使用上面的代码片段,我收到以下错误:
寻求帮助,如何将二进制数据提供给字节数组?
c++ - 可变平面缓冲区,性能损失?
使用 flatbuffer mutable 会有多少性能损失?
是否“正确”使用平面缓冲区来拥有一个应该是可编辑的对象/结构(即游戏状态)
在我的示例中,我目前有以下课程:
为每个存储有关每个单元的所有信息的对象使用平面缓冲区是否明智?或者可变的 flatbuffer 会降低性能吗?
如果 flatbuffers 对于这项工作来说是错误的工具,应该使用哪种技术?
xslt - XSD 到 FBS(平面缓冲区)的 XSLT 转换
我有许多用 xsd 编写的 XML 模式来定义 xml 文档的结构。现在我想用 flatbuffers 替换格式。查看 fbs 格式时,似乎可以使用 XSLT 将 XSD Schema 定义自动转换为 FBS 文件。因为可能还有其他人有同样的问题,所以我在这里问是否已经有一些方法可以解决 XSD Schematas 到 FBS 的自动转换。
XSD 架构示例:
预期的 FBS 架构:
是否有这样的转换可用,例如 XSLT。
编辑: 感谢 Dan,我将他的 XSLT 扩展到这个也处理 xs:extensions (继承)
c++ - 协议缓冲区与平面缓冲区
因此,我目前正在开展一个广泛使用Protocol Buffers的项目,主要是作为将复杂对象存储在键值数据库中的一种方式。
迁移到Flat Buffers会在性能方面提供相当大的好处吗?
更一般地说,是否有充分的理由使用协议缓冲区而不是平面缓冲区?
java - Flatbuffers:如何构建嵌套表?
我有一个 3 级嵌套 Java POJO,它在模式文件中看起来像这样:
当我尝试将 Java POJO 序列化为 Flatbuffer 等效项时,每次尝试使用通用 FlatBufferBuilder 构建整个对象图时,我几乎都会收到“不允许嵌套序列化”错误。
文档中没有任何线索可以说明我是否有一个用于整个图表的构建器?每个表/结构都有一个单独的?如果分开,如何将子对象导入父对象?
有所有这些方法,例如创建/启动/添加各种向量,但没有解释构建器在那里做什么。痛苦的复杂。
这是我的 Java 代码,我尝试将我的 Java POJO 序列化为等效的 Flatbuffers:
每个 start() 方法都会抛出“FlatBuffers:对象序列化不能嵌套”异常,无法弄清楚这样做的方法是什么。
flatbuffers - 如何在平面缓冲区中使用“navtive_type”?
这是我的测试架构:
flatc 显示:错误:期待:表而不是:标识符:native_include。
我在 flatbuffers 文档中找不到有关如何使用 native_type 的任何详细信息。
请,有人可以告诉我一些如何使用的例子,我应该在哪里写“命名空间 flatbuffers { FlatbufferStruct Pack(const native_type& obj); native_type UnPack(const FlatbufferStruct& obj); }”
多谢!
mysql - 创建 500.000 条记录的 flatbuffer 的正确方法
我用 100.000 条记录进行了一些测试,并且 json_encode 仍然比创建每个获取的行的 createMyModel(builder,id,.....) 更快。
我只是在做以下事情:
和:
额外说明:
- 我使用 Laravel 5.3 和 MySql 作为数据源。
- Json 进程耗时 1.8 秒,Flatbuffer 进程耗时 10 秒
flatbuffers - Flatbuffers:我可以将 int 字段更改为 1 int 的结构吗?
基于flatbuffers 的主要贡献者提出的针对空字段的非常好的方法:
https://github.com/google/flatbuffers/issues/333#issuecomment-155856289
为整数字段获取 null 默认值的最简单方法是将其包装在结构中。如果标量不存在,这将使您为空。它也不会比普通的 int 占用更多的空间。
如果标量不存在,这将使您为空。它也不会比普通的 int 占用更多的空间。
同样基于 flatbuffers 文档:
https://google.github.io/flatbuffers/md__schemas.html
一旦使用了字段类型,您就不能更改它们,但相同大小的数据除外,其中 reinterpret_cast 会给您一个理想的结果,例如,如果当前数据中没有值使用高值,您可以将 uint 更改为 int有点。
我的问题是我可以将int视为reinterpret_cast -able to myint吗?
换句话说,如果我只是从一个简单的 int 作为字段开始,我以后是否可以决定我实际上希望这个 int 可以为空并将其更改为 myint?我知道在第一个 int 模式中曾经是默认值的所有值在 myint 模式中都将被读取为null ,我可以接受。
当然,显而易见的后续问题是我可以对所有标量类型做同样的事情吗?
c++ - c++ 使用位域解析二进制消息库
嗨,是否有任何支持模式中位字段的下降二进制解析器和构建器库(我的意思是协议中的字段具有任意位长度,而不是标准的 int 32 位等)。Protobuf 和 Flatbuffers 并不支持它。Kaitai 只是解析器而不是数据包生成器。