From 562f23759e8dd22a4b7678de0e1b4a850e368b93 Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Mon, 24 Mar 2025 10:03:56 +0800 Subject: [PATCH] =?UTF-8?q?ip=20=E8=AF=B7=E6=B1=82=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=E9=99=90=E5=88=B613?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqx/common/aspect/IpAccessCounter.java | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/sqx/common/aspect/IpAccessCounter.java b/src/main/java/com/sqx/common/aspect/IpAccessCounter.java index 572e8df2..b6d96355 100644 --- a/src/main/java/com/sqx/common/aspect/IpAccessCounter.java +++ b/src/main/java/com/sqx/common/aspect/IpAccessCounter.java @@ -58,31 +58,33 @@ public class IpAccessCounter { // } public static void removeOldInfo() { - try { - removeCount.set(0); - long currentTime = System.currentTimeMillis(); - Set removedIps = new HashSet<>(); - IP_ACCESS_TIMES.forEach((ip, accessTimes) -> { - accessTimes.removeIf(time -> currentTime - time > ONE_MINUTE); - if (accessTimes.isEmpty()) { - removedIps.add(ip); - } - }); - removedIps.forEach(IP_ACCESS_TIMES::remove); + synchronized (IpAccessCounter.class) { + try { + removeCount.set(0); + long currentTime = System.currentTimeMillis(); + Set removedIps = new HashSet<>(); + IP_ACCESS_TIMES.forEach((ip, accessTimes) -> { + accessTimes.removeIf(time -> currentTime - time > ONE_MINUTE); + if (accessTimes.isEmpty()) { + removedIps.add(ip); + } + }); + removedIps.forEach(IP_ACCESS_TIMES::remove); - Set removedBlacklistIps = new HashSet<>(); - BLACKLIST.entrySet().removeIf(entry -> { - boolean shouldRemove = currentTime - entry.getValue() > TEN_MINUTES; - if (shouldRemove) { - removedBlacklistIps.add(entry.getKey()); - } - return shouldRemove; - }); + Set removedBlacklistIps = new HashSet<>(); + BLACKLIST.entrySet().removeIf(entry -> { + boolean shouldRemove = currentTime - entry.getValue() > TEN_MINUTES; + if (shouldRemove) { + removedBlacklistIps.add(entry.getKey()); + } + return shouldRemove; + }); - log.info("IpAccessCounter 清理完成,移除了 {} 个 IP 的黑名单记录,当前 BLACKLIST 大小: {}, IP_ACCESS_TIMES 大小: {}", - removedBlacklistIps.size(), BLACKLIST.size(), IP_ACCESS_TIMES.size()); - } catch (Exception e) { - log.error("定时任务异常", e); + log.info("IpAccessCounter 清理完成,移除了 {} 个 IP 的黑名单记录,当前 BLACKLIST 大小: {}, IP_ACCESS_TIMES 大小: {}", + removedBlacklistIps.size(), BLACKLIST.size(), IP_ACCESS_TIMES.size()); + } catch (Exception e) { + log.error("定时任务异常", e); + } } }