在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    LRU簡單實現(xiàn)

    介紹

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

    編碼實現(xiàn)(高手繞行)

    了解LRU的應該都其低層實現(xiàn)的數(shù)據(jù)結構主要是是Map和鏈表,如下:

    package com.zte.sdn.oscp.xls.read;import lombok.Data;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class LRU {/**LRU存在數(shù)據(jù)容量**/ private int capacity = 5; /**主要用以快速判斷是否存在數(shù)據(jù)**/ private Map nodeMap = new ConcurrentHashMap(); private Node tail; private Node head; public LRU() { tail = new Node(); head = new Node(); tail.pre = head; head.nex = tail; tail.nex = null; head.pre = null; } public String getValue(String key) { String result = null; if (nodeMap.containsKey(key)) { Node node = nodeMap.get(key); result = node.value; //刷新位置(移動到頭) removeNode(node); addHead(node); } return result; } public void putValue(String key, String value) { if (nodeMap.containsKey(key)) { Node node = nodeMap.get(key); node.setValue(value); //刷新位置(移動到頭) removeNode(node); addHead(node); } else { Node node = new Node(); node.setValue(value); if (nodeMap.size() < capacity) { addHead(node); } else { removeNode(tail.pre); addHead(node); } nodeMap.put(key,node); } } private void addHead(Node node) { node.nex = head.nex; node.nex.pre = node; head.nex = node; node.pre = head; } private void removeNode(Node node) { node.pre.nex = node.nex; node.nex.pre = node.pre; } @Override public String toString() { StringBuffer output = new StringBuffer(); Node node = head.nex; while (node != null && node.nex != null) { output.append(node.value).append(","); node = node.nex; } return output.toString(); } @Data class Node { private String value; private Node pre; private Node nex; } public static void main(String[] args) { LRU lru = new LRU(); lru.putValue("1", "1"); lru.putValue("2", "2"); lru.putValue("3", "3"); lru.putValue("4", "4"); System.out.println("4:" + lru); lru.putValue("5", "5"); System.out.println("5:" + lru); lru.putValue("6", "6"); System.out.println("6:" + lru); lru.putValue("4", "44"); System.out.println("7:" + lru); String value = lru.getValue("2"); System.out.println("8:" + lru); }}

    LinkedHashMap實現(xiàn)

    JDK中提供了LinkedHashMap數(shù)據(jù)結構,LinkedHashMap底層就是用的HashMap加雙向鏈表實現(xiàn)的,而且本身已經(jīng)實現(xiàn)了按照訪問順序的存儲。此外,LinkedHashMap中本身就實現(xiàn)了一個方法removeEldestEntry用于判斷是否需要移除最不常讀取的數(shù),方法默認是直接返回false,不會移除元素,所以需要重寫該方法。即當緩存滿后就移除最不常用的數(shù)

    public class LRU { private static final float hashLoadFactory = 0.75f; private LinkedHashMap map; private int cacheSize; public LRU(int cacheSize) { this.cacheSize = cacheSize; int capacity = (int)Math.ceil(cacheSize / hashLoadFactory) + 1; map = new LinkedHashMap(capacity, hashLoadFactory, true){ private static final long serialVersionUID = 1; @Override protected boolean removeEldestEntry(Map.Entry eldest) { return size() > LRU.this.cacheSize; } }; } public synchronized V get(K key) { return map.get(key); } public synchronized void put(K key, V value) { map.put(key, value); } public synchronized void clear() { map.clear(); } public synchronized int usedSize() { return map.size(); } public void print() { for (Map.Entry entry : map.entrySet()) { System.out.print(entry.getValue() + “–“); } System.out.println(); }}

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月13日 15:19
    下一篇 2022年6月13日 15:19

    相關推薦

    • 《光遇》11月25日紅石在哪里 11.25紅石位置

      光遇11月25日的紅石出現(xiàn)在霞谷圓夢村,許多小伙伴都還不知道它具體在哪,下面就讓小編來給大家介紹一下光遇11.25紅石的位置,感興趣的小伙伴快來看看吧。 光遇11.25紅石位置 1…

      2022年11月25日
    • 《光遇》11月25日季節(jié)蠟燭在哪 11.25季節(jié)蠟燭位置2022

      光遇季節(jié)蠟燭的位置每天都會變化,今天出現(xiàn)在了雨林地區(qū),下面小編就給大家?guī)砹斯庥?1.25季節(jié)蠟燭位置分享,有需要的小伙伴不要錯過哦。 光遇11.25季節(jié)蠟燭位置2022 今日季節(jié)…

      2022年11月25日
    • 拼多多百億補貼預售一般多久發(fā)貨(拼多多百億補貼預售)

      拼多多里面有很多優(yōu)惠活動,其中百億補貼活動非常火爆,一些里面的東西價格比別的平臺便宜,質(zhì)量也有保障,還有預售的活動,那么拼多多百億補貼預售一般多久發(fā)貨?下面小編為大家?guī)砥炊喽喟賰|…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結算,可以是搜索,可以是注冊,可以是激活,可以是搜索下載激活,可以是綁卡,實名認證,可以是付費,可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 百度關鍵詞快速排名的4大原理解析(百度怎么刷關鍵詞)

      近期百度公告驚雷算法2.0,升級之快還是第一次吧,看來百度對于刷點擊行為是零容忍了。之前尹華峰SEO技術博客介紹過一篇如何使用刷點擊工具,其實市面上有很多這類SEO快速排名的軟件,…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點)

      如今抖音這個短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺上開通直播,更具有超強的帶貨屬性,已經(jīng)有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個人都能做好的,那么在…

      2022年11月24日
    • 《寶可夢朱紫》樁子是什么?二級神封印樁位置一覽

      寶可夢朱紫中有一種叫做二級神封印樁的特殊收集道具,很多玩家不知道寶可夢朱紫樁子是什么,下面就帶來寶可夢朱紫二級神封印樁位置一覽,感興趣的小伙伴不要錯過,希望能幫助到大家。 二級神封…

      2022年11月24日
    • 《寶可夢朱紫》太晶水地龍捕捉位置一覽 太晶水地龍在哪里捕捉

      近日在貼吧看到有許多玩家在寶可夢朱紫中遇到了《寶可夢朱紫》太晶水地龍捕捉位置一覽的問題,又不知道該怎么辦。今天在這里,小編為大家?guī)淼木褪沁@個問題的解方案,只要你跟著小編的節(jié)奏來,…

      2022年11月24日
    • Steam秋季特賣開啟 為Steam大獎提名游戲

      Steam秋季特賣開啟 為Steam大獎提名游戲 Steam秋季特賣活動現(xiàn)已正式開啟,時間從11月23日持續(xù)到11月30日(北京時間),新老游戲均有不錯的折扣,感興趣的玩家可以前往…

      2022年11月24日
    • 明查|美國新冠后遺癥患者中有16%癥狀嚴重以致無法工作?

      點擊進入澎湃新聞全球事實核查平臺 速覽 – 網(wǎng)傳數(shù)據(jù)比例無權威信源佐證,該比例有可能是結合了美國疾病防控中心和布魯金斯學會的數(shù)據(jù)得出,但這兩個機構的調(diào)研目的和樣本都不同…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息