2018.11.02
前言
某项目新版本上线,新版本中添加了A类,而A类最终会通过ObjectOutputStream#writeObject
方法1序列化到HDFS中。而在上线完成之后才发现实现了Serializable
序列化接口的A类并没有定义serialVersionUID
,换言之,如果下次上线的版本A类发生了修改,就很有可能会导致serialVersionUID
改变,进而反序列化就会失败。后果很重要,闻者都为虎躯一震。
Hello,序列化
序列化的定义就是将对象转换成字节流的过程1。那问题来了,对象好好的,为什么要转换成字节流呢?
对象 ---------------------------------------------发送方
`
` (序列化)
`
`一串字节流 --> 网络|磁盘... --------------中间介质
`
`(反序列化)
`
`
对象 -------------接收方
首先对象它是存在于它所在机器的内存里,一旦断电或者程序运行结束,它就会消失。那一旦我们想要持久化这个对象或者通过网络传输