同步操作将从 寻根/cppweb 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package stdx;import java.util.*;class CacheMap<KEY, VAL>{class Node implements Comparable<Node>{public KEY key;public VAL data;public int weight;public Node(KEY key, VAL data){this.key = key;this.data = data;this.weight = 0;}@Overridepublic int compareTo(Node node){return node.weight - weight;}}int maxsz = 10000;HashMap<KEY, Node> datamap = new HashMap<KEY, Node>();void check(){int maxlen = Math.min(datamap.size() / 8, 10000);PriorityQueue<Node> queue = new PriorityQueue<Node>();Iterator<Node> it = datamap.values().iterator();for (int i = 0; i < maxlen; i++) queue.add(it.next());while (it.hasNext()){Node node = it.next();Node head = queue.peek();if (node.weight >= head.weight){node.weight = 0;continue;}queue.poll();queue.add(node);head.weight = 0;}for (int i = 0; i < maxlen; i++) datamap.remove(queue.poll().key);}public CacheMap(){}public CacheMap(int maxsz){this.maxsz = Math.max(maxsz, 100);}public int size(){synchronized(datamap){return datamap.size();}}public void clear(){synchronized (datamap){datamap.clear();}}public VAL get(KEY key){synchronized(datamap){Node node = datamap.get(key);if (node == null) return null;node.weight++;return node.data;}}public boolean isEmpty(){synchronized(datamap){return datamap.isEmpty();}}public void remove(KEY key){synchronized(datamap){datamap.remove(key);}}public void put(KEY key, VAL data){synchronized(datamap){Node node = datamap.get(key);if (node == null){if (datamap.size() >= maxsz) check();node = new Node(key, data);datamap.put(key, node);}else{node.data = data;}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。