鸿蒙三方库 | harmony-utils之LRUCacheUtil LRU缓存策略详解
前言LRULeast Recently Used是一种常用的缓存淘汰策略当缓存满时自动淘汰最久未使用的数据。pura/harmony-utils的LRUCacheUtil封装了LRU缓存管理方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、LRUCacheUtil核心APILRUCacheUtil提供了以下LRU缓存管理方法方法说明返回类型使用场景put(key, value)写入缓存void数据缓存get(key)读取缓存Object缓存查询remove(key)删除缓存void缓存清理size()获取缓存数量number容量监控maxSize()获取最大容量number容量配置1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃自动淘汰缓存满时自动淘汰最久未使用的数据1.2 LRU淘汰策略说明操作影响说明put添加/更新新数据放在最前get访问提升访问后移到最前淘汰移除最后满时移除最久未用二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 使用LRU缓存import{LRUCacheUtil}frompura/harmony-utils;Button(写入LRU缓存).width(100%).onClick((){try{LRUCacheUtil.put(image_1,data_1);LRUCacheUtil.put(image_2,data_2);LRUCacheUtil.put(image_3,data_3);this.result写入3条缓存 ✅\n当前数量:${LRUCacheUtil.size()};}catch(e){this.result异常: e;}})2.3 读取LRU缓存Button(读取LRU缓存).width(100%).onClick((){try{letvalueLRUCacheUtil.get(image_1);this.resultvalue?缓存命中 ✅\n值:${value}:缓存未命中 ❌;}catch(e){this.result异常: e;}})三、完整页面示例import{LRUCacheUtil}frompura/harmony-utils;EntryComponentstruct LRUDemo{Stateresult:string;build(){Column({space:12}){Button(写入缓存).width(100%).onClick((){LRUCacheUtil.put(k1,v1);this.result数量:${LRUCacheUtil.size()}/${LRUCacheUtil.maxSize()};});Button(读取缓存).width(100%).onClick((){letvLRUCacheUtil.get(k1);this.result值:${v||未命中};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 图片缓存import{LRUCacheUtil}frompura/harmony-utils;classImageCache{staticput(url:string,pixelMap:PixelMap):void{LRUCacheUtil.put(img_url,pixelMap);}staticget(url:string):PixelMap|null{returnLRUCacheUtil.get(img_url)asPixelMap;}}4.2 数据预加载functionpreloadData(keys:string[]):void{keys.forEach(key{letdataloadDataFromDB(key);LRUCacheUtil.put(key,data);});}五、注意事项容量限制LRU缓存有最大容量限制超出自动淘汰内存缓存LRUCacheUtil为内存缓存应用退出后数据丢失访问顺序get操作会改变数据在LRU中的顺序初始化依赖使用前需确保AppUtil.init()已调用大对象避免缓存过大的对象防止内存溢出六、常见问题Q1: 缓存满了怎么办LRU策略会自动淘汰最久未使用的数据无需手动处理。Q2: 如何调整最大容量可以在初始化时配置最大容量具体方法参考库的配置说明。Q3: LRU和普通缓存有什么区别普通缓存需要手动管理淘汰LRU自动淘汰最久未使用的数据更适合图片等场景。Q4: get()会改变缓存顺序吗是的get()会将数据移到最前面表示最近使用。总结LRUCacheUtil的LRU缓存策略为图片缓存等场景提供了自动淘汰机制。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用LRU策略优化内存使用。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻

生 ChatGPT 成图片代码怎么用?结合 AI 导出鸭,解锁高效导出与格式转换实用技巧

生 ChatGPT 成图片代码怎么用?结合 AI 导出鸭,解锁高效导出与格式转换实用技巧

引言 当下不少开发者、创作者都会借助ChatGPT生成图片代码,完成代码编写后,内容导出、格式保存、二次编辑成为普遍难题。传统导出方式频发乱码、格式错乱、排版丢失等问题,而AI 导出鸭的出现,为这类场景提供了全新的解决思路。本文…

2026/7/23 20:36:36 阅读更多 →
分布式链路追踪系统之docker-compose安装skywalking

分布式链路追踪系统之docker-compose安装skywalking

分布式链路追踪系统之docker-compose安装skywalking 在微服务架构中,分布式链路追踪是排查性能瓶颈和错误定位的核心工具。SkyWalking 作为 Apache 基金会旗下的开源 APM 系统,以其轻量级、高性能和丰富的生态支持,成为众多团队的首选。本文将…

2026/7/23 20:36:36 阅读更多 →
21231221

21231221

11 1111

2026/7/23 20:36:36 阅读更多 →

最新新闻

高中数学必修第一册互动教程

高中数学必修第一册互动教程

高中数学必修第一册互动教程人教版 2019课标版 图文并茂 互动探索📖 简介 本教程是依托人教版《高中数学必修第一册》内容,专为高中学生设计的互动式在线学习资源。每章均配有生活类比讲解、可操作的数学动态演示、知识小结和即时反馈练习&#xff0c…

2026/7/23 20:44:39 阅读更多 →
HUAWEI防火墙HRP配置

HUAWEI防火墙HRP配置

ip-link check enableip-link name ct-internet-track //电信和联通防火墙均需侦测各自运营商IPdestination 运营商网关IP interface GigabitEthernet1/0/0 mode icmp next-hop 运营商网关IPhrp enablehrp interface Eth-Trunk1 remote 192.168.1.2 hrp mirror session enable …

2026/7/23 20:44:39 阅读更多 →
相机-雷达标定(一):最快验证-数据准备

相机-雷达标定(一):最快验证-数据准备

一、背景 相机与激光雷达的联合标定至少需要一组时间对齐、空间对齐的图像与点云数据。本文聚焦于数据采集环节,记录相机和雷达两路数据的采集流程。 采集总原则: 相机和雷达在整个采集过程中位置完全固定,不可移动、不可碰触、不可调整角…

2026/7/23 20:44:39 阅读更多 →
【截图工具】Pixpin截图时自带边框设置

【截图工具】Pixpin截图时自带边框设置

使用Pixpin截图粘贴到文档中时,有时候图片大部分是白色的,跟文档底色几乎融为一体,边界不明显,可以按照如下操作让图片自带边框 1、先随便截图 2、点击右侧第3个圆形图标 3、点击边框、选择颜色、设置强度(即边框的宽度…

2026/7/23 20:44:39 阅读更多 →
高效办公利器|OpenClaw (龙虾)Windows、Mac 全套环境自动部署+功能演示

高效办公利器|OpenClaw (龙虾)Windows、Mac 全套环境自动部署+功能演示

🔹 工具简述 OpenClaw 是当前开源领域备受瞩目的工具,凭借其本地离线运行、图形化操作界面以及全流程自动化等核心优势,吸引了广泛的用户群体。与常规的对话型 AI 产品不同,它是一款能够直接操控本机软硬件的智能数字员工。用户只…

2026/7/23 20:44:39 阅读更多 →
从Java到AI Agent:34岁程序员转型大模型开发踩坑实录+全套实战资料包(收藏备用)

从Java到AI Agent:34岁程序员转型大模型开发踩坑实录+全套实战资料包(收藏备用)

本文分享了作者从8年Java后端开发者成功转型AI Agent开发的心路历程和实战经验,揭示了"把Demo当产品"、“Agent工具堆砌"和"盲目学习"三大转型坑,并提出了"最小可用Agent先行”、"真实文档RAG实践"和"系统…

2026/7/23 20:43:39 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻