当前位置: 首页 > 面试题库 >

与Python的Pickle类似,在Scala / Java中是否简单,轻松,零样板序列化?

宰父劲
2023-03-14
问题内容

在Scala /
Java中是否有一种简单而轻松的序列化方法,类似于Python的pickle?Pickle是一个非常简单的解决方案,在空间和时间上都相当有效(即不是很糟糕),但不关心跨语言的可访问性,版本控制等,并且允许可选的自定义。

我知道的是:

  • Java的内置序列化非常慢([1],[2]),过时且脆弱。还必须将类标记为可序列化—当存在明显可序列化但没有该注释的事物时会烦恼(例如,没有很多Point2D作者将这些标记为可序列化)。
  • Scala的BytePickle需要为每个要腌制的每种类型创建一堆样板,即使如此,它也不适用于(循环)对象图。
  • jserial:未维护,似乎没有比默认Java序列化更快/更小。
  • kryo:不能(反)序列化没有0-arg ctors的对象,这是一个严格的限制。(此外,您还必须注册要序列化的每个类,否则会显着降低速度/膨胀,但即使这样,它仍然比泡菜要快。)
  • 原型:AFAICT,您必须预先注册要在“模式”中序列化的每个类。

Kryo和protostuff是我找到的最接近的解决方案,但是我想知道是否还有其他东西(或者是否有某种方式应该我知道)。请附上用法示例!理想情况下还包括基准。


问题答案:

编辑2020-02-19:请注意,如下面的@federico所述,由于存储库已由所有者归档,因此该答案不再有效。

现在,Scala具有Scala酸洗功能,具体取决于场景,其性能比Kyro更好或更好-
请参见本演示文稿中的幻灯片34-39 。



 类似资料:
  • 本文向大家介绍简单谈谈Python中的json与pickle,包括了简单谈谈Python中的json与pickle的使用技巧和注意事项,需要的朋友参考一下 这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json 模块提供了四个功能:dumps、dump、loads、load

  • 本文向大家介绍轻松理解Python 中的 descriptor,包括了轻松理解Python 中的 descriptor的使用技巧和注意事项,需要的朋友参考一下 定义 通常,一个 descriptor 是具有“绑定行为”的对象属性。所绑定行为可通过 descriptor 协议被自定义的 __get__() , __set__() 和 __delete__() 方法重写。如果一个对象的上述三个方法任意

  • 问题内容: 如果我有这样的通用网址(不限于Twitter或Google): 有没有一种简单的方法来检查此网址是否被缩短? 在上述情况下,我作为人类当然可以看到它已经缩短了,但是有没有一种自动而 优雅的 方法? 问题答案: 您可以向URL发出请求,查看是否被重定向,如果是,则假定它是一种缩短服务。为此,您必须阅读HTTP状态代码。 另一方面,您可以将某些URL缩短服务(t.co,bit.ly等)列入

  • 问题内容: 我正在尝试将一些Python代码移植到Scala。它大量使用了Numpy和Scipy。虽然我已经找到了许多密集矩阵/线性代数库,它们可以作为NumPy的适当替代品(但不是极好的替代品),但我还没有真正找到能够提供我在SciPy中使用的功能的东西。特别是,我正在寻找一个支持稀疏部分本征分解的库(例如SciPy对arpack的包装),然后再寻找SciPy提供的一些简单内容的库(例如直方图)

  • 我有一个处理M×N矩阵的简单程序。当完成处理后,我想打印出标准输出的矩阵。我知道我可以写一些方法比如static[void/String]matrix print(int[][]my matrix)来打印出矩阵或者返回它的字符串表示。 然而,我认为一个更优雅的解决方案是覆盖数组类中的toString()方法。这样我就可以调用System.out.println(myMatrix),在我看来,它比上

  • 本文向大家介绍轻松掌握Java单例模式,包括了轻松掌握Java单例模式的使用技巧和注意事项,需要的朋友参考一下 单例模式是23中设计模式中最简单的设计模式,在企业开发中也应用的特别多。单例模式的优点是:项目中有且仅有一个实例。 特点:构造器私有化,对象私有化,只提供一个对外访问的接口。 应用场景:     1、系统需要共享资源:比如日志系统,spring的资源管理器等     2、为了控制资源的使