From a01dfaf671a8df3ca391044a017bee122e704538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 2 Jun 2025 06:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=8D=95=E4=BE=8B=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=AE=9E=E7=8E=B0=E5=86=85=E5=AD=98=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++++ .../cn/zhangdeman/CustomExceptionEnum.java | 12 ------- src/main/java/cn/zhangdeman/HashMapCache.java | 32 +++++++++++++++++++ .../java/cn/zhangdeman/HashMapCacheTest.java | 14 ++++++++ 4 files changed, 54 insertions(+), 12 deletions(-) delete mode 100644 src/main/java/cn/zhangdeman/CustomExceptionEnum.java create mode 100644 src/main/java/cn/zhangdeman/HashMapCache.java create mode 100644 src/test/java/cn/zhangdeman/HashMapCacheTest.java diff --git a/pom.xml b/pom.xml index 05a8106..1126b61 100644 --- a/pom.xml +++ b/pom.xml @@ -13,5 +13,13 @@ 21 UTF-8 + + + junit + junit + 4.13.2 + test + + \ No newline at end of file diff --git a/src/main/java/cn/zhangdeman/CustomExceptionEnum.java b/src/main/java/cn/zhangdeman/CustomExceptionEnum.java deleted file mode 100644 index f69bb94..0000000 --- a/src/main/java/cn/zhangdeman/CustomExceptionEnum.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.zhangdeman; - -// 自定义异常的枚举值 -public enum CustomExceptionEnum { - ; - private final Object code; // 异常状态码 - private final String message; // 异常信息 - CustomExceptionEnum(Object code, String message) { - this.code = code; - this.message = message; - } -} diff --git a/src/main/java/cn/zhangdeman/HashMapCache.java b/src/main/java/cn/zhangdeman/HashMapCache.java new file mode 100644 index 0000000..bb0b081 --- /dev/null +++ b/src/main/java/cn/zhangdeman/HashMapCache.java @@ -0,0 +1,32 @@ +package cn.zhangdeman; + +import java.util.HashMap; +import java.util.Map; + +// 基于hashmap实现的内存缓存 +// 因为就是服务启动时初始化一次, 无需考虑多线程并发安全问题 +public class HashMapCache { + // 单例: 饿汉模式 + private static final HashMapCache hashMapCache = new HashMapCache(); + private final Map cache = new HashMap<>(); + //将构造器设置为private禁止通过new进行实例化 + private HashMapCache() { + + } + public static HashMapCache getHashMapCache() { + return hashMapCache; + } + // 读取 + public String getCodeMessage(Object code) { + if (!cache.containsKey(code)) { + // 不包含指定code + return code.toString(); + } + return cache.get(code); + } + + // 添加 + public void put(Object code, String message) { + cache.put(code, message); + } +} diff --git a/src/test/java/cn/zhangdeman/HashMapCacheTest.java b/src/test/java/cn/zhangdeman/HashMapCacheTest.java new file mode 100644 index 0000000..5b1f273 --- /dev/null +++ b/src/test/java/cn/zhangdeman/HashMapCacheTest.java @@ -0,0 +1,14 @@ +package cn.zhangdeman; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class HashMapCacheTest { + @Test + public void runHashMapCache() { + HashMapCache.getHashMapCache().put(200, "OK"); + Assert.assertEquals("OK", HashMapCache.getHashMapCache().getCodeMessage(200)); + } +} \ No newline at end of file