问题标签 [kryo]
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.
java - Kryo 序列化库:在生产中使用吗?
Kryo是一个非常新颖且有趣的 Java 序列化库,并且是thrift-protobuf基准测试中速度最快的库之一。如果您使用过 Kryo,它是否已经成熟到可以在生产代码中试用?
更新(2010 年 10 月 27 日):我们正在使用 Kryo,但尚未投入生产。有关详细信息,请参阅下面的答案。
更新(2011 年 3 月 9 日):更新到最新的 Jackson 和 Kryo 库表明 Jackson 的二进制微笑序列化非常具有竞争力。
java - 使用 Kryo 将多个对象序列化为单个文件
据我所知,Kryo 序列化/反序列化发生在每个对象上。是否可以将多个对象序列化到一个文件中?在另一个类似的 SO 问题中建议的解决方法之一是使用对象数组。考虑到需要序列化的大量数据,我觉得它不会像应有的那样高效。这是正确的假设吗?
java - 为什么我在使用 Kryo 时会收到此 NullPointerException?
这是我正在使用的整个代码。
PlayerPOJO 类只有两个浮点数和它们的 get 方法。
我得到的错误是:
java.lang.NullPointerException 在...
奇怪的是,这是来自 Kryo 网站的示例代码。我也试过用同样readClassAndObject
的writeClassAndObject
错误。
我试图用谷歌搜索该错误,但没有与此错误和 Kryo 相关的结果。关于 Kryo 的信息很少,这是关于 Kryo 在 SO 上的第四个问题。
java - 自定义网络库和序列化 VS 默认序列化和 RMI
我有这个类,我通过 RMI 和 kryonet 和 kryo 发送这个类,我得到了 10 个对象的数组,其中包含 rmi,作为远程方法调用的返回,以及 kryonet 从服务器到客户端与 kryonet 的回显和 kryo,我总共有一个 55*10 的对象,其中 555 但 RMI 1196bytes ,
这些结果合理吗
*为什么这些结果是这样的?
为什么有那么大的区别。?
幕后涉及哪些间接费用或其他因素,
这在 RMI 中产生了如此多的总和,并且差异太大,并指出我。
单个对象总共 55 个字节是否可以?*。
我只需要一些确认和专家的眼睛,因为我必须展示这些结果,
我会很感激的。
这是我同时使用的类:
}
谢谢。
java - 在 Kryonet 中增加服务器/客户端的缓冲区大小
如何在 Kryonet 的服务器/客户端构造函数中增加缓冲区大小?
caching - Infinispan+kyro/Google Protocol Buffers 实现更多空间和时间效率的序列化?
如果我理解正确的话,Infinispan/JBoss Cache 使用 Java 自己的序列化机制,它可能会很慢并且占用相对更多的存储空间。我一直在寻找可以实现以下目标的替代方案:
- 自动缓存管理,换句话说,使用更频繁的对象会自动加载到内存中
- 更有效的序列化(可能是对象 --> 紧凑的二进制存储)。主要目标是在不牺牲太多性能的情况下减少磁盘/内存空间消耗
是否有实现两者的框架或库?
java - 使用 kryo 注册课程的策略
我最近发现了图书馆 kryonet,它非常棒,非常适合我的需要。
但是,我遇到的一个问题是开发一种好的策略来注册所有可以转移的类。
我知道我可以在每个对象中编写一个静态方法,该方法将返回它使用的所有类的列表,但我真的宁愿不必这样做(出于我自己的时间目的,以及那些将扩展这些对象)。
我一直在尝试查看是否有一种方法可以从 getClass() 方法中获取对象引用的所有类(在它的字段中以及在它的继承中),但我无法取得任何成功。
最后,我知道 kryo 有 kryo.setRegistrationOptional(true) 但我很难弄清楚如何使用它。当这个选项打开时,如果我没有注册类,kryo 似乎仍然会抛出异常。此外,这种方法比注册所有类要慢得多。如果您第一次需要使用此方法发送对象很慢,我很好,但我不知道每次我想发送对象时严重的性能下降是否可以。
理想情况下,我将有一个我想使用 kryonet 发送的对象包。如果只是扫描那个包并确定我需要注册的所有类,那就太好了。现在并不是我的所有客户都需要注册每个对象,但这是一个单独的问题,我不知道是否有解决方案。
如果有人能指出我正确的方向,那就太好了。
java - 使用 Kryo 序列化对象(自定义序列化程序)
我有一个包含对象数组的对象。我想
A)将此对象数组存储在同一个文件中
B)对这些对象使用自定义序列化。
例如,我有一个包含 Tile[][] 数组的 Map 对象。我可以很好地做 Ints,但对如何做对象感到困惑:
java - 如何在不使用阻塞队列的情况下将消息传递给另一个线程?
我有一个非常简单的服务器(使用 kryonet)。客户端仅存储汽车的当前状态(x、y、角度等)并发送加速和转向请求。
服务器正在接收请求并将它们添加到物理线程耗尽、读取和更新的 ArrayBlockingQueue 中。
当添加另一个玩家时,游戏的速度会减慢几乎一倍。我已经排除了很多事情(我将所有更新和包发送限制在 60Hz。)
我怀疑使用阻塞队列会阻塞太多以至于导致速度变慢。
如何在没有阻塞问题的情况下将客户端请求发送到物理线程?