<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

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕日韩亚洲| 久久久亚洲欧洲日产国码aⅴ| 一级毛片免费在线播放| 亚洲中文久久精品无码ww16| 久久精品国产免费观看| 国产综合激情在线亚洲第一页| 亚洲乳大丰满中文字幕| 99re热免费精品视频观看| 一区二区三区视频免费| 亚洲第一网站免费视频| 四虎1515hm免费国产| 午夜爽爽爽男女免费观看影院| 亚洲狠狠婷婷综合久久| 亚洲精品无码精品mV在线观看| 成人毛片18女人毛片免费视频未 | 成年女人18级毛片毛片免费观看| 四虎影视久久久免费| 亚洲精品网站在线观看你懂的| 亚洲国产精品一区二区第一页免| 亚洲视频在线免费播放| 一级做a爱过程免费视| 亚洲AV无码久久久久网站蜜桃| 亚洲色精品88色婷婷七月丁香| 毛片免费观看的视频| 久艹视频在线免费观看| 免费国产va在线观看| 亚洲国产综合第一精品小说| 亚洲中文字幕在线第六区| 曰皮全部过程视频免费国产30分钟 | 亚洲精品中文字幕无码蜜桃| 最新猫咪www免费人成| 免费观看久久精彩视频| 一区二区三区免费电影| 久久亚洲中文无码咪咪爱| 91亚洲一区二区在线观看不卡| 中文字幕精品无码亚洲字| 免费大黄网站在线观看| 免费看无码自慰一区二区| 1000部禁片黄的免费看 | 免费久久精品国产片香蕉| 中文字幕无码成人免费视频|