JUDGER_AND_CLIENT/JuderUI/src/cache/ProblemsCachManager.java

75 lines
1.8 KiB
Java
Raw Normal View History

2024-01-12 20:48:35 +08:00
package cache;
2025-02-10 23:21:07 +08:00
import common.LogLevel;
import common.Logger;
2024-01-12 20:48:35 +08:00
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ProblemsCachManager {
private boolean update = false;
private BaseCache cache;
private static ProblemsCachManager instance;
private static Object lock = new Object();
2025-02-10 23:21:07 +08:00
private static Logger logger=Logger.getInstance();
2024-01-12 20:48:35 +08:00
private ProblemsCachManager() {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼBaseCache<68><65><EFBFBD><EFBFBD>;
Properties prop = new Properties();
InputStream in = ProblemsCachManager.class
.getResourceAsStream("cache.properties");
try {
prop.load(in);
String validTime = prop.getProperty("problemsValidTime").trim();
cache = new BaseCache("Problems", Integer.parseInt(validTime));
} catch (IOException e) {
e.printStackTrace();
}
}
public static ProblemsCachManager getInstance() {
if (instance == null) {
synchronized (lock) {
if (instance == null) {
instance = new ProblemsCachManager();
}
}
}
return instance;
}
public void putObject(String key, Object value) { // key<65><79>classId_examId
2025-02-10 23:21:07 +08:00
logger.log("<EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"+key, LogLevel.INFO);
2024-01-12 20:48:35 +08:00
cache.put(key, value);
}
public void removeObject(String key) {
2025-02-10 23:21:07 +08:00
logger.log("<EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"+key, LogLevel.INFO);
2024-01-12 20:48:35 +08:00
cache.remove(key);
}
public void removeAllObject() {
cache.removeAll();
}
public Object getObject(String key) {
try {
// <20><>Cache<68>л<EFBFBD><D0BB><EFBFBD>
return cache.get(key);
} catch (Exception e) {
2025-02-10 23:21:07 +08:00
logger.log("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+key+"e:"+e.getMessage(), LogLevel.ERROR);
2024-01-12 20:48:35 +08:00
// Cache<68><65>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DB<44><42><EFBFBD><EFBFBD>ȡ
// <20><><EFBFBD>ݿ<EFBFBD><DDBF>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// <20>ѻ<EFBFBD>ȡ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>ٴδ<D9B4><CEB4><EFBFBD>Cache<68><65>
this.putObject(key, null);
update = true;
return null;
} finally {
if (!update) {
// <20><><EFBFBD><EFBFBD>Cache<68>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
cache.cancelUpdate(key); // ȡ<><C8A1><EFBFBD><EFBFBD>id<69>ĸ<EFBFBD><C4B8><EFBFBD>
}
}
}
}