Cache4J–緩衝策略

來源:互聯網
上載者:User

原文: http://blog.sina.com.cn/s/blog_48a45b950100f3ht.html

 

Cache4J目前支援三種緩衝策略:FIFO、LFU和LRU,利用FIFOComparator、LFUComparator和LRUComparator這三個比較子進行實現。這三個實現了java.util.Comparator介面

利用該介面提供的compare方法對緩衝器中的緩衝對象進行比較、選擇和淘汰。可以通過實現Comparator介面來實現自訂的緩衝策略。
     
LRU  - Least Recently Used, 沒有被使用時間最長的。
LFU  - Least Frequenty Used, 一定時間段內使用次數最少的。
FIFO - First In First Out, 先進先出策略。

FIFOComparator:先進先出策略是根據緩衝對象的建立時間來比較的。

public class FIFOComparator implements Comparator {

             public int compare(Object o1, Object o2) {

                 CacheObject co1 = (CacheObject)o1;

                 CacheObject co2 = (CacheObject)o2;

                 returnco1.getCreateTime()<co2.getCreateTime() ? -1:

co1.getCreateTime()==co2.getCreateTime() ?

                       (co1.getId()<co2.getId()?-1:(co1.getId()==co2.getId()?0:1)):1;

             }

             public boolean equals(Object obj) {

                 return obj==null ? false : (obj instanceof FIFOComparator);

             }

}


LFUComparator:最近最不常用使用是根據總的訪問次數進行比較的。

public class LFUComparator implements Comparator {

             public int compare(Object o1, Object o2) {

                 CacheObject co1 = (CacheObject)o1;

                 CacheObject co2 = (CacheObject)o2;

                 returnco1.getAccessCount()<co2.getAccessCount() ? -1 :

co1.getAccessCount()==co2.getAccessCount() ?

                    (co1.getId()<co2.getId()? -1:(co1.getId()==co2.getId()?0:1)):1;

             }

             public boolean equals(Object obj) {

                 return obj==null ? false : (obj instanceof LFUComparator);

             }

}


LRUComparator:最近最少使用是根據上次訪問的時間進行比較的。

public class LRUComparator implements Comparator {

             public int compare(Object o1, Object o2) {

                 CacheObject co1 = (CacheObject)o1;

                 CacheObject co2 = (CacheObject)o2;

                 returnco1.getLastAccessTime()<co2.getLastAccessTime() ? -1 :

                    co1.getLastAccessTime()==co2.getLastAccessTime() ?

                    (co1.getId()<co2.getId()?-1:(co1.getId()==co2.getId()?0:1)):1;

             }

             public boolean equals(Object obj) {

                 return obj==null ? false : (obj instanceof LRUComparator);

             }

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.