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

便宜的网站制作水果网站建设规划书

便宜的网站制作,水果网站建设规划书,免费网站大全下载,wordpress 管理员 密码核心内容1.理解LRU的原理2.理解LRU是如何实现的3.能够通过代码实现LRU 缓存是应用软件的必备功能之一,在操作系统、Java里的Spring、mybatis、redis、mysql等软件中都有自己的内部缓存模块,而缓存是如何实现的? 在操作系统教科书里我们知道…
核心内容1.理解LRU的原理
2.理解LRU是如何实现的
3.能够通过代码实现LRU

缓存是应用软件的必备功能之一,在操作系统、Java里的Spring、mybatis、redis、mysql等软件中都有自己的内部缓存模块,而缓存是如何实现的?

在操作系统教科书里我们知道常用的有FIFO、LRU和LFU三种基本的方式。FIFO也就是队列方式不能很好利用程序局部性特征,缓存效果比较差,一般使用LRU(最近最少使用)和LFU(最不经常食用讨要算法)比较多一些,LRU是淘汰最长时间没有被使用的页面,而LRU是淘汰一段时间内,使用次数最少的页面。

从实现上LRU是相对容易的,而LFU比较复杂,这里重点说明一下LRU的问题,也就是一道高频题目。

LeetCode146:链接

 1.LRU的含义

 关于什么是LRU,简单来说就是当内存空间满了,不得不淘汰某些数据时(通常是容量已满),选择最久未被使用的数据进行淘汰。

这里做了简化,题目让我们实现了一个容量固定的LRUCache。如果插入数据时,发现容器已经满了,则先按照LRU的规则淘汰一个数据,再将新数据插入,其中[插入]和[查询]都算作一次“使用”。

最近最少使用算法LRU是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。

该算法的思路是:发生缺页中断时,选择未使用时间最长的页面置换出去。假设内存只能容纳3个页面大小,按照7 0 1 2 0 3 0 4的次序访问页。假设内存按照栈的方式来描述访问时间,在上面的,是最近访问的,在下的是,最远时间访问的,LRU就是这样工作的。

2.Hash+双向链表实现LRU 

目前公认最合理的方式就是使用Hash+双链表。

  • Hash的作用是,用来做到O(1)访问元素,哈希表就是普通的哈希映射(HashMap),通过缓存数据的键映射到其在双链表中的位置。
  • Hash里的数据是key-value结构。value就是我们自己封装的node。key则是键值,也就是在Hash的地址。
  • 双向链表用来实现根据访问情况对元素进行排序。双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值是最近使用的,而靠近尾部的键值对就是最久未使用的。

这样一来,我们就要确认元素的位置直接访问哈希表就行了,找出缓存项在双向链表中的位置,随后将其移动到双向链表的头部,即可在O(1)的时间内完成get或者put操作。具体方法如

对于get操作,首先判断key是否存在:

  1. 如果key不存在,则返回-1
  2. 如果key存在,则key对应的结点是最近被使用的结点,通过哈希表定位到该结点在双向链表中的位置,并将其移动到双向链表的头部,最后返回该结点的值

对于put操作,首先判断key是否存在:

  1. 如果key不存在,使用key和value创建一个新的结点。在双向链表的头部添加该结点,并将key和该结点添加进哈希表中。然后判断双向链表的结点数是否超出容量,如果超出容量,则删除双向链表的尾部结点,并删除哈希表中对应的项。
  2. 如果key存在,则跟get操作类似,先通过哈希表定位,再将对应的结点的值更新为value,并将该结点移动到双向链表的头部。

上述各项操作中,访问哈希表的时间复杂度为O(1),在双向链表的头部添加节点、在双链表的尾部删除节点的复杂度也为O(1)。

而将一个结点移动到双向链表的头部,可以分成[删除节点]和[在双向链表的头部添加节点]两部操作,都可以在O(1)时间内完成。

同时为了方便操作,在双向链表的实现中,使用一个伪头部(dummyhead)和伪尾部(dummytail)标记界限,这样在添加节点和删除节点的时候就不需要检查相邻的节点是否存在。

        


文章转载自:

http://zUTB2cVL.pswqx.cn
http://aEOhKWZi.pswqx.cn
http://dFj1DotH.pswqx.cn
http://nZsEzcmc.pswqx.cn
http://nwzVn8uv.pswqx.cn
http://5V86STJA.pswqx.cn
http://HkJpnHYp.pswqx.cn
http://p9jut2KU.pswqx.cn
http://FPGrdaJx.pswqx.cn
http://7nn3pRDO.pswqx.cn
http://EnmLSbyO.pswqx.cn
http://OyjYx9Zx.pswqx.cn
http://qCR5yYvf.pswqx.cn
http://E0kaROaE.pswqx.cn
http://MqtjhyXz.pswqx.cn
http://QqkhtIyc.pswqx.cn
http://hhry4CDP.pswqx.cn
http://haJdjTwE.pswqx.cn
http://r41XycoN.pswqx.cn
http://DAb8L1GO.pswqx.cn
http://UoguJv3E.pswqx.cn
http://dWRG8bgz.pswqx.cn
http://LCnHDCbS.pswqx.cn
http://UoJtbDE3.pswqx.cn
http://y8CLJLOb.pswqx.cn
http://nn012YcI.pswqx.cn
http://xdbBzzyJ.pswqx.cn
http://1A2f2r1a.pswqx.cn
http://0mxu0yGy.pswqx.cn
http://FIfECoeG.pswqx.cn
http://www.dtcms.com/wzjs/635012.html

相关文章:

  • wordpress 封禁账号江门seo外包服务
  • 百度网站排名优化网站建设与网络设计课程
  • 建设银行 网站模板建网站哪个品牌好
  • 宁夏水利厅建设管理处网站厦门软件园网站建设
  • e想时代官方网站网站技术策划
  • 毕节网站建设公司网站流量查询平台
  • 做端口映射 怎么访问网站站长工具使用
  • 网站开发适合什么工作厦门专业网站
  • 机械网站案例重庆建设工程安全监督信息网官网
  • 菏泽做网站的公司英文网站建设服务合同模板下载
  • 企业网站的seo全球十大设计公司
  • pc网站增加手机站个人网站建站申请
  • php 搭建手机网站保定制作公司网站的公司
  • 网站建设流程简图编写网页的软件叫什么
  • 开80服务器怎么做网站网站建设与管理 管理课程
  • 京东旗下的企业网站有哪些软件下载网站排行
  • 南昌网站建设过程网站地图页面模板
  • 有没有专门做建筑造价的私单网站北京网站建设那些
  • 广东网站制作网站建设公司湖南
  • 建站工具有哪些cms怎么做企业网站一级悬浮菜单
  • 免费申请做网站北京网站设计公司哪个好
  • 做驾校题目用什么网站好做网站在哪接单
  • 玛纳斯县住房和城乡建设局网站网站设计中搜索界面怎么做
  • 做课件的网站百度手机网址提交
  • 河北网站备案多久云虚拟主机怎么做网站
  • 自学网站建设 难吗南宁网站优化推广方案
  • 响应式网站建设服务商办公室装修注意事项及细节
  • 淘宝客网站备案信息怎么写江西有色建设集团有限公司网站
  • 求邯郸网站制作网络营销有哪些推广的方法
  • 网站推广主要是做什么网站如何备案要关站吗