<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 藍劍 閱讀(1241) 評論(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)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325908
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: xvideos永久免费入口| 亚洲国产成人一区二区精品区| 欧美日韩国产免费一区二区三区| 久久免费高清视频| 青柠影视在线观看免费高清 | 亚洲欧洲中文日韩久久AV乱码| 日韩精品视频免费网址| 久久精品亚洲综合专区| 成年人免费网站在线观看| 男人的好看免费观看在线视频| 7723日本高清完整版免费| 国产精品视频永久免费播放| 无码永久免费AV网站| 精品国产免费一区二区| 免费v片视频在线观看视频| 亚洲成a人片在线观看老师| 亚洲日本中文字幕一区二区三区 | 91精品免费在线观看| 麻豆一区二区免费播放网站| 无人在线观看完整免费版视频| 最新中文字幕电影免费观看| 免费鲁丝片一级观看| 免费人成网站在线高清| 亚洲天堂中文字幕在线| 婷婷久久久亚洲欧洲日产国码AV| 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产精品久久免费| 成人无码区免费视频观看| 国产精品色午夜视频免费看| 亚洲成av人片一区二区三区| 亚洲香蕉成人AV网站在线观看| 亚洲一区二区三区日本久久九| xxx毛茸茸的亚洲| 久久无码av亚洲精品色午夜 | 亚洲人6666成人观看| 亚洲精品精华液一区二区| 一级人做人爰a全过程免费视频| 好紧我太爽了视频免费国产| 无码精品A∨在线观看免费 | 伊人久久大香线蕉免费视频| 2022久久国产精品免费热麻豆|