題目:
請簡要介紹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.當乙個成員函式被呼叫時,自動...