序列化和反序列化:
- 序列化:
指把堆内存中的Java对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络的节点(在网络上传输).我们把这个过程称之为序列化.
- 反序列化:
把磁盘中的对象数据或者把网络节点上的对象数据,恢复成Java对象的过程.我们称之为反序列化.
为什么要做序列化:
在分布式系统中,需要共享的数据的JavaBean对象,都得做序列化.此时需要把对象在网络上 传输,此时就得把对象数据转成二进制形式.以后存储在HttpSession中的对象,都应该事先序列化接口(只有事先序列化接口的类才能做序列化操作).
服务器钝化:如果服务器发现某些对象好久都没有活动了,此时服务器就会把这些内存中 的对象,持久化在本地磁盘文件中(Java对象-->二进制文件).如果某些对象需要活动的时候,先在内存中去寻找,找到了就不再去磁盘中,反序列化我们的对象数据,恢复成java对象.
需要做序列化的对象的类,必须实现序列化接口:java.io.Serializable(标志接口,没有抽象方法)
//底层会判断,如果当前对象是Serializable的实例,才允许做序列化
boolean ret = Java对象 instanceof Serializable;
在Java中大多数类都已经 实现Serializable接口.