当前位置: 首页 > news >正文

LRU缓存

LRU缓存(Least Recently Used,最近最少使用)是一种数据缓存机制,旨在解决计算机内存中数据的替换问题。当缓存空间不足时,LRU缓存会淘汰最近最久未被使用的数据,以确保缓存中始终存储着最新和最频繁使用的数据。

在这里插入图片描述

class LRUCache {
class Node{int key,val;Node pre,next;public Node(){}public Node(int key,int val){this.key = key;this.val = val;}
}
private ConcurrentHashMap<Integer,Node> cache = new ConcurrentHashMap<>();
private int size;
private int capacity;
private Node head = new Node();
private Node tail = new Node();public LRUCache(int capacity) {this.capacity = capacity;size = 0;head.next = tail;tail.pre = head;}public int get(int key) {Node node = cache.get(key);if(node == null)return -1;moveToHead(node);return node.val;}public void put(int key, int value) {Node node = cache.get(key);if(node != null){node.val = value;moveToHead(node);}else{Node newNode = new Node(key,value);cache.put(key,newNode);addToHead(newNode);++size;if(size > capacity){Node removeNode = removeTail();cache.remove(removeNode.key);--size;}}}public void moveToHead(Node node){removeNode(node);addToHead(node);}public void removeNode(Node node){node.pre.next = node.next;node.next.pre = node.pre;}public void addToHead(Node node){node.pre = head;node.next  = head.next;head.next.pre = node;head.next = node;}public Node removeTail(){Node removeNode = tail.pre;removeNode(removeNode);return removeNode;}
}

http://www.mrgr.cn/news/8721.html

相关文章:

  • http的keepalive和tcp的keepalive
  • Spring面试题二
  • 【数据结构3】哈希表、哈希表的应用(集合与字典、md5算法和文件的哈希值)
  • 图像分割论文阅读:BCU-Net: Bridging ConvNeXt and U-Net for medical image segmentation
  • 用excel内容批量建立文件夹
  • 全面解析轮换IP:原理、优势与应用详解
  • 同一台主机两个github账号切换使用
  • Zookeeper的watch机制是如何工作的?
  • flink+flinkcdc+同步(MYSQL到MYSQL)实践
  • AudioNotes -将音频内容转 markdown
  • redis | 认识非关系型数据库Redis的列表类型及python如何操作redis
  • SpringBoot集成kafka-指定topic(主题)-partition(分区)-offset(偏移量)消费信息
  • 如何利用ThinkPHP6打造高效SEO优化的网站!
  • R 语言学习教程,从入门到精通,R XML 文件使用(19)
  • 【单片机】PICC编译器和XC8编译器的历史发展,有什么关系
  • fpga图像处理实战-闭运算
  • 初识C语言指针(5)
  • 巨省成本的电子版招生简章越来越流行,你知道是怎么制作的吗?
  • Java | Leetcode Java题解之第367题有效的完全平方数
  • 第六届土木工程、环境资源与能源材料国际学术会议(CCESEM 2024,10月18-20)