当前位置: 首页 > news >正文

我想做网站怎么做昆山网站开发项目私活

我想做网站怎么做昆山,网站开发项目私活,向国旗敬礼做美德少年网站,wordpress zhong思路#xff1a; 首先要了解LRU缓存的原理#xff0c;首先定下容量#xff0c;每次get请求和put请求都会把当前元素放最前/后面#xff0c;如果超过容量那么头部/尾部元素就被移除#xff0c;所以最近最少使用的元素会被优先移除#xff0c;保证热点数据持续存在。 不管放… 思路 首先要了解LRU缓存的原理首先定下容量每次get请求和put请求都会把当前元素放最前/后面如果超过容量那么头部/尾部元素就被移除所以最近最少使用的元素会被优先移除保证热点数据持续存在。 不管放在头部还是尾部都可以。看你怎么定义 那么如何实现呢有两种方式第一种直接继承LinkedHashMap 这个是已经帮我们实现的代码如下 class LRUCache extends LinkedHashMapInteger, Integer{private int capacity;public LRUCache(int capacity) {super(capacity, 0.75F, true);this.capacity capacity;}public int get(int key) {return super.getOrDefault(key, -1);}// 这个可不写public void put(int key, int value) {super.put(key, value);}Overrideprotected boolean removeEldestEntry(Map.EntryInteger, Integer eldest) {return size() capacity; } } 第二种就是手动去实现了代码如下 class LRUCache extends AbstractLRUCacheInteger, Integer {public LRUCache(int capacity) {super(capacity);}public int get(int key) {Integer ans super.get(key);return ans null ? -1 : ans;}public void put(int key, int value) {super.set(key, value);} }abstract class AbstractLRUCacheK, V {private MapK, NodeK, V keyNodeMap;private NodeDoubleLinkedListK, V nodeList;private final int capacity;public AbstractLRUCache(int cap) {if (cap 1) {throw new RuntimeException(should be more than 0);}keyNodeMap new HashMap();nodeList new NodeDoubleLinkedList();capacity cap;}public V get(K key) {if (keyNodeMap.containsKey(key)) {NodeK, V res keyNodeMap.get(key);nodeList.moveNodeToTail(res);return res.value;}return null;}public void set(K key, V value) {if (keyNodeMap.containsKey(key)) {NodeK, V node keyNodeMap.get(key);node.value value;nodeList.moveNodeToTail(node);} else {NodeK, V newNode new Node(key, value);keyNodeMap.put(key, newNode);nodeList.addNode(newNode);if (keyNodeMap.size() capacity 1) {removeMostUnusedCache();}}}private void removeMostUnusedCache() {NodeK, V node nodeList.removeHead();keyNodeMap.remove(node.key);}class NodeK, V {public K key;public V value;public NodeK, V last;public NodeK, V next;public Node(K key, V value) {this.key key;this.value value;}}class NodeDoubleLinkedListK, V {private NodeK, V head;private NodeK, V tail;public NodeDoubleLinkedList() {head null;tail null;}public void addNode(NodeK, V newNode) {if (newNode null) {return;}if (head null) {head newNode;tail newNode;} else {tail.next newNode;newNode.last tail;tail newNode;}}public void moveNodeToTail(NodeK, V node) {if (this.tail node) {return;}if (this.head node) {this.head node.next;this.head.last null;} else {node.last.next node.next;node.next.last node.last;}node.last this.tail;node.next null;this.tail.next node;this.tail node;}public NodeK, V removeHead() {if (this.head null) {return null;}NodeK, V res this.head;if (this.head this.tail) {this.head null;this.tail null;} else {this.head res.next;res.next null;this.head.last null;}return res;}} } 以下是代码实现的功能要点 AbstractLRUCache 是一个抽象类它包含了 LRU 缓存的核心逻辑如添加节点、移动节点到链表尾部、移除最少使用的节点等。 LRUCache 是 AbstractLRUCache 的具体实现它提供了 get 和 put 方法来与缓存进行交互。这些方法调用了抽象类中的方法来实现 LRU 逻辑。 Node 类代表缓存中的一个条目包含键、值以及指向前一个和后一个节点的指针。 NodeDoubleLinkedList 是一个双向链表用于按照访问顺序维护缓存中的节点。最近访问的节点被移动到链表的尾部而最少使用的节点位于链表的头部。 当缓存达到其容量限制时最少使用的节点链表头部的节点将被移除以确保缓存大小不超过设定的容量。
http://www.hkea.cn/news/14300852/

相关文章:

  • 公司理念网站中山移动网站建设怎么做
  • 广州做网站一般要多少钱?小程序搭建赚钱吗
  • vue 实现网站开发网站流量利用
  • 自助网站建设哪家优惠wix怎么做网站教程
  • 南昌网站建设和推广wordpress 点击按钮没反应
  • 简单网页制作成品和代码seo搜索引擎优化什么意思
  • 中山网站建设电话php 开源 建站
  • 无锡网站建设唯唯网络医院网站
  • 房产网站建设方案论文官方网站开发与定制
  • 国外有名的设计网站公司名称大全集最新3个字
  • 培训行业网站建设的重要性已有网站 需要整改 怎么做
  • 安阳网站建设方案可信网站是什么
  • 网站集约建设报告河南省建筑一体化平台
  • 如何做公司网站百度推广郑州网站制作价格
  • 贵阳市住房城乡建设局官方网站信阳市网站建设公司
  • 山东seo网站微信里的小程序怎么打不开
  • 做网页赚钱的网站聊天网站建设
  • 一级a做爰片就在线看网站买服务器做网站 镜像选什么
  • 建设推广网站北京市建筑信息公开平台
  • 辽宁网站建设价格新闻发布的网站
  • 阿里手机网站开发框架个人开发app可以上架吗
  • 网站背景音乐怎么做wordpress主题慢
  • 深圳外包企业网站用wordpress搭建博客
  • 网站路径优化法律门户网站源码
  • 网站建设创业计划书wordpress 公告栏
  • 网站弹出窗口js弄一个app大概多少钱
  • 学习做网站教程中国纵横168网站建设系统
  • 企业网站推广方式和策略wordpress文章页面微信分享代码
  • 做视频网站每部电影都要版权不同端口装 wordpress
  • 模板做的网站如何下载地址网站为什么会被挂马