今天来聊聊序列化与烦序列化
来源:互联网 发布:淘宝网页版登录首页 编辑:程序博客网 时间:2024/06/07 09:42
一直都对序列化和反序列化感到挺模糊的,今天在博客园中看到孤傲苍狼写的有关序列化和反序列化的一篇文章,感觉说的挺好的。
加上自己的理解,就像把它写出来。目的就在于加深自己对序列化和反序列化的理解,提前说明,你说我抄袭,我也不反驳。
概念:
序列化:将对象转换为字节序列的过程
通俗来讲就是将你程序中的对象转换成能够被电脑存储的形式
反序列化:将字节序列转换为对象的过程
通俗来讲就是将电脑上的东西转换为对象
简单来说,就是将对象序列化,让它们可以离开内存空间,保存到物理硬盘,这样他们就可以进行长期保存
毕竟内存空间的东西是短暂性的,程序运行完以后就丢失了。
而将对象序列化以后,他们就可以离开内存空间,保存到物理硬盘中,有需要再调回来,不过再调回来的过程就是反序列化了。
实现对象序列化除了可以将对象保存到硬盘之外,它也方便了两个远程进程之间的通信,一方将其序列化,另一方将其反序列化,本质上是一样的。
要想将对象序列化需要用到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序列化来聊聊目前流行的几个编解码框架
- 今天聊聊虚拟化
- 聊聊序列化(一)关于序列化协议的一些思考和问题
- 序列化与发序列化
- 序列化与发序列化
- 序列化与非序列化
- 反射与序列化
- transient与序列化
- 序列化与json
- 序列化与编码
- 序列化与编辑器
- transient与序列化
- transient与序列化
- 序列化与压缩
- 今天来聊聊小程序
- 采用序列化来传输jabber消息
- java值传递和引用传递
- 萌新程序媛笔记-第1章-程序设计入门
- 计算几何练习1
- 火车进站 一个入栈序列的所有出栈顺序
- 《程序员面试宝典第四版》笔记3
- 今天来聊聊序列化与烦序列化
- windows-caffe入门之用CPU训练自己的数据
- Java基础学习笔记 第二部分 part 2
- Servlet里的几种方法
- 微信小程序未找到入口 pages/other/other.json 文件和pages/paper/paper 出现脚本错误或者未正确调用 Page()错误解决
- MySql存储过程
- 开通CSDN博客
- SQL学习中的一些疑问(一)
- 洛谷 P1558 色板游戏