From 77f96f60f71aa9a3f2b66b611942ee4c4b208d8f Mon Sep 17 00:00:00 2001 From: zhouxinyu Date: Tue, 31 Oct 2023 16:47:08 +0800 Subject: [PATCH] feat: change static class lru to object --- ...t-lru-static-dynamic_2023-10-31-08-47.json | 10 ++++++++ packages/vutils/src/lru.ts | 24 +++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 common/changes/@visactor/vutils/feat-lru-static-dynamic_2023-10-31-08-47.json diff --git a/common/changes/@visactor/vutils/feat-lru-static-dynamic_2023-10-31-08-47.json b/common/changes/@visactor/vutils/feat-lru-static-dynamic_2023-10-31-08-47.json new file mode 100644 index 0000000..32baa19 --- /dev/null +++ b/common/changes/@visactor/vutils/feat-lru-static-dynamic_2023-10-31-08-47.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vutils", + "comment": "feat: change static class lru to object", + "type": "none" + } + ], + "packageName": "@visactor/vutils" +} \ No newline at end of file diff --git a/packages/vutils/src/lru.ts b/packages/vutils/src/lru.ts index f1bdfe8..809fc50 100644 --- a/packages/vutils/src/lru.ts +++ b/packages/vutils/src/lru.ts @@ -6,13 +6,13 @@ interface Threshold { } // LRU清除 export class LRU { - private static CLEAN_THRESHOLD = 1e3; - private static L_TIME = 1000; // 1000ms以内 - private static R_COUNT = 1; // 使用次数为0 - private static R_TIMESTAMP_MAX_SIZE = 20; // timestamp最大长度 + private CLEAN_THRESHOLD = 1e3; + private L_TIME = 1000; // 1000ms以内 + private R_COUNT = 1; // 使用次数为0 + private R_TIMESTAMP_MAX_SIZE = 20; // timestamp最大长度 - static clearCache(cache: Map, params: Threshold): number { - const { CLEAN_THRESHOLD = LRU.CLEAN_THRESHOLD, L_TIME = LRU.L_TIME, R_COUNT = LRU.R_COUNT } = params; + clearCache(cache: Map, params: Threshold): number { + const { CLEAN_THRESHOLD = this.CLEAN_THRESHOLD, L_TIME = this.L_TIME, R_COUNT = this.R_COUNT } = params; if (cache.size < CLEAN_THRESHOLD) { return 0; } @@ -46,8 +46,8 @@ export class LRU { return clearNum; } - static addLimitedTimestamp(cacheItem: T, t: number, params: Threshold) { - const { R_TIMESTAMP_MAX_SIZE = LRU.R_TIMESTAMP_MAX_SIZE } = params; + addLimitedTimestamp(cacheItem: T, t: number, params: Threshold) { + const { R_TIMESTAMP_MAX_SIZE = this.R_TIMESTAMP_MAX_SIZE } = params; if (cacheItem.timestamp.length > R_TIMESTAMP_MAX_SIZE) { // cacheItem.timestamp[cacheItem.timestamp.length-1] = cacheItem.timestamp.shift(); @@ -55,8 +55,8 @@ export class LRU { cacheItem.timestamp.push(t); } - static clearTimeStamp(cache: Map, params: Threshold) { - const { L_TIME = LRU.L_TIME } = params; + clearTimeStamp(cache: Map, params: Threshold) { + const { L_TIME = this.L_TIME } = params; const now = Date.now(); cache.forEach(item => { while (now - item.timestamp[0] > L_TIME) { @@ -65,8 +65,8 @@ export class LRU { }); } - static clearItemTimestamp(cacheItem: T, params: Threshold) { - const { L_TIME = LRU.L_TIME } = params; + clearItemTimestamp(cacheItem: T, params: Threshold) { + const { L_TIME = this.L_TIME } = params; const now = Date.now(); while (now - cacheItem.timestamp[0] > L_TIME) { cacheItem.timestamp.shift();