-
paket lhm.hcy.guge.frameset.cache;
import java.util.*;
/**
* <p>Judul: </p>
*
* <p>Deskripsi: Kelola cache</p>
* Biru tua 28-11-2008 pikirkan
* Fungsi yang dapat diperluas: Ketika chche mencapai kelebihan memori, beberapa objek cache paling awal harus dibersihkan, yang memerlukan penghematan waktu pembuatan setiap objek cache.
* <p>Hak Cipta: Hak Cipta (c) 2008</p>
*
* <p>Perusahaan: </p>
*
* @penulis Deepblue 2008-11-11
* @versi 1.0
*/
Manajer Cache kelas publik {
cacheMap HashMap statis pribadi = HashMap baru();
//Metode konstruksi instance tunggal
Manajer Cache pribadi() {
super();
}
//Dapatkan cache nilai Boolean
boolean statis publik getSimpleFlag(kunci string){
mencoba{
kembali (Boolean) cacheMap.get(kunci);
}menangkap(NullPointerException e){
kembali salah;
}
}
getServerStartdt panjang statis publik(kunci string){
mencoba {
return (Panjang)cacheMap.get(kunci);
} catch (Pengecualian misalnya) {
kembali 0;
}
}
//Setel cache nilai Boolean
boolean statis tersinkronisasi publik setSimpleFlag(Kunci string, flag boolean){
if (flag && getSimpleFlag(key)) {//Jika benar, penimpaan tidak diperbolehkan
kembali salah;
}kalau tidak{
cacheMap.put(kunci, bendera);
kembali benar;
}
}
boolean statis tersinkronisasi publik setSimpleFlag(Kunci string, server panjang dimulai){
if (cacheMap.get(kunci) == null) {
cacheMap.put(kunci,serverbegrundt);
kembali benar;
}kalau tidak{
kembali salah;
}
}
//Dapatkan cache. Metode statis yang disinkronkan
Cache statis tersinkronisasi pribadi getCache(Kunci string) {
kembali (Cache) cacheMap.get(kunci);
}
//Tentukan apakah ada cache
hasCache boolean statis tersinkronisasi pribadi (kunci string) {
kembalikan cacheMap.containsKey(kunci);
}
//Hapus semua cache
kekosongan statis yang disinkronkan publik clearAll() {
cacheMap.hapus();
}
//Hapus jenis cache tertentu dan tentukan apakah KEY-nya cocok dengan TYPE yang masuk dengan menelusuri semua objek di bawah HashMAP
kekosongan statis yang disinkronkan publik clearAll(Jenis string) {
Iterator i = cacheMap.entrySet().iterator();
Kunci string;
ArrayList<String> arr = ArrayList<String>();
mencoba {
sementara (i.hasNext()) {
java.util.Map.Entry entri = (java.util.Map.Entry) i.next();
kunci = (String) entri.getKey();
if (key.startsWith(type)) {//Jika cocok, hapus
arr.tambahkan(kunci);
}
}
untuk (int k = 0; k < arr.ukuran(); k++) {
clearOnly(arr.get(k));
}
} catch (Pengecualian misalnya) {
ex.printStackTrace();
}
}
//Hapus cache yang ditentukan
static void clearOnly yang disinkronkan publik (kunci string) {
cacheMap.hapus(kunci);
}
//Muat cache
void putCache statis tersinkronisasi publik (kunci string, objek Cache) {
cacheMap.put(kunci, obj);
}
//Dapatkan informasi cache
Cache statis publik getCacheInfo(kunci string) {
jika (hasCache(kunci)) {
Cache cache = getCache(kunci);
if (cacheExpired(cache)) {//Panggil metode untuk menentukan apakah akan dihentikan
cache.setExpired(benar);
}
kembalikan cache;
}kalau tidak
kembalikan nol;
}
//Muat informasi cache
public static void putCacheInfo(String key, Cache obj, long dt, boolean expired) {
Cache cache = Cache baru();
cache.setKey(kunci);
cache.setTimeOut(dt + System.currentTimeMillis()); //Setel berapa lama waktu yang dibutuhkan untuk memperbarui cache
cache.setValue(obj);
cache.setExpired(expired); //Ketika cache dimuat secara default, status penghentiannya adalah FALSE
cacheMap.put(kunci, cache);
}
//Tulis ulang metode memuat informasi cache
public static void putCacheInfo(Kunci string,obj Cache,dt panjang){
Cache cache = Cache baru();
cache.setKey(kunci);
cache.setTimeOut(dt+System.currentTimeMillis());
cache.setValue(obj);
cache.setExpired(salah);
cacheMap.put(kunci,cache);
}
//Tentukan apakah cache dihentikan
cache boolean statis publik Kedaluwarsa (Cache cache) {
if (null == cache) {//Cache yang masuk tidak ada
kembali salah;
}
long nowDt = System.currentTimeMillis(); //Jumlah milidetik saat ini dalam sistem
long cacheDt = cache.getTimeOut(); //Kedaluwarsa milidetik dalam cache
if (cacheDt <= 0||cacheDt>nowDt) { //Bila waktu kedaluwarsa kurang dari atau sama dengan nol, atau ketika waktu kedaluwarsa lebih besar dari waktu saat ini, maka FALSE
kembali salah;
} else {//Kedaluwarsa jika lebih besar dari waktu kedaluwarsa
kembali benar;
}
}
//Dapatkan ukuran di cache
publik statis int getCacheSize() {
kembalikan cacheMap.size();
}
//Dapatkan ukuran dari tipe yang ditentukan
public static int getCacheSize(Jenis string) {
ke dalam k = 0;
Iterator i = cacheMap.entrySet().iterator();
Kunci string;
mencoba {
sementara (i.hasNext()) {
java.util.Map.Entry entri = (java.util.Map.Entry) i.next();
kunci = (String) entri.getKey();
if (key.indexOf(type) != -1) { //Jika cocok, hapus
k++;
}
}
} catch (Pengecualian misalnya) {
ex.printStackTrace();
}
kembalikan k;
}
//Dapatkan semua nama nilai kunci di objek cache
Daftar Array statis publik<String> getCacheAllkey() {
Daftar Array a = Daftar Array baru();
mencoba {
Iterator i = cacheMap.entrySet().iterator();
sementara (i.hasNext()) {
java.util.Map.Entry entri = (java.util.Map.Entry) i.next();
a.tambahkan((String) entri.getKey());
}
} catch (Pengecualian ex) {} akhirnya {
kembalikan a;
}
}
//Dapatkan nama nilai kunci dari tipe yang ditentukan dalam objek cache
public static ArrayList<String> getCacheListkey(Jenis string) {
Daftar Array a = Daftar Array baru();
Kunci string;
mencoba {
Iterator i = cacheMap.entrySet().iterator();
sementara (i.hasNext()) {
java.util.Map.Entry entri = (java.util.Map.Entry) i.next();
kunci = (String) entri.getKey();
if (kunci.indexOf(tipe) != -1) {
a.tambahkan(kunci);
}
}
} catch (Pengecualian ex) {} akhirnya {
kembalikan a;
}
}
}
paket lhm.hcy.guge.frameset.cache;
/**
* <p>Judul: </p>
*
* <p>Deskripsi: Cache DTO</p>
*
* <p>Hak Cipta: Hak Cipta (c) 2008</p>
*
* <p>Perusahaan: </p>
*
* @penulis Deepblue 2008-11-11
* @versi 1.0
*/
Cache kelas publik {
kunci String pribadi;//ID cache
nilai Objek pribadi; // data cache
waktu keluar pribadi yang lama;//waktu pembaruan
boolean pribadi kedaluwarsa; //apakah akan dihentikan
cache publik() {
super();
}
Cache publik (Kunci string, Nilai objek, batas waktu lama, boolean kedaluwarsa) {
this.key = kunci;
this.nilai = nilai;
this.timeOut = batas waktu;
this.expired = kadaluwarsa;
}
String publik getKey() {
kunci kembali;
}
getTimeOut panjang publik() {
batas waktu pengembalian;
}
Objek publik getValue() {
nilai kembalian;
}
public void setKey(String string) {
kunci = tali;
}
public void setTimeOut(panjang l) {
batas waktu = l;
}
public void setValue(Objek objek) {
nilai = objek;
}
boolean publik isExpired() {
pengembalian sudah habis masa berlakunya;
}
public void setExpired(boolean b) {
kadaluwarsa = b;
}
}
//Kelas tes,
tes kelas {
public static void main(String[] args) {
System.out.println(CacheManager.getSimpleFlag("alksd"));
// CacheManager.putCache("abc", Cache baru());
// CacheManager.putCache("def", Cache baru());
// CacheManager.putCache("ccc", Cache baru());
// CacheManager.clearOnly("");
// Cache c = Cache baru();
// untuk (int i = 0; i < 10; i++) {
// CacheManager.putCache("" + i, c);
// }
// CacheManager.putCache("aaaaaaaa",c);
// CacheManager.putCache("abchcy;alskd", c);
// CacheManager.putCache("cccccccc", c);
// CacheManager.putCache("abcoqiwhcy", c);
// System.out.println("Ukuran sebelum dihapus: "+CacheManager.getCacheSize());
// CacheManager.getCacheAllkey();
// CacheManager.clearAll("aaaa");
// System.out.println("Ukuran setelah dihapus: "+CacheManager.getCacheSize());
// CacheManager.getCacheAllkey();
}
}
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/hello_zhenyu/archive/2009/12/18/5030366.aspx