返回顶部
首页 > 资讯 > 精选 >lru和lfu算法有什么区别
  • 416
分享到

lru和lfu算法有什么区别

2023-06-14 23:06:39 416人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关lru和lfu算法有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。区别:LRU是最近最少使用页面置换算法,淘汰最长时间未被使用的页面;而LFU是最近最不常

这篇文章将为大家详细讲解有关lru和lfu算法有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

区别:LRU是最近最少使用页面置换算法,淘汰最长时间未被使用的页面;而LFU是最近最不常用页面置换算法,淘汰一定时期内被访问次数最少的页。LRU关键是看页面最后一次被使用到发生调度的时间长短;而LFU关键是看一定时间段内页面被使用的频率。

常见的缓存算法

  • LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。

  • LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。

  • FIFO (Fist in first out) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。

LRU缓存

像浏览器的缓存策略、memcached的缓存策略都是使用LRU这个算法,LRU算法会将近期最不会访问的数据淘汰掉。LRU如此流行的原因是实现比较简单,而且对于实际问题也很实用,良好的运行时性能,命中率较高。下面谈谈如何实现LRU缓存:

lru和lfu算法有什么区别

  • 新数据插入到链表头部

  • 每当缓存命中(即缓存数据被访问),则将数据移到链表头部

  • 当链表满的时候,将链表尾部的数据丢弃

LRU Cache具备的操作:

  • set(key,value):如果key在HashMap中存在,则先重置对应的value值,然后获取对应的节点cur,将cur节点从链表删除,并移动到链表的头部;若果key在hashmap不存在,则新建一个节点,并将节点放到链表的头部。当Cache存满的时候,将链表最后一个节点删除即可。

  • get(key):如果key在hashmap中存在,则把对应的节点放到链表头部,并返回对应的value值;如果不存在,则返回-1。

LRU和LFU的区别:

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

注意,当调页面4时会发生缺页中断

若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(十分钟内,页面3只使用了一次)

关于lru和lfu算法有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: lru和lfu算法有什么区别

本文链接: https://lsjlt.com/news/275871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • lru和lfu算法有什么区别
    这篇文章将为大家详细讲解有关lru和lfu算法有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。区别:LRU是最近最少使用页面置换算法,淘汰最长时间未被使用的页面;而LFU是最近最不常...
    99+
    2023-06-14
  • Redis中的LRU算法有什么用
    这篇文章给大家分享的是有关Redis中的LRU算法有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redis是基于内存存储的key-value...
    99+
    2024-04-02
  • Floyd和dij算法计算最短路径有什么区别
    1.算法基础不同 xFloyd算法基于动态规划思想,用于求解图中所有顶点对之间的最短路径; dij算法是基于贪心思想,主要用于求解从某一源点到图中所有其他顶点的最短路径。 2.时间复杂度不同 xFloyd算法的...
    99+
    2023-10-29
    最短 有什么区别 算法
  • = 和 := 赋值运算符有什么区别?
    实际上,它们都是赋值运算符,用于赋值,但它们之间的显着区别如下 -= 运算符赋值为SET 语句的一部分或作为 UPDATE 语句中 SET 子句的一部分,在任何其他情况下 = 运算符都被解释为比较运算符。另一方面,:= 运算符分配一个值,并...
    99+
    2023-10-22
  • /” 和 “\” 有什么区别
    键盘上的“/” 和 “\”这个两个“斜杠”有什么区别。 通常,“/”被叫作“正斜杠”,英语是forward slash,经常简称为slash。Windows命令用\,中文排版用/。而“\” 被叫作“反斜杠”,英语是backward sla...
    99+
    2023-09-25
    前端 java 服务器 Powered by 金山文档
  • 云计算和虚拟机有什么区别
    云计算和虚拟机的区别是:本质不同,云计算属于一种服务模式或一种交付方式,而虚拟机可能是容器,甚至是真正的物理机;之所以容易混淆虚拟机和云计算,是因为虚拟机确实在云计算中太普遍了,虚拟机是云计算中最活跃的主体,也是核心之一,很多服务都是围绕着...
    99+
    2024-04-02
  • db2和oracle语法有什么区别
    db2和oracle语法区别:1、SQL语法差异,虽然db2和oracle都使用结构化查询语言,但它们在语法方面存在一些差异;2、db2和oracle拥有不同的数据类型;3、外键约束定义,db2可以定义在创建表时或者使用“ALTER TAB...
    99+
    2023-07-10
  • mysql和sqlserver语法有什么区别
    mysql 和 sql server 的语法差异主要体现在数据库对象、数据类型、sql 语句和其他方面。数据库对象差异包括存储引擎和文件组的指定方式、索引和约束的创建。数据类型差异涉及数...
    99+
    2024-04-22
    mysql sqlserver
  • Java递归算法与优化后的算法有什么区别
    本篇内容介绍了“Java递归算法与优化后的算法有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、...
    99+
    2024-04-02
  • php和java语法上有什么区别
    这篇文章给大家分享的是有关php和java语法上有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。区别:1、PHP支持“//”、“#”和“”注释方式,java支持“//”、“”和“”注释方式。2、java中...
    99+
    2023-06-15
  • PHP函数和方法有什么区别
    今天小编给大家分享一下PHP函数和方法有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP函数是一段可重复使用的代...
    99+
    2023-07-05
  • JavaScript展开运算符和剩余运算符有什么区别
    今天小编给大家分享一下JavaScript展开运算符和剩余运算符有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • LRU缓存算法的实现方法是什么
    这篇文章主要讲解了“LRU缓存算法的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LRU缓存算法的实现方法是什么”吧!LRU就是Least R...
    99+
    2024-04-02
  • php和it有什么区别
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。php和it有什么区别一:PHP (计算机编程语言)PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤...
    99+
    2016-12-13
    php it
  • php和web有什么区别
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。php和web有什么区别一:PHP (计算机编程语言)PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,...
    99+
    2015-10-28
    php web
  • tomcat和apache有什么区别
    一般是把 Apache服务器 与 tomcat服务器 搭配在一起用 Apache服务器 负责处理所有 静态的 页面/图片 等信息。 Tomcat 只处理动态的 部分。 Apache:是C语言实现的,专门用来提供HTTP服务。特性:简单、速度...
    99+
    2016-05-19
    java教程 tomcat apache
  • php5.2和5.3有什么区别
    本文操作环境:windows10系统、php 5.2&&php 5.3、thinkpad t480电脑。很多小伙伴可能不太了解php 5.2和php 5.3之间有什么区别。下面我们就来具体介绍下这两个版本之间有什么区别,具体...
    99+
    2015-07-11
    php 5.2 php 5.3 区别
  • java和android有什么区别?
    Android和JAVA区别:Android是主流智能手机的操作系统,JAVA是一种开发语言,两者没有好坏优势之分,只是两种职业岗位选择,学安卓从事移动互联方向开发,学JAVA从事软件方向开发,主要看个人选择,从学JAVA转移到安卓,学安卓...
    99+
    2020-09-26
    java教程 java android
  • MongoDB和Redis有什么区别
    这篇文章主要介绍MongoDB和Redis有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MongoDB 更类似 MySQL,支持字段索引、游标操作,其优势在于查询功能比较强...
    99+
    2024-04-02
  • redis和mongodb有什么区别
    这篇文章主要介绍redis和mongodb有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! RedisRedis是一个开源的使用ANSI C语言编写、支持网络、可基...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作