• LRU缓存实现


    LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”

    在java中可以采用LinkedHashMap实现LRU缓存

    public class LRU {
    
        public static void main(String[] args) {
    
            @SuppressWarnings("serial")
            Map<String, String> map = new LinkedHashMap<String, String>(15, 0.75f, true) {
    
                // 重写这个方法的目的是当entry超过5的时候,会将最先放入(即最近最少使用)的entry删除
                @Override
                protected boolean removeEldestEntry(Map.Entry<String, String> eldest) {
                    return size() > 5;
                }
    
                @Override
                public String toString() {
                    StringBuilder sb = new StringBuilder();
                    for (Map.Entry<String, String> entry : entrySet()) {
                        sb.append(String.format("%s:%s ", entry.getKey(), entry.getValue()));
                    }
                    return sb.toString();
                }
            };
    
            map.put("1", "11");
            map.put("2", "11");
            map.put("3", "11");
            map.put("4", "11");
            map.put("5", "11");
            map.put("6", "11");
            System.out.println(map.toString());
    
            map.put("7", "11");
            map.get("3");
            map.get("5");
            System.out.println(map.toString());
    
        }
    }

     打印:

    注意:

    通过这个removeEldestEntry方法,可以理解为什么是从head节点删除entry了,因为linkedHashMap有一种遍历顺序是按照访问顺序遍历的,每次访问过的etnry会从
    原来的位置删除,添加到tail节点后。那样removeEledestEntry时从head节点开始就是删除最近最少访问的entry了。

    在JVM中Ehcache的缓存策略包含

    1  LRU - least recently used(最近最少使用)

    2  LFU - least frequently used(最不经常使用)

    3  FIFO - first in first out, the oldest element by creation time(清除最早缓存的数据,不关心是否经常使用)

  • 相关阅读:
    S02_CH15_ AXI_OLED 实验
    S02_CH14_ EMIO_OLED 实验
    S02_CH13_ AXI_PWM 实验
    S02_CH12_ AXI_Lite 总线详解
    【第二季】CH11_ ZYNQ软硬调试高级技巧
    bzoj3028 食物
    Hdu3579 Hello Kiki
    bzoj4872 [Shoi2017]分手是祝愿
    bzoj4873 [Shoi2017]寿司餐厅
    省选模拟赛 LYK loves rabbits(rabbits)
  • 原文地址:https://www.cnblogs.com/moris5013/p/11193750.html
Copyright © 2020-2023  润新知