algorithm-base/animation-simulation/设计/LRU.md

36 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

说起缓存我们都不陌生
浏览器缓存,数据库缓存等。
说起**缓存淘汰策略**我们也很熟悉。
例如先进先出策略 FIFOFirst InFirst Out,最少使用策略 LFULeast Frequently Used,最近最少使用策略 LRULeast Recently Used
看到这里大家是不是想到我们今天要说什么啦。
我们就来说一下其中的一个缓存淘汰策略,**最近最少使用策略 LRU**
LRU 的含义很容易理解,我们可以这样思考,最近使用过的我们则认为其是有用的,很久没用过的则认为是无用的,因为我们的内存有限,当我们内存满的时候,肯定是先清除那些很久没用过的数据。
其实我们生活中有很多相似的例子,大家也都经历过。
下面我们将镜头切换到袁记菜馆。
袁厨最近新买了一些菜谱,打算在书房里好好闭关钻研一波。
![](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/微信截图_20210412213211.1d8uyzj1qysg.png)
这下是不是理解个大概啦。
其实生活中的我们也是这样的,买的一本新书则随手放到了最上面,从书堆中抽出一本,使用过后也放到了最上面,清理书时先清理很久没使用过的,对自己不太重要的(也就是最下面的图书)。
到这里是不是就理解啦,其实生活中还有类似的例子,比如安卓手机的后台运行,整理衣柜的衣物等。
好啦我们理解了 LRU 的含义。
那么我们可以使用什么数据结构实现呢?
数组?
数组当然可以,但是我们使用数组需要