首页 > 其他分享 >146. LRU 缓存

146. LRU 缓存

时间:2024-09-19 17:35:58浏览次数:9  
标签:146 缓存 capacity int unorderedMap list second LRU key

 

\

class LRUCache {
public:
    LRUCache(int capacity)
        :_capacity(capacity)
    {}

    int get(int key) {
        auto it = _unorderedMap.find(key);
        if(it != _unorderedMap.end()){
            _list.splice(_list.begin(), _list, it->second);
            return it->second->second;
        }else{
            return -1;
        }
    }
    
    void put(int key, int value) {
        auto it = _unorderedMap.find(key);
        if(it != _unorderedMap.end()){
            it->second->second = value;
            _list.splice(_list.begin(), _list, it->second);
        }else{
            if(_capacity == _list.size()){//满了
                auto deletenode = _list.back();
                _unorderedMap.erase(_unorderedMap.find(deletenode.first));
                _list.pop_back();
            }
            _list.push_front(pair<int, int>(key, value));
            _unorderedMap[key] = _list.begin();
        }
    }
private:
    int _capacity;
    list<pair<int, int>> _list;
    unordered_map<int, list<pair<int, int>>::iterator> _unorderedMap;
};

 

标签:146,缓存,capacity,int,unorderedMap,list,second,LRU,key
From: https://www.cnblogs.com/llllmz/p/18421033

相关文章

  • 分布式环境如何更新本地缓存
    引言本地缓存是一种常用的缓存手段,在客户端会经常使用这种手段来提升效率,但服务端在分布式环境下它出现的频率并不高,原因是本地缓存无法做到多台服务器数据共享,因此我们会采用redis这种分布式缓存,然而在某些情况下我们还是要使用的话怎么办呢?网上基本查不到有人去做这种分布式环......
  • SQLSTATE[42S02]: Base table or view not found: 1146 Table '***.ey_citysite' does
    根据提供的错误信息 SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'***.ey_citysite'doesn'texist,这个错误表明数据库中不存在名为 ey_citysite 的表或视图。以下是一些可能的解决步骤:1.确认表是否存在首先确认表是否真的存在。使用SQL命令检查表可以......
  • LeetCode_0146. LRU缓存
    题目描述请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intval......
  • 【架构设计】多级缓存:应用案例与问题解决策略
    【架构设计】多级缓存:应用案例与问题解决策略多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点| 原创作者/编辑:凯哥Java                    | 分类:架构设计系列教程多级缓存系统:提升性能的......
  • 【架构设计】多级缓存:应用案例与问题解决策略
      【架构设计】多级缓存:应用案例与问题解决策略 多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点 | 原创作者/编辑:凯哥Java                    | 分类:架构设计系列教程 ......
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
    1. 分布式缓存1.1. 缓存存在于应用程序的许多地方1.1.1. 行应用程序的CPU具有高速多级硬件缓存,可以减少相对较慢的主内存访问1.1.2. 数据库引擎可以利用主内存来缓存数据存储的内容,这样在许多情况下查询就可以不用访问速度相对较慢的磁盘1.2. 分布式缓存是可扩展......
  • 清理C盘缓存,如果电脑卡了怎么清理C盘缓存呢
    当电脑因为C盘缓存过多而变得卡顿时,可以通过以下几种方法来清理C盘缓存,以恢复系统的流畅运行:一、使用Windows系统自带工具磁盘清理打开“此电脑”(或“我的电脑”),右键点击C盘,选择“属性”。在属性窗口中,点击“磁盘清理”。系统将自动扫描并列出可以清理的文件,如临时文件、回......
  • 清理C盘缓存,清理电脑C盘缓存垃圾的操作步骤
    清理电脑C盘缓存垃圾是维护系统性能和释放磁盘空间的重要步骤。以下是一些详细的操作步骤,供你参考:使用磁盘清理工具步骤:打开“此电脑”(或“我的电脑”):在桌面或文件资源管理器中找到并打开它。选择C盘并右键点击:在“此电脑”窗口中,找到并右键点击C盘(通常是系统盘)。选择“属......
  • 二级缓存架构极致提升系统性能
    前言随着k8s成为用云新界面,容器成为众多用户“弹性”的利器,因此容器的创建天生具备高并发特性。高并发、大数据量下,为了提供更好的容器弹性体验,笔者通过二级缓存的设计,成功优化了系统性能、资源消耗、系统容量。但持续压榨性能的道路是曲折的。各种缓存方案需要考虑非常多因素,包括......
  • 清理C盘缓存,清理C盘缓存的方法
    清理C盘缓存是提升Windows系统性能的重要步骤。以下是一系列详细的步骤,教你如何有效地清理C盘缓存:一、使用Windows内置工具磁盘清理1.打开磁盘清理工具:可以通过文件资源管理器右键点击C盘,选择“属性”,然后点击“磁盘清理”。或者在“设置”中选择“系统”>“存储”,点击C盘......