本文以jdk1.8中LinkedHashMap.afterNodeAccess()方法為切入點(diǎn),分析其中難理解、有價(jià)值的源碼片段(類似源碼查看是ctrl+鼠標(biāo)左鍵的過(guò)程)。觀光線路圖:afterNodeAccess() --> afterNodeInsertion() --> removeEldestEntry() --> afterNodeRemoval() --> internalWr...
...alue; if (!onlyIfAbsent || oldValue == null) {...} afterNodeAccess(e); // 回調(diào)方法,后續(xù)說(shuō)明 return oldValue; } } ++modCount; if (++size > threshol...
...況,執(zhí)行將舊值替換為新值 e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > threshold) resize(); afterNodeInsertion(evict); return null; } 2...
...也需要額外維護(hù)下。 獲取 獲取的時(shí)候,同樣,是重寫了`afterNodeAccess`鉤子,這樣在HashMap的獲取邏輯結(jié)束后,這里的邏輯會(huì)被執(zhí)行,維護(hù)雙向鏈表。 void afterNodeAccess(Node e) { // move node to last LinkedHashMap.Entry last; if (accessOrder && ...
...。觀光線路圖:compute() --> BiFunction --> @FunctionalInterface --> afterNodeAccess() --> computeIfAbsent() --> computeIfPresent()... ? compute() @Override public V compute(K key, BiFunct...
... == null) e.value = value;//新值替代舊值 afterNodeAccess(e); return oldValue;//返回舊值(被替代的值) } } //如果沒(méi)有重復(fù)的關(guān)鍵字(將要插入一條新的數(shù)據(jù)) ++modCount; if (++si...
... || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > thre...
... || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; //判斷是否擴(kuò)容 ...
...IfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); //這個(gè)函數(shù)只在LinkedHashMap中用到, 這里是空函數(shù) // 返回舊值 return oldValue; } } ...
... || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > thre...
...IfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > threshold) resiz...
... || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; // 判斷是否需要擴(kuò)容 ...
...IfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } 添加元素的時(shí)候,如果key(也對(duì)應(yīng)的Set集合的元素)相等,那么則修改value值。而在Set集合中,value值僅僅是一個(gè)Ob...
... if (!onlyIfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > threshold) resize(); afterNodeInse...
...l){ e.value = value; } afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > thre...
ChatGPT和Sora等AI大模型應(yīng)用,將AI大模型和算力需求的熱度不斷帶上新的臺(tái)階。哪里可以獲得...
大模型的訓(xùn)練用4090是不合適的,但推理(inference/serving)用4090不能說(shuō)合適,...
圖示為GPU性能排行榜,我們可以看到所有GPU的原始相關(guān)性能圖表。同時(shí)根據(jù)訓(xùn)練、推理能力由高到低做了...