看TreeSet源码时,看到了transient关键字,搜了一下资料,又看到了序列化,所以,现在来总结一下序列化。
序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程。
反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。
序列化是干什么的,简单说,就是把保存在内存中的对象的各种状态(实例变量,不是方法),给写到硬盘中;也可以再从硬盘中,将他读出来。
为什么要有序列化呢?
实现不同jvm之间共享实例对象,网络传输的时候会用到。公司大佬告诉我,平时我们调接口,传输对象数据,其实也需要序列化,这样一旦中间出什么问题,那么数据就可以还原了。
但是有些东西,不能序列化,比如说密码,不能暴露出来,那么transient关键字就派上用场了,属性里加上这个关键字,那么这个属性就不会被写出,具体为什么,我就不研究了。
贴上我觉得写的很好的关于序列化的链接