日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java實現簡單LRU緩存機制的方法

瀏覽:228日期:2022-09-01 08:59:26

一、什么是 LRU 算法

就是一種緩存淘汰策略。

計算機的緩存容量有限,如果緩存滿了就要刪除一些內容,給新內容騰位置。但問題是,刪除哪些內容呢?我們肯定希望刪掉哪些沒什么用的緩存,而把有用的數據繼續留在緩存里,方便之后繼續使用。

LRU是Least Recently Used的縮寫,即最近最少使用,是一種常用的頁面置換算法,選擇最近最久未使用的頁面予以淘汰。

二、LRU的使用

LRUCache cache = new LRUCache( 2 /* 緩存容量 */ ); cache.put(1, 1); cache.put(2, 2); cache.get(1); // 返回 1 cache.put(3, 3); // 該操作會使得密鑰 2 作廢

第一步:創建一個長度為2的LRUCache

Java實現簡單LRU緩存機制的方法

第二步:cache.put(1, 1);放入key=1,value=1的數據

Java實現簡單LRU緩存機制的方法

第三步:cache.put(2,2);放入key = 2,value = 2的數據(因為2剛使用,所有把2移動到前面)

Java實現簡單LRU緩存機制的方法

第四步:cache.get(1);獲取key = 1的數據(因為我們剛使用了1,所以把1移動到前面)

Java實現簡單LRU緩存機制的方法

第五步:cache.put(3,3);放入key = 3,value = 3的數據(因為3剛放進,所以放前面,又因為容量只有2,需要移除原先的1個。只因key = 2是最近最少使用的(key = 1剛get()過),所以移除2。

Java實現簡單LRU緩存機制的方法

三、LRU的實現機制

算法:

LRU 緩存機制可以通過哈希表輔以雙向鏈表實現,我們用一個哈希表和一個雙向鏈表維護所有在緩存中的鍵值對。

1)雙向鏈表按照被使用的順序存儲了這些鍵值對,靠近頭部的鍵值對是最近使用的,而靠近尾部的鍵值對是最久未使用的。

2)哈希表即為普通的哈希映射(HashMap),通過緩存數據的鍵映射到其在雙向鏈表中的位置。

一、初始化:

Java實現簡單LRU緩存機制的方法

二、cache.put(1,1):

Java實現簡單LRU緩存機制的方法

三、cache.put(2,2):

Java實現簡單LRU緩存機制的方法

四、cache.get(1):

Java實現簡單LRU緩存機制的方法

五、cache.put(3,3):

Java實現簡單LRU緩存機制的方法

四、代碼如下

import java.io.*;import java.util.HashMap;public class test { public static void main(String args[]) throws IOException { LRUCache cache = new LRUCache( 2 /* 緩存容量 */ ); cache.put(1, 1); cache.put(2, 2); cache.get(1); // 返回 1 cache.put(3, 3); // 該操作會使得密鑰 2 作廢 cache.get(2); // 返回 -1 (未找到) cache.put(4, 4); // 該操作會使得密鑰 1 作廢 cache.get(1); // 返回 -1 (未找到) cache.get(3); // 返回 3 cache.get(4); // 返回 4 }}/** * 設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作: 獲取數據 get 和 寫入數據 put */class LRUCache { private HashMap<Integer,LinkedNode> cache = new HashMap();//方便通過key快速定位結點 private int size; private int capacity; private LinkedNode head,tail; class LinkedNode{ int key; int value; LinkedNode pre; LinkedNode next; } public LRUCache(int capacity) { this.size = 0; this.capacity = capacity; head = new LinkedNode(); tail = new LinkedNode(); head.next = tail; tail.pre = head; } /** * 移除節點 * @param node */ private void removeNode(LinkedNode node) { LinkedNode preNode = node.pre; LinkedNode nextNode = node.next; preNode.next = nextNode; nextNode.pre = preNode; } /** * 添加節點到頭部 * @param node */ private void addNode(LinkedNode node) { node.pre = head; node.next = head.next; head.next.pre = node; head.next = node; } /** * 將節點移動到頭部 * @param node */ private void moveToHead(LinkedNode node) { removeNode(node); addNode(node); } /** * 獲取數據 * @param key * @return */ public int get(int key) { LinkedNode node = cache.get(key); if(node != null) { moveToHead(node); }else{ return -1; } return node.value; } /** * 寫入數據 * @param key * @param value */ public void put(int key, int value) { LinkedNode node = cache.get(key); //存在 if(node != null) { node.value = value;//可能更新數據 moveToHead(node); } //不存在 else{ LinkedNode newNode = new LinkedNode(); newNode.key = key; newNode.value = value; cache.put(key,newNode);//更新Map addNode(newNode);//添加結點到頭部 size++;//更新結點數 if(size > capacity) {//如果結點數超過容量大小LinkedNode tailPre = tail.pre;cache.remove(tailPre.key);//更新MapremoveNode(tailPre);//刪除最后一個結點(尾結點的前一個結點)size--; } } }}

總結:自己實現的簡單LRU總歸太簡單了,要是想完善或者實現更真實的LRU,不妨參考一下Redis中的LRU。(◔◡◔)

到此這篇關于Java實現簡單LRU緩存機制的方法的文章就介紹到這了,更多相關Java LRU緩存內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频亚洲| 蜜桃精品在线| 亚洲精品一二三区区别| 久久国产主播| 久久免费大视频| 91精品高清| 丝袜美腿亚洲一区二区图片| 视频国产精品| 国产精品久久久免费| 国产aⅴ精品一区二区四区| 国产白浆在线免费观看| 日本精品在线中文字幕| 免费观看久久av| 免费一区二区视频| 日韩和欧美一区二区| 欧美激情亚洲| 日韩一区欧美| 最新亚洲激情| 日韩一区二区三免费高清在线观看 | 日本欧洲一区二区| 日韩精品三级| 麻豆一区二区99久久久久| 特黄毛片在线观看| 国产亚洲毛片在线| 天堂av一区| 精品中国亚洲| 三级小说欧洲区亚洲区| 亚洲一区二区三区四区五区午夜| 婷婷综合国产| 精品五月天堂| 在线一区电影| 老司机精品久久| 国产精品高清一区二区| 久久激情中文| 欧美综合精品| 精品成人免费一区二区在线播放| 久久亚洲色图| 精品午夜视频| 久久国产精品99国产| 国产精品久久| 久久精品av| 三级久久三级久久久| 国产精品yjizz视频网| 亚洲尤物在线| 精品日本视频| 在线观看视频免费一区二区三区| 久久中文欧美| 99视频一区| 国产精品xxx| 欧美日韩中文一区二区| 日本成人在线一区| 麻豆精品蜜桃| 国产精品一区二区三区www| 99精品综合| 国产欧美日韩在线观看视频| 99热精品久久| 欧美一区二区三区久久| 久久中文字幕av| 国产欧美日韩一级| 国产亚洲福利| 精品成人18| 日韩国产成人精品| 欧美日韩国产高清电影| 精品视频自拍| 日本中文字幕不卡| 91精品一区二区三区综合| 日本不卡视频在线观看| 久久九九99| 国产精品一区二区精品视频观看| 亚洲精品一区二区妖精| 国语精品一区| 综合欧美精品| 午夜影院欧美| 97se综合| 另类小说一区二区三区| 色狠狠一区二区三区| 久久精品高清| 97精品国产| 国产精品中文字幕制服诱惑| 老司机精品久久| 久久久水蜜桃av免费网站| 欧美激情视频一区二区三区免费 | 亚洲精品一区二区妖精| 精品72久久久久中文字幕| 自拍自偷一区二区三区| 99久久久国产精品美女| 高清一区二区三区| 欧美日韩一区二区三区四区在线观看| 91成人超碰| 女生影院久久| 精品国产成人| 国产精品一区三区在线观看| 午夜性色一区二区三区免费视频| 欧美日韩国产传媒| 久久九九精品| 国产+成+人+亚洲欧洲在线| 国产精品亚洲产品| 免费人成在线不卡| 亚洲欧洲一区| 欧美一区三区| 91精品国产成人观看| 电影天堂国产精品| 国产剧情一区| 国产免费av国片精品草莓男男| 日韩欧美久久| 日韩在线视频一区二区三区| 免费观看在线综合| 亚洲免费影院| 国产午夜精品一区二区三区欧美| 久久国产影院| 国产99久久| 欧美亚洲国产精品久久| 精精国产xxxx视频在线野外| 国产福利片在线观看| 高清久久精品| 日韩伦理福利| 99精品视频精品精品视频| 91精品精品| 激情综合网站| 一区二区视频欧美| 五月天久久777| 国产精品美女久久久浪潮软件| 国产亚洲精品久久久久婷婷瑜伽| 奶水喷射视频一区| 亚洲另类av| 日韩一区二区三区精品视频第3页| 日韩欧美2区| 日韩高清成人在线| 国产视频一区二| 精品国产一级| 日韩欧美精品| 欧美手机在线| 久久亚洲精品伦理| 日韩精品三级| 麻豆高清免费国产一区| 麻豆网站免费在线观看| 亚洲高清av| 亚洲一区激情| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲一区激情| 中文字幕一区日韩精品| 日韩在线观看一区二区三区| 国产三级一区| 久久亚州av| 久久精品在线| 中文字幕一区二区精品区| 国产精品红桃| 久久狠狠婷婷| 亚洲美女久久| 精品中国亚洲| 国产精品99免费看| 四虎在线精品| 欧美国产中文高清| 999久久久91| 日韩综合一区二区| 丰满少妇一区| 在线一区免费| 国产亚洲欧美日韩精品一区二区三区| 麻豆91精品视频| 国产一区二区三区自拍| 亚洲字幕久久| 精品国产精品国产偷麻豆 | 噜噜噜躁狠狠躁狠狠精品视频| 日韩不卡一二三区| 激情综合婷婷| 激情综合自拍| 日本久久二区| 日韩精品91| 在线看片日韩| 国产精品二区不卡| 亚洲一区免费| 美女av一区| 国产亚洲亚洲| 精品亚洲成人| 一本一本久久| 麻豆国产精品| 亚洲一区欧美激情| 精品三级在线观看视频| 在线综合视频| 成人在线视频免费看| 在线国产一区| 麻豆91在线播放| 亚洲综合精品四区| 国内一区二区三区| 色综合视频一区二区三区日韩 | 婷婷激情图片久久| 国产日韩三级| 91久久久精品国产| 国产福利亚洲| 在线午夜精品| 精品九九久久| 亚洲毛片视频| 99久久99久久精品国产片果冰| 久久国产精品色av免费看| 久久久久国产| 久久精品国产网站| 日韩精品一区二区三区av| 久久婷婷av| 美女久久精品| 亚洲久久在线|