Java中的序列化和反序列化

Java中的序列化和反序列化

  • 序列化的核心目的
  • 序列化的定义
    • 序列化的选择问题
      • 序列化后的数据大小
      • 序列化的性能
      • 是否支持跨平台和跨语言
      • 技术的成熟度
  • 反序列化的定义

序列化的核心目的

解决网络通信中的对象传输问题。如何把当前JVM进程里面的一个对象跨网络传输到另外一个网络的JVM进程里面进行恢复。

序列化的定义

序列化就是把内存里面的对象转化为字节流,以便用来实现存储和传输。

序列化的前提是为了保证通信双方对于对象的一个可识别性,所以很多时候,我们会将对象转换成通用的解析格式,例如JSON、XML或者其他一些格式。然后再把他们转换成数据流进行网络传输。从而去实现跨语言或者跨平台的这样一个可识别性。

序列化的选择问题

市面上开源的序列化技术非常多,例如JSON、XML、Protobuf、Haison、Kyro、Hessian等等。

序列化后的数据大小

因为数据大小会影响传输性能。

序列化的性能

序列化耗时较长会影响业务的性能。

是否支持跨平台和跨语言

技术的成熟度

越成熟的方案使用的公司越多,也就越稳定。

反序列化的定义

反序列化就是根据从文件或者网络上获取到的对象的一个字节流,根据字节流里面保存的对象描述信息和状态重新构建一个新的对象。

参考资料:100道Java面试题之:简单说一下你对序列化和反序列化的理解

你可能感兴趣的:(Java,java,jvm,面试)