FIFO LRU LFU的含義和原理

2021-08-19 01:22:19 字數 1157 閱讀 3621

題目:

請簡要介紹fifo、lru、lfu的含義和原理

含義:fifo

:first in first out

,先進先出

lru:

least recently used

,最近最少使用

lfu:

least frequently used

,最不經常使用

以上三者都是快取過期策略。

原理和實現:

一、fifo按照「

先進先出

(first in,first out)」的原理淘汰資料

,正好符合佇列的特性,資料結構上使用佇列queue來實現。

如下圖:

1. 新訪問的資料插入fifo佇列尾部,資料在fifo佇列中順序移動;

2. 淘汰fifo佇列頭部的資料;

二、lru(least recently used,最近最少使用)演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是

「如果資料最近被訪問過,那麼將來被訪問的機率也更高

」。最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下:

1. 新資料插入到鍊錶頭部;

2. 每當快取命中(即快取資料被訪問),則將資料移到鍊錶頭部;

3. 當鍊表滿的時候,將鍊錶尾部的資料丟棄。

三、lfu

(least frequently used)演算法根據資料的歷史訪問頻率來淘汰資料,其核心思想是「

如果資料過去被訪問多次,那麼將來被訪問的頻率也更高

」。lfu的每個資料塊都有乙個引用計數,所有資料塊按照引用計數排序,具有相同引用計數的資料塊則按照時間排序。

具體實現如下:

1. 新加入資料插入到佇列尾部(因為引用計數為1);

2. 佇列中的資料被訪問後,引用計數增加,佇列重新排序;

3. 當需要淘汰資料時,將已經排序的列表最後的資料塊刪除。

Chr 和chrb 的含義

chr charcode 必要的 charcode 引數是乙個用來識別某字元的 long。charcode ascii碼 每個字都擁有自己的ascii 要知道某乙個字的ascii碼,編寫一段vb程式 msgbox cstr asc 要知道的字元,要用 括起來 這句 可以告訴你。此函式很有用,一些輸入...

rownum 和 distinct 的含義

rownum是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽欄位可以用於限制查詢返回的總行數.oracle在select出一條記錄後便加上乙個rownum,而不等所有的結果都select出來後再加上rownum。然後是distinct的工作原理。...

this指標的用法和含義

1 this指標的含義及其用法 1.this指標是乙個隱含於每乙個成員函式中的特殊指標。它指向正在被該成員函式操作的那個物件。2.當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含使用this指標。3.當乙個成員函式被呼叫時,自動...