版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析本节要点CONTENTSLRU缓存算法LRU缓存算法缓存是一种提高数据读取性能的技术,我们常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,又有新数据需要添加进缓存时,就需要删除部分数据腾出空间,这样新数据才可以添加进来。缓存数据不能随机删除,一般情况下根据某种算法策略删除(淘汰)缓存数据。常用缓存淘汰算法有最近最少使用算法(LRU)、最少使用算法(LFU)、先进先出算法(FIFO)等。LRU是LeastRecentlyUsed的缩写,该算法基于“局部性原理”,认为最近使用的数据是热门数据,下一次大概率会再次被使用,而最近很少被使用的数据,下一次大概率不再用到。当缓存容量已满时,优先淘汰最近很少使用的数据。LRU缓存淘汰算法在CPU缓存、数据库缓存和浏览器缓存中广泛应用。LRU缓存算法假设缓存容量capacity=5,最近访问的数据在缓存头部,LRU算法的简化模拟过程如下。LRU缓存算法存入1访问5存入8LRU算法有两个基本操作:访问get(key):如果关键字key在缓存中,返回关键字的值,否则返回-1。将该数据移动到缓存头部。存入put(key,val):如果关键字key已经存在,则变更其值为val,并将该数据移动到缓存头部。如果关键字不存在,若缓存已满,则先删除缓存尾部;将新数据放入缓存头部。LRU缓存算法(1)将数据移动到缓存头部,实际上分为两步:先删除该数据,再将该数据放入缓存头部。采用什么数据结构更好?(2)还有一个关键的问题,如何快速找到数据?LRU缓存算法双向链表和哈希表完美结合,形成一个新的数据结构—哈希链表。LRU缓存算法的核心数据结构是哈希链表。LRU缓存算法LRU缓存算法存入key=1,val=50假设缓存容量capacity=5,最近访问的数据在缓存头部。LRU缓存算法访问key=5LRU缓存算法存入key=8,val=25LRU缓存算法存入key=2,val=68如果采用封装好的数据结构,只需要几行代码就可以实现。例如,Python语言中的OrderedDict,Java语言中的LinkedHashMap,都是结合了哈希表与双向链表的数据结构。直接调用封装好的数据结构不符合考试或面试的要求,在此设计一个哈希链表实现LRU算法。LRU缓存算法哈希表可以采用C++STL中的unordered_map,其内部实现为哈希表,无序,增删改查的时间复杂度可达O(1),最坏为O(n)。也可以采用C++STL中的map,其内部实现为红黑树,有序,增删改查的时间复杂度为O(logn)。双向链表采用自定义实现,包括添加、删除等基本操作。LRU缓存算法双向链表包括4种基本操作:添加p节点到链表头部,删除p节点,移动p节点到链表头部,删除尾节点。(1)添加p节点到链表头部LRU缓存算法(2)删除p节点LRU缓存算法(3)移动p节点到链表头部
先删除p节点,然后将p节点添加到链表的头部。(4)删除尾节点
先找到尾节点tail->pre,然后删除尾节点。LRU缓存算法LRU缓存包括3种基本操作:初始化,访问,存入。(1)初始化初始化缓存的容量为参数_capacity,实际数据量size=0,双向链表的头节点和尾节点不存储数据。LRU缓存算法(2)访问如果关键字key在缓存中,返回关键字的值,否则返回-1。将该数据移动到链表头部。(3)存入如果关键字key已经存在,则变更其值为val,并将该数据移动到链表头部。如果关键字不存在,判断如果缓存已满,则先删除缓存尾部;将新数据放入缓存头部。LRU缓存算法LRU缓存算法算法实现LRU缓存算法算法分析时间复杂度:在哈希表中执行查找和添加操作的时间复杂度为O(1),双向链表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年银川中医院医护人员招聘笔试参考题库及答案详解
- 2026年太原铁路中心医院医护人员招聘考试备考试题及答案详解
- 2026年齐齐哈尔医学院附属第三医院医护人员招聘笔试参考题库及答案详解
- 2026年玉林市中医院医护人员招聘笔试备考题库及答案详解
- (2026年)老年人就医指导制度
- (2026版)幼儿园托育服务管理制度
- 2026年河北邯郸农村商业银行人员招聘笔试备考试题及答案详解
- 2026年中国中医科学院眼科医院医护人员招聘笔试备考题库及答案详解
- 2026年山西中西医结合医院医护人员招聘考试参考试题及答案详解
- 2026年陕西省第二人民医院医护人员招聘考试参考题库及答案详解
- 建筑减震器中英文对照外文翻译文献
- 城轨车辆常见制动系统-EP2002制动系统
- 压力容器生产单位压力容器质量安全日管控、周排查、月调度制度(含表格记录)
- 高三生物《二轮复习·长句描述题的规范答题》课件
- 项目管理考试试题库
- 中国行业分类及代码
- 《软件工程经济学》练习题库及答案
- 初中道德与法治课堂笔记的有效方法与策略
- YS/T 429.1-2014铝幕墙板第1部分:板基
- LY/T 3037-2018乙酰化木材
- GB/T 21944.1-2022碳化硅特种制品反应烧结碳化硅窑具第1部分:方梁
评论
0/150
提交评论