对串行化的理解
来源:互联网 发布:sql课程设计说明书模板 编辑:程序博客网 时间:2024/06/05 09:56
串行化(Serialization)是计算机科学中的一个概念,它是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。
很多面向对象的语言都提供对串行化支持,无论是通过语法糖(Syntactic sugar)还是通过定义标准的接口来实现
对象串行化
对象也是一种在内存中储存的数据类型,他的寿命通常会随着生成该对象的程序终止而终止
有时候可能将对象的状态保存下来,需要时再将对象恢复,对象通过写出描述自己的状态的值
来记录自己,这个过程称对象的串行化(Serialization)
以下两种情况需要将对象串行化:
对象需要在网络中传输时,将对象串行化成二进制串即可。
对象需要持久保存时,将对象串行化后写入文件或数据库。
串行化和反串行化函数:
serialize() -- 串行化,返回一个包含字节流的字符串 私有的属性不会被串行化 进行串行化可以把这个对象类
转换成字符串储存起来
例:$p1=new Person('李冰冰',160,50,18);
//把这个对象串行化
$str=serialize($p1)
//将字符串写入data.txt
file_put_contents("data.txt",$str);
unserialize() -- 反串行化,能够重新把字符串变回php原来的对象值。
例:$str=file_get_contents("data.txt");
//将字符串中的类生成一个对象
$p1=unserialize($str);
//echo $p1->name;
$p1->say();
串行化一个对象将会保存对象的所有属性变量和类名信息,但是不会保存对象的
对象串行化魔术方法
__sleep()
是执行串行化时自动调用的方法。
注意:sleep方法需要返回一个数组,其中数组中的值是需要串行化的属性名
例:function __sleep(){
return array("串行化的属性名",...)
} 这里写哪些属性名就会串行化哪些属性
__wakeup()
是在执行反串行化时自动调用的方法,可以在反序列化时改变属性的值,即再次初始化。
输出这个对象的时候可以通过这个魔术方法来改变输出的属性值
- 对串行化的理解
- PHP中实行对数组的串行化和反串行化
- 理解VC的类的“串行化”概念
- 理解VC的类的“串行化”概念
- 对象的串行化
- 文档的串行化
- 文档的串行化
- 对象的串行化
- 对象的串行化
- 包的串行化
- 串行化的应用
- serializable的串行化
- Java的串行化
- 关于数据的串行化的理解,顺便再说并行化
- 导出类的串行化
- MFC的串行化编程
- 对象的串行化(Serialization)
- 对象的串行化(Serialization)
- 40种mysql优化sql语句查询的方法
- mysql5.7.18免安装版配置
- 通配符和正则表达式
- bootstrap -2 基础
- xml文件中处理大于号小于号
- 对串行化的理解
- 丢什么别丢原则
- NIO和IO的区别
- Hibernate表单操作
- 电影《蓝色大门》有感
- FFMPEG结构体分析:AVStream
- 修改input元素的file样式
- 查找——线性表的查找
- 【剑指offer】面试题 8:二叉树的下一个节点