异步页面模式(J2EE design pattern摘记及感想2)

 适用于不是经常更新,且对于一致性要求不是太严格的。我们把远端的页面缓存在本地,然后设置一个过期时间,到了之后就自动更新它。这个更新用到的是Daemon进程。

串串烧

碰到RSSChannel自定义标签,调用RSSChannelTag构造函数,其取得了RSSSubscriber的一个实例(Singleton模式)。RSSSubscriber初次创建时,创造存储RSSInfo的缓存,以及一个用于更新页面的SortedSet(此Sortedset保存的对象是Comparable的东西,根据过期的时间排列)。之后就doStartTag,首先根据制定的url,去得到RSSInfo,这会把控制权交到RSSSubscriber,它首先看缓存中有没有,若没有就得自己parse url了,然后存储于缓存,并把相应信息放到那个SortedSet中。回到RSSChannel自定义标签中,之后,保存一些必要的信息于pageContext中,然后EVAL_BODY_INCLUDE。

最后看看Daemon进程如何工作:它首先肯定是个循环,若无退去信息,将不停的去更新set中的东西。set中的第一个元素当然是最可能过期的那个,我们看他是否过期了,若过期了,它就从SortedSet中移除,若没过期,就等待直到第一个过期了。这样我们就得到一个要更新的,因为已经从SortedSet中删除了,我们需要放入一个更新后的东西,当然本地缓存也要更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值