<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ゞ沉默是金ゞ

    魚離不開水,但是沒有說不離開哪滴水.
    posts - 98,comments - 104,trackbacks - 0
    The processing costs for selecting a value from a database-table are fairly high compared to the costs having the value already in memory. So it seems preferrable to use some smart caching-mechanism that keeps often used values in your application instead of retrieving these values from resources somewhere ‘outside’.

    Most frameworks have at least one cache implementation onboard, but there also exist several other implementations of caches like e.g. EHCache. Even ordinary HashMaps/Hashtables can serve as caches also.

    A critial factor when using caches in Java is the size of the cache: when your cache grows too big, the Java Garbage Collector has to cleanup more often (which consumes time) or your application even crashes with a java.lang.OutOfMemoryError.

    One way to control the memory-consumption of caches is to use SoftReferences in HashMaps/Hashtables, another one is to throw away old or unused content by implementing a caching-strategy like e.g. LRU.

    A simple LRU-cache already ships within the components of the Java Standard Library: the LinkedHashMap. All you have to do is to tell your application whether the eldest entry in the map should be retained or removed after a new entry is inserted. Additionally a special constructor has to be used that defines the orderingMode for the map: ‘true’ for access-order (LRU), ‘false’ for insertion-order.

    Suppose we want to cache a mapping of String-Names to String-Ids with a maximum size of 20480 entries.
    How that can be done is shown by the example below with the use of an Anonymous Inner Class that overrides the removeEldestEntry-method of the LinkedHashMap.

    import com.fmr.pzn.wmb.utils.Vaidator;

    import java.util.Collections;
    import java.util.LinkedHashMap;
    import java.util.Map;

    public final class SampleCache {

        private static final float LOAD_FACTOR = 0.75f;

        private static final int CACHE_MAX = 20480;

        private static final int CACHE_INIT = 10000;

        private static final LinkedHashMap<String, String> CACHE_MAP = new LinkedHashMap<String, String>(CACHE_INIT,
                LOAD_FACTOR, true) {

            private static final long serialVersionUID = 628057782352519437L;

            @Override
            protected boolean removeEldestEntry(Entry<String, String> eldest) {
                return size() > SampleCache.CACHE_MAX;
            }

        };


        private SampleCache() {
            super();
        }

        public static void putid(final String id, final String name) {
            if (isEmpty(id) || isEmpty(name)) {
                return;
            }

            CACHE_MAP.put(id, name);
        }

        public static String getByid(final String id) {
            return CACHE_MAP.get(id);
        }

        public static boolean isEmpty(final String field ){
            boolean isEmpty = false;
            if(field == null || field.isEmpty())
            {
                isEmpty = true;
            }
            return isEmpty;
        }
    }
    And based on the high performance environment, this cache will not thread safe. How to fix this small issue? we can use Collections.synchronizedMap() to synchronized cache. like:

        private static final Map<String, String> CACHE_MAP = Collections.synchronizedMap(new LinkedHashMap<String, String>(CACHE_INIT,
                LOAD_FACTOR, true) {

            private static final long serialVersionUID = 628057782352519437L;

            @Override
            protected boolean removeEldestEntry(Entry<String, String> eldest) {
                return size() > SampleCache.CACHE_MAX;
            }

        });

    Now, there is one small cache exists in your application.
    posted on 2012-08-07 16:11 ゞ沉默是金ゞ 閱讀(429) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩电影免费在线| 亚洲AV无码AV日韩AV网站| 免费大香伊蕉在人线国产| 91香蕉国产线观看免费全集| 女人裸身j部免费视频无遮挡| 亚洲国产日韩在线一区| 亚洲AV无码专区电影在线观看| 国产成人免费网站在线观看| 国产又黄又爽又猛免费app| 久99久精品免费视频热77| 成人片黄网站色大片免费观看cn| 黄色一级视频免费观看| 亚洲欧洲无码一区二区三区| 亚洲综合色区中文字幕| 亚洲香蕉免费有线视频| 亚洲av无码专区在线播放 | 亚洲人成日本在线观看| 亚洲综合婷婷久久| 亚洲大片在线观看| 亚洲AV无码一区二区三区系列| 中国亚洲女人69内射少妇| 亚洲av午夜精品一区二区三区 | 国产精品亚洲专区在线观看| 亚洲视频在线观看地址| 亚洲免费在线播放| 亚洲国产精品人久久| 亚洲AV乱码久久精品蜜桃| 亚洲AV无码精品色午夜果冻不卡 | 中国一级特黄高清免费的大片中国一级黄色片 | 一级毛片免费观看不收费| 黄页网站在线视频免费| 美女扒开尿口给男人爽免费视频 | 免费看国产精品3a黄的视频| 国产成人精品免费午夜app| 亚洲一区在线免费观看| 免费影院未满十八勿进网站| 99国产精品永久免费视频| 成人午夜免费福利| 免费国产一级特黄久久| 国产亚洲精久久久久久无码AV| 亚洲午夜未满十八勿入网站2|