70 lines
1.5 KiB
Java
70 lines
1.5 KiB
Java
|
|
package cache;
|
|||
|
|
|
|||
|
|
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();
|
|||
|
|
|
|||
|
|
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
|
|||
|
|
cache.put(key, value);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void removeObject(String key) {
|
|||
|
|
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) {
|
|||
|
|
// 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>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|