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

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

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

    不可不說
    隨心所欲,無往不利!
    posts - 88,  comments - 92,  trackbacks - 0
    在研究SS2的時候,把Source存放到數據庫中,進行角色配置,SS2把這些資源角色讀取到一個Map中
    在得到一個URL請求時,使用這個URL遍歷這個Map,查找是否存在這個Key,如果有,則取出對應的角色。
    問題就在這個遍歷Map上,源代碼如下
        private ConfigAttributeDefinition lookupUrlInMap(Map requestMap, String url) {
            Iterator entries 
    = requestMap.entrySet().iterator();

            
    while (entries.hasNext()) {
                Map.Entry entry 
    = (Map.Entry) entries.next();
                Object p 
    = entry.getKey();
                
    boolean matched = urlMatcher.pathMatchesUrl(p, url);

                
    if (logger.isDebugEnabled()) {
                    logger.debug(
    "Candidate is: '" + url + "'; pattern is " + p + "; matched=" + matched);
                }

                
    if (matched) {
                    
    return (ConfigAttributeDefinition) entry.getValue();
                }
            }

            
    return null;
        }
    這個Method中一上來就作遍歷循環,為什么不先利用Map的特性直接先取一次,如果取得到,直接就返回了,
    如果取不到,再遍歷查找,這樣可以提高命中率,從而提高性能,如果找不到,這一次的Map查找性能應該
    也不是很低吧?
        private ConfigAttributeDefinition lookupUrlInMap(Map requestMap, String url) {
           
    ConfigAttributeDefinition cad = (ConfigAttributeDefinition)requestMap.get(url);
            if(cad != null) {
                return cad;
            }
              
            Iterator entries = requestMap.entrySet().iterator();

            
    while (entries.hasNext()) {
                Map.Entry entry 
    = (Map.Entry) entries.next();
                Object p 
    = entry.getKey();
                
    boolean matched = urlMatcher.pathMatchesUrl(p, url);

                
    if (logger.isDebugEnabled()) {
                    logger.debug(
    "Candidate is: '" + url + "'; pattern is " + p + "; matched=" + matched);
                }

                
    if (matched) {
                    
    return (ConfigAttributeDefinition) entry.getValue();
                }
            }

            
    return null;
        }

    當然,這要權衡系統URL配置的特性,諸如xxx*這種類型的配置多的話,還是原來的方式快一點,如果直接xxx
    這種方式多得話,我說的方式就要快一些。
    總之,沒有最好,只有更好!



    posted on 2008-09-02 21:04 藍劍 閱讀(1238) 評論(1)  編輯  收藏

    FeedBack:
    # re: Spring Security 2資源-角色查找源碼研究及性能改進[未登錄]
    2008-09-03 09:22 | Hibernating
    看過你的評論了,能具體說說在2.0應該怎么做嗎?我也事參照1.x實現的。  回復  更多評論
      

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


    網站導航:
     


    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325080
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人精品免费大全| 久久亚洲2019中文字幕| 亚洲一区二区三区偷拍女厕| 中文文字幕文字幕亚洲色| 嫩草影院在线播放www免费观看| 天天拍拍天天爽免费视频| 亚洲精品影院久久久久久| 久久99热精品免费观看动漫| 亚洲精品无码mv在线观看网站| 一级毛片a女人刺激视频免费| 亚洲乱码中文字幕手机在线| 黄页网站在线免费观看| 国产免费资源高清小视频在线观看| 亚洲va精品中文字幕| 四虎永久在线精品免费网址| 亚洲一区二区三区免费在线观看| 亚洲成AⅤ人影院在线观看| www成人免费观看网站| 亚洲图片中文字幕| 成人免费视频88| 香蕉视频免费在线播放| 亚洲电影在线免费观看| 国产亚洲精品高清在线| 日韩精品视频免费观看| 免费亚洲视频在线观看| 2048亚洲精品国产| 久久久久国色av免费看| 美女视频黄视大全视频免费的| 亚洲视频欧洲视频| 白白国产永久免费视频| 久青草国产免费观看| 精品丝袜国产自在线拍亚洲| 亚洲产国偷V产偷V自拍色戒| 国产精品怡红院永久免费| 亚洲18在线天美| 亚洲日本精品一区二区| 人禽杂交18禁网站免费| 久久久久久久久久国产精品免费| 成人免费夜片在线观看| 亚洲电影中文字幕| 国产成人高清精品免费鸭子|