-
แพ็คเกจ lhm.hcy.guge.frameset.cache;
นำเข้า java.util.*;
-
* <p>ชื่อเรื่อง: </p>
-
* <p>คำอธิบาย: จัดการแคช</p>
* สีน้ำเงินเข้ม 28-11-2551 คิด
* ฟังก์ชั่นที่ขยายได้: เมื่อ chche ถึงหน่วยความจำล้น จะต้องล้างออบเจ็กต์แคชแรกสุดบางรายการ ซึ่งต้องประหยัดเวลาในการสร้างของแต่ละออบเจ็กต์แคช
* <p>ลิขสิทธิ์: ลิขสิทธิ์ (c) 2008</p>
-
* <p>บริษัท: </p>
-
* @ผู้เขียน Deepblue 11-11-2551
* @เวอร์ชั่น 1.0
-
CacheManager คลาสสาธารณะ {
HashMap แบบคงที่ส่วนตัว cacheMap = HashMap ใหม่ ();
//วิธีสร้างอินสแตนซ์เดียว
ตัวจัดการแคชส่วนตัว () {
ซุปเปอร์();
-
//รับแคชของค่าบูลีน
บูลีนคงที่สาธารณะ getSimpleFlag (คีย์สตริง) {
พยายาม{
กลับ (บูลีน) cacheMap.get (คีย์);
} จับ (NullPointerException e){
กลับเท็จ;
-
-
getServerStartdt แบบยาวคงที่สาธารณะ (คีย์สตริง) {
พยายาม {
กลับ (ยาว) cacheMap.get (คีย์);
} จับ (ข้อยกเว้นเช่น) {
กลับ 0;
-
-
//ตั้งค่าแคชของค่าบูลีน
สาธารณะซิงโครไนซ์บูลีนคงที่ setSimpleFlag (คีย์สตริง, ธงบูลีน) {
if (flag && getSimpleFlag(key)) {//หากเป็นจริง ไม่อนุญาตให้เขียนทับ
กลับเท็จ;
}อื่น{
cacheMap.put (คีย์, แฟล็ก);
กลับเป็นจริง;
-
-
สาธารณะซิงโครไนซ์บูลีนคงที่ setSimpleFlag (คีย์สตริง, เซิร์ฟเวอร์ยาว begrundt) {
ถ้า (cacheMap.get (คีย์) == null) {
cacheMap.put(คีย์,เซิร์ฟเวอร์begrundt);
กลับเป็นจริง;
}อื่น{
กลับเท็จ;
-
-
//รับแคช วิธีการคงที่แบบซิงโครไนซ์
แคชคงที่แบบซิงโครไนซ์ส่วนตัว getCache (คีย์สตริง) {
กลับ (แคช) cacheMap.get (คีย์);
-
//ตรวจสอบว่ามีแคชหรือไม่
hasCache บูลีนแบบคงที่ส่วนตัวที่ซิงโครไนซ์ส่วนตัว (คีย์สตริง) {
ส่งคืน cacheMap.containsKey (คีย์);
-
//ล้างแคชทั้งหมด
โมฆะคงซิงโครไนซ์สาธารณะ clearAll () {
cacheMap.clear();
-
//ล้างแคชประเภทใดประเภทหนึ่งและตรวจสอบว่า KEY ตรงกับประเภทขาเข้าหรือไม่โดยการสำรวจวัตถุทั้งหมดภายใต้ HASHMAP
โมฆะคงซิงโครไนซ์สาธารณะ clearAll (ประเภทสตริง) {
ตัววนซ้ำ i = cacheMap.entrySet().ตัววนซ้ำ();
สตริงคีย์;
ArrayList<String> arr = ใหม่ ArrayList<String>();
พยายาม {
ในขณะที่ (i.hasNext()) {
java.util.Map.Entry รายการ = (java.util.Map.Entry) i.next();
คีย์ = (สตริง) entry.getKey();
if (key.startsWith(type)) { //หากตรงกัน ให้ลบออก
arr.add(คีย์);
-
-
สำหรับ (int k = 0; k < arr.size(); k++) {
clearOnly(arr.get(k));
-
} จับ (ข้อยกเว้นเช่น) {
เช่น printStackTrace();
-
-
//ล้างแคชที่ระบุ
โมฆะคงซิงโครไนซ์สาธารณะ clearOnly (คีย์สตริง) {
cacheMap.remove (คีย์);
-
//โหลดแคช
โมฆะคงสาธารณะที่ซิงโครไนซ์ putCache (คีย์สตริง, แคช obj) {
cacheMap.put (คีย์, obj);
-
//รับข้อมูลแคช
แคชสาธารณะ getCacheInfo แบบคงที่ (คีย์สตริง) {
ถ้า (hasCache (คีย์)) {
แคช แคช = getCache(คีย์);
if (cacheExpired(cache)) { //เรียกเมธอดเพื่อพิจารณาว่าจะยุติหรือไม่
cache.setExpired (จริง);
-
ส่งคืนแคช;
}อื่น
กลับเป็นโมฆะ;
-
//โหลดข้อมูลแคช
โมฆะคงที่สาธารณะ putCacheInfo (คีย์สตริง, แคช obj, dt แบบยาว, บูลีนหมดอายุ) {
แคช แคช = แคชใหม่ ();
cache.setKey(กุญแจ);
cache.setTimeOut(dt + System.currentTimeMillis()); //กำหนดระยะเวลาที่ใช้ในการอัพเดตแคช
cache.setValue(obj);
cache.setExpired(expired); //เมื่อโหลดแคชตามค่าเริ่มต้น สถานะการยกเลิกจะเป็น FALSE
cacheMap.put (คีย์, แคช);
-
//เขียนวิธีการโหลดข้อมูลแคชใหม่
โมฆะสาธารณะคง putCacheInfo (คีย์สตริง, แคช obj, dt ยาว) {
แคช แคช = แคชใหม่ ();
cache.setKey(กุญแจ);
cache.setTimeOut(dt+System.currentTimeMillis());
cache.setValue(obj);
cache.setExpired (เท็จ);
cacheMap.put (คีย์แคช);
-
//ตรวจสอบว่าแคชถูกยกเลิกหรือไม่
แคชบูลีนคงที่สาธารณะหมดอายุ (แคชแคช) {
ถ้า (null == แคช) { // ไม่มีแคชที่เข้ามา
กลับเท็จ;
-
long nowDt = System.currentTimeMillis(); //จำนวนมิลลิวินาทีปัจจุบันในระบบ
long cacheDt = cache.getTimeOut(); //มิลลิวินาทีหมดอายุในแคช
if (cacheDt <= 0||cacheDt>nowDt) { //เมื่อเวลาหมดอายุน้อยกว่าหรือเท่ากับศูนย์ หรือเมื่อเวลาหมดอายุมากกว่าเวลาปัจจุบัน จะเป็น FALSE
กลับเท็จ;
} else { //หมดอายุหากมากกว่าเวลาหมดอายุ
กลับเป็นจริง;
-
-
//รับขนาดในแคช
int สาธารณะคงที่ getCacheSize () {
กลับ cacheMap.size();
-
//รับขนาดของประเภทที่ระบุ
int getCacheSize แบบคงที่สาธารณะ (ประเภทสตริง) {
int k = 0;
ตัววนซ้ำ i = cacheMap.entrySet().ตัววนซ้ำ();
สตริงคีย์;
พยายาม {
ในขณะที่ (i.hasNext()) {
java.util.Map.Entry รายการ = (java.util.Map.Entry) i.next();
คีย์ = (สตริง) entry.getKey();
if (key.indexOf(type) != -1) { //หากตรงกันให้ลบออก
เค++;
-
-
} จับ (ข้อยกเว้นเช่น) {
เช่น printStackTrace();
-
กลับเค;
-
// รับชื่อค่าคีย์ทั้งหมดในวัตถุแคช
ArrayList สาธารณะ getCacheAllkey () {
ArrayList a = ใหม่ ArrayList();
พยายาม {
ตัววนซ้ำ i = cacheMap.entrySet().ตัววนซ้ำ();
ในขณะที่ (i.hasNext()) {
java.util.Map.Entry รายการ = (java.util.Map.Entry) i.next();
ก.เพิ่ม((สตริง) entry.getKey());
-
} catch (ข้อยกเว้น เช่น) {} ในที่สุด {
กลับ;
-
-
//รับชื่อค่าคีย์ของประเภทที่ระบุในวัตถุแคช
ArrayList สาธารณะแบบคงที่ getCacheListkey (ประเภทสตริง) {
ArrayList a = ใหม่ ArrayList();
สตริงคีย์;
พยายาม {
ตัววนซ้ำ i = cacheMap.entrySet().ตัววนซ้ำ();
ในขณะที่ (i.hasNext()) {
java.util.Map.Entry รายการ = (java.util.Map.Entry) i.next();
คีย์ = (สตริง) entry.getKey();
ถ้า (key.indexOf (ชนิด) != -1) {
ก.เพิ่ม(คีย์);
-
-
} catch (ข้อยกเว้น เช่น) {} ในที่สุด {
กลับ;
-
-
-
แพ็คเกจ lhm.hcy.guge.frameset.cache;
-
* <p>ชื่อเรื่อง: </p>
-
* <p>คำอธิบาย: แคช DTO</p>
-
* <p>ลิขสิทธิ์: ลิขสิทธิ์ (c) 2008</p>
-
* <p>บริษัท: </p>
-
* @ผู้เขียน Deepblue 11-11-2551
* @เวอร์ชั่น 1.0
-
แคชคลาสสาธารณะ {
สตริงคีย์ส่วนตัว;//รหัสแคช
ค่าวัตถุส่วนตัว // ข้อมูลแคช
ส่วนตัว long timeOut;//เวลาอัพเดต
บูลีนส่วนตัวหมดอายุแล้ว // ไม่ว่าจะยุติหรือไม่
แคชสาธารณะ () {
ซุปเปอร์();
-
แคชสาธารณะ (คีย์สตริง, ค่าอ็อบเจ็กต์, การหมดเวลานาน, บูลีนหมดอายุแล้ว) {
this.key = คีย์;
this.value = ค่า;
this.timeOut = หมดเวลา;
this.expired = หมดอายุ;
-
สตริงสาธารณะ getKey() {
ส่งคืนกุญแจ;
-
getTimeOut แบบสาธารณะยาว () {
กลับหมดเวลา;
-
วัตถุสาธารณะ getValue() {
ค่าส่งคืน;
-
setKey โมฆะสาธารณะ (สตริงสตริง) {
คีย์ = สตริง;
-
โมฆะสาธารณะ setTimeOut (l ยาว) {
หมดเวลา = l;
-
setValue โมฆะสาธารณะ (วัตถุวัตถุ) {
ค่า = วัตถุ;
-
บูลีนสาธารณะ isExpired() {
การส่งคืนหมดอายุ;
-
โมฆะสาธารณะ setExpired (บูลีน b) {
หมดอายุ = b;
-
-
// คลาสทดสอบ
การทดสอบชั้นเรียน {
โมฆะคงที่สาธารณะ main (String [] args) {
System.out.println(CacheManager.getSimpleFlag("alksd"));
// CacheManager.putCache("abc", แคชใหม่());
// CacheManager.putCache("def", แคชใหม่());
// CacheManager.putCache("ccc", แคชใหม่ ());
// CacheManager.clearOnly("");
// แคช c = แคชใหม่ ();
// สำหรับ (int i = 0; i < 10; i ++) {
// CacheManager.putCache("" + i, c);
-
// CacheManager.putCache("aaaaaaa", c);
// CacheManager.putCache("abchcy;alskd", c);
// CacheManager.putCache("cccccccc", c);
// CacheManager.putCache("abcoqiwhcy", c);
// System.out.println("ขนาดก่อนที่จะลบ: "+CacheManager.getCacheSize());
// CacheManager.getCacheAllkey();
// CacheManager.clearAll("aaaa");
// System.out.println("ขนาดหลังการลบ: "+CacheManager.getCacheSize());
// CacheManager.getCacheAllkey();
-
-
บทความนี้มาจากบล็อก CSDN โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ: http://blog.csdn.net/hello_zhenyu/archive/2009/12/18/5030366.aspx