2010年1月4日

OSCache

OSCache
OSCache - 成长的路上
// -- Main.java --
import java.io.File;
import java.util.Iterator;

import com.opensymphony.oscache.base.NeedsRefreshException;
import com.opensymphony.oscache.general.GeneralCacheAdministrator;

public class Main {

private static GeneralCacheAdministrator admin = new GeneralCacheAdministrator();

public static void main(String[] args) {

for (int i = 0; i < 2; i++) {
Iterator files = org.apache.commons.io.FileUtils.iterateFiles(
new File("."), new String[] {"java", "properties", "xml" }, false);
while (files.hasNext()) {
File file = (File) files.next();
long st = System.currentTimeMillis();
byte[] value = getFromFile(file);
System.out.println("File name: " + file.getAbsolutePath()
+ " TimeMillis: " + (System.currentTimeMillis() - st)
+ " Size: " + value.length);
}
}

}

private static byte[] getFromFile(File file) {
String key = file.getAbsolutePath();
byte[] myValue;
int myRefreshPeriod = 60; // How long the object can stay in cache in seconds.
try {
myValue = (byte[]) admin.getFromCache(key, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
try {
myValue = org.apache.commons.io.FileUtils.readFileToByteArray(file);
admin.putInCache(key, myValue);
} catch (Exception ex) {
myValue = (byte[]) nre.getCacheContent();
admin.cancelUpdate(key);
}
}
return myValue;
}
}

// -- output --
File name: C:\test\.\Main.java TimeMillis: 31 Size: 1456
File name: C:\test\.\oscache.properties TimeMillis: 16 Size: 5629
File name: C:\test\.\pom.xml TimeMillis: 15 Size: 910
File name: C:\test\.\Main.java TimeMillis: 0 Size: 1456
File name: C:\test\.\oscache.properties TimeMillis: 0 Size: 5629
File name: C:\test\.\pom.xml TimeMillis: 0 Size: 910

沒有留言:

網誌存檔