一、序列化/反序列化概念
` java是面向对象的语言,对象一般是存活在内存中动态变化的数据。有时候为了保存和传输,需要将内存中存活的动态变化的对象数据转化成可以固定的字节信息。序列化技术可以实现。将已经固定的对象的字节信息转换回内存对象的过程就是反序列化的过程。
二、序列化/反序列化应用场景
1、将对象序列化后保存,即持久化
` 将内存中的对象信息序列化后保存到外部存储设备中。这个过程也称之为将对象持久化保存了。再需要的时候可以将持久化保存的对象再读取回程序内进行反序列化再恢复为对象,这个过程也称之为反持久化。
补充:
` 序列化是持久化的前提。
2、将对象序列化后通过网络传输实现,即RPC
` 将内存中的对象信息序列化后,将字节信息通过网络发送给其他程序,其他程序收到这些数据后,进行反序列化就可以恢复出对象,得到对象中的信息。
三、常见的序列化/反序列技术
` 序列化/反序列化是在分布式开发中,其中包括 [持久化]和[RPC] 的基础,是在分布式环境下非常常见的操作,所以序列化反序列时性能的好坏直接影响分布式程序的性能。
1、java自带的序列化/反序列化技术
(jdk1开始就有了)
优点:简单,易用,不用导入第三方包
缺点:
效率低下 - 浪费时间
产生的结果数据大 - 浪费空间
只能在java中使用 - 无法跨语言
现实企业中使用很少。
2、其他开源序列化反序列化技术 - AVRO
由APACHE