<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲精品天堂| 亚洲精品无码成人AAA片| 亚洲免费人成视频观看| 国产成人yy免费视频| 亚洲精品中文字幕无码AV| 免费人成在线观看网站品爱网 | 亚洲一级在线观看| 无码av免费毛片一区二区| 亚洲色一区二区三区四区| 午夜一级毛片免费视频| 色偷偷亚洲男人天堂| 亚洲第一永久AV网站久久精品男人的天堂AV | 四虎成人免费网站在线| 亚洲AV成人无码网天堂| 一本久到久久亚洲综合| 国产真人无码作爱免费视频 | 日韩在线天堂免费观看| 亚洲精品无码少妇30P| 午夜国产大片免费观看| 中文字幕免费在线看| 国产亚洲精品精华液| 亚洲黄色免费网址| 亚洲中文字幕精品久久| 亚洲成a人片在线观看国产| 久久国产精品成人免费 | 在线观看亚洲电影| 亚洲伊人久久精品影院| 99爱视频99爱在线观看免费| 亚洲av无码片在线观看| 亚洲日韩在线第一页| 久久青草免费91线频观看站街| 亚洲最大在线观看| 免费va在线观看| 人妻无码一区二区三区免费 | 三年片在线观看免费大全电影| 亚洲一区免费在线观看| 亚洲男女内射在线播放| 182tv免费视视频线路一二三| 亚洲精品无码av中文字幕| 亚洲精品无码午夜福利中文字幕 | 国产av天堂亚洲国产av天堂|