美文网首页
LRU缓存淘汰算法

LRU缓存淘汰算法

作者: caopengflying | 来源:发表于2019-03-06 17:50 被阅读0次

缓存

缓存是非常常见的东西,比如cpu缓存,内存缓存。所有的缓存都是为了提高效率的。实际上就是当用户访问时可以直接从缓存中读取数据。
缓存总会有数据存满的时候,那么缓存满了之后如何去删除老的数据呢。
这个时候的算法常见的有三种
FIFO:first in first out 先进先出。先存储进来的先删除
LRU:Least Recently Used 最近最少使用策略
LFU: least frequently used 最少使用策略

以下是使用单链表实现LRU缓存淘汰算法

public class HashSetMisunderstanding {
    public static void main(String[] args) {
        new HashSetMisunderstanding().judgeList();
    }
    public void judgeList(){
        Set<A> list = new HashSet<A>();//这里创建一个hashset集合
        for(int i=1;i<4;i++){
            A a = new A(1,1);//循环中创建新的对象A来存储相同的数据
            list.add(a);
        }
        for(int i=2;i<6;i++){
            A a= new A(1,1);
            if(list.add(a)){//判断是否能存储进去
                System.out.println("添加成功->"+i);
            }
        }
        for(A a:list){
            System.out.println(a.toString());//打印出相应的值 看看是否唯一
        }
    }

    class A implements Serializable {
        private static final long serialVersionUID = 1L;
        private Integer mi;
        private Integer bi;

        public A() {
            super();
        }
        public A(Integer mi, Integer bi) {
            super();
            this.mi = mi;
            this.bi = bi;
        }
        public Integer getMi() {
            return mi;
        }
        public Integer getBi() {
            return bi;
        }
        public void setMi(Integer mi) {
            this.mi = mi;
        }
        public void setBi(Integer bi) {
            this.bi = bi;
        }
        @Override
        public String toString() {

            return (mi==null?mi:mi.toString())+"--"+(bi==null?bi:bi.toString());
        }
    }
}

public class Node implements Comparable<Node> {
    private int data;
    private Node next;

    @Override
    public String toString() {
        return "Node{" +
                "data=" + data +
                ", next=" + next +
                '}';
    }

    @Override
    public boolean equals(Object obj) {
        Node n = (Node) obj;
        return n.getData()==this.data;
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {

        this.next = next;
    }

    public int compareTo(Node o) {
        return this.data - o.getData();
    }
}

相关文章

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • 缓存淘汰算法--LRU算法

    缓存淘汰算法--LRU算法 1. LRU 1.1 原理 LRU(Least recently used,)算法根据...

  • Algorithm进阶计划 -- LRU 与 LFU 算法

    LRU 与 LFU 算法LRU 算法LFU 算法 1. LRU 算法 LRU 算法是一种缓存淘汰策略,是 Leas...

  • Java LRU的简单实现

    什么是LRU,参考:LRU算法 缓存淘汰策略[https://www.cnblogs.com/Dhouse/p/8...

  • 基于双向链表实现自己的内存LRUCache(Java)

    本文将分为以下两个部分: 1.简介几个缓存淘汰算法 2.实现自己的LRU内存缓存(Java) 1.几种缓存淘汰算法...

  • LRU算法

    LRU是最近最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些最近最少使用的缓存对象。采用LRU算法的缓存有...

  • 链表(上):如何实现LRU缓存淘汰算法?

    经典的链表应用场景,那就是 LRU 缓存淘汰算法 常见的缓存淘汰策略: 先进先出策略 FIFO(First In,...

  • 跟谁学一面

    自定义缓存设计方案(LRU) 常用缓存淘汰算法 内存的淘汰机制主要有以下几种:1、FIFO (First In, ...

  • Java知识框架 - Linux

    内存淘汰算法FIFO - 先进入缓存的会先被淘汰LRU - 最近最少使用 - LinkedHashMap - re...

  • LRU、分治、暴力、回溯框架

    转自:labuladong的算法小抄 ⼀、什么是 LRU 算法 就是⼀种缓存淘汰策略。 计算机的缓存容量有限,如果...

网友评论

      本文标题:LRU缓存淘汰算法

      本文链接:https://www.haomeiwen.com/subject/wkwaeqtx.html