企业网站Wap在线生成建筑工程网下载

张小明 2026/1/2 15:51:30
企业网站Wap在线生成,建筑工程网下载,wordpress首页模板是哪个文件夹,免费建站网站哪个好对前端开发者而言#xff0c;学习算法绝非为了“炫技”。它是你从“页面构建者”迈向“复杂系统设计者”的关键阶梯。它将你的编码能力从“实现功能”提升到“设计优雅、高效解决方案”的层面。从现在开始#xff0c;每天投入一小段时间#xff0c;结合前端场景去理解和练习…对前端开发者而言学习算法绝非为了“炫技”。它是你从“页面构建者”迈向“复杂系统设计者”的关键阶梯。它将你的编码能力从“实现功能”提升到“设计优雅、高效解决方案”的层面。从现在开始每天投入一小段时间结合前端场景去理解和练习你将会感受到自身技术视野和问题解决能力的质的飞跃。------ 算法资深前端开发者的进阶引擎LeetCode 146. LRU 缓存机制1. 题目描述1.1 问题要求设计一个LRU最近最少使用缓存机制实现以下两个操作get(key)如果密钥key存在于缓存中则返回密钥的值否则返回-1put(key, value)如果密钥不存在则写入数据当缓存容量达到上限时删除最久未使用的数据1.2 注意事项所有操作get和put必须在O(1)时间复杂度内完成当缓存达到容量上限时put操作需要淘汰最久未使用的数据即使只是查询 (get) 数据该数据也会变为最近使用的数据2. 问题分析2.1 核心需求分析LRU缓存的核心需求是快速访问 快速淘汰。这意味着我们需要快速查找通过key快速找到对应值哈希表的特性快速删除和插入能够快速将某个元素移到最近使用位置或在容量满时删除最久未使用的元素链表的特性维护访问顺序记录每个key的访问时间顺序2.2 前端视角的理解在前端开发中LRU缓存的应用非常广泛浏览器缓存机制Vue/React的keep-alive组件图片/资源缓存策略API响应缓存3. 解题思路3.1 可行思路分析3.1.1 思路一数组/对象 时间戳不可行使用对象存储键值对记录每个key的最后访问时间每次操作时更新时间戳淘汰时遍历查找最旧的时间缺点淘汰时需要O(n)遍历不满足O(1)要求3.1.2 思路二Map的天然特性ES6 MapMap按照插入顺序维护键值对最后插入的在最后每次访问时先删除再重新插入可以维护顺序复杂度O(1)时间完成所有操作3.1.3 思路三哈希表 双向链表经典解法哈希表提供O(1)的查找双向链表提供O(1)的删除和插入维护访问顺序头节点表示最近访问尾节点表示最久未访问3.2 最优解选择思路三哈希表双向链表是最经典的LRU实现方案虽然ES6的Map也可以实现但了解底层原理对理解缓存机制更有帮助。4. 各思路代码实现4.1 思路二ES6 Map实现classLRUCache{constructor(capacity){this.capacitycapacity;this.cachenewMap();// Map天然保持插入顺序}get(key){if(!this.cache.has(key))return-1;// 获取值constvaluethis.cache.get(key);// 删除后重新插入保证在Map最后最近使用this.cache.delete(key);this.cache.set(key,value);returnvalue;}put(key,value){// 如果key已存在先删除if(this.cache.has(key)){this.cache.delete(key);}// 如果容量已满删除第一个最久未使用elseif(this.cache.sizethis.capacity){constfirstKeythis.cache.keys().next().value;this.cache.delete(firstKey);}// 插入新值this.cache.set(key,value);}}4.2 思路三哈希表 双向链表实现// 双向链表节点classListNode{constructor(key,value){this.keykey;this.valuevalue;this.prevnull;this.nextnull;}}classLRUCache{constructor(capacity){this.capacitycapacity;this.cachenewMap();// 哈希表key - 链表节点this.size0;// 创建虚拟头尾节点简化边界判断this.headnewListNode(0,0);// 最近使用this.tailnewListNode(0,0);// 最久未使用this.head.nextthis.tail;this.tail.prevthis.head;}// 获取节点get(key){if(!this.cache.has(key))return-1;constnodethis.cache.get(key);// 移动到链表头部表示最近使用this.moveToHead(node);returnnode.value;}// 插入节点put(key,value){if(this.cache.has(key)){// 更新已存在的节点constnodethis.cache.get(key);node.valuevalue;this.moveToHead(node);}else{// 创建新节点constnewNodenewListNode(key,value);this.cache.set(key,newNode);this.addToHead(newNode);this.size;// 如果超过容量删除尾部节点if(this.sizethis.capacity){consttailNodethis.removeTail();this.cache.delete(tailNode.key);this.size--;}}}// 将节点移动到头部最近使用moveToHead(node){this.removeNode(node);this.addToHead(node);}// 从链表中删除节点removeNode(node){node.prev.nextnode.next;node.next.prevnode.prev;}// 在头部添加节点addToHead(node){node.prevthis.head;node.nextthis.head.next;this.head.next.prevnode;this.head.nextnode;}// 删除尾部节点最久未使用removeTail(){consttailNodethis.tail.prev;this.removeNode(tailNode);returntailNode;}}5. 各实现思路的复杂度、优缺点对比表格实现方案时间复杂度空间复杂度优点缺点适用场景ES6 Map实现get: O(1)put: O(1)O(capacity)1. 代码简洁易于理解2. 利用语言特性3. 开发效率高1. 隐藏了底层原理2. Map内部实现不透明实际项目开发、快速原型哈希表双向链表get: O(1)put: O(1)O(capacity)1. 展示完整缓存机制原理2. 面试中展现扎实基础3. 可控性更强1. 代码相对复杂2. 需要手动维护链表面试场景、学习缓存原理、需要定制化场景6. 总结6.1 技术要点总结LRU核心思想最近使用的数据在未来更可能被使用应该保留数据结构选择哈希表提供快速查找链表维护使用顺序边界处理使用虚拟头尾节点可显著简化代码逻辑时间复杂度保证所有操作必须为O(1)这是LRU缓存设计的核心要求6.2 前端实际应用场景6.2.1 浏览器缓存浏览器对静态资源JS、CSS、图片的缓存采用类似LRU的策略HTTP缓存头Cache-Control控制缓存行为6.2.2 Vue Keep-Alive组件template keep-alive :max10 !-- 最多缓存10个组件实例 -- component :iscurrentComponent/component /keep-alive /templateVue的keep-alive内部实现就使用了LRU缓存策略当超过最大缓存数量时自动销毁最久未使用的组件实例。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站带后台多少钱校园网站建设需要什么

10个降AI率工具,专科生必备的高效降重方案 AI降重工具:让论文更自然,让查重更轻松 随着人工智能技术的不断发展,越来越多的专科生在撰写论文时开始借助AI工具来提升效率。然而,随之而来的AIGC率过高、AI痕迹明显等问题…

张小明 2025/12/31 4:49:40 网站建设

网站互动做公众号微网站

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/1 19:12:15 网站建设

化妆品网站开发可行性小程序的类型有哪些

把微调后的NeMo模型(尤其是LoRA微调的Llama 3.1 8B Instruct)转换成Triton推理服务器能直接使用的格式。 把这个过程拆解为环境准备、模型转换(NeMo→TRT-LLM)、Triton模型仓库构建三个核心步骤,给出逐行可执行的操作和…

张小明 2026/1/2 5:28:27 网站建设

怎么用网站做淘宝客永康建设网站

Java 大视界 -- 基于 Java 的大数据可视化在城市公共安全风险评估与预警中的应用引言:正文:一、Java 构建的城市安全数据融合架构1.1 多源异构数据实时处理1.2 时空关联与历史趋势分析二、Java 驱动的风险可视化与预警模型2.1 多维度可视化呈现2.2 预警规…

张小明 2025/12/30 22:51:13 网站建设

做网站图片表情企业形象设计课程标准

目录硬件配置学习知识点网络拓扑图配置步骤相关查看命令硬件配置:S5820交换机2台; PC客户端3台,连接两个不同的VLNA(需要4台实现),现要求两个不同的局域网通过链路聚合的功能在两台交换机上通讯。学习知识点:链路聚合&…

张小明 2025/12/31 1:41:54 网站建设

seo 网站推广江门有什么网站推广

本文针对序列串行发生需求,以00011000为例,基于 74 系列中规模芯片,在 Multisim 中实现两种可直接使用的序列发生器方案:移位寄存器型、计数器 数据选择器型,均可以稳定输出目标串行序列。一、设计原理:序…

张小明 2025/12/31 1:41:52 网站建设