Java序列化深入剖析和总结(精华)
来源:互联网 发布:ros绑定mac 编辑:程序博客网 时间:2024/05/29 16:20
1、什么是序列化和反序列化
序列化:在JVM中把对象拷贝到二进制流中
反序列化:是把二进制流还原为对象
注意:序列化不仅仅是把对象以一连串字节描述的过程(其中涉及到流的输入输出操作),类被编译成二进制字节码文件加载到JVM中就不是序列化过程。
2.序列化的目的
1)对象序列化的目标是将对象保存到磁盘上,或允许在网络中直接传输对象、进程间传输对象(RPC是分布式框架hadoop实现的基础就用到了对象的序列化)
2)序列化是 RMI(Remote Method Invoke – 远程方法调用)过程的参数和返回值都必须实现的机制
2、什么情况下需要序列化
a)当你想把的内存中的对象保存到一个文件中或者数据库中时候b)当你想用套接字在网络上传送对象的时候
c)当你想通过RMI传输对象的时候
3、ransient关键字
可以让序列化对象的某些属性放弃序列化的机会
4、对于序列化对象中有引用对象的情况
引用对象必须实现序化
5、实现序列化的方式
1)Serializable实现序列化:没有具体的方式
2)Externalizable也可以实现序列化:有具体的方法
6.Externalizable的API
void
readExternal(ObjectInput in)
对象实现 readExternal 方法来恢复其内容,它通过调用 DataInput 的方法来恢复其基础类型,调用 readObject 来恢复对象、字符串和数组。
void
writeExternal(ObjectOutput out)
该对象可实现 writeExternal 方法来保存其内容,它可以通过调用 DataOutput 的方法来保存其基本值,或调用 ObjectOutput 的 writeObject 方法来保存对象、字符串和数组。
7、对比
1.Serializable实现序列化不需要程序员手动的参与序列化的过程.JVM已经为我们实现了整个序列化的过程
2.Externalizable是Serializable的子类,需要程序员手动的参与序列化的过程,同时可以提供额外的数据的序列化.
3.Serializable序列化简单一些,但是要消耗性能,Externalizable比Serializable要高一些.
4.如果不需要过多的知道序列化的过程那么我们还是选者Serializable不容易出错,Externalizable比较容易出错
参考代码:
1 0
- Java序列化深入剖析和总结(精华)
- 深入理解java虚拟机 精华总结(面试)
- 深入理解Java虚拟机 精华总结(面试)
- 深入理解Java虚拟机 精华总结(面试)
- 深入理解java虚拟机 精华总结(面试)
- Java序列化深入
- 深入java序列化
- java序列化深入
- Java深入 - Java 序列化
- 深入剖析java线程安全和并发
- JAVA基础知识精华总结(转载)
- java面试题总结(精华)
- (精华总结)Java语言入门教程
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系
- VI命令
- (SEL)如何在一个方法中包含一个方法名 @selector(goSchollNews)
- [inkscope]安装的ceph的监控平台inkscope 1.1
- 排序-快速排序-最终优化(插入排序、中位数、三向partition)-以后快排就用这个了
- Java序列化深入剖析和总结(精华)
- 黑马程序员-学习笔记2-IO流之文件复制
- 目测今晚排名将进入一万以内,纪念一下
- sql 查询判断字符串包含中文
- Hibernate 映射关联关系
- GetModuleFileName函数当前运行exe或dll的路径
- java.util.date与java.sql.date转换
- 02面向对象
- .net list<T> 轉DataSet