本文以jdk1.8中LinkedHashMap.afterNodeAccess()方法为切入点,分析其中难理解、有价值的源码片段(类似源码查看是ctrl+鼠标左键的过程)。观光线路图:afterNodeAccess() --> afterNodeInsertion() --> removeEldestEntry() --> afterNodeRemoval() --> internalWr...
...alue; if (!onlyIfAbsent || oldValue == null) {...} afterNodeAccess(e); // 回调方法,后续说明 return oldValue; } } ++modCount; if (++size > threshol...
...况,执行将旧值替换为新值 e.value = value; afterNodeAccess(e); return oldValue; } } ++modCount; if (++size > threshold) resize(); afterNodeInsertion(evict); return null; } 2...
...也需要额外维护下。 获取 获取的时候,同样,是重写了`afterNodeAccess`钩子,这样在HashMap的获取逻辑结束后,这里的逻辑会被执行,维护双向链表。 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;//返回旧值(被替代的值) } } //如果没有重复的关键字(将要插入一条新的数据) ++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; //判断是否扩容 ...
...IfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); //这个函数只在LinkedHashMap中用到, 这里是空函数 // 返回旧值 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; // 判断是否需要扩容 ...
...IfAbsent || oldValue == null) e.value = value; afterNodeAccess(e); return oldValue; } 添加元素的时候,如果key(也对应的Set集合的元素)相等,那么则修改value值。而在Set集合中,value值仅仅是一个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大模型应用,将AI大模型和算力需求的热度不断带上新的台阶。哪里可以获得...
大模型的训练用4090是不合适的,但推理(inference/serving)用4090不能说合适,...
图示为GPU性能排行榜,我们可以看到所有GPU的原始相关性能图表。同时根据训练、推理能力由高到低做了...