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

小程序怎么制作网站专业建站公司的业务内容

小程序怎么制作网站,专业建站公司的业务内容,app开发和网站开发一样么,wordpress html后缀LRU(Least Recently Used)算法的核心思想是:最近使用的数据将被保留,最久未使用的数据将被淘汰。这种策略适用于内存有限、但又需要高频访问的数据场景,比如缓存系统、页面置换算法等。mysql的缓冲池就是使用的LUR Inn…

LRU(Least Recently Used)算法的核心思想是:最近使用的数据将被保留,最久未使用的数据将被淘汰。这种策略适用于内存有限、但又需要高频访问的数据场景,比如缓存系统、页面置换算法等。

mysql的缓冲池就是使用的LUR

InnoDB缓冲池通过双向链表和哈希表实现LRU机制:

  • 双向链表按访问时间排序,最新访问的缓存页在头部,最久未使用的在尾部

  • 哈希表用于快速定位链表节点

代码实现

import java.util.HashMap;public class LRUCache<K, V> {// 链表节点对象private class Node {K key;V value;// 定义上下节点, prev=上一个节点, next=下一个节点Node prev, next;public Node(K key, V value) {this.key = key;this.value = value;}}private final int capacity;private final HashMap<K, Node> cache;// 定义头部节点和尾部节点, 这两个节点都不存储数据, 只做头尾指向使用private Node head, tail;public LRUCache(int capacity) {this.capacity = capacity;this.cache = new HashMap<>((int) ((capacity / 0.75) + 1));this.head = new Node(null, null);this.tail = new Node(null, null);this.head.next = this.tail;this.tail.prev = this.head;}public V get(K key) {Node node = this.cache.get(key);if (node == null) {return null;}// 将当前节点移动到头部节点this.moveToHead(node);return node.value;}public void put(K key, V value) {Node node = this.cache.get(key);if (node == null) {Node newNode = new Node(key, value);// 添加到头部节点, 新节点一定要使用添加, 不能使用移动, 因为新节点的上下节点指向还未赋值this.addToHead(newNode);this.cache.put(key, newNode);if (this.cache.size() > capacity) {// 移除尾部节点Node tailNode = this.removeTail();this.cache.remove(tailNode.key);}} else {node.value = value;// 移动到头部节点this.moveToHead(node);}}// 移动当前节点到头部节点private void moveToHead(Node node) {// 先移除当前节点, 保证原来链表的上下完整性this.removeNode(node);// 将当前节点添加到头部节点this.addToHead(node);}// 添加头部节点private void addToHead(Node node) {// 假设原来的链表结构: head <-> A, null <-> B <-> null, 其中B是当前节点// 现在的链表结构: head <-> B <-> A// 第一步, 修改B的上一个指向和下一个指向// 第二步, 修改head的下一个指向, 修改A的上一个指向node.prev = this.head;node.next = this.head.next;this.head.next.prev = node;this.head.next = node;}// 移除当前节点private void removeNode(Node node) {// 将[当前节点]的[上一个节点]的[下一个节点]指向[当前节点]的[下一个节点]// 将[当前节点]的[下一个节点]的[上一个节点]指向[当前节点]的[上一个节点]// 假设原来的链表结构: A <-> B <-> C, 其中B是当前节点// 原来的链表结构: A <-> B <-> C// 现在的链表结构: A <-> C, 这里做了两步, 修改A的下一个指向, 修改C的上一个指向node.prev.next = node.next;node.next.prev = node.prev;}// 移除尾部节点private Node removeTail() {// 获取最后一个节点Node node = this.tail.prev;// 移除当前节点this.removeNode(node);return node;}}
http://www.dtcms.com/a/451175.html

相关文章:

  • 杭州住房和城乡建设部网站佛山新网站制作公司
  • 照片书哪个网站做的好wordpress 模版定制
  • 个人网站图片加载慢出售全国精准客户电话号码
  • 哪个老师设计的数字化转型培训方案更专业
  • 广州网站优化软件周末游做的好的网站
  • phpcms wap网站搭建网站建设 外文文献
  • Linux - 进程 #概念 #操作 #进程状态 #进程优先级 #进程切换 #竞争、独立、并行、并发
  • 沈阳企业自助建站齐齐哈尔建设局网站
  • 美颜秘籍网站建设网站建设公司广告词
  • 太仓市住房和城乡建设局规网站高端网站设计地址
  • 网站模版更新公告北京南站核酸检测地点
  • 网站建设业务提成哪里购买网站空间好
  • 行业网站开发程序洛阳市新区建设投资有限公司网站
  • 温州网站优化排名十档行情免费网站
  • 济南建网站最好的智能手机网站开发
  • 网站定制公司哪家好暴雪被谁收购了
  • wordpress开放多站点办网站租服务器
  • GESP2025年9月认证C++二级( 第三部分编程题(1)优美的数字)
  • 永兴县网站建设蒙牛网站是谁做的
  • react学习——react-redux
  • 国内ui设计公司seo入门视频
  • 提供网站建设工具的品牌江安网站建设
  • 建筑设计找工作的网站上海装修公司排名有哪些
  • 正定seo绍兴seo计费
  • 面试经典150题[046]:存在重复元素 II(LeetCode 219)
  • dede网站如何换logo网站开发需要哪些证书
  • 静态企业网站模板下载网上书店网站建设毕业设计
  • 网站推广策划书 精品中信建设有限责任公司客户
  • cv领域接地气的方向
  • 快速网站开发介绍浙江建设网查询