今天来聊聊序列化与烦序列化
2017-06-21 19:39
120 查看
一直都对序列化和反序列化感到挺模糊的,今天在博客园中看到孤傲苍狼写的有关序列化和反序列化的一篇文章,感觉说的挺好的。
加上自己的理解,就像把它写出来。目的就在于加深自己对序列化和反序列化的理解,提前说明,你说我抄袭,我也不反驳。
概念:
序列化:将对象转换为字节序列的过程
通俗来讲就是将你程序中的对象转换成能够被电脑存储的形式
反序列化:将字节序列转换为对象的过程
通俗来讲就是将电脑上的东西转换为对象
简单来说,就是将对象序列化,让它们可以离开内存空间,保存到物理硬盘,这样他们就可以进行长期保存
毕竟内存空间的东西是短暂性的,程序运行完以后就丢失了。
而将对象序列化以后,他们就可以离开内存空间,保存到物理硬盘中,有需要再调回来,不过再调回来的过程就是反序列化了。
实现对象序列化除了可以将对象保存到硬盘之外,它也方便了两个远程进程之间的通信,一方将其序列化,另一方将其反序列化,本质上是一样的。
要想将对象序列化需要用到java.io.ObjectOutputStream这个类,它代表的是对象输出流,它的方法writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节
序列写到一个目标输出流中。
而反序列化则是要用到java.ioObjectInputStream这个类,它代表的是对象输入流,它的readObject()方法是从一个源输入流中读取字节序列,再把他们反序列化为一个对象,并将其返回。
实现序列化需要用到两个接口,一个是Serializable,另一个就是Externalizable,后者是继承自前者,实现Externalizable接口的类完全有自身来控制序列化,而实现Serializable接口的类可以采取默认的序列化方式。大多数人会选择Serializable接口。
在进行序列化的过程中,有个需要注意的问题就是序列化版本号的问题。如果,你进行了序列化,编译工具本身如myeclipse会有警告,让你进行序列化版本号的操作。
其实序列化版本号的本质就是让序列化有一个唯一标识,就类似给对象一个ID,对象进行序列化后它有一个ID,这在后期的反序列化过程中直接找这个ID就可以了。
序列化版本号可以解决不同版本的兼容问题。
加上自己的理解,就像把它写出来。目的就在于加深自己对序列化和反序列化的理解,提前说明,你说我抄袭,我也不反驳。
概念:
序列化:将对象转换为字节序列的过程
通俗来讲就是将你程序中的对象转换成能够被电脑存储的形式
反序列化:将字节序列转换为对象的过程
通俗来讲就是将电脑上的东西转换为对象
简单来说,就是将对象序列化,让它们可以离开内存空间,保存到物理硬盘,这样他们就可以进行长期保存
毕竟内存空间的东西是短暂性的,程序运行完以后就丢失了。
而将对象序列化以后,他们就可以离开内存空间,保存到物理硬盘中,有需要再调回来,不过再调回来的过程就是反序列化了。
实现对象序列化除了可以将对象保存到硬盘之外,它也方便了两个远程进程之间的通信,一方将其序列化,另一方将其反序列化,本质上是一样的。
要想将对象序列化需要用到java.io.ObjectOutputStream这个类,它代表的是对象输出流,它的方法writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节
序列写到一个目标输出流中。
而反序列化则是要用到java.ioObjectInputStream这个类,它代表的是对象输入流,它的readObject()方法是从一个源输入流中读取字节序列,再把他们反序列化为一个对象,并将其返回。
实现序列化需要用到两个接口,一个是Serializable,另一个就是Externalizable,后者是继承自前者,实现Externalizable接口的类完全有自身来控制序列化,而实现Serializable接口的类可以采取默认的序列化方式。大多数人会选择Serializable接口。
在进行序列化的过程中,有个需要注意的问题就是序列化版本号的问题。如果,你进行了序列化,编译工具本身如myeclipse会有警告,让你进行序列化版本号的操作。
其实序列化版本号的本质就是让序列化有一个唯一标识,就类似给对象一个ID,对象进行序列化后它有一个ID,这在后期的反序列化过程中直接找这个ID就可以了。
序列化版本号可以解决不同版本的兼容问题。
相关文章推荐
- 聊聊序列化(二)使用sun.misc.Unsafe绕过new机制来创建Java对象
- 今天聊聊地域歧视和我眼中的南方人…
- 今天聊聊云计算
- 今天来聊聊小程序
- 今天聊聊大数据
- 从java序列化来聊聊目前流行的几个编解码框架
- 今天来聊聊小程序
- 今天我们就来聊聊Nginx服务器的架构!
- 今天聊聊闲话,付出还是有回报的,我帮过的朋友8台电脑帮我齐挖Zcash(ZEC)
- 聊聊序列化(一)关于序列化协议的一些思考和问题
- 聊聊淘宝今天的诚信体系纠结
- 今天我们来聊聊Python web开发,看看这个发展方向的前景!
- 实战录 | 今天聊聊Nginx反向代理使用
- 序列化和反序列化(二)——让我们聊聊Json这个家伙吧!
- 今天聊聊系统又崩溃了~~~
- 聊聊序列化(一)关于序列化协议的一些思考和问题
- 今天来聊聊IE10 CSS Hack
- 今天,黄博士想跟你聊聊“未来”
- 今天不聊技术,聊聊工作中的做事方法
- 今天无意中发现JavaBean类基本都要求实现了Serializable接口,以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取,但不知道为什么需要序列化,今天总结一下