JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决

简介: JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决

问题一:为什么Hessian框架不支持writeObject/readObject方法?


为什么Hessian框架不支持writeObject/readObject方法?


参考回答:

Hessian框架不支持writeObject/readObject方法,主要是因为它在序列化对象时会忽略这两个方法。这导致在实际场景中,很多定义了这两个方法的对象在序列化时会出现状态不一致的错误。因为一些重要的数据字段可能被标记为transient,在writeObject方法中进行特殊处理,而Hessian直接序列化所有非transient字段,可能会丢失数据。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654745


问题二:Kryo框架在处理定义了JDK自定义序列化方法的对象时有什么问题?


Kryo框架在处理定义了JDK自定义序列化方法的对象时有什么问题?


参考回答:

Kryo框架为了保证序列化的正确性,在遇到定义了writeObject/readObject等JDK自定义序列化方法的对象时,会调用JDK的ObjectOutputStream和ObjectInputStream进行序列化。这种方式存在性能差、数据膨胀以及引用表不一致等问题。具体来说,JDK序列化性能很差,会导致Kryo序列化性能大幅退化;JDK序列化结果很大,会导致Kryo序列化数据膨胀;同时,转发给JDK序列化的对象子图不会跟Kryo共享同一个引用表,如果该子图共享或循环引用了其它对象,则会出现重复序列化或递归栈溢出的问题。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654746


问题三:Jsonb和Fst框架存在哪些问题?


Jsonb和Fst框架存在哪些问题?


参考回答:

Jsonb框架不支持任何JDK自定义序列化方法,如果尝试反序列化这样的对象,会报错。而Fst框架则不支持类型前后兼容,这意味着在服务化场景中,如果对象的类型发生了变化,可能会导致序列化和反序列化失败。因此,这两个框架在某些特定场景下可能存在使用限制。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654747


问题四:Hessian和Kryo是否支持父子类中存在重名字段的情况?


Hessian和Kryo是否支持父子类中存在重名字段的情况?


参考回答:

Hessian和Kryo在处理父子类中存在重名字段的情况时都存在问题。这两种框架可能无法正确处理这种情况,导致序列化或反序列化过程中的数据错误或丢失。因此,在某些特定条件下,这也会成为它们的使用限制。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654748


问题五:Fury早期版本和新版本在序列化流程上有何不同?


Fury早期版本和新版本在序列化流程上有何不同?


参考回答:

Fury早期版本的序列化流程与Kryo类似,在遇到支持JDK自定义序列化方法的对象时,会调用JDK的ObjectOutputStream和ObjectInputStream进行序列化。而新版本(0.9.2版本及以后)则提供了一套基于JIT动态编译的100%兼容JDK自定义序列化的实现,性能得到了数量级的提升。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654749

相关文章
|
7月前
|
XML JSON 编解码
从JSON到Protobuf,深入序列化方案的选型与原理
序列化是数据跨边界传输的“翻译官”,将结构化数据转为二进制流。JSON可读性强但冗余大,Protobuf高效紧凑、性能优越,成主流选择。不同场景需权衡标准化与定制优化,选最合适方案。
478 3
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
人工智能 Java 测试技术
JDK11下Mock框架进化:从PowerMockito到Mockito Only
本文探讨了从使用PowerMock的测试环境迁移到仅使用Mockito(Mockito Only)策略的必要性和实践方法。
781 10
|
缓存 Java
JDK序列化原理问题之Fury如何实现与JDK序列化100%兼容的如何解决
JDK序列化原理问题之Fury如何实现与JDK序列化100%兼容的如何解决
353 0
JDK序列化原理问题之在JDK序列化中不同JDK版本字段不一致的情况如何解决
JDK序列化原理问题之在JDK序列化中不同JDK版本字段不一致的情况如何解决
289 0
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
300 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
318 1
|
10月前
|
存储 Java 编译器
说一说关于序列化/反序列化中的细节问题
我是小假 期待与你的下一次相遇 ~
188 1
|
10月前
|
JSON Java 数据库连接
|
11月前
|
存储 安全 IDE
说一说序列化与反序列化中存在的问题
本文详细解析了Java中的序列化机制,包括序列化的概念、实现方式及应用场景。通过Student类的实例演示了对象的序列化与反序列化过程,并分析了`Serializable`接口的作用以及`serialVersionUID`的重要意义。此外,文章还探讨了如何通过自定义`readObject()`方法增强序列化的安全性,以及解决可序列化单例模式中可能产生的多实例问题。最后提供了代码示例和运行结果,帮助读者深入理解序列化的原理与实践技巧。
273 2