论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
如何避免Java程序的数据脏读问题?
 作者:佚名     2007-3-14 16:46:50        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

脏数据(Out-of-date data),指过时的数据。
如果在您的Java程序中存在脏数据,将或多或少地给软件系统带来一些问题,如:无法实时地应用已经发生改变的配置,软件系统出现一些莫名其妙的、难以重现的、后果严重的错误等等。尽量避免脏数据的存在是非常有价值的。本文希望能在这方面给同行们一点帮助。

Fragment 1. 缓存技术的脏数据问题
/**
* A report printer is used to print a report.
*
* @version 1.0 9/9/2003
* @author Bill
*/
public class ReportPrinter {
/**
* Constructs a ReportPrinter instance.
*/
public ReportPrinter() {
// do something...
}

/**
* Prints a printable.
*
* @param printable the specified printable object
*/
public void print(Printable printable) {
Graphics g = getGraphics();
g.setFont(getReportFont(printable.getFont());

printable.print(g);
}

/**
* Returns the corresponding report font of a java font.
*
* @param javaFont the specified java font
* @return the corresponding report font
*/
private Font getReportFont(font javaFont) {
Font reportFont = fontMap.get(javaFont);

if(reportFont == null) {
reportFont = loadFont(javaFont);
fontMap.put(javaFont, reportFont);
}

return reportFont;
}

/**
* Loads the corresponding report font of a java font.
*
* @param javaFont the specified java font
* @param the corresponding report font
*/
protected static Font loadFont(Font javaFont) {
Font reportFont = null;

// do something...

return reportFont;
}

/**
* The font map(java font->report font).
*/
private static HashMap fontMap = new HashMap();
}

Fragment 1中,由于装载一个java font所对应的report font开销较大,使用了缓存技术来避免这种开销。这是一种常见的提高性能的方式,而且在一般情况下运行良好。但是Fragment 1的设计与实现可能是不完备的,因为极有可能一个java font所对应的report font在系统启动之后发生变化,在这种变化发生之后,只有重启软件系统才能装载之,这常常是最终用户的抱怨之一。更可怕的是,类似的这种脏数据的存在还可能带来其它严重的、无法想象的后果。
如何避免使用缓存技术所带来的脏数据问题呢?
在设计、实现和测试时,应该清晰定义缓存数据的更新:
i. 不考虑缓存数据的更新,重启软件系统是一种必要的方式;
ii. 不考虑缓存数据的更新,缓存数据不可能成为脏数据(但在软件系统中,往往“不可能”会在一次又一次的重构之后变为“可能”);
iii. 考虑缓存数据的更新,当源数据变化时,实时更新缓存数据。


1 2 3 下一页>>

责任编辑:lss
  相关新闻
如何30天突破三级网络?
如何应付新大纲二级考试的公共基础知识
以二级C语言为例分析如何准备计算机考试
我该如何报考软件水平资格考试?
如何顺利通过这次考试:计算机二级考试备考秘诀
如何准备计算机等级考试,基础教程网
名师访谈:如何应对二级C语言笔试考题
中小企业如何有效架设邮件服务系统(图)
如何有效管理Exchange的数据管理
名师谈如何复习并通过软考开发类考试
如何准备计算机等级考试,基础教程网
如何30天突破三级网络?
以二级C语言为例分析如何准备计算机考试
如何应付新大纲二级考试的公共基础知识
名师访谈:如何应对二级C语言笔试考题
名师访谈实录:二级公共基础部分如何准备
专家谈如何准备二级VFP上机考试
2006年4月计算机等级考试应如何备考
如何顺利通过这次考试:计算机二级考试备考秘诀
我该如何报考软件水平资格考试?
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号