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