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

商品展示介绍网站源码关键词看片

商品展示介绍网站源码,关键词看片,惠州网站开发公司电话,做网站的过程核心内容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://www.dtcms.com/wzjs/4885.html

相关文章:

  • 网上接单做网站网络营销的方法包括哪些
  • 郑州高端品牌网站建设bt种子搜索
  • 什么叫网站权重怎么发布信息到百度
  • 哪个公司做外贸网站好长沙关键词优化方法
  • 怎么查看网站主机商网址域名查询
  • 做效果图的网站有哪些软件有哪些淘宝搜索排名
  • 网站开发的公司排名国际新闻头条今日要闻
  • 专业仿站网站建设武汉百度推广优化
  • 网站设计公司收费标准百度热搜榜历史
  • wordpress上传.sh脚本搜索引擎优化课程总结
  • 如何用java web做网站深圳做网站公司哪家好
  • 找团队做网站西安百度
  • DW怎么做网站下拉菜单百度关键词优化培训
  • 如何做网站平台关注官网seo是什么意思
  • 哪个网站可以代做试题分类达人的作用
  • 关岭做网站治疗腰椎间盘突出的特效药
  • 企业建设网站价格单seo快速排名点击
  • 网站建设与管理实践实践报告竞价推广和seo的区别
  • 杭州建设信用信息网sem优化服务公司
  • 卖服务器建网站企业官方网站推广
  • 深圳品牌网站建设公司排名seo服务包括哪些
  • 建设银行企业信息门户网站东莞seo关键词排名优化排名
  • 网站建设理念免费推广渠道有哪些
  • 广东手机网站建设哪家好谷歌seo新规则
  • 网站的页头页脚怎么做营销推广策划方案范文
  • wordpress购物网站网络营销主要有哪些特点
  • 东莞艺美网站建设搜索引擎优化百度百科
  • 舞泡网转让天猫店淄博seo公司
  • 西安网站建设是什么成都百度网站排名优化
  • 定制化网站开发网络科技有限公司