diff --git a/.gitignore b/.gitignore index bf2955d..1bb7a6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,15 @@ +# Ignore test date folder /pluginData/ /logs/ -/.idea/ -/CGJ_2.iml /cookies.store /target/ + +# Ignore Idea files +/.idea/ +/CGJ_2.iml + +# Ignore Visual Studio Code files +.classpath +.factorypath +.project +/.settings/ diff --git a/src/main/java/net/lamgc/cgj/bot/cache/LocalHashCacheStore.java b/src/main/java/net/lamgc/cgj/bot/cache/LocalHashCacheStore.java index d89ffd0..d5c63b1 100644 --- a/src/main/java/net/lamgc/cgj/bot/cache/LocalHashCacheStore.java +++ b/src/main/java/net/lamgc/cgj/bot/cache/LocalHashCacheStore.java @@ -12,19 +12,45 @@ import java.util.concurrent.atomic.AtomicReference; * 基于Hashtable的本地缓存库 * @param 缓存类型 */ -public class LocalHashCacheStore implements CacheStore { +public class LocalHashCacheStore implements CacheStore, Cleanable { private final Hashtable> cache; + /** + * 构造一个基于Hashtable的本地缓存库 + * @see Hashtable + */ public LocalHashCacheStore() { this(0); } + /** + * 构造一个基于Hashtable的本地缓存库 + * @param initialCapacity 初始容量 + * @see Hashtable + */ public LocalHashCacheStore(int initialCapacity) { this(initialCapacity, 0F); } + /** + * 构造一个基于Hashtable的本地缓存库 + * @param initialCapacity 初始容量 + * @param loadFactor 重载因子 + * @see Hashtable + */ public LocalHashCacheStore(int initialCapacity, float loadFactor) { + this(initialCapacity, loadFactor, false); + } + + /** + * 构造一个基于Hashtable的本地缓存库 + * @param initialCapacity 初始容量 + * @param loadFactor 重载因子 + * @param autoClean 是否自动清理 + * @see Hashtable + */ + public LocalHashCacheStore(int initialCapacity, float loadFactor, boolean autoClean) { if(initialCapacity != 0) { if(loadFactor <= 0F) { cache = new Hashtable<>(initialCapacity); @@ -34,6 +60,10 @@ public class LocalHashCacheStore implements CacheStore { } else { cache = new Hashtable<>(); } + + if(autoClean) { + AutoCleanTimer.add(this); + } } @Override @@ -118,6 +148,15 @@ public class LocalHashCacheStore implements CacheStore { return false; } + @Override + public void clean() throws Exception { + Date currentDate = new Date(); + cache.forEach((key, value) -> { + if(value.isExpire(currentDate)) { + cache.remove(key); + } + }); + } public static class CacheObject implements Comparable> {