hessian学习基础篇——序列化和反序列化
2016-06-15 15:31
330 查看
hessian学习基础篇——序列化和反序列化
博客分类: Java编程OS
1、概念介绍
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 数据介质存储
2) 数据网络传输
2、对象序列化实例
为了更好的理解hessian的序列化机制,所以把java和hessian的对象序列化实例都一一列出。
1)对象序列化--java
Java代码
public byte[] serialize(Object obj) throws Exception {
if(obj==null) throw new NullPointerException();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os);
out.writeObject(obj);
return os.toByteArray();
}
public Object deserialize(byte[] by) throws Exception {
if(by==null) throw new NullPointerException();
ByteArrayInputStream is = new ByteArrayInputStream(by);
ObjectInputStream in = new ObjectInputStream(is);
return in.readObject();
}
2)对象序列化--hessian (hessian2的序列化方式在附件中)
Java代码
public byte[] serialize(Object obj) throws IOException{
if(obj==null) throw new NullPointerException();
ByteArrayOutputStream os = new ByteArrayOutputStream();
HessianOutput ho = new HessianOutput(os);
ho.writeObject(obj);
return os.toByteArray();
}
public Object deserialize(byte[] by) throws IOException{
if(by==null) throw new NullPointerException();
ByteArrayInputStream is = new ByteArrayInputStream(by);
HessianInput hi = new HessianInput(is);
return hi.readObject();
}
从以上代码不难看出,对象序列化的过程为:
先将对象转为字节码或其它,然后再将其还原为对象。在反序列化时,内存中必须有源对象的所属类。
3、对象序列化效率
hessian2在这方面有了很大的改进,所以优势十分明显。具体细节不再详述,在进阶篇中,我会详述序列化的实现细节。在此仅把实例执行结果公布出来:
执行结果代码
java:
77
stxm
hessian:
41
stxm
hessian2:
30
stxm
说明:
1、数字为对象序列化后的字节长度。
2、‘stxm’为对象方法的执行结果。
hessian2的优点,谁用谁知道。待我再做深入研究之后,再把我自己认为的和大家认为的优点总结一下,并加以解释。
相关文章推荐
- 知道你的代码哪里出了问题吗?——由控件实例化引发的运行崩溃
- Spring学习(二)
- Java NIO原理图文分析及代码实现
- java web开发(三) 接口使用
- LVS图解 ---阿里
- android Gui系统之SurfaceFlinger(2)
- jsp判断为空用not empty
- [BS-29] 给UIView添加背景图片
- nodejs websocket 把下面错误
- Android性能优化总结
- Serv-U 6.4 设置教程
- 贪心算法 最小生成树prim与单源最短路径dijkstra
- 一些前端相关的笔记
- Theano安装
- jms介绍
- 20ListView
- MongoDB学习笔记
- JavaScript对象数组排序实例方法浅析
- 为Android5.0及以上版本中的TextView等控件设置波纹效果
- SQL Server 语句转换格式函数Cast、Convert