隨筆-124  評論-49  文章-56  trackbacks-0
           
               摘要:   引言     在web開發中,session是個非常重要的概念。在許多動態網站的開發者看來,session就是一個變量,而且其表現像個黑洞,他只需要將東西在合適的時機放進這個洞里,等需要的時候再把東西取出來。這是開發者對session最直觀的感受,但是黑洞里的景象或者說session內部到底是怎么工作的呢?當筆者向身邊的一些同事或朋友問及相關的更進一...  閱讀全文
          posted @ 2010-02-20 12:48 junly 閱讀(1054) | 評論 (0)編輯 收藏

          表達式意義:

          1.字符

          x    字符 x。例如a表示字符a
          \\    反斜線字符。在書寫時要寫為\\\\。(注意:因為java在第一次解析時,把\\\\解析成正則表達式\\,在第二次解析時再解析為\,所以凡是不是1.1列舉到的轉義字符,包括1.1的\\,而又帶有\的都要寫兩次)
          \0n    帶有八進制值 0的字符 n (0 <= n <= 7)
          \0nn    帶有八進制值 0的字符 nn (0 <= n <= 7)
          \0mnn    帶有八進制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
          \xhh    帶有十六進制值 0x的字符 hh
          \uhhhh    帶有十六進制值 0x的字符 hhhh
          \t    制表符 ('\u0009')
          \n    新行(換行)符 ('\u000A')
          \r    回車符 ('\u000D')
          \f    換頁符 ('\u000C')
          \a    報警 (bell) 符 ('\u0007')
          \e    轉義符 ('\u001B')
          \cx    對應于 x 的控制符
          2.字符類
          [abc]    a、b或 c(簡單類)。例如[egd]表示包含有字符e、g或d。
          [^abc]    任何字符,除了 a、b或 c(否定)。例如[^egd]表示不包含字符e、g或d。
          [a-zA-Z]    a到 z或 A到 Z,兩頭的字母包括在內(范圍)
          [a-d[m-p]]    a到 d或 m到 p:[a-dm-p](并集)
          [a-z&&[def]]    d、e或 f(交集)
          [a-z&&[^bc]]    a到 z,除了 b和 c:[ad-z](減去)
          [a-z&&[^m-p]]    a到 z,而非 m到 p:[a-lq-z](減去)
          3.預定義字符類(注意反斜杠要寫兩次,例如\d寫為\\d)任何字符

          (與行結束符可能匹配也可能不匹配)
          \d    數字:[0-9]
          \D    非數字: [^0-9]
          \s    空白字符:[ \t\n\x0B\f\r]
          \S    非空白字符:[^\s]
          \w    單詞字符:[a-zA-Z_0-9]
          \W    非單詞字符:[^\w]
          4.POSIX 字符類(僅 US-ASCII)(注意反斜杠要寫兩次,例如\p{Lower}寫為\\p{Lower})
          \p{Lower}    小寫字母字符:[a-z]。
          \p{Upper}    大寫字母字符:[A-Z]
          \p{ASCII}    所有 ASCII:[\x00-\x7F]
          \p{Alpha}    字母字符:[\p{Lower}\p{Upper}]
          \p{Digit}    十進制數字:[0-9]
          \p{Alnum}    字母數字字符:[\p{Alpha}\p{Digit}]
          \p{Punct}    標點符號:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
          \p{Graph}    可見字符:[\p{Alnum}\p{Punct}]
          \p{Print}    可打印字符:[\p{Graph}\x20]
          \p{Blank}    空格或制表符:[ \t]
          \p{Cntrl}    控制字符:[\x00-\x1F\x7F]
          \p{XDigit}    十六進制數字:[0-9a-fA-F]
          \p{Space}    空白字符:[ \t\n\x0B\f\r]
          5.java.lang.Character 類(簡單的 java 字符類型)
          \p{javaLowerCase}    等效于 java.lang.Character.isLowerCase()
          \p{javaUpperCase}    等效于 java.lang.Character.isUpperCase()
          \p{javaWhitespace}    等效于 java.lang.Character.isWhitespace()
          \p{javaMirrored}    等效于 java.lang.Character.isMirrored()
          6.Unicode 塊和類別的類
          \p{InGreek}    Greek 塊(簡單塊)中的字符
          \p{Lu}    大寫字母(簡單類別)
          \p{Sc}    貨幣符號
          \P{InGreek}    所有字符,Greek 塊中的除外(否定)
          [\p{L}&&[^\p{Lu}]]     所有字母,大寫字母除外(減去)
          7.邊界匹配器
          ^    行的開頭,請在正則表達式的開始處使用^。例如:^(abc)表示以abc開頭的字符串。注意編譯的時候要設置參數MULTILINE,如 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
          $    行的結尾,請在正則表達式的結束處使用。例如:(^bca).*(abc$)表示以bca開頭以abc結尾的行。
          \b    單詞邊界。例如\b(abc)表示單詞的開始或結束包含有abc,(abcjj、jjabc 都可以匹配)
          \B    非單詞邊界。例如\B(abc)表示單詞的中間包含有abc,(jjabcjj匹配而jjabc、abcjj不匹配)
          \A    輸入的開頭
          \G    上一個匹配的結尾(個人感覺這個參數沒什么用)。例如\\Gdog表示在上一個匹配結尾處查找dog如果沒有的話則從開頭查找,注意如果開頭不是dog則不能匹配。
          \Z    輸入的結尾,僅用于最后的結束符(如果有的話)
          行結束符 是一個或兩個字符的序列,標記輸入字符序列的行結尾。
          以下代碼被識別為行結束符:
          ‐新行(換行)符 ('\n')、
          ‐后面緊跟新行符的回車符 ("\r\n")、
          ‐單獨的回車符 ('\r')、
          ‐下一行字符 ('\u0085')、
          ‐行分隔符 ('\u2028') 或
          ‐段落分隔符 ('\u2029)。
          \z    輸入的結尾
          當編譯模式時,可以設置一個或多個標志,例如
          Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
          下面六個標志都是支持的:
          ‐CASE_INSENSITIVE:匹配字符時與大小寫無關,該標志默認只考慮US ASCII字符。
          ‐UNICODE_CASE:當與CASE_INSENSITIVE結合時,使用Unicode字母匹配
          ‐MULTILINE:^和$匹配一行的開始和結尾,而不是整個輸入
          ‐UNIX_LINES: 當在多行模式下匹配^和$時,只將'\n'看作行終止符
          ‐DOTALL: 當使用此標志時,.符號匹配包括行終止符在內的所有字符
          ‐CANON_EQ: 考慮Unicode字符的規范等價
          8.Greedy 數量詞
          X?    X,一次或一次也沒有
          X*    X,零次或多次
          X+    X,一次或多次
          X{n}    X,恰好 n 次
          X{n,}    X,至少 n 次
          X{n,m}    X,至少 n 次,但是不超過 m 次
          9.Reluctant 數量詞
          X??    X,一次或一次也沒有
          X*?    X,零次或多次
          X+?    X,一次或多次
          X{n}?    X,恰好 n 次
          X{n,}?    X,至少 n 次
          X{n,m}?    X,至少 n 次,但是不超過 m 次
          10.Possessive 數量詞
          X?+    X,一次或一次也沒有
          X*+    X,零次或多次
          X++    X,一次或多次
          X{n}+    X,恰好 n 次
          X{n,}+    X,至少 n 次
          X{n,m}+    X,至少 n 次,但是不超過 m 次
          Greedy,Reluctant,Possessive的區別在于:(注意僅限于進行.等模糊處理時)
          greedy量 詞被看作“貪婪的”,因為它第一次就讀入整個被模糊匹配的字符串。如果第一個匹配嘗試(整個輸入字符串)失敗,匹配器就會在被匹配字符串中的最后一位后退一個字符并且再次嘗試,重復這個過程,直到找到匹配或者沒有更多剩下的字符可以后退為止。根據表達式中使用的量詞,它最后試圖匹配的內容是1 個或者0個字符。
          但是,reluctant量詞采取相反的方式:它們從被匹配字符串的開頭開始,然后逐步地一次讀取一個字符搜索匹配。它們最后試圖匹配的內容是整個輸入字符串。
          最后,possessive量詞總是讀完整個輸入字符串,嘗試一次(而且只有一次)匹配。和greedy量詞不同,possessive從不后退。
          11.Logical 運算符
          XY    X 后跟 Y
          X|Y    X 或 Y
          (X)    X,作為捕獲組。例如(abc)表示把abc作為一個整體進行捕獲
          12.Back 引用
          \n    任何匹配的 nth捕獲組
          捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 ((A)(B(C)))中,存在四個這樣的組:
          1        ((A)(B(C)))
          2        \A
          3        (B(C))
          4        (C)
          在表達式中可以通過\n來對相應的組進行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34cdabcd。
          13.引用
          \    Nothing,但是引用以下字符
          \Q    Nothing,但是引用所有字符,直到 \E。QE之間的字符串會原封不動的使用(1.1中轉義字符的除外)。例如, ab\\Q{|}\\\\E
          可以匹配ab{|}\\
          \E    Nothing,但是結束從 \Q開始的引用
          14.特殊構造(非捕獲)
          (?:X)    X,作為非捕獲組
          (?idmsux-idmsux)     Nothing,但是將匹配標志由 on 轉為 off。比如:表達式 (?i)abc(?-i)def 這時,(?i) 打開不區分大小寫開關,abc 匹配
          idmsux說明如下:
          ‐i CASE_INSENSITIVE :US-ASCII 字符集不區分大小寫。(?i)
          ‐d UNIX_LINES : 打開UNIX換行符
          ‐m MULTILINE :多行模式(?m)
          UNIX下換行為\n
          WINDOWS下換行為\r\n(?s)
          ‐u UNICODE_CASE : Unicode 不區分大小寫。(?u)
          ‐x COMMENTS :可以在pattern里面使用注解,忽略pattern里面的whitespace,以及"#"一直到結尾(#后面為注解)。(?x)例如(?x)abc#asfsdadsa可以匹配字符串abc
          (?idmsux-idmsux:X)     X,作為帶有給定標志 on - off 的非捕獲組。與上面的類似,上面的表達式,可以改寫成為:(?i:abc)def,或者 (?i)abc(?-i:def)
          (?=X)    X,通過零寬度的正 lookahead。零寬度正先行斷言,僅當子表達式 X 在 此位置的右側匹配時才繼續匹配。例如,\w+(?=\d) 表示字母后面跟數字,但不捕獲數字(不回溯)
          (?!X)    X,通過零寬度的負 lookahead。零寬度負先行斷言。僅當子表達式 X 不在 此位置的右側匹配時才繼續匹配。例如,\w+(?!\d) 表示字母后面不跟數字,且不捕獲數字。
          (?<=X)    X,通過零寬度的正 lookbehind。零寬度正后發斷言。僅當子表達式 X 在 此位置的左側匹配時才繼續匹配。例如,(?<=19)99 表示99前面是數字19,但不捕獲前面的19。(不回溯)
          (? (?>X)    X,作為獨立的非捕獲組(不回溯)
          (?=X)與(?>X)的區別在于(?>X)是不回溯的。例如被匹配的字符串為abcm
          當表達式為a(?:b|bc)m是可以匹配的,而當表達式是a(?>b|bc)時是不能匹配的,因為當后者匹配到b時,由于已經匹配,就跳出了非捕獲組,而不再次對組內的字符進行匹配。可以加快速度。

          來自:http://www.aygfsteel.com/Werther/archive/2009/06/10/281198.html

          在JAVA中使用正則表達式時,應該import下面兩個類
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          另外"\"應該被替換成"\\"。

          具體方法是:
          String sql="create table test(id varchar(10) not null)"
          String reg="create\\s+table\\s+.+";
          Pattern p = Pattern.compile(reg);
          Matcher m = p.matcher(sql);
          boolean b = m.matches();

          得到的布爾值表示sql是否匹配正則表達式reg。
          posted @ 2010-02-09 09:47 junly 閱讀(321) | 評論 (0)編輯 收藏
          1 Vector與ArrayList(HashTable/HashMap)
          Vector防止多線程運行,是線程安全的,效率低,安全性高。
          ArrayList在多線程環境下運行,是非線程安全的,效率高,安全性低。
          以下方法可以將ArrayList類標識為線程安全的對象:
          List list=Collections.synchronizedList(new ArrayList());
          2 ArrayList
            對于很大的數組,并且你預料到這個數組將會變得異常龐大,這里給出一個方法優化性能:
            final int N=1000000;
            ArrayList list
          =new ArrayList();
            
          //調用ensureCapacity()方法初始化大小
            list.ensureCapacity(N);
            
          for(int i=0;i<N;i++){
              list.add(obj);
            }

          3 ArrayList與LinkedList(同屬List接口)
            底層實現方法不同:ArrayList通過內部數組結構Object[]實現。
                                                LinkedList類似數據結構中的鏈表對象,通過一系列的內部記錄連接在一起來實現的。
          將一個元素插入到集合中的某個位置時,使用LinkedList比ArrayList快很多,原因是ArrayList插入后其后面所有元素后移一位,而LinkedList只需要添加一個指向頭部的引用即可。
          在集合中按下標查找元素時,使用ArrayList比LinkedList快很多。
          4 String與StringBuffer
          使用append()方法代替"+"運算
          5 字符串的length()方法
          6 charAt()與toCharArray()
          通過charAt()定位字符串時每次都要引起新的檢索過程,更好的辦法是轉化為字符數給,通過數組索引定位。
          7 簡單字符串格式化時,"+"運算優于String.formart()很多。
          posted @ 2010-01-21 18:35 junly 閱讀(358) | 評論 (0)編輯 收藏
               摘要: 1. 基礎選擇器 Basics 名稱 說明 舉例 #id 根據元素Id選擇 $("divId") 選擇ID為divId的元素 ...  閱讀全文
          posted @ 2010-01-21 11:48 junly 閱讀(103961) | 評論 (11)編輯 收藏

          ADOBE CS4 因許可證過期無法啟動,最簡單的解決辦法就是破解執行激活驗證的amtlib.dll文件,用破解了的文件替換,就再也不會連網驗証了。
          可以去以下地址下載已經破解的amtlib.dll文件。
          http://st0p.cn/amtlib.rar

          非常好用!!!!!!!

          完整漢化包http://www.qqpcc.com/down/zh_CN.rar

          部分英文未漢化補丁修正版resources.rar

          好用留個話!


           


           

          posted @ 2010-01-21 09:45 junly 閱讀(1068) | 評論 (3)編輯 收藏
          1 少量的內聯代碼 比  方法調用運行速度快4倍。但對于大量的、重復度高的代碼還是建議使用方法。
          2 final方法編譯器會將該方法的代碼展開插入到調用代碼處,因此運行速度快,提高了效率。同樣final類也可以提高效率。
          3 使用循環語句的幾個建議:
          1)當作數組拷貝操作時,采用System.arraycopy()方法完成拷貝操作。
          2)盡量避免在循環體中調用方法,因為方法調用是比較昂貴的。
          3)最好避免在循環體中存取數組元素,比較好的辦法是在循環體內采用臨時變量,在循環體外更改數組的值。
          4)采用0值作為終結條件。
          5)避免作終結條件比較時采用方法返回值的方式進行判斷,這樣將降低系統性能。
          6)避免在循環體中使用try-catch,最好在在循環體外使用try-catch以提高性能。
          7)在多重循環中,如果有可能,盡量將最長的循環放在最內層,最短的循環放在最外層,以減少循環層間的切換次數。
          8)如果循環體內有if-else類邏輯判斷,并且循環次數很大,最好將if-else類邏輯判斷移到循環體之外,以提高應用性能。







          posted @ 2010-01-20 15:50 junly 閱讀(401) | 評論 (0)編輯 收藏
          字符串比較時,采用.intern()方法將字符串添加到駐留池中,再進行比較,運行速度比equals()方法更快
          String str="張三";
          str
          =str.intern();
          if(str=="張三"){
          System.out.println(
          "相同");
          }
          posted @ 2010-01-20 15:26 junly 閱讀(313) | 評論 (0)編輯 收藏

          要讓Dreamweaver支持jQuery自動提示代碼功能,方法很簡單,下載一個插件—jQuery_API.mxp[點擊下載]。

          在Dreamweaver里依次選擇“命令” -> “擴展管理” -> “安裝擴展” -> …,就會自動安裝了。

          成功后重啟Dreamweaver,就大功告成了。

          點擊下載DW cs4的jQuery語法提示插件:jquery_api_for_dw4

          注意:如果您安裝的是精簡版的Dreamweaver,那么請先下載Adobe Extension Manager 插件管理器[點擊下載],我自己是cs3的,因此該處鏈接也是適用于cs3,請根據自己相應版本選擇下載。

          posted @ 2010-01-20 12:38 junly 閱讀(16413) | 評論 (5)編輯 收藏
          這是struts2的一個攔截器錯誤
          首先
          查看struts的XML中對應action里配置是否有<result name="input">/AddProducts.jsp</result>
          如果有說明在攔截圖器鏈中某個攔截器出錯,大多情況下是
          數據類型轉換錯誤!
          posted @ 2010-01-14 19:50 junly 閱讀(1066) | 評論 (0)編輯 收藏

          webgame


          posted @ 2009-12-30 21:29 junly 閱讀(265) | 評論 (0)編輯 收藏
          僅列出標題
          共18頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 冀州市| 刚察县| 南木林县| 湛江市| 托克逊县| 中阳县| 阿拉尔市| 普兰店市| 怀仁县| 即墨市| 博罗县| 板桥市| 青岛市| 高邮市| 南城县| 左贡县| 小金县| 沂水县| 怀集县| 洛宁县| 德州市| 巢湖市| 前郭尔| 白沙| 景洪市| 湘阴县| 阿拉善右旗| 蒲江县| 双鸭山市| 肃北| 黎川县| 沐川县| 轮台县| 温州市| 南溪县| 台东县| 德清县| 罗山县| 康定县| 西林县| 沙湾县|