- 浏览: 63990 次
最新评论
-
waret:
"&" "ctrl+z& ...
2011-12-13 -
waret:
在软件设计的过程中中有一些基本的原则,其中有一条是少用继承,多 ...
2011-11-14 -
waret:
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象 ...
2011-11-15 -
waret:
吼吼~最小长度为5~
2011-10-22
代码的简洁性:
代码可以通过不断的修改获得简洁并且功能强大的效果。
接口的设计与设计模式。
java将对象序列化到文件:
序列化的好处:将对象序列化到文件,当需要时将序列化的文件读取到内存中,读取的时间比从未序列化的文件中读取的时间少。通过将中间结果的对象序列化到文件中进一步提高了程序运行的速度。
序列化的方法:用文件输出流打开目标文件,使用ObjectOutputStream类的writeObject将对象序列化到文件中,读取时采用ObjectInputStream类的readObject。
代码可以通过不断的修改获得简洁并且功能强大的效果。
接口的设计与设计模式。
java将对象序列化到文件:
序列化的好处:将对象序列化到文件,当需要时将序列化的文件读取到内存中,读取的时间比从未序列化的文件中读取的时间少。通过将中间结果的对象序列化到文件中进一步提高了程序运行的速度。
序列化的方法:用文件输出流打开目标文件,使用ObjectOutputStream类的writeObject将对象序列化到文件中,读取时采用ObjectInputStream类的readObject。
评论
1 楼
waret
2011-11-16
1、序列化是干什么的?
简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
2、什么情况下需要序列化
a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;
3、当对一个对象实现序列化时,究竟发生了什么?
在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:
Foo myFoo = new Foo();
myFoo .setWidth(37);
myFoo.setHeight(70);
当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myFoo);
4、实现序列化(保存到一个文件)的步骤
a)Make a FileOutputStream
java 代码
FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream
java 代码
ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object
java 代码
os.writeObject(myObject1);
os.writeObject(myObject2);
os.writeObject(myObject3);
d) close the ObjectOutputStream
java 代码
os.close();
5、举例说明
java 代码
import java.io.*;
public class Box implements Serializable
{
private int width;
private int height;
public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}
public static void main(String[] args){
Box myBox = new Box();
myBox.setWidth(50);
myBox.setHeight(30);
try{
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
6、相关注意事项
a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
c)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。
简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
2、什么情况下需要序列化
a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;
3、当对一个对象实现序列化时,究竟发生了什么?
在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:
Foo myFoo = new Foo();
myFoo .setWidth(37);
myFoo.setHeight(70);
当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myFoo);
4、实现序列化(保存到一个文件)的步骤
a)Make a FileOutputStream
java 代码
FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream
java 代码
ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object
java 代码
os.writeObject(myObject1);
os.writeObject(myObject2);
os.writeObject(myObject3);
d) close the ObjectOutputStream
java 代码
os.close();
5、举例说明
java 代码
import java.io.*;
public class Box implements Serializable
{
private int width;
private int height;
public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}
public static void main(String[] args){
Box myBox = new Box();
myBox.setWidth(50);
myBox.setHeight(30);
try{
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
6、相关注意事项
a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
c)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。
发表评论
-
hadoop集群配置问题及思考
2013-04-07 14:28 672遇到的问题如下: 网上 ... -
Java再学习
2012-09-04 15:20 0面向对象中的对象,像现实生活中的“对象”或“物品”一样,具有一 ... -
近期总结
2012-08-16 21:10 5841.使用ubuntu系统更新源安装软件,有时就不好用的,比如m ... -
C中的printf
2012-07-22 14:34 653C中的printf计算参数时是从右到左压栈的 -
httpclient解析gzip网页
2012-07-12 11:17 1351转自http://www.cnblogs.com/yesun/ ... -
java string 全角半角转换
2012-07-03 16:38 1060/** * 全角空格为12288,半角空格为32 其他字符 ... -
程序员的美德
2012-06-25 16:22 614对数值敏感 实验的欲望 良好的数学功底 -
ubuntu 挂载虚拟机镜像
2012-06-23 14:54 5901.losetup /dev/loop10 /.....img ... -
如何高效的开会
2012-06-21 16:37 652转自知乎http://www.zhihu.com/questi ... -
ubuntu 命令行使用ftp上传文件
2012-06-19 09:08 25471.ftp 主机IP地址 2.输入用户名和密码 3.mput ... -
mysql数据库的导入和导出
2012-06-19 09:07 630导出: mysqldump 用户名 密码 数据库名 > ... -
mysql 数据库不支持中文编码问题
2012-06-18 22:00 1147mysql默认的编码为latin1.在插入中文时会出现乱码。解 ... -
mysql数据库编码修改
2012-06-18 16:31 784在linux下修改3个my.cnf的1个/etc/mysql/ ... -
HTTP cache-control 管理
2012-06-15 22:28 664cache-control设置为no cache,must-r ... -
mysql数据库建库、建表、插入命令
2012-06-15 22:26 1530建库 create database 库名; use 库名; ... -
java中string的函数split需要注意的地方
2012-06-14 09:37 664split在分隔字符串时,如果被分割的字符串是空字符串,即为“ ... -
近期学习整理
2012-06-13 14:37 6291.group by ...having...构建约束查询 2 ... -
LINUX bash中字符串单引号和双引号的区别
2012-06-04 09:59 897单引号中所有字符都被当做普通字符对待,所有环境变量、转义字符、 ... -
建立软链接和硬链接的命令
2012-06-02 09:08 1171软链接:ln -s 目录或文件 连接名 硬链接:ln -d 文 ... -
LINUX帮助手册区号
2012-05-31 15:20 573区号类别1常用命令2系统调用3库调用4特殊文件5文件格式和惯例 ...
相关推荐
可以连接多种数据库的通用组件库,可以用于连接Oracle,MySQL,DB2,PostgreSQL,SQLite,SQLServer,ASE,DBF,NexusDB,Access...等数据库
国际标准化组织(ISO - International Organization for Standardization).2011-12-08[引用日期2014-11-15] 2.ISO/IEC JTC1/SC22/WG14 - C: Approved standards .Open Standards.2011-04-12[引用日期2014-11-26...
2011-09-27 11:00 100,972 ecdsatest.ilk 2011-09-27 11:00 140,288 ecdsatest.pdb 2011-09-27 11:01 114,778 ectest.exe 2011-09-27 11:01 140,400 ectest.ilk 2011-09-27 11:01 156,672 ectest.pdb 2011-09-27 11:...
Retrieved 2011-11-12. ISO/IEC 7816-1:1998/Amd 1:2003 Maximum height of the IC contact surface". Iso.org. 2011-01-31. Retrieved 2011-11-12. ISO/IEC 7816-2:2007 Identification cards — Integrated ...
建立一个数据库名为jdglxt create database jdglxt; on ( name='酒店管理_主',filename='d:\新建文件夹\...insert into customer(c_name,c_no,c_pay,c_booktime) values('小阳','1234567891018',388,'2011-11-15')
2011-11-22|15:33:21|PAY|user555|SUCC 2011-11-22|15:37:30|PAY|user666|SUCC 2011-11-22|15:45:05|PAY|user777|FAIL 本项目会根据如上日志生成的“步调”重新读入日志,并使用个性化定义的Process进行处理,重跑...
2011-10-04 13:01 <DIR> . 2011-10-04 13:01 <DIR> .. 2011-10-04 13:01 <DIR> 内存 2011-10-04 13:02 <DIR> 字符串 2011-10-04 13:09 4,635,835 A.rar 2011-10-04 14:25 <DIR> 反...2011-11-20 11:55 <DIR> drivers
3.6.9.Final 2011-12-15 3.6.8.Final 2011-10-27 3.6.7.Final 2011-08-17 3.6.6.Final 2011-07-21 3.6.5.Final 2011-06-09 3.6.4.Final 2011-05-05 3.6.3.Final 2011-04-06 3.6.2.Final 2011-03-10 3.6.1....
2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环停止指令。 2016-04-13(yaya) 支持动画菜单 setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素) 菜单项0...
2011-03-24 11:58 103,949 UML图0.docx 2011-03-24 17:27 16,640 UML时间图.docx 2011-03-24 17:29 200,071 UML用例概要.docx 2011-03-24 17:14 94,457 UML类图0.docx 2011-03-24 17:15 152,888 UML类图1.docx 2011-...
statrUml 2.8.0版本,更新时间2011-11-15日发布 ,目前官方更新到2.8.1版本
Php安全新闻早8点周刊版(2011-11-09 星期三)至(2011-11-15 星期二)
u-boot 2011.12 S3C2440移植
2010-1-15 同步hao123分类顺序,最新更新hao123职业与爱好分类。 2010-7-28 全面同步hao123样式与分类。 2010-7-29 支持自定义设定所在城市的天气预报。 2010-10-20 同步团购分类。 2010-11-7 修改163与126邮箱...
2011-11-9 增加对ie8、firefox、Chrome的兼容性。 2011-11-7 新增折扣分类。 2011-10-24 同步hao123首页时间、天气的显示方式。 2011-10-14 新增实用工具、彩票、音乐、小游戏聚合分类。 ...
2010-1-15 同步hao123分类顺序,最新更新hao123职业与爱好分类。 2010-7-28 全面同步hao123样式与分类。 2010-7-29 支持自定义设定所在城市的天气预报。 2010-10-20 同步团购分类。 2010-11-7 修改163与126邮箱登录...
2010-1-15 同步hao123分类顺序,最新更新hao123职业与爱好分类。 2010-7-28 全面同步hao123样式与分类。 2010-7-29 支持自定义设定所在城市的天气预报。 2010-10-20 同步团购分类。 2010-11-7 修改163与126邮箱...
2012-06-11 15:14 6,642,870 u-boot-2011.06.7z 2012-06-11 15:22 1,198,619 uCOS-II应用举例.rar 2012-06-11 15:15 7,130 VB浏览器[源码].rar 2012-06-11 15:28 29,345,118 VC++图像处理程序设计.pdf.rar 2012-06-...
statrUml 2.8版本,官方最新版,更新时间2011-11-15日发布
11.文件系统查看,支持基本的文件操作 12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME 13.ObjectType Hook检测和恢复 14.DPC定时器检测和删除 15.MBR Rootkit检测和...