Vue的缓存算法—LRU算法

本文探讨了Vue源码中的LRU缓存算法,详细解释了算法原理,即最近最少使用原则。通过一个可视化示例展示了LRU如何调度数据,并通过一个缺页数的实例说明了其工作流程。接着,文章分析了Vue中LRU的实现,包括构造函数和关键方法,指出其在提高查找效率方面的作用,并暗示在Vue的指令解析中可能的应用。
摘要由CSDN通过智能技术生成

最近在看Vue的源码,不得不说的是,Vue的源码十分优雅简洁,下面就来分享下Vue的缓存利用的算法LRU算法。

LRU算法

LRU是Least recently used的简写,主要原理是根据历史访问记录来淘汰数据,说白了就是这个算法认为如果数据被访问过,那么将来被访问的几率也高。其存储结构是一个双链表,最近被访问到的放在双链表的尾部,头部放的就是最早被访问到数据。关于算法的具体流程,可以来看下这个,这个可视化过程,模拟了lru算法进行调度的过程。

缺页数

lru在笔试题中也会经常出现,经常会考到的那就是缺页数,例如页面访问序列为:2,3,2,1,5,2,4,5,3,2,5,2, 分配给某个进程3页内存,求其缺页次数。
缺页数可以理解为,内存不满的次数,转到lru来看就是链表中有空节点的次数。下面来走一下整个流程(左为head右为tail):

  1. 2            // 第一次缺页
  2. 2 -> 3    // 第二次缺页
  3. 3 -> 2    // 第三次缺页
  4. 3 -> 2 -> 1
  5. 2 -> 1   // 第四次缺页
  6. 2 -> 1 -> 5
  7. 1 -> 5 -> 2
  8. 5 -> 2   // 第五次缺页
  9. 5 -> 2 -> 4
  10. 2 -> 4 -> 5
  11. 4 -> 5   // 第六次缺页
  12. 4 -> 5 -> 3
  13. 5 -> 3    // 第七次缺页
  14. 5 -> 3 -> 2
  15. 3 -> 2 -> 5
  16. 3 -> 5 -> 2

所以总共有着7次缺页,上面的这个流程也是算法的具体执行流程,可以看出的是当有新的节点进入时,首先会检测内存是否已满,如果满了的话,就先将头给移除,再在尾部添加上这个新节点;假若该节点在链表中存在,那么直接将这个节点拿到头部。下面来看下Vue对这个算法的实现:

vue中的lru

源码时src/cache.js,先来看看其构造函数:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值