序列化与反序列化
为什么要序列化或反序列化?
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列接收再恢复为对象。
对象序列化:把对象转换为字节序列的过程
对象的反序列化:把字节序列恢复为对象的过程
将对象存入文件或者数据库叫做持久化,在持久化前需要先序列化。
序列化的含义:将层次的有空间的数据(一个对象包含很多字段,如果字段本身是对象,它还包含字段,这个结构类似一棵树)变成扁平的字节序列。
无论是写文件还是网络传输,都必须将数据变成一串,或者说一个序列,这就是序列化的含义。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
对象的序列化主要有两种用途:
1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2)在网络上传送对象的字节序列。
串行化和并行化
串行化也叫做序列化,就是把存在于内存的对象数据转化成可以保存成硬盘文件的形式去存储;
并行化也叫反序列化,就是把序列化后的硬盘文件加载到内存,重新变成对象数据.
也就是把内存中对象数据变成硬盘文件.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Star小客栈!
评论