我用 Flatbuffer 表示我的数据。目前我遇到一个问题,我正在将 Flatbuffer 中的大对象集合分成一些小块。
最直接的方法是为每个片段创建一个 FlatBuffers 构建器,然后将对象写入该构建器。但是当对象有点复杂时,逐个结构体复制数据结构是一件相当繁琐的工作。
由于 FlatBuffers 存储相对偏移量,理论上我认为可以简单地复制字节缓冲区以将对象复制到另一个 FlatBuffers 实例中。是否已经有一些可以深度复制的东西可用?我现在用的是java。谢谢
谢谢
最佳答案
这比您想象的要复杂,因为表及其子表在内存中不一定是连续的,并且可能与其他表共享 vtable 等。
最简单的方法是使用嵌套的 FlatBuffers(将子对象粘贴在字节 vector 中),因为这样它就可以轻松复制。
C++中有一个使用反射的深度复制功能,但速度慢,需要二进制模式文件,并且尚未移植到Java。新的“迷你反射”表适用于深度复制,但到目前为止也仅限于 C++。
关于java - 深拷贝FlatBuffer对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47429886/