diff --git a/src/main/java/net/lamgc/cgj/CQPluginMain.java b/src/main/java/net/lamgc/cgj/CQPluginMain.java index eb8e66b..e85afd0 100644 --- a/src/main/java/net/lamgc/cgj/CQPluginMain.java +++ b/src/main/java/net/lamgc/cgj/CQPluginMain.java @@ -90,7 +90,7 @@ public class CQPluginMain extends CQPlugin { String[] args = new String[argsList.size()]; argsList.toArray(args); - log.info("正在处理命令..."); + log.warn("正在处理命令..."); long time = System.currentTimeMillis(); Object result; try { @@ -113,7 +113,7 @@ public class CQPluginMain extends CQPlugin { log.error("执行命令时发生异常", e); result = "命令执行时发生错误,无法完成!"; } - log.info("命令处理完成(耗时: {}ms)", System.currentTimeMillis() - time); + log.warn("命令处理完成(耗时: {}ms)", System.currentTimeMillis() - time); if(Objects.requireNonNull(result) instanceof String) { sendMessage(cq, event, (String) result, false); } diff --git a/src/main/java/net/lamgc/cgj/CQProcess.java b/src/main/java/net/lamgc/cgj/CQProcess.java index 300a661..74140d5 100644 --- a/src/main/java/net/lamgc/cgj/CQProcess.java +++ b/src/main/java/net/lamgc/cgj/CQProcess.java @@ -44,11 +44,11 @@ public class CQProcess { private final static Hashtable> illustPreLoadDataCache = new Hashtable<>(); - private final static Hashtable> searchBodyCache = new Hashtable<>(); + private final static Hashtable> searchBodyCache = new Hashtable<>(); - private final static Hashtable> pagesCache = new Hashtable<>(); + private final static Hashtable> pagesCache = new Hashtable<>(); - private final static Hashtable rankingCache = new Hashtable<>(); + private final static Hashtable rankingCache = new Hashtable<>(); private final static Object searchCacheLock = new Object(); @@ -194,9 +194,10 @@ public class CQProcess { log.info("RequestUrl: {}", requestUrl); CacheObject cacheObject = new CacheObject<>(); - if(!searchBodyCache.containsKey(requestUrl) || (cacheObject = searchBodyCache.get(requestUrl)).isExpire(new Date())) { + int requestUrlSign = requestUrl.hashCode(); + if(!searchBodyCache.containsKey(requestUrlSign) || (cacheObject = searchBodyCache.get(requestUrlSign)).isExpire(new Date())) { synchronized (searchCacheLock) { - if (!searchBodyCache.containsKey(requestUrl) || (cacheObject = searchBodyCache.get(requestUrl)).isExpire(new Date())) { + if (!searchBodyCache.containsKey(requestUrlSign) || (cacheObject = searchBodyCache.get(requestUrlSign)).isExpire(new Date())) { log.info("searchBody缓存失效, 正在更新..."); JsonObject jsonObject; HttpGet httpGetRequest = pixivDownload.createHttpGetRequest(requestUrl); @@ -222,7 +223,7 @@ public class CQProcess { newExpireDate.setTime(newExpireDate.getTime() + expire); cacheObject.update(jsonObject, newExpireDate); - searchBodyCache.put(requestUrl, cacheObject); + searchBodyCache.put(requestUrlSign, cacheObject); log.info("searchBody缓存已更新(到期时间: {})", newExpireDate); } } @@ -230,7 +231,8 @@ public class CQProcess { log.info("搜索缓存命中."); } - JsonObject resultBody = searchBodyCache.get(requestUrl).get().getAsJsonObject("body"); + JsonObject resultBody = searchBodyCache.get(requestUrlSign).get().getAsJsonObject("body"); + StringBuilder result = new StringBuilder("内容 " + content + " 的搜索结果:\n"); log.info("正在处理信息..."); int limit = 8; @@ -521,9 +523,10 @@ public class CQProcess { private final static Object illustPagesLock = new Object(); public static List getIllustPages(int illustId, PixivDownload.PageQuality quality) throws IOException { - if (!pagesCache.containsKey(illustId + "." + quality.name())) { + int pagesSign = (illustId + "." + quality.name()).hashCode(); + if (!pagesCache.containsKey(pagesSign)) { synchronized (illustPagesLock) { - if (!pagesCache.containsKey(illustId + "." + quality.name())) { + if (!pagesCache.containsKey(pagesSign)) { File cacheFile = new File(getImageStoreDir(), illustId + "." + quality.name() + ".illustPages.json"); log.info("illustPagesFileName: {}", cacheFile.getName()); List linkList; @@ -543,12 +546,12 @@ public class CQProcess { linkList = new ArrayList<>(jsonArray.size()); jsonArray.forEach(jsonElement -> linkList.add(jsonElement.getAsString())); } - pagesCache.put(illustId + "." + quality.name(), linkList); + pagesCache.put(pagesSign, linkList); } } } - return pagesCache.get(illustId + "." + quality.name()); + return pagesCache.get(pagesSign); } private static File getImageStoreDir() { @@ -562,7 +565,7 @@ public class CQProcess { private final static Object rankingLock = new Object(); private static List getRankingInfoByCache(PixivURL.RankingContentType contentType, PixivURL.RankingMode mode, Date queryDate, int start, int range) throws IOException { String date = new SimpleDateFormat("yyyyMMdd").format(queryDate); - String requestSign = "Ranking." + contentType.name() + "." + mode.name() + "." + date; + int requestSign = ("Ranking." + contentType.name() + "." + mode.name() + "." + date).hashCode(); if(!rankingCache.containsKey(requestSign)) { synchronized(rankingLock) { if(!rankingCache.containsKey(requestSign)) {