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

[力扣146. LRU 缓存 ](https://leetcode.cn/problems/lru-cache/description/)

力扣146. LRU 缓存

使用LinkedHashmap(HashMap的子类,能够记住插入数据的顺序).
LRU是Lease Recently User的缩写,意思是最近 最少使用。比如设计一个文件缓存系统,每个文件有自己的大小和访问时间,文件缓存系统有总的大小,当往这个文件系统中放入新的文件时,如果发现超出文件缓存系统的容量,那么把访问时间最旧的文件删掉。
LRU实现代码如下

lass LRUCache {int cap;LinkedHashMap<Integer, Integer> cache = new LinkedHashMap<>();private void makeRecently(int key){int val = cache.get(key);//删除key,重新插入到队尾cache.remove(key);cache.put(key, val);// 删除 key,重新插入到队尾}public LRUCache(int capacity) {//初始化 LRU 缓存this.cap = capacity;}public int get(int key) {// 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1if(!cache.containsKey(key)){return -1;}makeRecently(key);//将key设置为最近使用return cache.get(key);}public void put(int key, int val) {//如果关键字 key 已经存在,则变更其数据值 value ;if(cache.containsKey(key)){cache.put(key, val);// 修改 key 的值makeRecently(key);// 将 key 变为最近使用return;}if(cache.size() >= this.cap){int oldestKey = cache.keySet().iterator().next();//链表头部就是最久未使用的keycache.remove(oldestKey);}cache.put(key,val);//将新的key添加到链表尾部}
}

相关文章:

[力扣146. LRU 缓存 ](https://leetcode.cn/problems/lru-cache/description/)

力扣146. LRU 缓存 使用LinkedHashmap(HashMap的子类&#xff0c;能够记住插入数据的顺序). LRU是Lease Recently User的缩写&#xff0c;意思是最近 最少使用。比如设计一个文件缓存系统&#xff0c;每个文件有自己的大小和访问时间&#xff0c;文件缓存系统有总的大小&…...

Mysql存储引擎

目录 一、前言 二、存储引擎 1、InnoDB存储引擎 1.1、简介 1.2、优势 1.3、使用方法 1.4、性能 2、MyISAM存储引擎 2.1、优势 2.2、使用方法 2.3、性能 3、MEMORY存储引擎 4、MyISAM 三、比较 四、总结 一、前言 MySQL是开放源代码的关系型数据库管理系统&…...

算法通关村-----数组实现加法专题问题解析

数组实现整数加法 问题描述 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。详见leetcode66 问题…...

倒排表的压缩算法

For压缩算法 这是倒排表的一种压缩算法。 还是那个问题&#xff0c;如果"小米" 这个词项&#xff0c;在多文档里都有&#xff0c;则就会导致倒排表很大&#xff0c;这时候就会设计到了压缩算法&#xff0c;这里说的是&#xff0c;倒排表。 那末我们来看看 for压缩…...

Android studio实现自定义圆形进度条 带刻度进度条 计步效果 时速表 水波纹效果

目录 原文链接效果图values /layout /activity原文链接 效果图 点击重置后: 该项目总共实现了三种圆形进度条效果 CircleProgress:圆形进度条,可以实现仿 QQ 健康计步器的效果,支持配置进度条背景色、宽度、起始角度,支持进度条渐变DialProgress:类似 CircleProgress,…...

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括&#xff1a;前端front&#xff0c;服务提供者backend&#xff0c;服务消费者gateway&#xff0c;注册中心nacos 服务器信息&#xff1a;腾讯云入门级服务器2核2G&#xff08;后续有对服务器进行升级&#xff09; 部署工具&#xff1a;前端使用宝塔部署&#x…...

【算法与数据结构】617、LeetCode合并二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;采用递归的方式遍历二叉树&#xff0c;【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历&am…...

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如&#xff0c;原来我们要用ffmpeg录一段RTSP视频流转成MP4&#xff0c;我们有两种方案&#xff1a; 方案一&#xff1a;可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…...

朝夕光年游戏自动化测试实践

朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌&#xff0c;致力于服务全球玩家&#xff0c;帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。 在游戏的研发过程中&#xff0c;游戏自动化一直是开展难度较大的工程&#xff0c;具体包括机房机架、设备调度、软件框架、…...

数据结构基本概念

一、数据 数据对象-数据元素-数据项(属性)&#xff0c;前者由后者组成 二、数据结构 定义&#xff1a;按某种关系的数据元素的集合 三、数据类型 1、原子类型&#xff08;例如整型&#xff09; 2、结构类型&#xff08;由原子类型组成&#xff0c;例如数组&#xff09; 3、…...

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 &#xff08;1&#xff09;在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办&#xff1f; &#xff08;2&#xff09;测试层 &#xff08;3&#xff09;开启mybatis日志 &#xff08;4&#xff09;预编译SQL 二、新增 &#xff08;1&#…...

Mybatis学习|Mybatis缓存:一级缓存、二级缓存

Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性&#xff0c;它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下&#xff0c;只有一级缓存开启。(SqlSession级别的缓存&#xff0c;也称为本地…...

230903文本docx

处理文本 块级项目,每次文本超出右边界时都会添加一行.对段落,边界一般是页边距,但如果按列布局页,则也可是列边界,如果表格单元格内有段,则也可是单元格边界. 块级项属性指定其在页上的位置,如缩进项及段落前后间距.内联项属性一般指定显示内容的如字样,字体大小,粗体和斜体…...

Mysql-DML(数据处理语言)

-- 插入数据 insert into member values(1,张三,21,5000); insert into member(id,name) values(2,李四); insert into member values(3,王五,23,3000) ,(4,纪六,24,4000) ,(5,查七,25,5000); -- 更新&#xff08;修改数据) 不加限制条件 该字段全部修改 update member set age…...

部署项目至服务器

安装conda https://zhuanlan.zhihu.com/p/489499097 个人租借的服务器如何进行端口的开放呢&#xff1f; 防火墙设置&#xff1a; 添加规则设置&#xff1a; 即可&#xff1b; 通常下租借的服务器没有防火墙设置 相关链接&#xff1a; https://blog.csdn.net/weixin_4520…...

OSI与TCP IP各层的结构与功能,都有哪些协议

分析&回答 OSI七层模型 层功能TCP/IP协议族应用层文件传输&#xff0c;电子邮件&#xff0c;文件服务&#xff0c;虚拟终端TFTP&#xff0c;HTTP&#xff0c;SNMP&#xff0c;FTP&#xff0c;SMTP&#xff0c;DNS&#xff0c;Telnet表示层数据格式化&#xff0c;代码转换…...

【2023年11月第四版教材】第10章《进度管理》(第三部分)

第10章《进度管理》&#xff08;第三部分&#xff09; 7 估算活动持续时间7.1 估算活动持续时间7.2 类比估算★★★7.3 参数估算★★★7.4 三点估算★★★7.5 数据分析★★★ 7 估算活动持续时间 组过程输入工具和技术输出计划4,估算活动持续时间1.项目管理计划&#xff08;进…...

【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

目录 1_应用状态管理1.1_状态管理1.2_复杂的状态管理1.3_Vuex的状态管理 2_Vuex的基本使用2.1_安装2.2_创建Store2.3_组件中使用store 3_核心概念State3.1_单一状态树3.2_组件获取状态3.3_在setup中使用mapState 4_核心概念Getters4.1_getters的基本使用4.2_getters第二个参数4…...

Linux centos7 bash编程(循环与条件判断)

在编程训练中&#xff0c;循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时&#xff0c;根据条件的真假结果&#xff0c;决定执行哪些语句&#xff0c;这就是分支语句。 为了训练分支语句与循环语句&#xff0c;我们设计一个案例&#xff1a; 求一组…...

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式&#xff08;Decorator Pattern&#xff09; 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不修改现有对象的情况下&#xff0c;动态地将新功能附加到对象上。这种模式通过创建一个包装类&#xff0c;…...

科研实战:三种高效获取ERA5再分析数据的路径解析

1. ERA5再分析数据基础认知 第一次接触ERA5数据时&#xff0c;我和大多数科研新手一样被各种专业术语搞得晕头转向。简单来说&#xff0c;ERA5就像给地球做CT扫描生成的全球气象体检报告&#xff0c;它能提供从1950年到现在&#xff0c;每小时更新的气温、降水、风速等上百种气…...

第53节:倾斜模型osgb转3dtiles(免费工具)

1、下载cesiumlab工具 下载地址 2、启动cesiumlab&#xff0c;进行登录访问&#xff08;网页版&#xff09; 没有账号的可以用手机号注册一个 3、 选择倾斜模型切片 4、选择倾斜模型数据路径 5、设置空间参考、零点坐标 如果选择完osgb数据后能自动带出来则不用设置&…...

OpenClaw Provider Manager:统一管理第三方服务的微服务治理框架

1. 项目概述与核心价值最近在折腾一些自动化流程和微服务治理&#xff0c;发现一个挺普遍但处理起来又有点琐碎的问题&#xff1a;如何高效、统一地管理那些分散在各个角落的第三方服务提供商&#xff08;Provider&#xff09;&#xff1f;比如短信发送、邮件推送、对象存储、支…...

简单认识显卡

学习视频来自B站&#xff08;从零开始认识显卡&#xff09;&#xff1a;https://www.bilibili.com/video/BV1xE421j7Uv 这是你最近在玩的电脑游戏&#xff0c;形态各异的建筑、细节丰富的车辆&#xff0c;一切都很真实&#xff0c;它们的本质其实是一个个不同位置的点&#xff…...

数字视频发送器(SDI编码器)

这是一款数字视频发送器&#xff08;SDI编码器&#xff09;&#xff0c;功能对标Genum公司的GV7600和Semtech的GS2972。该芯片主要用于将并行数字视频信号&#xff08;如BT.1120&#xff09;转换为串行SDI信号&#xff0c;通过75欧姆同轴线缆进行传输。特征&#xff1a;传输速率…...

智慧树网课自动化学习插件:三步告别手动刷课的完整指南

智慧树网课自动化学习插件&#xff1a;三步告别手动刷课的完整指南 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台冗长的网课视频而烦恼吗&#xff1…...

如何快速获取全网音乐歌词:免费开源工具的终极指南

如何快速获取全网音乐歌词&#xff1a;免费开源工具的终极指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到心爱歌曲的歌词而烦恼吗&#xff1f;163Music…...

新手教程使用Python快速接入Taotoken调用多款大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 新手教程使用Python快速接入Taotoken调用多款大模型 对于刚接触大模型API的开发者而言&#xff0c;直接对接不同厂商的API往往意味…...

零基础转行信息安全,老师傅来支招

现在这个环境下&#xff0c;转行做信息安全的人已经越来越少了&#xff0c;但还是有热爱这一行的人。 今天&#xff0c;我们以零基础入行为例&#xff0c;按照下面的成长路径&#xff0c;来分析分析从2025年的招聘数据来看&#xff0c;需要哪些能力。 对零基础转行的人来说&a…...

告别背包焦虑!泰坦之旅终极装备管理神器完全指南

告别背包焦虑&#xff01;泰坦之旅终极装备管理神器完全指南 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 还在为《泰坦之旅》中堆积如山的传奇装备无处存放而烦恼吗&…...