2021SC@SDUSC
目录
docs/tutorial-10-user_defined_protocol.md · 搜狗开源/workflow - Gitee.com
本篇是代码分析的最后一篇,在这里做一个关于序列化与反序列化的总结。
一.关于序列化和反序列化
1.含义
对象的序列化(Serialization),即把一个对象以流的方式,写入到文件中保存,叫写对象,也叫对象序列化,对象中包含的不仅仅是字符,使用字节流。
对象的反序列化(deserailization),即把文件中保存的对象,以流的方式读取出来,叫做读取对象,也叫对象的反序列。读取的文件保存的都是字节,使用字节流。
对象序列化的作用:在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。
首先我们定义了一个序列化和反序列化的接口,在ProtocolMessage.h里;在接口中定义了两个函数,分别是encode函数:序列化函数,append函数:反序列化函数。
部分代码示例如下:
class ProtocolMessage : public CommMessageOut, public, CommMessageIn
{
private:
virtual int encode(struct iovec vectors[], int max) = 0;//encode函数为序列化函数
virtual int append(const char *buf, size_t size) = 0;//append函数为反序列化函数
……
2.优点
①将对象转为字节流存储到硬盘上,当JVM停机的话,字节流还会在硬盘上默默等待,等待下一次JVM的启动,把序列化的对象,通过反序列化为原来的对象,并且