java的序列化与反序列化
1、什么是序列化?什么是反序列化?
序列化:将数据结构或对象转换成二进制字节流的过程。
反序列化:将二进制字节流转换成数据结构或对象的过程。
对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。
序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。
2、序列化和反序列化的应用场景
1、对象在进行网络传输(例如远程方法调用RPC)之前需要先被序列化,接收到序列化后的对象后再反序列化;
2、将对象存储到文件的时候需要序列化,将对象从文件中读取出来的时候需要进行反序列化;
3、将对象存储到缓存数据库(redis)中的时候需要进行序列化,从缓存数据库读取的时候需要进行反序列化;
4、在OSI七层协议模型中的表示层(对应TCP/IP 四层模型的应用层),就是负责将用户数据序列化和反序列化。