异步页面模式(J2EE design pattern摘记及感想2)
2008-01-01 13:51
253 查看
适用于不是经常更新,且对于一致性要求不是太严格的。我们把远端的页面缓存在本地,然后设置一个过期时间,到了之后就自动更新它。这个更新用到的是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中删除了,我们需要放入一个更新后的东西,当然本地缓存也要更新。
串串烧:
碰到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中删除了,我们需要放入一个更新后的东西,当然本地缓存也要更新。
相关文章推荐
- 资源池模式(J2EE design pattern摘记及感想4)
- 主键批处理器模式及序列化实体模式(J2EE design pattern摘记及感想6)
- 元组表模式(J2EE design pattern摘记及感想7)
- 缓存过滤器(J2EE design pattern摘记及感想3)
- DTO DAO & PAO(J2EE design pattern摘记及感想5)
- 实现复合视图(J2EE design pattern摘记及感想1)
- 【iOS开发-62】自定义cell制作团购页面、顶部图片轮播、底部模拟加载更多功能,核心是练习代理模式
- j2ee模式一(总述)
- [置顶] WEB UI框架的成熟引领新的开发模式 JEECG(J2EE Code Generation)
- 重写ajax方法实现异步请求session过期时跳转登录页面
- WCF异步调用模式
- 设置QQ浏览器中页面的护眼模式
- Design Pattern: Composite 模式
- Design Pattern: Factory Method 模式
- 基于任务的异步模式 (TAP)
- Design Pattern: Thread-Specific Storage 模式
- Design Pattern: Template Method 模式
- Swiper开启循环模式页面button失效
- 两个字母搞定J2EE通用分页标签(兼谈SSH集成开发模式)
- 观察者模式的异步进度条