การแคช หมายความว่าวัตถุที่โปรแกรมหรือระบบมักจะเรียกว่าจะถูกเก็บไว้ในหน่วยความจำและสามารถเรียกได้อย่างรวดเร็วเมื่อใช้ครั้งเดียวโดยไม่ต้องสร้างอินสแตนซ์ที่ซ้ำกันใหม่ การทำเช่นนั้นสามารถลดค่าใช้จ่ายของระบบและปรับปรุงประสิทธิภาพของระบบ
แคชสามารถแบ่งออกเป็นสองประเภทเป็นหลัก:
1. ผ่านการแคชไฟล์ตามชื่อหมายถึงการแคชไฟล์หมายถึงการจัดเก็บข้อมูลบนดิสก์ไม่ว่าคุณจะอยู่ในรูปแบบ XML รูปแบบไฟล์ไฟล์ที่เป็นอนุกรมหรือรูปแบบไฟล์อื่น ๆ
2. แคชหน่วยความจำนั่นคือใช้แผนที่คงที่ในชั้นเรียนและทำการเพิ่มเติมการลบและการค้นหาแผนที่นี้เป็นประจำ
นำเข้า Java.util.*; // คำอธิบาย: จัดการแคช // ฟังก์ชั่นที่ขยายได้: เมื่อ Chche มาถึงหน่วยความจำล้นบางส่วนของวัตถุแคชที่เร็วที่สุดจะต้องล้างซึ่งต้องมีการประหยัดเวลาการสร้างสำหรับแต่ละแคชคลาสแคชแคชแมนเจอร์ // ตัวสร้างอินสแตนซ์เดี่ยว cacheManager () {super (); } // รับ Boolean Cache Public Static Boolean getSimpleFlag (คีย์สตริง) {ลอง {return (boolean) cachemap.get (คีย์); } catch (nullpointerexception e) {return false; }} public static long getServerStartDt (คีย์สตริง) {ลอง {return (ยาว) cachemap.get (คีย์); } catch (Exception Ex) {return 0; }} // ตั้งค่า Boolean Cache Public Synchronized SetsimpleFlag (คีย์สตริง, ธงบูลีน) {ถ้า (Flag && getSimpleFlag (คีย์)) {// ถ้าเป็นจริง } else {cachemap.put (คีย์, ธง); กลับมาจริง; }} public synchronized boolean setsimpleFlag (คีย์สตริง, Long ServerBegrundt) {ถ้า (cachemap.get (คีย์) == null) {cachemap.put (คีย์, ServerBegrundt); กลับมาจริง; } else {return false; }} // รับแคช วิธีการแบบคงที่แบบซิงโครไนซ์แคชแบบคงที่แบบคงที่ getCache (คีย์สตริง) {return (แคช) cachemap.get (คีย์); } // ตัดสินว่ามีแคชส่วนตัวที่ซิงโครไนซ์บูลีน Hascache (คีย์สตริง) {return cachemap.containskey (คีย์); } // ล้าง caches ทั้งหมดสาธารณะที่ซิงโครไนซ์คงที่ void clearall () {cachemap.clear (); } // ล้างแคชบางประเภทและตรวจสอบว่าคีย์และประเภทที่เข้ามาตรงกับโมฆะคงที่แบบคงที่สาธารณะ (ประเภทสตริง) {iterator i = cachemap.entryset () iterator (); คีย์สตริง; arrayList arr = new ArrayList (); ลอง {ในขณะที่ (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (string) entry.getKey (); if (key.startswith (type)) {// ถ้าตรงกับให้ลบ arr.add (คีย์); }} สำหรับ (int k = 0; k <arr.size (); k ++) {clearonly (arr.get (k)); }} catch (Exception ex) {ex.printstacktrace (); }} // ล้างแคชที่ระบุโมฆะแบบสแตติกแบบสแตติกที่ระบุ (คีย์สตริง) {cachemap.remove (คีย์); } // โหลดโมฆะแบบสแตติกแบบสแตติกของแคช (คีย์สตริง, แคช obj) {cachemap.put (คีย์, obj); } // รับข้อมูลแคชแคชสาธารณะคงที่ getCacheInfo (คีย์สตริง) {ถ้า (hascache (คีย์)) {แคชแคช = getCache (คีย์); if (cacheexpired (cache)) {// call เพื่อพิจารณาว่าจะยกเลิกวิธี cache.setexpired (จริง); } ส่งคืนแคช; } else return null; } // โหลดแคชข้อมูลสาธารณะโมฆะคงที่ putcacheInfo (คีย์สตริง, แคช obj, ยาว dt, บูลีนหมดอายุ) {แคชแคช = แคชใหม่ (); CACHE.SETKEY (กุญแจ); cache.settimeout (dt + system.currenttimeMillis ()); // ตั้งค่าระยะเวลาในการอัปเดตแคชแคช SetValue (OBJ); cache.setexpired (หมดอายุ); // เมื่อแคชถูกโหลดโดยค่าเริ่มต้นสถานะการเลิกจ้างคือ cachemap.put (คีย์, แคช); } // การเขียนใหม่วิธีการโหลดแคชวิธีการสาธารณะโมฆะคงที่ putcacheInfo (คีย์สตริงแคช obj, dt ยาว) {แคชแคช = แคชใหม่ (); CACHE.SETKEY (กุญแจ); cache.settimeout (dt+system.currenttimeMillis ()); CACHE.SetValue (OBJ); cache.setexpired (เท็จ); cachemap.put (คีย์, แคช); } // ตัดสินว่าแคชจะยุติบูลีนสาธารณะ cacheexpired (แคชแคช) {ถ้า (null == แคช) {// แคชที่เข้ามาไม่ได้ส่งคืนเท็จ; } long nowdt = system.currentTimeMillis (); // จำนวนมิลลิวินาทีปัจจุบันในระบบ Long Cachedt = cache.getTimeOut (); // จำนวนมิลลิวินาทีที่หมดอายุในแคชถ้า (cachedt <= 0 || cachedt> nowdt) {// เมื่อเวลาหมดอายุน้อยกว่าหรือเท่ากับศูนย์หรือเวลาหมดอายุมากกว่าเวลาปัจจุบัน } else {// เวลาหมดอายุมากกว่าเวลาหมดอายุนั่นคือการส่งคืนที่หมดอายุอย่างแท้จริง; }} // รับขนาดในแคชสาธารณะคงที่ int getCachesize () {return cachemap.size (); } // รับขนาดของประเภทที่ระบุสาธารณะ int int getCachesize (ประเภทสตริง) {int k = 0; ตัววนซ้ำ i = cachemap.entryset (). iterator (); คีย์สตริง; ลอง {ในขณะที่ (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (string) entry.getKey (); if (key.indexof (type)! = -1) {// ถ้ามันตรงกันลบ K ++; }}} catch (Exception Ex) {Ex.PrintStackTrace (); } return k; } // รับชื่อคีย์-ค่าทั้งหมดในวัตถุแคชสาธารณะ arraylist public arraylist getCacheAllkey () {arraylist a = new ArrayList (); ลอง {iterator i = cachemap.entryset (). iterator (); ในขณะที่ (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); A.Add ((สตริง) entry.getKey ()); }} catch (Exception Ex) {} ในที่สุด {return a; }} // รับชื่อคีย์ชื่อของประเภทที่ระบุใน Cache Object Public Static Static ArrayList getCachelistKey (ประเภทสตริง) {arrayList a = new ArrayList (); คีย์สตริง; ลอง {iterator i = cachemap.entryset (). iterator (); ในขณะที่ (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (string) entry.getKey (); if (key.indexof (type)! = -1) {a.add (คีย์); }}} catch (Exception Ex) {} ในที่สุด {return a; }}} แพ็คเกจ lhm.hcy.guge.fraseet.cache; แคชคลาสสาธารณะ {คีย์สตริงส่วนตัว; // CACHE ID ค่าวัตถุส่วนตัว; // ข้อมูลแคชข้อมูลส่วนตัวเวลาส่วนตัว; // อัปเดตเวลาบูลีนส่วนตัวหมดอายุ; // อย่ายุติแคชสาธารณะ () {super (); } แคชสาธารณะ (คีย์สตริง, ค่าวัตถุ, การหมดเวลายาว, บูลีนหมดอายุ) {this.key = key; this.value = ค่า; this.timeout = หมดเวลา; this.expired = หมดอายุ; } Public String getKey () {return key; } Public Long GetTimeOut () {กลับหมดเวลา; } วัตถุสาธารณะ getValue () {ค่าคืน; } โมฆะสาธารณะ setKey (สตริงสตริง) {key = string; } โมฆะสาธารณะ settimeout (ยาว l) {timeout = l; } โมฆะสาธารณะ setValue (วัตถุวัตถุ) {value = object; } บูลีนสาธารณะ isExpired () {return หมดอายุ; } โมฆะสาธารณะ setexpired (บูลีน b) {Expired = B; }} // คลาสทดสอบ, การทดสอบคลาส {โมฆะคงที่สาธารณะหลัก (สตริง [] 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 ("aaaaaaaa", 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 (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น