当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 对象持续性 在我写的Java学习之对象序列化(一)中您已经知道了
 

 

    摘要:web界面配色和图书的印刷质量问题 上周在项目中做一个web应用的界面设计,自然而然地要考虑web界面的配色问题。忽然想起,手边有本韩国i.r.i色彩研究所编写的《web color design——设计师谈网页配色》(电子工业,2002年),应该可以参考。 按说,用户界面特别是web用户界面的色彩搭配问题还是蛮专业的。以前我也会有意识地找些相关书籍来看,但阅读工业、平面、建筑等设计专业中的色彩学......
 ·rpg游戏的一点看法    »显示摘要«
    摘要:  玩rpg游戏,就必须接受游戏策划者的一切设计,必须接受看起来很合适的游戏规则,必须接受拿a换b再去买c组合成d给某人得到e去开门捡f的无奈把戏,而我们苦心追求的某种自由或是新奇在游戏策划者眼里往往被看做是bug,我受够了。   原来玩轩辕剑枫之舞时,许多人发掘出了第二种结局,——把炼妖壶丢掉,结果被告知是bug。于是后来的系列里,我们丢不掉任何东西,不能卖的就永远放着。设计者为了让这些东西的存......


Java学习之对象序列化(二)
对象持续性

举个例子来说: 【程序编程相关:获取Sql服务器列表 (C#)

      在我写的java学习之对象序列化(一)中您已经知道了序列化机制的一些含义与如何实现序列化,在本文中我们将深入到该机制的内部看看它到底是怎么工作的! 【推荐阅读:自定义日期控件 (ASP.net)

employee harry = new employee("harry hacke",.........);  //是员工又是秘书 【扩展信息:16进制和字符串之间转换

      假设现在写好了两个类,一个employee(员工类),一个manager(经理类),接着创建它们的对象,在创建manager对象时需要为manager指定一个秘书而秘书也是一个employee,在这里我们就用现成的employee对象做manager的秘书,也就是说需要在manager中包含一个employee的对象引用,如下代码:

manager manager1 = new manager("tony tester",.......);  //经理对象

manager1.setsecretary(harry);   //设置秘书为harry

现在,在内存中实际创建了两个对象,一个employee,一个manager而manager中包含了一个指向employee对象的引用,是引用而已,当我们把以上这些写入磁盘的时候发生了变化,harry的数据被保存了两次,也就是说我们在manager中获得了harry对象的完整拷贝,这当然不是我们想看到的,比如我们要给harry加薪,当然不希望还要搜索该对象的其他全部拷贝,换言之我们希望磁盘上的对象布局与内存中的对象布局保持完全的一致.这就是“对象持续性”!

      你可能会想到可以保存“秘书”对象的内存地址,不行的,因为,每一次加载对象都可能使用与原来截然不同的内存地址!

      不过,现在好了,java解决这个问题的办法就是采用序列化机制,下面是序列化具体的算法:

1.保存到磁盘的所有对象都获得一个序列号(1,2,3等等)

2.当要保存一个对象时,先检查该对象是否已经保存过.

3.如果以前保存过,只需写入“与已经保存的具有序列号x的对象相同”标记;否则,保存该对象.

通过以上的步骤不久解决了“对象持续性”的问题了!

看个例子吧!(在jdk1.4下调试通过)

import java.io.*;import java.util.*;


...   下一页
    摘要:那么长时间不见了,不知身体可好。我现在有时在csdn上发帖子,也有了点名气。陆陆续续有大学毕业生来问我工作的事情,还要我给他们些指点,甚至csdn的主编都认识我了,我觉得实在是受不起。但是我觉得作为高几级的师哥我还是要义务把自己工作三年的一些经验之谈拿出来供大家分享的。这样可以避免大家都走相同的弯路吧。 首先关于大学本科学习中的经验,我个人认为还是要避免第一个误区那就是贪大求全,什么都教,结果哪样......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE