1基于MRU算法的对象曩存技术
由于进行数据库连接消耗系统的资源较大,而且用户经常要用到一些诸如用户名,密码等信息,为了提高系统当前
用户浏览页面的速度而避免多次连接数据库,就需要在内存
中缓存一定数目的对象.如果锾存的对象数目很多.并且服务器系统的内存又不是特别大,那么就需要将最近最
常用的对象缓存起来.缓存对象的算法比较多,本系统采用比较常用的MRU(Most
Recently
Used)算法来进行缓存对象.利用
Java里面提供的LinkedList类和HashMap类可以实现MRU算法.MRU算法可以通过限制缓存中对象数目来控制用作缓存的内存的大小.MRU算法主要执行以下3个操作:
·如果缓存没有满,则投缓存的新对象插入到链表的头位置.·如果缓存没有满并且要插入的对象已经在援存中,那么将此对象移到链表柏头部.·如果嫒存已经满并且有新对象要插入,那么在链表中最后的一个对象要被清除,新对象将被插入到链表的头位置.
图2显示了遥过LinkedList类和HashMap类的结合来实现上述操作过程.
№"¨l
嗣l基予h"莳
web●件曩■翔柏景●■
在用户接口部分.本系统采用JSP和Html结合JavaScript来实现.在控制模块部分.本系统采用JavaBeans这种可重用的组件技术来进行开发.本系统在建立数据库及表的时候.遵照SQL的标推,并没有依赖特定的数据库平台,因此可以根据用户的需要来选择数据库服务器.本系统的应用程序服务器和邮件服务器采用Jakarta的Tomcat和James.Web服务器采用Apache.
t变'四周悃.圈
№日6^u
112
Lin州Lbt重mH柏hMnp羹簟舌蜜疆MRu算砖
使用LinkedList类可以很方便地实现诸如数据结构中的堆栈,队列,双向队列的算法.HashMap类提供了一个Key--ValueX=j"的存储方法,作为键的Key是唯一的,不能重复.柞者■介:尹斌(1979--).男,硕士生,主研GIS软件开发以及在
lnkmd上的应用;扛祟礼,教授;董明t副教授
收●日囊:2003-06-07
E-mail:yinbth@263
net
万方数据
在本系统中,将包含不同用户名的Authorization对象作为Key,将其对应的User对象作为Value存储在HashMap对象
Session对象来设置在用户最后一个请求多长时间以后Session失效.将具有用户名和密码的Authorization对象放入Session中.当用户浏览页面时,将Authorization对象取出,然后从UsorCache对象中取出相应的User对象并根据User对象来执行相应的操作.如果用户在超过规定的时间内没有浏览页面,这时从Session对象中取出的Authorization对象为null.系统将会抛出异常进而提示用户重新登录如图3.
中·在LinkedList对象中存放键Authorization对象,通过对
Authorization对象实现队列算法,来实现对缓存的User对象进行管理.由于LinkedList类和HashMap类中的操作对象的方法不是同步的.这就意味着如果有多个线程同时对一个HashMap对象进行添加或者删除操作,那么就很可能会出现死锁的现象.这就需要自己来实现同步操作,提供一个控制数据同步的锁.关于数据同步的代码可以参见下面的UserCacl他类.
以下的usacaclle类实现了MRU算法,用于缓存u蝌对象:
imponjavautil,*: