之前介绍说要做在线文库的系统,当数据量大的时候,根据标签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

最新文章

  1. jQuery选择器总结
  2. MongoDB系列一:CentOS7.2下安装mongoDB3.2.8
  3. 【WPF】绑定数据
  4. 百度音乐api
  5. Jetty 简单使用
  6. 学习quartz定时
  7. 关于使用"/"来 dispatcherServlet 的url-pattern带来的问题
  8. BI名词解释
  9. 在delphi中,DLL加载时做初始化的Demo
  10. P2286 [HNOI2004]宠物收养场
  11. 一个可以拖动的自定义Gridview代码
  12. map遍历性能记录
  13. Resharper 详细教程
  14. css 元素溢出
  15. grep用法
  16. Linux 小知识翻译 - 「Linux和CPU的兼容性」
  17. [自学]Docker system 命令 查看docker镜像磁盘占用情况 Docker volume 相关
  18. Anaconda的基本使用
  19. 2017-2018-2 20155231《网络对抗技术》实验五: MSF基础应用
  20. Delphi的自动编译软件Want

热门文章

  1. 19、Linux命令对服务器内存进行监控
  2. POJ 3304 Segments (判断直线与线段相交)
  3. 【vue】---vue中使用async+await出现的问题及解决方案
  4. VIM查找空格
  5. pycharm的第一次使用(其实并不是第一次)
  6. 使用tensorboard报错 ImportError: No module named past.builtins
  7. WXML 数据绑定
  8. centos7 安装KDE
  9. tf-idf 词条权重计算
  10. redis集群报错:(error) MOVED 5798 127.0.0.1:7001