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
put方法和get方法在实现上有些类似,但是是不一样的意义。
先说get方法,get方法是获取Cache内容,如果命中的话,说明这个缓存最近已经被访问了,所以应该把这个节点放到链表的首部以表示最新访问。
put方法前面那段逻辑和get非常类似,但意义不同,put方法也是先判断是否命中了,如果key命中,那么说明是需要放进缓存的key没变,value要更新了,所以这个时候要把老value给替换,然后放在链表的首部,以表示最近操作或者访问。
这两个操作在课程中都有说明,可以回顾相关内容,不过这里看到同学说不懂Python还在看相关逻辑并且提出疑问,为同学点赞,同时也觉得自己用Python写相关的算法面向更多的同学也是个不错的选择。
希望对你有所帮助。
00
相似问题