尝试使用Integer代替String以减少内存占用;

调整输出等级
This commit is contained in:
LamGC 2020-03-27 14:55:52 +08:00
parent 078ab1caf0
commit ad6e0b1c34
2 changed files with 17 additions and 14 deletions

View File

@ -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);
}

View File

@ -44,11 +44,11 @@ public class CQProcess {
private final static Hashtable<Integer, CacheObject<JsonObject>> illustPreLoadDataCache = new Hashtable<>();
private final static Hashtable<String, CacheObject<JsonObject>> searchBodyCache = new Hashtable<>();
private final static Hashtable<Integer, CacheObject<JsonObject>> searchBodyCache = new Hashtable<>();
private final static Hashtable<String, List<String>> pagesCache = new Hashtable<>();
private final static Hashtable<Integer, List<String>> pagesCache = new Hashtable<>();
private final static Hashtable<String, JsonArray> rankingCache = new Hashtable<>();
private final static Hashtable<Integer, JsonArray> rankingCache = new Hashtable<>();
private final static Object searchCacheLock = new Object();
@ -194,9 +194,10 @@ public class CQProcess {
log.info("RequestUrl: {}", requestUrl);
CacheObject<JsonObject> 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<String> 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<String> 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<JsonObject> 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)) {