硬體的快取?
cpu快取:位於cpu和記憶體之間的臨時儲存器
軟體快取?
軟體快取分為**
記憶體快取(預先將資料寫到容器(list,map,set)等資料儲存單元中,就是軟體記憶體快取)
資料庫快取
網路快取
記憶體快取淘汰機制分為三種
fifo(first in,first out)先進先出
優點:是先進先出的資料快取器,他與普通儲存器的區別是沒有外部讀寫位址線,這樣使用起來非常簡單。
缺點:只能順序寫入資料,順序的讀出資料,其資料位址由內部讀寫指標自動加1完成,不能像普通儲存器那樣可以由位址線決定讀取或寫入某個指定的位址
lfu(least freauently used)
最不經常使用頁置換演算法,清理掉留給經常使用的使用
lru(least recently used)喜新厭舊
記憶體管理的一種頁面置換演算法,新加入的資料放到鍊錶的頭部,當快取命中(被訪問)資料移到鍊錶的頭部,當鍊表滿的時候,將鍊錶尾部的資料丟棄。
//單鏈表
public class linkedlist
node list;
//鍊錶有多少個節點
int size;
//新增節點
//在頭部新增節點
public void add(t data)
//在鍊錶的index位置插入乙個新資料
public void add(int index, t data)
node node = new node(data, cur);
hrad.next = node;
size++;
}// 檢查index 是否在鍊錶範圍結構
public void checkpositionindex(int index)
}//刪除節點
public t remove()
return null;
}public t remove(int index)
hrad.next = cur.next;
//gc
cur.next = null;
size--;
return null;
}public t removelast()
//gc
node.next = null;
size--;
return cur.data;
}return null;
}//修改節點
public void updata(int index, t newdata)
head.data = newdata;
}//查詢節點
public t get() else
}public t get(int index)
return node.data;
}class node
}@override
public string tostring()
return super.tostring();
}}
public class lrulinhedlistextends linkedlist
public lrulinhedlist(int memorysize)
// lru 新增節點
public void lruadd(t data) else
}// 刪除節點
public t lrurmove()
public t lruget(int index)
t redata = node.data;
//訪問節點移開頭
pro.next = node.next;
node head = list;
node.next = head;
list = node;
return redata;
}public static void main(string args)
linkedlist.tostring();
system.out.println("" + linkedlist.lruget(4));
linkedlist.tostring();
linkedlist.lruadd(90+"");
linkedlist.tostring();
// linkedlist.lruget(23);
// linkedlist.tostring();
}}
什麼是304快取
我們知道,對於web頁面中的js和ccs,並不會每次都請求完整的內容,有時候會直接利用本地的快取 而對頁面本身,卻往往會去載入完整內容,對於伺服器來說可能每次也要生成完整的內容,並送到客戶端 同樣的,對於一些http介面,每次呼叫也會去 我們知道,對於web頁面中的js 和ccs 但有這樣一些頁面,...
什麼是快取擊穿?
快取擊穿 快取併發和快取雪崩是常見的由於併發量大而導致的快取問題,本節講解其產生原因和解決方案。快取擊穿通常是由惡意攻擊或者無意造成的 快取併發是由設計不足造成的 快取雪崩是由快取同時失效造成的,三種問題都比較典型,也是難以防範和解決的。本節給出通用的解決方案,以供在快取設計的過程中參考和使用。快取...
什麼是快取穿透 快取雪崩 快取擊穿
快取穿透是指查詢乙個一定不存在的資料時,由於在快取中沒有這個key,這時會到db中去查詢,可是db中也沒有這條資料,這時也無法寫入快取,這就造成了快取穿透,如果這時有人利用這個漏洞頻繁攻擊應用,db就可能掛掉了 解決方案 可以把key存入快取中,value設定為空,過期時間最多不超過5分鐘 快取雪崩...