你的位置:首页 > Java教程

[Java教程]LinkedHashMap+Spring Aop实现简易的缓存系统


之前介绍说要做在线文库的系统,当数据量大的时候,根据标签tag的对文档信息的查询将是一个很耗时的工作,原来分析LinkedHashMap源码的时候了解到它有一个双向链表的结构,可以通过将刚被访问的元素置于链表的尾部来实现LRU算法,也就是可以通过它实现一个简易的缓存。如果我们用Spring的话,利用AspectJ就可以把这个模块提取出来,然后CGlib实现功能增强。

完整代码在这里:https://github.com/ywind/SimpleCacheWithSpringAop

关于线程安全的问题,github上我的代码是用的LinkedHashMap,该类是线程不安全的,可以用Collections.synchronizedMap()进行包裹,或者用下面链接提到的ConcurrentLinkedHashMap

 

参考资料:

http://www.cnblogs.com/lzrabbit/p/3734850.html

http://blog.csdn.net/yunhua_lee/article/details/7648549

Ehcache http://raychase.iteye.com/blog/1545906

 缓存算法 http://blog.jobbole.com/30940/

线程安全 https://github.com/ben-manes/concurrentlinkedhashmap

    http://3dobe.com/archives/34/

阿里中间件 http://jm-blog.aliapp.com/?p=689