LRU算法中put与get的关系

来源:5-7 实现LRU缓存置换算法

慕无忌1403862

2019-07-27

(前面提问过同一个问题,但是在补了个截图之后发现从待解决去到已解决了,所以重新提问)
我不懂python,所以我看这两节课主要是看老师实现的逻辑,但是在看到put这个功能(put,get这每一个单独定义的是应该叫功能吗?)时,有一点小小的疑问想要请教老师。
Put里面是先判断节点是否已经在缓存里了,然后再进行下一步的操作。这个地方用到的get是否就是引用了在put前面定义的get的功能?
如果是的话,为什么还要在得到节点value之后删除原来的value增加新的value?这两步不是已经在前面定义的get里面实现了吗?
如果不是的话,前面单独定义的get在实际操作中,什么时候会单独使用呢?因为在实现的逻辑上,总感觉put就已经实现了get所要实现的东西。
还请老师指教,谢谢。

写回答

1回答

咚咚呛

2019-07-27

  1. put方法和get方法在实现上有些类似,但是是不一样的意义。

  2. 先说get方法,get方法是获取Cache内容,如果命中的话,说明这个缓存最近已经被访问了,所以应该把这个节点放到链表的首部以表示最新访问。

  3. put方法前面那段逻辑和get非常类似,但意义不同,put方法也是先判断是否命中了,如果key命中,那么说明是需要放进缓存的key没变,value要更新了,所以这个时候要把老value给替换,然后放在链表的首部,以表示最近操作或者访问。

  4. 这两个操作在课程中都有说明,可以回顾相关内容,不过这里看到同学说不懂Python还在看相关逻辑并且提出疑问,为同学点赞,同时也觉得自己用Python写相关的算法面向更多的同学也是个不错的选择。

希望对你有所帮助。

0
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程