之前介紹說要做在線文庫的系統,當數據量大的時候,根據標簽tag的對文檔信息的查詢將是一個很耗時的工作,原來分析LinkedHashMap源碼的時候了解到它有一個雙向鏈表的結構,可以通過將剛被訪問的元素置于鏈表的尾部來實現LRU算法,也就是可以通過它實現一個簡易的緩存。如果我們用Spring的話,利用aspectJ就可以把這個模塊提取出來,然后CGlib實現功能增強。
完整代碼在這里:https://github.com/ywind/SimpleCacheWithSpringAop
關于線程安全的問題,github上我的代碼是用的LinkedHashMap,該類是線程不安全的,可以用Collections.synchronizedMap()進行包裹,或者用下面鏈接提到的ConcurrentLinkedHashMap
參考資料:
http://m.survivalescaperooms.com/lzrabbit/p/3734850.html
http://blog.csdn.net/yunhua_lee/article/details/7648549
Ehcachehttp://raychase.VEvb.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
新聞熱點
疑難解答