캐싱은 프로그램이나 시스템 호출이 종종 호출되는 객체가 메모리에 저장되며 새로운 중복 인스턴스를 생성하지 않고 한 번 사용하면 빠르게 호출 할 수 있음을 의미합니다. 그렇게하면 시스템 오버 헤드를 줄이고 시스템 효율성을 향상시킬 수 있습니다.
캐시는 주로 두 가지 범주로 나눌 수 있습니다.
1. 이름에서 알 수 있듯이 파일 캐싱을 통해 파일 캐싱은 XML 형식, 직렬화 된 파일 DAT 형식 또는 기타 파일 형식이든 디스크에 데이터를 저장하는 것을 말합니다.
2. 메모리 캐시, 즉 클래스에서 정적 맵을 구현 하고이 맵에서 정기적 인 추가, 삭제 및 검색을 수행합니다.
java.util.*; // 설명 : 캐시 관리 // Extensible Functions : CHCHE가 메모리 오버 플로우에 도달하면 가장 빠른 캐시 객체 중 일부를 지워야하며 각 캐시 객체에 대한 생성 시간을 저장해야합니다. 공개 클래스 CacheManager {private static hashmap cachemap = new Hashmap (); // 단일 인스턴스 생성자 private cachemanager () {super (); } // 부울 캐시 가져 오기 공개 정적 부울 getSimpleflag (문자열 키) {try {return (boolean) cachemap.get (key); } catch (nullPointerException e) {return false; }} public static long getServerstartdt (문자열 키) {try {return (long) cachemap.get (key); } catch (예외 예) {return 0; }} // 부울 캐시 세트 공개 동기화 된 정적 부울 setSimpleflag (문자열 키, 부울 플래그) {if (flag && getsimpleflag (key)) {// true, overwrite가 거짓으로 반환 할 수 없습니다. } else {cachemap.put (키, 플래그); 진실을 반환하십시오. }} public synchronized static boolean setsimpleflag (String key, long serverbegrundt) {if (cachemap.get (key) == null) {cachemap.put (key, serverbegrundt); 진실을 반환하십시오. } else {return false; }} // 캐시를 얻습니다. 동기화 된 정적 메소드 개인 동기화 된 정적 캐시 getCache (String Key) {return (cache) cachemap.get (key); } // 캐시 개인 동기화 된 정적 부울 Hascache (문자열 키)가 있는지 판단합니다. {return cachemap.containskey (key); } // 모든 캐시를 지우므로 공개 동기화 된 정적 void clearall () {cachemap.clear (); } // 특정 유형의 캐시를 지우고 키와 들어오는 유형이 공개 동기화 된 정적 void clearall (문자열 유형) {iterator i = cachemap.entryset (). iterator (); 문자열 키; ArrayList ARR = New ArrayList (); try {while (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (문자열) entry.getKey (); if (key.startSwith (type)) {// 일치하는 경우 arr.add (key)를 삭제합니다. }} for (int k = 0; k <arr.size (); k ++) {clearonly (arr.get (k)); }} catch (예외 예) {ex.printstacktrace (); }} // 지정된 캐시를 지우십시오 public synchronized static void clearonly (String key) {cachemap.remove (key); } // 캐시를로드 공개 STATIC VOID PUTCACHE (String Key, Cache OBJ) {CacheMap.put (key, obj); } // 캐시 정보 가져 오기 공개 정적 캐시 getCacheInfo (String key) {if (hascache (key)) {캐시 캐시 = getCache (키); if (cacheexpired (cache)) {// 메소드를 종료할지 여부를 결정하기 위해 호출 .setexpired (true); } 반환 캐시; } else return null; } // 캐시 정보로드 CACHE 정보 공개 정적 무효 PUTCACHEINFO (문자열 키, 캐시 OBJ, LONG DT, 부울 만료) {캐시 캐시 = 새 캐시 (); cache.setkey (키); cache.settimeout (dt + system.currenttimemillis ()); // 캐시 캐시 업데이트 시간 설정 (OBJ); cache.setexpired (만료); // 캐시가 기본적으로로드되면 종료 상태는 False Cachemap.put (키, 캐시)입니다. } //로드 캐시 정보 메소드를 다시 작성하십시오. 공개 정적 무효 PutCacheInfo (String Key, Cache OBJ, Long DT) {캐시 캐시 = 새 캐시 (); cache.setkey (키); cache.settimeout (dt+system.currenttimemillis ()); cache.setValue (OBJ); cache.setexpired (false); Cachemap.put (키, 캐시); } // 캐시가 공개 정적 부울 Cacheexpired (캐시 캐시)를 종료하는지 판단합니다. {if (null == 캐시) {// 들어오는 캐시가 존재하지 않습니다. } long nowdt = System.CurrentTimeMillis (); // 시스템의 현재 밀리 초의 현재 수는 long cachedt = cache.gettimeout (); // (cachedt <= 0 || cachedt> nowdt) if cache에서 만료 된 밀리 초의 수 {// 만료 시간이 0보다 작거나 같은 경우, 만료 시간이 현재 시간보다 크면 false return false입니다. } else {// 만료 시간은 만료 시간보다 큽니다. 즉, 만료 된 return true; }} // 캐시에서 크기를 가져옵니다 public static int getCachesize () {return cachemap.size (); } // 지정된 유형의 크기를 가져옵니다 public static int getCachesize (문자열 유형) {int k = 0; 반복자 i = cachemap.entryset (). iterator (); 문자열 키; try {while (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (문자열) entry.getKey (); if (key.indexof (type)! = -1) {// 일치하는 경우 k ++를 삭제합니다. }}} catch (예외 예) {ex.printstacktrace (); } return k; } // 캐시 객체에서 모든 키 값 이름을 가져옵니다. 공개 정적 배열리스트 getCachealLkey () {arrayList a = new ArrayList (); {iterator i = cachemap.entryset (). iterator (); while (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); a.add ((string) entry.getKey ()); }} catch (예외 예) {} 마침내 {return a; }} // 캐시 객체에서 지정된 유형의 키 값 이름 가져 오기 공개 정적 배열리스트 getCachelistKey (문자열 유형) {arrayList a = new arrayList (); 문자열 키; {iterator i = cachemap.entryset (). iterator (); while (i.hasnext ()) {java.util.map.entry entry = (java.util.map.entry) i.next (); key = (문자열) entry.getKey (); if (key.indexof (type)! = -1) {a.add (key); }}} catch (예외) {} 마침내 {return a; }}} 패키지 lhm.hcy.guge.frameset.cache; 공개 클래스 캐시 {개인 문자열 키; // 캐시 ID 비공개 개체 값; // 캐시 데이터 비공개 긴 타임 아웃; // 업데이트 시간 개인 부울이 만료되었습니다. // public cache () {super (); } public Cache (문자열 키, 객체 값, 긴 타임 아웃, 부울 만료) {this.key = 키; this.value = value; this.timeout = 타임 아웃; this.expired = 만료; } public String getKey () {return 키; } public long gettimeout () {return timeout; } public Object getValue () {return 값; } public void setkey (String String) {key = String; } public void settimeout (long l) {timeout = l; } public void setValue (Object Object) {value = Object; } public boolean isexpired () {return 만료; } public void setexpired (부울 b) {xpreired = b; }} // 테스트 클래스, 클래스 테스트 {public static void main (String [] args) {System.out.println (cachemanager.getSimpleflag ( "alksd")); // cachemanager.putCache ( "abc", new Cache ()); // cachemanager.putCache ( "def", new Cache ()); // cachemanager.putCache ( "ccc", new Cache ()); // 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을 더 지원하기를 바랍니다.