<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存放到數(shù)據(jù)庫中,進行角色配置,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中一上來就作遍歷循環(huán),為什么不先利用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;
        }

    當然,這要權衡系統(tǒng)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實現(xiàn)的。  回復  更多評論
      

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


    網(wǎng)站導航:
     


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

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325261
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品无码中文lv| 亚洲欧美成aⅴ人在线观看| 亚洲精品国产精品乱码不99 | 一级一片免费视频播放| 亚洲天堂一区二区三区| 国产小视频免费观看| 拔擦拔擦8x华人免费久久| 亚洲精品国产精品国自产观看| 国产亚洲真人做受在线观看| 精品视频免费在线| 亚洲成a人片7777| 一区二区三区免费视频网站| 性做久久久久久久免费看| 亚洲精品国产av成拍色拍| 国产午夜精品久久久久免费视 | 亚洲va成无码人在线观看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲人成网站日本片| 无码欧精品亚洲日韩一区| 久久青青草原亚洲av无码app| 亚洲av日韩av激情亚洲| 亚洲精品乱码久久久久蜜桃 | 日韩免费一区二区三区| 亚洲日韩精品国产3区| 最新猫咪www免费人成| 国产免费av一区二区三区| 亚洲国产精品乱码一区二区 | 卡一卡二卡三在线入口免费| 亚洲导航深夜福利| 久久国产免费福利永久| 亚洲国产精品白丝在线观看| 无限动漫网在线观看免费| 亚洲人成网站在线观看播放青青| 手机在线看永久av片免费| 亚洲一级二级三级不卡| 亚洲精品在线免费观看| 亚洲视频在线观看2018| 亚洲精品在线免费观看| 色哟哟国产精品免费观看| 免费A级毛片无码A∨免费| 亚洲久悠悠色悠在线播放|