鴻蒙NEXT開發LRUCache緩存工具類(單例模式)(ArkTs)

import { util } from '@kit.ArkTS';/*** LRUCache緩存工具類(單例模式)* @author 鴻蒙布道師* @since 2025/04/21*/
export class LRUCacheUtil {private static instance: LRUCacheUtil;private lruCache: util.LRUCache<string, any>;/*** 私有構造函數,防止外部實例化*/private constructor() {this.lruCache = new util.LRUCache(64); // 默認容量為64}/*** 獲取LRUCacheUtil的單例* @returns LRUCacheUtil 單例對象*/public static getInstance(): LRUCacheUtil {if (!LRUCacheUtil.instance) {LRUCacheUtil.instance = new LRUCacheUtil();}return LRUCacheUtil.instance;}/*** 判斷是否包含指定key的緩存* @param key 緩存鍵* @returns 是否存在該key*/public has(key: string): boolean {return this.lruCache.contains(key);}/*** 獲取指定key的緩存值* @param key 緩存鍵* @returns 緩存值,若不存在則返回undefined*/public get<T = any>(key: string): T | undefined {return this.lruCache.get(key) as T;}/*** 添加或更新緩存* @param key 緩存鍵* @param value 緩存值*/public put(key: string, value: any): void {this.lruCache.put(key, value);}/*** 刪除指定key的緩存* @param key 緩存鍵*/public remove(key: string): void {this.lruCache.remove(key);}/*** 判斷緩存是否為空* @returns 是否為空*/public isEmpty(): boolean {return this.lruCache.isEmpty();}/*** 獲取當前緩存的容量* @returns 當前容量*/public getCapacity(): number {return this.lruCache.getCapacity();}/*** 更新緩存的容量* @param newCapacity 新的容量*/public updateCapacity(newCapacity: number): void {if (newCapacity <= 0) {throw new Error("Capacity must be greater than 0.");}this.lruCache.updateCapacity(newCapacity);}/*** 清空緩存并重置容量為默認值*/public clear(): void {this.lruCache.clear();this.lruCache.updateCapacity(64); // 重置為默認容量}
}
代碼如下:
import { util } from '@kit.ArkTS';/*** LRUCache緩存工具類(單例模式)* @author 鴻蒙布道師* @since 2025/04/21*/
export class LRUCacheUtil {private static instance: LRUCacheUtil;private lruCache: util.LRUCache<string, any>;/*** 私有構造函數,防止外部實例化*/private constructor() {this.lruCache = new util.LRUCache(64); // 默認容量為64}/*** 獲取LRUCacheUtil的單例* @returns LRUCacheUtil 單例對象*/public static getInstance(): LRUCacheUtil {if (!LRUCacheUtil.instance) {LRUCacheUtil.instance = new LRUCacheUtil();}return LRUCacheUtil.instance;}/*** 判斷是否包含指定key的緩存* @param key 緩存鍵* @returns 是否存在該key*/public has(key: string): boolean {return this.lruCache.contains(key);}/*** 獲取指定key的緩存值* @param key 緩存鍵* @returns 緩存值,若不存在則返回undefined*/public get<T = any>(key: string): T | undefined {return this.lruCache.get(key) as T;}/*** 添加或更新緩存* @param key 緩存鍵* @param value 緩存值*/public put(key: string, value: any): void {this.lruCache.put(key, value);}/*** 刪除指定key的緩存* @param key 緩存鍵*/public remove(key: string): void {this.lruCache.remove(key);}/*** 判斷緩存是否為空* @returns 是否為空*/public isEmpty(): boolean {return this.lruCache.isEmpty();}/*** 獲取當前緩存的容量* @returns 當前容量*/public getCapacity(): number {return this.lruCache.getCapacity();}/*** 更新緩存的容量* @param newCapacity 新的容量*/public updateCapacity(newCapacity: number): void {if (newCapacity <= 0) {throw new Error("Capacity must be greater than 0.");}this.lruCache.updateCapacity(newCapacity);}/*** 清空緩存并重置容量為默認值*/public clear(): void {this.lruCache.clear();this.lruCache.updateCapacity(64); // 重置為默認容量}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77766.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77766.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77766.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

筆記:react中 父組件怎么獲取子組件中的屬性或方法

在子組件中我們可以使用下面兩個方法去暴露你所要放行的屬性或方法&#x1f447; 1.useImperativeHandle 2.orwardRef 搭配使用例子 import React, { useState, forwardRef, useImperativeHandle } from "react"function Son(props, ref) {const [data] useStat…

《潯川代碼編輯器v2.0內測(完整)報告》

一、測試概述 潯川代碼編輯器v2.0經過為期五周的封閉內測&#xff0c;累計提交了186份測試報告。本次內測主要針對v2.0新增的多語言支持、AI輔助編碼、性能優化等核心功能進行全面驗證。 二、測試環境 - 硬件配置&#xff1a;i7-12700H/16GB RAM/512GB SSD - 操作系統&#xf…

ubuntu18.04安裝QT問題匯總

1、Could not determine which ”make“ command to run. Check the ”make“ step in the build configuration.” sudo apt-get install clang sudo apt-get install build-essential sudo apt-get install libqt4-dev 2、fatal error: sqlite3.h: No such …

基于單片機的BMS熱管理功能設計

標題:基于單片機的BMS熱管理功能設計 內容:1.摘要 摘要&#xff1a;在電動汽車和儲能系統中&#xff0c;電池管理系統&#xff08;BMS&#xff09;的熱管理功能至關重要&#xff0c;它直接影響電池的性能、壽命和安全性。本文的目的是設計一種基于單片機的BMS熱管理功能。采用…

CSS基礎-即學即用 -- 筆記1

目錄 前言CSS 基礎1. 層疊樣式表來源理解優先級源碼順序經驗法則繼承inherit 關鍵字initial 關鍵字 2. 相對單位em 和 rem響應式面板視口的相對單位使用vw定義字號使用calc()定義字號自定義屬性&#xff08;即CSS變量&#xff09; 3. 盒模型調整盒模型 前言 只需一分鐘就能學會…

Linux中服務器時間同步

簡單介紹 在 redhat 8 之前&#xff0c;時間同步服務是使用 NTP&#xff08;網絡時間協議&#xff09;來實現的&#xff0c;在 redhat 8 及之 后使用是 NTP 的實現工具 chrony 來實現時間同步。 在 redhat 8 及之后&#xff0c;默認情況下已經安裝好 chrony 軟件并已經開機啟…

讓SQL飛起來:搭建企業AI應用的SQL性能優化實戰

我上一篇文章已經講解過了如何使用公開的AI模型來優化SQL.但這個優化方法存在一定的局限性.因為公開的AI模型并不了解你的數據表結構是什么從而導致提供的優化建議不太準確.而sql表結構又是至關重要的安全問題,是不能泄露出去的.所以在此背景下我決定搭建一個自己的AI應用在內網…

小迪安全-112-yii反序列化鏈,某達oa,某商場,影響分析

yii是和tp一樣的框架 入口文件 web目錄下 相對tp比較簡單一些&#xff0c;對比tp找一下他的url結構 對應的位置結構 這個contorllers文件的actionindex就是觸發的方法 控制器&#xff0c;指向的index文件&#xff0c;就可以去視圖模塊看index文件 這就是前端展示的文件 自…

自定義多頭注意力模型:從代碼實現到訓練優化

引言 在自然語言處理和序列生成任務中,自注意力機制(Self-Attention)是提升模型性能的關鍵技術。本文將通過一個自定義的PyTorch模型實現,展示如何構建一個結合多頭注意力與前饋網絡的序列生成模型(如文本或字符生成)。該模型通過創新的 MaxStateSuper 模塊實現動態特征…

動態LOD策略細節層級控制:根據視角距離動態簡化遠距量子態渲染

動態LOD策略在量子計算可視化中的優化實現 1. 細節層級控制:動態簡化遠距量子態渲染 在量子計算的可視化中,量子態通常表現為高維數據(如布洛赫球面或多量子比特糾纏態)。動態LOD(Level of Detail)策略通過以下方式優化渲染性能: 距離驅動的幾何簡化: 遠距離渲染:當…

Java 泛型使用教程

簡介 Java 泛型是 JDK 5 引入的一項特性&#xff0c;它提供了編譯時類型安全檢測機制&#xff0c;允許在編譯時檢測出非法的類型。泛型的本質是參數化類型&#xff0c;也就是說所操作的數據類型被指定為一個參數。 泛型的好處&#xff1a; 編譯期檢查類型安全 避免強制類型轉…

Leetcode - 周賽446

目錄 一、3522. 執行指令后的得分二、3523. 非遞減數組的最大長度三、3524. 求出數組的 X 值 I四、3525. 求出數組的 X 值 II 一、3522. 執行指令后的得分 題目鏈接 本題就是一道模擬題&#xff0c;代碼如下&#xff1a; class Solution {public long calculateScore(String…

【更新完畢】2025泰迪杯數據挖掘競賽A題數學建模思路代碼文章教學:競賽論文初步篩選系統

完整內容請看文末最后的推廣群 基于自然語言處理的競賽論文初步篩選系統 基于多模態分析的競賽論文自動篩選與重復檢測模型 摘要 隨著大學生競賽規模的不斷擴大&#xff0c;參賽論文的數量激增&#xff0c;傳統的人工篩選方法面臨著工作量大、效率低且容易出錯的問題。因此&…

計算機視覺與深度學習 | RNN原理,公式,代碼,應用

RNN(循環神經網絡)詳解 一、原理 RNN(Recurrent Neural Network)是一種處理序列數據的神經網絡,其核心思想是通過循環連接(隱藏狀態)捕捉序列中的時序信息。每個時間步的隱藏狀態 ( h_t ) 不僅依賴當前輸入 ( x_t ),還依賴前一時間步的隱藏狀態 ( h_{t-1} ),從而實現…

AI速讀:解鎖LLM下Game Agent的奇妙世界

在 AI 浪潮中&#xff0c;大語言模型&#xff08;LLMs&#xff09;正重塑游戲智能體格局。想知道基于 LLMs 的游戲智能體如何運作&#xff0c;在各類游戲中有何驚艷表現&#xff0c;未來又將走向何方&#xff1f; 大型語言模型&#xff08;LLMs&#xff09;的興起為游戲智能體的…

【每日八股】復習計算機網絡 Day3:TCP 協議的其他相關問題

文章目錄 昨日內容復習TCP 的四次揮手&#xff1f;TCP 為什么要四次揮手&#xff1f;在客戶端處于 FIN_WAIT_2 狀態時&#xff0c;如果此時收到了亂序的來自服務端的 FIN 報文&#xff0c;客戶端會如何處理&#xff1f;何時進入 TIME_WAIT 狀態&#xff1f;TCP 四次揮手丟了怎么…

學習筆記十五——rust柯里化,看不懂 `fn add(x) -> impl Fn(y)` 的同學點進來!

&#x1f9e0; Rust 柯里化從零講透&#xff1a;看不懂 fn add(x) -> impl Fn(y) 的同學點進來&#xff01; &#x1f354; 一、什么是柯里化&#xff1f;先用一個超好懂的生活比喻 假設你在點一個漢堡&#xff1a; 你說&#xff1a;我要點一個雞腿漢堡&#xff01; 店員…

深入理解 TCP 協議 | 流量、擁塞及錯誤控制機制

注&#xff1a;本文為 “TCP 協議” 相關文章合輯。 原文為繁體&#xff0c;注意術語描述差異。 作者在不同的文章中互相引用其不同文章&#xff0c;一并匯總于此。 略作重排&#xff0c;如有內容異常&#xff0c;請看原文。 TCP 三向交握 (Three-way Handshake) 2016-12-21 …

PCL庫編譯指南

PCL(Point Cloud Library)的編譯過程會根據不同操作系統有所差異。以下是詳細的編譯步驟&#xff1a; Linux/Ubuntu系統編譯 1. 安裝依賴項 bash sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sud…

【Linux】條件變量、基于阻塞隊列的生產者消費者模型

&#x1f4da; 博主的專欄 &#x1f427; Linux | &#x1f5a5;? C | &#x1f4ca; 數據結構 | &#x1f4a1;C 算法 | &#x1f310; C 語言 進程是資源分配的基本單位&#xff0c;線程是調度的基本單位&#xff0c;線程是在進程內部運行的&#xff08;是進程內部…