微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 原始缓冲区的限制 – 加载部分数据和共享字符串

我想检查原始缓冲区是否是我使用的最好的序列化程序,我的研究发现没有其他的接近.
我正在处理 java后端和android( java)移动应用程序,但是可能在不久的将来会创建其他客户端,所以我想要一个跨平台的东西.
数据结构粗略:
message All {
    repeated Line lines = 1;
    Common common = 2;
}

有几百个Line对象,每行都相当复杂,自己需要〜100 kB.

我使用原始缓冲区看到的两个问题
– 在应用程序启动时,我只需要一小部分可用的数据 – 只需“常用”和“Line”的基本信息.是否可以加载部分数据?
– 每个Line对象包含数百个字符串,但是在多个Line对象中会出现相同的字符串,因此我想尝试在这些对象之间共享它们.是否可能在原始buf级别,还是需要成为应用程序级别的一部分?

谢谢!

解决方法

从您给出的有限规格,很难给出适当的反馈.你说,对于你的问题,最好的解决方案似乎是protobuf,但是我们不能从给出的信息重新评估.

根据你写的内容,我甚至会说一个简单的GZIPped字节数组(或者大部分是可打印的JSON)(可以说是他们是Strings))可能会更好(“重复使用”跨线对象的很多东西=&gt ; GZIP将摇滚).

正如其他人所说:使用protobuf,不可能加载“部分数据结构”(实际上你不会是部分数据结构),只要“重复”部分是一个集合,因为比protobuf将会分配你的结构本身的数据).

我会把我的两美分GZIPped JSON流(例如,与杰克逊),当然,在这种情况下,您将减少带宽与cpu周期的成本.

原文地址:https://www.jb51.cc/java/126272.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐