From e5892f0023c5c0e5d883acd180a207eae7aa4d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=BF=97=E5=AE=89?= <872007871@qq.com> Date: Thu, 24 Oct 2019 01:08:23 +0800 Subject: [PATCH] =?UTF-8?q?!1=20=E7=BC=93=E5=AD=98=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E4=BB=8E=E9=85=8D=E7=BD=AE=E4=B8=AD=E5=8F=96?= =?UTF-8?q?=20*=20=E7=BC=93=E5=AD=98=E7=A9=BA=E9=97=B4=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E4=BB=8E=E9=85=8D=E7=BD=AE=E4=B8=AD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/org/hentai/dns/stat/StatManager.java | 5 ++- .../cn/org/hentai/dns/util/Conversion.java | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/org/hentai/dns/util/Conversion.java diff --git a/src/main/java/cn/org/hentai/dns/stat/StatManager.java b/src/main/java/cn/org/hentai/dns/stat/StatManager.java index 589d204..c333abf 100644 --- a/src/main/java/cn/org/hentai/dns/stat/StatManager.java +++ b/src/main/java/cn/org/hentai/dns/stat/StatManager.java @@ -1,6 +1,7 @@ package cn.org.hentai.dns.stat; import cn.org.hentai.dns.util.Configs; +import cn.org.hentai.dns.util.Conversion; import cn.org.hentai.dns.util.Packet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +34,9 @@ public final class StatManager private StatManager() { - logs = Packet.create(1024 * 1024 * 200); + String lmem = Configs.get("dns.stat-logger.memory"); + int i = Conversion.toByte(lmem); + logs = Packet.create(i); domainNameMap = new HashMap(); sequence = 1; diff --git a/src/main/java/cn/org/hentai/dns/util/Conversion.java b/src/main/java/cn/org/hentai/dns/util/Conversion.java new file mode 100644 index 0000000..fab87b5 --- /dev/null +++ b/src/main/java/cn/org/hentai/dns/util/Conversion.java @@ -0,0 +1,35 @@ +package cn.org.hentai.dns.util; + +/** + * Created by huangzhian on 2019/10/21. + */ +public class Conversion { + + /** + * 将配置的缓存空间单位KMG转换为byte, + * 因为int类型的限制,将最大缓存空间设为1G + */ + public static int toByte(String memory) { + int count = 0; + String mem; + if (memory == null) { + return 0; + } + mem = memory.toUpperCase(); + if (mem.matches("[0-9]+[KMG]{1}")) { + String submem = memory.substring(0, memory.length() - 1); + count = Integer.parseInt(submem); + } else if (mem.matches("[0-9]+")) { + count = Integer.parseInt(memory); + } + if (mem.endsWith("M")) { + return (count > 1024 ? 1024 : count) << 20; + } else if (mem.endsWith("G")) { + return (count > 1 ? 1 : count) << 30; + } else if (mem.endsWith("K")) { + return count << 10; + } else { + return count; + } + } +}