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

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

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

    今天看的代碼是數據池類,對其中的Hashtable,Vector和Properties三個類返回Enumeration類型的方法注意了一下。
    Hashtable返回枚舉類型的方法有elements()返回此哈希表中的值的枚舉keys()返回此哈希表中的鍵的枚舉。
    Vector有elements()返回此向量的組件的枚舉
    Properties有propertyNames()返回屬性列表中所有鍵的枚舉,如果在主屬性列表中未找到同名的鍵,則包括默認屬性列表中不同的鍵。
    PropertiesgetProperty方法有兩個;
    一個是getProperty(String key)用指定的鍵在此屬性列表中搜索屬性
    一個是getProperty(String key, String defaultValue)用指定的鍵在屬性列表中搜索屬性。如果在屬性列表中未找到該鍵,則接著遞歸檢查默認屬性列表及其默認值。如果未找到屬性,則此方法返回默認值變量。

    ThreadGroup    線程組表示一個線程的集合。此外,線程組也可以包含其他線程組。線程組構成一棵樹,在樹中,除了初始線程組外,每個線程組都有一個父線程組。

    構造方法摘要
    ThreadGroup(String name)
              構造一個新線程組。
    ThreadGroup(ThreadGroup parent, String name)
              創建一個新線程組。


     

    posted @ 2008-11-14 11:58 勒緊皮帶向前沖 閱讀(207) | 評論 (0)編輯 收藏
     
    posted @ 2008-11-11 21:18 勒緊皮帶向前沖 閱讀(213) | 評論 (0)編輯 收藏
     
         摘要: 第一個   1/** *//************************************************   2MD5 算法的Java Bean   3@author:Topcat Tuppin   4Last Modified:10,Mar...  閱讀全文
    posted @ 2008-11-11 11:38 勒緊皮帶向前沖 閱讀(258) | 評論 (0)編輯 收藏
     
         摘要:   1import java.io.*;   2import java.util.*;   3/** *//**   4  *   5  * <p>Title: LOG 日志記錄&...  閱讀全文
    posted @ 2008-11-11 11:24 勒緊皮帶向前沖 閱讀(269) | 評論 (0)編輯 收藏
     
     1import java.util.*;
     2/**
     3 * <p>Title: Time  </p>
     4 * <p>Description: </p>
     5 *      此類主要用來取得本地系統的系統時間并用下面5種格式顯示
     6 *              1. YYMMDDHH         8位
     7 *              2. YYMMDDHHmm       10位
     8 *              3. YYMMDDHHmmss     12位
     9 *              4. YYYYMMDDHHmmss   14位
    10 *              5. YYMMDDHHmmssxxx  15位 (最后的xxx 是毫秒)
    11 * <p>Copyright: Copyright (c) 2003</p>
    12 * <p>Company: hoten </p>
    13 * @author lqf
    14 * @version 1.0
    15 */

    16public class CTime {
    17    public static final int YYMMDDhhmmssxxx=15;
    18    public static final int YYYYMMDDhhmmss=14;
    19    public static final int YYMMDDhhmmss=12;
    20    public static final int YYMMDDhhmm=10;
    21    public static final int YYMMDDhh=8;
    22/**
    23 * 取得本地系統的時間,時間格式由參數決定
    24 * @param format 時間格式由常量決定
    25 * @return String 具有format格式的字符串
    26 */

    27    public synchronized static String  getTime(int format){
    28        StringBuffer cTime=new StringBuffer(10);
    29        Calendar time=Calendar.getInstance();
    30        int miltime=time.get(Calendar.MILLISECOND);
    31        int second=time.get(Calendar.SECOND);
    32        int minute=time.get(Calendar.MINUTE);
    33        int hour=time.get(Calendar.HOUR_OF_DAY);
    34        int day =time.get(Calendar.DAY_OF_MONTH);
    35        int month=time.get(Calendar.MONTH)+1;
    36        int year =time.get(Calendar.YEAR);
    37        if(format!=14){
    38            if(year>=2000) year=year-2000;
    39            else year=year-1900;
    40        }

    41        if(format>=2){
    42            if(format==14) cTime.append(year);
    43            else    cTime.append(getFormatTime(year,2));
    44        }

    45        if(format>=4)
    46            cTime.append(getFormatTime(month,2));
    47        if(format>=6)
    48            cTime.append(getFormatTime(day,2));
    49        if(format>=8)
    50            cTime.append(getFormatTime(hour,2));
    51        if(format>=10)
    52            cTime.append(getFormatTime(minute,2));
    53        if(format>=12)
    54            cTime.append(getFormatTime(second,2));
    55        if(format>=15)
    56            cTime.append(getFormatTime(miltime,3));
    57        return cTime.toString();
    58    }

    59/**
    60 * 產生任意位的字符串
    61 * @param time 要轉換格式的時間
    62 * @param format 轉換的格式
    63 * @return String 轉換的時間
    64 */

    65    private synchronized static String getFormatTime(int time,int format){
    66        StringBuffer numm=new StringBuffer();
    67        int length=String.valueOf(time).length();
    68
    69        if(format<length) return null;
    70
    71        for(int i=0 ;i<format-length ;i++){
    72            numm.append("0");
    73        }

    74        numm.append(time);
    75        return numm.toString().trim();
    76    }

    77}
    posted @ 2008-11-11 11:04 勒緊皮帶向前沖 閱讀(199) | 評論 (0)編輯 收藏
     
    JS的正則表達式
    2008年11月06日 星期四 07:22


    //校驗是否全由數字組成
    [code]
    function isDigit(s)
    {
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗登錄名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串
    [code]
    function isRegisterUserName(s)
    {
    var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗用戶姓名:只能輸入1-30個以字母開頭的字串
    [code]
    function isTrueName(s)
    {
    var patrn=/^[a-zA-Z]{1,30}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    }}

    //校驗密碼:只能輸入6-20個字母、數字、下劃線
    [code]
    function isPasswd(s)
    {
    var patrn=/^(\w){6,20}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-”
    [code]
    function isTel(s)
    {
    //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗手機號碼:必須以數字開頭,除數字外,可含有“-”
    [code]
    function isMobil(s)
    {
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗郵政編碼
    [code]
    function isPostalCode(s)
    {
    //var patrn=/^[a-zA-Z0-9]{3,12}$/;
    var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    //校驗搜索關鍵字
    [code]
    function isSearch(s)
    {
    var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\]
            [\]\{\}:;'\,.<>?]{0,19}$/;
    if (!patrn.exec(s)) return false
    return true
    }

    function isIP(s) //by zergling
    {
    var patrn=/^[0-9.]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    [/code]

    正則表達式
    [code]
    "^\\d+$"  //非負整數(正整數 + 0)
    "^[0-9]*[1-9][0-9]*$"  //正整數
    "^((-\\d+)|(0+))$"  //非正整數(負整數 + 0)
    "^-[0-9]*[1-9][0-9]*$"  //負整數
    "^-?\\d+$"    //整數
    "^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)
    "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" 
    //正浮點數
    "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)
    "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" 
    //負浮點數
    "^(-?\\d+)(\\.\\d+)?$"  //浮點數
    "^[A-Za-z]+$"  //由26個英文字母組成的字符串
    "^[A-Z]+$"  //由26個英文字母的大寫組成的字符串
    "^[a-z]+$"  //由26個英文字母的小寫組成的字符串
    "^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字符串
    "^\\w+$"  //由數字、26個英文字母或者下劃線組成的字符串
    "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
    "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
    "^[A-Za-z0-9_]*$"
    [/code]

    正則表達式使用詳解

    簡介

    簡單的說,正則表達式是一種可以用于模式匹配和替換的強有力的工具。其作用如下:
    測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
    替換文本??梢栽谖臋n中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
    根據模式匹配從字符串中提取一個子字符串??梢杂脕碓谖谋净蜉斎胱侄沃胁檎姨囟ㄎ淖?。

    基本語法

    在對正則表達式的功能和作用有了初步的了解之后,我們就來具體看一下正則表達式的語法格式。

    正則表達式的形式一般如下:  

    /love/  其中位于“/”定界符之間的部分就是將要在目標對象中進行匹配的模式。用戶只要把希望查找匹配對象的模式內容放入“/”定界符之間即可。為了能夠使用戶更加靈活的定制模式內容,正則表達式提供了專門的“元字符”。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
    較為常用的元字符包括: “+”, “*”,以及 “?”。

    “+”元字符規定其前導字符必須在目標對象中連續出現一次或多次。

    “*”元字符規定其前導字符必須在目標對象中出現零次或連續多次。

    “?”元字符規定其前導對象必須在目標對象中連續出現零次或一次。

    下面,就讓我們來看一下正則表達式元字符的具體應用。

    /fo+/  因為上述正則表達式中包含“+”元字符,表示可以與目標對象中的 “fool”, “fo”, 或者 “football”等在字母f后面連續出現一個或多個字母o的字符串相匹配。

    /eg*/  因為上述正則表達式中包含“*”元字符,表示可以與目標對象中的 “easy”, “ego”, 或者 “egg”等在字母e后面連續出現零個或多個字母g的字符串相匹配。

    /Wil?/  因為上述正則表達式中包含“?”元字符,表示可以與目標對象中的 “Win”, 或者“Wilson”,等在字母i后面連續出現零個或一個字母l的字符串相匹配。

    有時候不知道要匹配多少字符。為了能適應這種不確定性,正則表達式支持限定符的概念。這些限定符可以指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。

    {n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

    {n,} n 是一個非負整數。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。

    {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數之間不能有空格。

    除了元字符之外,用戶還可以精確指定模式在匹配對象中出現的頻率。例如,/jim {2,6}/ 上述正則表達式規定字符m可以在匹配對象中連續出現2-6次,因此,上述正則表達式可以同jimmy或jimmmmmy等字符串相匹配。
    在對如何使用正則表達式有了初步了解之后,我們來看一下其它幾個重要的元字符的使用方式。
    [code]
    \s:用于匹配單個空格符,包括tab鍵和換行符;
    \S:用于匹配除單個空格符之外的所有字符;
    \d:用于匹配從0到9的數字;
    \w:用于匹配字母,數字或下劃線字符;
    \W:用于匹配所有與\w不匹配的字符;
    . :用于匹配除換行符之外的所有字符。
    [/code]
    (說明:我們可以把\s和\S以及\w和\W看作互為逆運算)
    下面,我們就通過實例看一下如何在正則表達式中使用上述元字符。
    /\s+/ 上述正則表達式可以用于匹配目標對象中的一個或多個空格字符。
    /\d000/ 如果我們手中有一份復雜的財務報表,那么我們可以通過上述正則表達式輕而易舉的查找到所有總額達千元的款項。
    除了我們以上所介紹的元字符之外,正則表達式中還具有另外一種較為獨特的專用字符,即定位符。定位符用于規定匹配模式在目標對象中的出現位置。 較為常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。
    [code]
    “^”定位符規定匹配模式必須出現在目標字符串的開頭
    “$”定位符規定匹配模式必須出現在目標對象的結尾
    “\b”定位符規定匹配模式必須出現在目標字符串的開頭或結尾的兩個邊界之一
    “\B”定位符則規定匹配對象必須位于目標字符串的開頭和結尾兩個邊界之內,
          即匹配對象既不能作為目標字符串的開頭,也不能作為目標字符串的結尾。
    [/code]
    同樣,我們也可以把“^”和“$”以及“\b”和“\B”看作是互為逆運算的兩組定位符。舉例來說: /^hell/ 因為上述正則表達式中包含“^”定位符,所以可以與目標對象中以 “hell”, “hello”或“hellhound”開頭的字符串相匹配。 /ar$/ 因為上述正則表達式中包含“$”定位符,所以可以與目標對象中以 “car”, “bar”或 “ar” 結尾的字符串相匹配。 /\bbom/ 因為上述正則表達式模式以“\b”定位符開頭,所以可以與目標對象中以 “bomb”, 或 “bom”開頭的字符串相匹配。/man\b/ 因為上述正則表達式模式以“\b”定位符結尾,所以可以與目標對象中以 “human”, “woman”或 “man”結尾的字符串相匹配。
    為了能夠方便用戶更加靈活的設定匹配模式,正則表達式允許使用者在匹配模式中指定某一個范圍而不局限于具體的字符。例如:
    [code]
    /[A-Z]/  上述正則表達式將會與從A到Z范圍內任何一個大寫字母相匹配。
    /[a-z]/  上述正則表達式將會與從a到z范圍內任何一個小寫字母相匹配。
    /[0-9]/  上述正則表達式將會與從0到9范圍內任何一個數字相匹配。
    /([a-z][A-Z][0-9])+/ 上述正則表達式將會與任何由字母和數字組成的字符串,如 “aB0” 等相匹配。
    [/code]
    這里需要提醒用戶注意的一點就是可以在正則表達式中使用 “()” 把字符串組合在一起。“()”符號包含的內容必須同時出現在目標對象中。因此,上述正則表達式將無法與諸如 “abc”等的字符串匹配,因為“abc”中的最后一個字符為字母而非數字。
    如果我們希望在正則表達式中實現類似編程邏輯中的“或”運算,在多個不同的模式中任選一個進行匹配的話,可以使用管道符 “|”。例如:/to|too|2/ 上述正則表達式將會與目標對象中的 “to”, “too”, 或 “2” 相匹配。
    正則表達式中還有一個較為常用的運算符,即否定符 “[^]”。與我們前文所介紹的定位符 “^” 不同,否定符 “[^]”規定目標對象中不能存在模式中所規定的字符串。例如:/[^A-C]/ 上述字符串將會與目標對象中除A,B,和C之外的任何字符相匹配。一般來說,當“^”出現在 “[]”內時就被視做否定運算符;而當“^”位于“[]”之外,或沒有“[]”時,則應當被視做定位符。
    最后,當用戶需要在正則表達式的模式中加入元字符,并查找其匹配對象時,可以使用轉義符“\”。例如:/Th\*/  上述正則表達式將會與目標對象中的“Th*”而非“The”等相匹配。
    在構造正則表達式之后,就可以象數學表達式一樣來求值,也就是說,可以從左至右并按照一個優先級順序來求值。優先級如下:
    [code]
    1.\ 轉義符
    2.(), (?:), (?=), [] 圓括號和方括號
    3.*, +, ?, {n}, {n,}, {n,m} 限定符
    4.^, $, \anymetacharacter 位置和順序
    5.|“或”操作
    [/code]

    使用實例
    在JavaScript 1.2中帶有一個功能強大的RegExp()對象,可以用來進行正則表達式的匹配操作。其中的test()方法可以檢驗目標對象中是否包含匹配模式,并相應的返回true或false。
    我們可以使用JavaScript編寫以下腳本,驗證用戶輸入的郵件地址的有效性。
    [code]
    <html>
    <head>
      <script language="Javascript1.2">
         <!-- start hiding
         function verifyAddress(obj)
         {
          var email = obj.email.value;
          var pattern =
    /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
          flag = pattern.test(email);
          if(flag)
          {
           alert(“Your email address is correct!”);
           return true;
          }
          else
           {
            alert(“Please try again!”);
            return false;
            }
          }
         // stop hiding -->
        </script>
      </head>
      <body>
       <form onSubmit="return verifyAddress(this);">
        <input name="email" type="text">
        <input type="submit">
        </form>
      </body>
    </html>
    [/code]

    正則表達式對象
    本對象包含正則表達式模式以及表明如何應用模式的標志。
    [code]
    語法 1 re = /pattern/[flags]
    語法 2 re = new RegExp("pattern",["flags"])
    [/code]
    參數
    re
    必選項。將要賦值為正則表達式模式的變量名。

    Pattern
    必選項。要使用的正則表達式模式。如果使用語法 1,用 "/" 字符分隔模式。如果用語法 2,用引號將模式引起來。

    Flags
    可選項。如果使用語法 2 要用引號將 flag 引起來。標志可以組合使用,可用的有:
    [code]
    g (全文查找出現的所有 pattern)
    i (忽略大小寫)
    m (多行查找)
    [/code]

    示例
    下面的示例創建一個包含正則表達式模式及相關標志的對象(re),向您演示正則表達式對象的用法。在本例中,作為結果的正則表達式對象又用于 match 方法中:
    [code]
    function MatchDemo()
    {
    var r, re; // 聲明變量。
    var s = "The rain in Spain falls mainly in the plain";
    re = new RegExp("ain","g"); // 創建正則表達式對象。
    r = s.match(re); // 在字符串 s 中查找匹配。
    return(r);
    }
    [/code]

    返回值: ain,ain,ain,ain\\
    屬性 lastIndex 屬性 | source 屬性\\
    方法 compile 方法 | exec 方法 | test 方法\\
    要求 版本 3\\
    請參閱 RegExp 對象 | 正則表達式語法 | String 對象\\

    exec 方法
    用正則表達式模式在字符串中運行查找,并返回包含該查找結果的一個數組。
    rgExp.exec(str)

    參數

    rgExp
    必選項。包含正則表達式模式和可用標志的正則表達式對象。

    str
    必選項。要在其中執行查找的 String 對象或字符串文字。

    說明\\
    如果 exec 方法沒有找到匹配,則它返回 null。如果它找到匹配,則 exec 方法返回一個數組,并且更新全局 RegExp 對象的屬性,以反映匹配結果。數組的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出現的任意一個子匹配。這相當于沒有設置全局標志 (g) 的 match 方法。
    如果為正則表達式設置了全局標志,exec 從以 lastIndex 的值指示的位置開始查找。如果沒有設置全局標志,exec 忽略 lastIndex 的值,從字符串的起始位置開始搜索。

    exec 方法返回的數組有三個屬性,分別是 input、index 和 lastIndex。Input 屬性包含了整個被查找的字符串。Index 屬性中包含了整個被查找字符串中被匹配的子字符串的位置。LastIndex 屬性中包含了匹配中最后一個字符的下一個位置。

    示例\\
    下面的例子舉例說明了 exec 方法的用法:
    [code]
    function RegExpTest()
    {
    var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
    if (ver >= 5.5){ // 測試 JScript 的版本。
    var src = "The rain in Spain falls mainly in the plain.";
    var re = /\w+/g; // 創建正則表達式模式。
    var arr;
    while ((arr = re.exec(src)) != null)
    document.write(arr.index + "-" + arr.lastIndex + arr + "\t");
    }
    else{
    alert("請使用 JScript 的更新版本");
    }
    }
    [/code]

    返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain

    test 方法\\
    返回一個 Boolean 值,它指出在被查找的字符串中是否存在模式。
    rgexp.test(str)

    參數\\
    rgexp
    必選項。包含正則表達式模式或可用標志的正則表達式對象。

    str
    必選項。要在其上測試查找的字符串。

    說明
    test 方法檢查在字符串中是否存在一個模式,如果存在則返回 true,否則就返回 false。
    全局 RegExp 對象的屬性不由 test 方法來修改。

    示例
    下面的例子舉例說明了 test 方法的用法:
    [code]
    function TestDemo(re, s)
    {
    var s1; // 聲明變量。
    // 檢查字符串是否存在正則表達式。
    if (re.test(s)) // 測試是否存在。
    s1 = " contains "; // s 包含模式。
    else
    s1 = " does not contain "; // s 不包含模式。
    return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。
    }
    [/code]

    函數調用:document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain."));

    返回值:'The rain in Spain falls mainly in the plain.' contains 'ain+'

    match 方法
    使用正則表達式模式對字符串執行查找,并將包含查找的結果作為數組返回。\\
    stringObj.match(rgExp)

    參數\\
    stringObj
    必選項。對其進行查找的 String 對象或字符串文字。

    rgExp
    必選項。為包含正則表達式模式和可用標志的正則表達式對象。也可以是包含正則表達式模式和可用標志的變量名或字符串文字。

    說明\\
    如果 match 方法沒有找到匹配,返回 null。如果找到匹配返回一個數組并且更新全局 RegExp 對象的屬性以反映匹配結果。
    match 方法返回的數組有三個屬性:input、index 和 lastIndex。Input 屬性包含整個的被查找字符串。Index 屬性包含了在整個被查找字符串中匹配的子字符串的位置。LastIndex 屬性包含了最后一次匹配中最后一個字符的下一個位置。
    如果沒有設置全局標志 (g),數組的 0 元素包含整個匹配,而第 1 到 n 元素包含了匹配中曾出現過的任一個子匹配。這相當于沒有設置全局標志的 exec 方法。如果設置了全局標志,元素 0 到 n 中包含所有匹配。

    示例\\
    下面的示例演示了match 方法的用法:
    [code]
    function MatchDemo()
    {
    var r, re; // 聲明變量。
    var s = "The rain in Spain falls mainly in the plain";
    re = /ain/i; // 創建正則表達式模式。
    r = s.match(re); // 嘗試匹配搜索字符串。
    return(r); // 返回第一次出現 "ain" 的地方。
    }
    [/code]
    返回值:ain

    本示例說明帶 g 標志設置的 match 方法的用法。
    [code]
    function MatchDemo()
    {
    var r, re; // 聲明變量。
    var s = "The rain in Spain falls mainly in the plain";
    re = /ain/ig; // 創建正則表達式模式。
    r = s.match(re); // 嘗試去匹配搜索字符串。
    return(r); // 返回的數組包含了所有 "ain"
    // 出現的四個匹配。
    }
    [/code]
    返回值:ain,ain,ain,ain

    上面幾行代碼演示了字符串文字的 match 方法的用法。
    [code]
    var r, re = "Spain";
    r = "The rain in Spain".replace(re, "Canada");
    return r;
    [/code]
    返回值:The rain in Canada

    search 方法
    返回與正則表達式查找內容匹配的第一個子字符串的位置。

    stringObj.search(rgExp)

    參數\\
    stringObj
    必選項。要在其上進行查找的 String 對象或字符串文字。

    rgExp
    必選項。包含正則表達式模式和可用標志的正則表達式對象。

    說明

    search 方法指明是否存在相應的匹配。如果找到一個匹配,search 方法將返回一個整數值,指明這個匹配距離字符串開始的偏移位置。如果沒有找到匹配,則返回 -1。

    示例\\
    下面的示例演示了 search 方法的用法。
    [code]
    function SearchDemo()
    {
    var r, re; // 聲明變量。
    var s = "The rain in Spain falls mainly in the plain.";
    re = /falls/i; // 創建正則表達式模式。
    r = s.search(re); // 查找字符串。
    return(r); // 返回 Boolean 結果。
    }
    [/code]
    返回值:18


    正則表達式語法
    一個正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。

    這里有一些可能會遇到的正則表達式示例:
    [code]
    JScript VBScript 匹配
    /^\[ \t]*$/ "^\[ \t]*$" 匹配一個空白行。
    /\d{2}-\d{5}/ "\d{2}-\d{5}" 驗證一個ID 號碼是否由一個2位數字,一個連字符以及一個5位數字組成。
    /<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一個 HTML 標記。
    [/code]

    下表是元字符及其在正則表達式上下文中的行為的一個完整列表:

    字符 描述
    \ 將下一個字符標記為一個特殊字符、或一個原義字符、或一個 后向引用、或一個八進制轉義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。

    ^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。

    $ 匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。

    * 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價于{0,}。

    + 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。

    ? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價于 {0,1}。

    {n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

    {n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。

    {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, "o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數之間不能有空格。

    ? 當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。

    . 匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。
    (pattern) 匹配pattern 并獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號字符,請使用 '\(' 或 '\)'。

    (?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式。

    (?=pattern) 正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。

    (?!pattern) 負向預查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始

    x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

    [xyz] 字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

    [^xyz] 負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

    [a-z] 字符范圍。匹配指定范圍內的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字符。

    [^a-z] 負值字符范圍。匹配任何不在指定范圍內的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字符。

    \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

    \B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

    \cx 匹配由x指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字符。

    \d 匹配一個數字字符。等價于 [0-9]。

    \D 匹配一個非數字字符。等價于 [^0-9]。

    \f 匹配一個換頁符。等價于 \x0c 和 \cL。

    \n 匹配一個換行符。等價于 \x0a 和 \cJ。

    \r 匹配一個回車符。等價于 \x0d 和 \cM。

    \s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。

    \S 匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。

    \t 匹配一個制表符。等價于 \x09 和 \cI。

    \v 匹配一個垂直制表符。等價于 \x0b 和 \cK。

    \w 匹配包括下劃線的任何單詞字符。等價于'[A-Za-z0-9_]'。

    \W 匹配任何非單詞字符。等價于 '[^A-Za-z0-9_]'。

    \xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如, '\x41' 匹配 "A"。'\x041' 則等價于 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。.

    \num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字符。

    \n 標識一個八進制轉義值或一個后向引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為后向引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。

    \nm 標識一個八進制轉義值或一個后向引用。如果 \nm 之前至少有is preceded by at least nm 個獲取得子表達式,則 nm 為后向引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個后跟文字 m 的后向引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。

    \nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。

    \un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, \u00A9 匹配版權符號 (?)。


    優先權順序
    在構造正則表達式之后,就可以象數學表達式一樣來求值,也就是說,可以從左至右并按照一個優先權順序來求值。

    下表從最高優先級到最低優先級列出各種正則表達式操作符的優先權順序:
    [code]
    操作符 描述
    \ 轉義符
    (), (?:), (?=), [] 圓括號和方括號
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, \anymetacharacter 位置和順序
    | “或”操作
    [/code]

    普通字符

    普通字符由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數字,所有標點符號以及一些符號。

    最簡單的正則表達式是一個單獨的普通字符,可以匹配所搜索字符串中的該字符本身。例如,單字符模式 'A' 可以匹配所搜索字符串中任何位置出現的字母 'A'。這里有一些單字符正則表達式模式的示例:
    [code]
    /a/
    /7/
    /M/
    [/code]
    等價的 VBScript 單字符正則表達式為:
    [code]
    "a"
    "7"
    "M"
    [/code]
    可以將多個單字符組合在一起得到一個較大的表達式。例如,下面的 JScript 正則表達式不是別的,就是通過組合單字符表達式 'a'、'7'以及 'M' 所創建出來的一個表達式。

    /a7M/
    等價的 VBScript 表達式為:

    posted @ 2008-11-10 11:42 勒緊皮帶向前沖 閱讀(209) | 評論 (0)編輯 收藏
     
    1.打開企業管理器-安全性-創建用戶test,授予connect和resource權限,在系統選項卡里賦予無限表空間權限(unlimited tablespace).
     
    2.在企業管理器-存儲-表空間中創建2個新的表空間,一個設為永久空間,一個設為臨時空間.
     
    3.雙擊用戶test,給其設定永久空間和臨時空間,對應上一步創建的2個空間.
     
    4.此時,在方案中還沒有出現test方案,只需在任意方案下右擊,創建一個新表,在方案下拉列表中就會出現test方案,創建表成功后,刷新一下,就可以看到新的方案test了.

    轉自  http://blog.tom.com/netmax2008/article/942.html
    posted @ 2008-11-08 15:00 勒緊皮帶向前沖 閱讀(275) | 評論 (0)編輯 收藏
     

    轉自http://hi.baidu.com/zml525/blog/item/59a3a277ed10ba19b051b957.html

    1.C:\WINDOWS\system32\drivers\etc下的hosts文件
      

    加入域名解析相關的東西,比如:
       127.0.0.1        localhost
       127.0.0.1        test.001m.cn
       127.0.0.1        www.001m.cn
       如果在實戰中,前邊的127.0.0.1換作公有IP地址

    2.Tomcat 5.0\conf下的server.xml文件
      

    (2.1)
         修改端口號(默認為8080,現改為80):
         <!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified    during installation   -->
         <Connector port="80"    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                    enableLookups="false" redirectPort="8443" acceptCount="100"
                    debug="0" connectionTimeout="20000"
                    disableUploadTimeout="true" />

        (2.2)
            添加發布文件夾,并為每個文件夾指定要綁定的域名:
            因為想要實現,在發布文件夾根目錄下發布項目,所以,一個文件夾只能發布一個項目,所以,要指定不同的文件夾。
            在<Host name=" 此處是要綁定的域名 " debug="0"   appBase=" 此處是發布目錄 "
              unpackWARs="true" autoDeploy="true"      xmlValidation="false" xmlNamespaceAware="false">
            如果要建多個發布目錄,可以在<Host name.....></Host> 的前邊再加上一個<Host name....></Host>

        (2.3)
           在前邊的工作做好之后,啟動服務器,就會發現,Tomcat 5.0\conf\Catalina下多了幾個文件夾,文件夾名就是你前邊<Host..>
           </Host>中存在的發布文件夾的名字。然后,把相應的配置文件*.xml放在對應的Tomcat 5.0\conf\Catalina里的文件夾里。
           而且讓他們的路徑是根目錄下,這樣訪問時就可以直接打綁定好的域名訪問了。比如:
           <Context path="" reloadable="true" docBase="hnnj">
          <Resource name="jdbc/hnnj" auth="Container" type="javax.sql.DataSource"/>
          <ResourceParams name="jdbc/hnnj">
         
    3.好啦,一切問題就解決了。好爽啊!
    補:127.0.0.1        test.001m.cn這里的域名要和<Host name=" 此處是要綁定的域名 "..>這里的域名一致,否則
         也不會在Tomcat 5.0\conf\Catalina下生成文件夾,就不會達到既定目標了。呵呵!

    4.附錄:
       (4.1)
          C:\WINDOWS\system32\drivers\etc下的hosts文件,內容格式為:IP地址    域名
          例如:  
          202.102.240.91    web.nyist.net
       (4.2)
          Tomcat 5.0\conf下的server.xml文件,內容基本為:(注:server.xml里的一些注釋我給省去了
          <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
          parent-child relationships with each other -->

    <!-- A "Server" is a singleton element that represents the entire JVM,
          which may contain one or more "Service" instances.   The Server
          listens for a shutdown command on the indicated port.

          Note:   A "Server" is not itself a "Container", so you may not
          define subcomponents such as "Valves" or "Loggers" at this level.
    -->

    <Server port="8005" shutdown="SHUTDOWN" debug="0">


       <!-- Comment these entries out to disable JMX MBeans support -->
       <!-- You may also configure custom components (e.g. Valves/Realms) by
            including your own mbean-descriptor file(s), and setting the
            "descriptors" attribute to point to a ';' seperated list of paths
            (in the ClassLoader sense) of files to add to the default list.
            e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"
       -->
       <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
                 debug="0"/>
       <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
                 debug="0"/>

       <!-- Global JNDI resources -->
       <GlobalNamingResources>

         <!-- Test entry for demonstration purposes -->
         <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

         <!-- Editable user database that can also be used by
              UserDatabaseRealm to authenticate users -->
         <Resource name="UserDatabase" auth="Container"
                   type="org.apache.catalina.UserDatabase"
            description="User database that can be updated and saved">
         </Resource>
         <ResourceParams name="UserDatabase">
           <parameter>
             <name>factory</name>
             <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
           </parameter>
           <parameter>
             <name>pathname</name>
             <value>conf/tomcat-users.xml</value>
           </parameter>
         </ResourceParams>

       </GlobalNamingResources>

       <!-- A "Service" is a collection of one or more "Connectors" that share
            a single "Container" (and therefore the web applications visible
            within that Container).   Normally, that Container is an "Engine",
            but this is not required.

            Note:   A "Service" is not itself a "Container", so you may not
            define subcomponents such as "Valves" or "Loggers" at this level.
        -->

       <!-- Define the Tomcat Stand-Alone Service -->
       <Service name="Catalina">

         <!-- A "Connector" represents an endpoint by which requests are received
              and responses are returned.   Each Connector passes requests on to the
              associated "Container" (normally an Engine) for processing.

              By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
              You can also enable an SSL HTTP/1.1 Connector on port 8443 by
              following the instructions below and uncommenting the second Connector
              entry.   SSL support requires the following steps (see the SSL Config
              HOWTO in the Tomcat 5 documentation bundle for more detailed
              instructions):
              * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
                later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
              * Execute:
                  %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
                  $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA   (Unix)
                with a password value of "changeit" for both the certificate and
                the keystore itself.

              By default, DNS lookups are enabled when a web application calls
              request.getRemoteHost().   This can have an adverse impact on
              performance, so you can disable it by setting the
              "enableLookups" attribute to "false".   When DNS lookups are disabled,
              request.getRemoteHost() will return the String version of the
              IP address of the remote client.
         -->

         <!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified
              during installation   -->
         <Connector port="80"                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                    enableLookups="false" redirectPort="8443" acceptCount="100"
                    debug="0" connectionTimeout="20000"
                    disableUploadTimeout="true" />
         <!-- Note : To disable connection timeouts, set connectionTimeout value
          to 0 -->

    <!-- Note : To use gzip compression you could set the following properties :

           compression="on"
           compressionMinSize="2048"
           noCompressionUserAgents="gozilla, traviata"
           compressableMimeType="text/html,text/xml"
    -->

         <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
         <!--
         <Connector port="8443"
                    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                    enableLookups="false" disableUploadTimeout="true"
                    acceptCount="100" debug="0" scheme="https" secure="true"
                    clientAuth="false" sslProtocol="TLS" />
         -->

         <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
         <Connector port="8009"
                    enableLookups="false" redirectPort="8443" debug="0"
                    protocol="AJP/1.3" />

         <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
         <!-- See proxy documentation for more information about using this. -->
         <!--
         <Connector port="8082"
                    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                    enableLookups="false"
                    acceptCount="100" debug="0" connectionTimeout="20000"
                    proxyPort="80" disableUploadTimeout="true" />
         -->

            
         <!-- Define the top level container in our container hierarchy -->
         <Engine name="Catalina" defaultHost="localhost" debug="0">



           <Logger className="org.apache.catalina.logger.FileLogger"
                   prefix="catalina_log." suffix=".txt"
                   timestamp="true"/>


           <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                      debug="0" resourceName="UserDatabase"/>

          <Host name="www.001m.cn" debug="0" appBase="test"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
          </Host>

          <Host name="test.001m.cn" debug="0" appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        
             <Logger className="org.apache.catalina.logger.FileLogger"
                      directory="logs"   prefix="localhost_log." suffix=".txt"
                 timestamp="true"/>

           </Host>

         </Engine>

       </Service>

    </Server>
          (4.3)
            現在文件夾的結構是:
            Tomcat-->bin\common\conf\logs\server\work\temp\sharedwebapps\test;
            conf-->Catalina-->test.001m.cn\www.001m.cn;
            test.001m.cn-->hnnj.xml;
            www.001m.cn-->hnnj_test.xml
            test-->hnnj_test;
            webapps-->hnnj;
            其中,hnnj和hnnj_test是項目目錄;test和webapps是發布目錄;

    posted @ 2008-11-07 14:51 勒緊皮帶向前沖 閱讀(568) | 評論 (0)編輯 收藏
     
    在Oracle中查看各個表、表空間占用空間的大小
    查看當前用戶每個表占用空間的大?。?br />     Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

    查看每個表空間占用空間的大?。?br />     Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name
    -------------------------------------------------------------------------------------------------------------
    查詢Oralce中某個用戶有多少個存儲過程
    select distinct name from user_source where type='PROCEDURE';
    select distinct name from dba_source where type='PROCEDURE' and owner='XG_TEST';
    -------------------------------------------------------------------------------------------------------------
    oracle的使用心得



    1、DDL(Data Definition Language) Command
       create,alter,drop objects;
       grant,revoke privileges and roles;
       establishing auditing options;
       add comments to the data dictionary;
       Before and after each DDL statement,Oracle implicitly commit the current transactions.

    2、DML(Data Manipulation Language) Command
       Query and Modify data within existing schema objects;
       DML statements consist of DELETE,INSERT,SELECT and UPDATE statements;
                            EXPLAIN PLAN statements;
                            LOCK TABLE statements;
       Unlike DDL Command , a commit is not implicit , after execute DDL Command ,must execute commit command    to commit a transaction;

    3、Dynamic Performance Tables
       These tables are created at the instance startup and used to store information about the performance    of the instance. This information includes connection informatioion,I/OS, initialization parameter    values and so on..

    4、Procedure and Function are identical except that Founction are always return a value(Procedure do not).

    5、Schema is a collection of Objects that associated with the DataBase.

    6、SGA is made up of :
       DataBase Buffers;
       Redo Log Buffers;
       The Shared Pool;

    7、Transaction is a logical unit of work consisting of one or more SQL statements,ending in a commit or rollback.

    8、 The DataBase
    The Physical Layer
    (1)One or more datafiles;
    (2)Two or more redo log files;
    (3)One or more control files;
    The Logical Layer
    (1)One or more tablespaces;
    (2)The database schema;

    9、The database is devided into one or more logical pieces known as tablespace;

    10、Recommend that every one need DBA roles should have a different account , thus , if auditing is enabled , there is a record who made these system changes.

    11、The Instance is the logical term that refers to the components necessary to access the data in a database.

    12、數據庫實例(也稱為服務器Server),是用來訪問一個數據庫文件集的一個存儲結構及后臺進程的集合。Oralce并行服務器是指一個單獨的數據庫可以被多個實例訪問。

    13、查詢實例名:
       select instance_name from v$instance;

    14、查詢動態視圖v$waitstat、v$system_event、v$session_event、v$session_wait和v$ buffer_pool_statistics(在Oracle8中通過catperf.sql腳本創建)以獲取下面所的統計信息,
    目的是為了檢查服務器進程是否正等待DBWR(對單個會話而言,也對整個數據庫而言)。

    15、
    (1)SMON:系統監控程序
    (2)PMON:進程監控程序
    (3)DBWR:數據庫寫入程序
    (4)LGWR:日志寫入程序
    (5)CKPT:檢查點進程
    (6)ARCH:歸檔日志
    (7)RECO:恢復進程
    (8)SNPn:快照進程
    (9)LCKn:鎖定進程
    (10)Dnnn:調度程序進程
    (11)Snnn:服務器進程
    (12)Pnnn:并行查詢服務器進程

    16、數據庫備份之前,若使用了shutdown abort命令,則需要進行如下操作,然后才能進行數據庫備份:
    1)    執行一個shutdown abort命令;
    2)    啟動數據庫實例;
    3)    執行shutdown命令;

    17、使用OPS數據庫時,如何解決兩個服務器同時對同一記錄的更新?
    更新同一個表的數據的用戶使用同一個實例來訪問數據庫。

    18、通過ORACLE數據庫對非ORACLE數據庫進行訪問,首先需要在運行非ORACLE數據庫的服務器端安裝ORACLE透明網關產品,每種被訪問的數據引擎需要一個獨立的網關;然后需要在本地ORACLE數據庫中建立一個數據庫連接(DATABASE LINK)。

    19、外部文件訪問:
    1)    用作腳本文件的源代碼寫入SQL*PLUS、SQL、PL/SQL中;
    2)    用作SQL*PLUS腳本文件的輸出,用SPOOL命令生成;
    3)    用作PL/SQL程序的輸入或輸出,通過UTL_FILE軟件包訪問;
    4)    用作PL/SQL程序的腳本文件的輸出,通過DBMS_OUTPUT軟件包生成;
    5)    用作通過BFILE數據類型在數據庫中引用的外部數據,BFILE數據類型含有一個指向外部二進制數據文件的指針,用戶必須通過CREATE DIRECTORY命令,在ORACLE中創建一個目錄指針,指向存儲文件的目錄。
    6)    用作通過DBMS_PIPE訪問的外部程序,該程序必須以ORACLE支持的3GL來編寫。

    20、取消用戶在SYSTEM表空間上創建對象的定額:
    ALTER USER USER_NAME QUOTA 0 ON SYSTEM;
    注:
    如果一個用戶被授權UNLIMITED_TABLESPACE系統權限或RESOURCE角色(Resouce角色擁有使用數據庫中所有表空間的權限),則這個授權將覆蓋用戶的任何定額設置。
    21、創建一個用戶,并且指定缺省表空間:
    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD DEFAULT TABLESPACE TABLESPACE_NAME;

    22、重新指定用戶的缺省表空間:
    ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME;

    23、從數據表中分離出已有的索引:
    ALTER INDEX INDEX_NAME REBUILD
       TABLESPACE INDEX_TABLESPACE
       STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0);

    24、創建表時指定數據表空間和索引表空間:
    CREATE TABLE TAB_NAME(
    COLUMN_A TYPE,
    COLUMN_B TYPE,

    COLUM_N TYPE,
    CONSTRAINT TAB_NAME_PK PRIMARY KEY (COLUMN_A)
    USING INDEX TABLESPACE TABLESPACE_INDEXES
    STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0))
    TABLESPACE TABLESPACE_DATA
    STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0);

    25、TEMP表空間只有在大型排序操作時才使用;

    26、STORAGE子句的意義:
    Storage(initial 盤區大小 next 盤區大小 pctincrease 每個順序盤區幾何增長的系數);
    使用非零pctincrease參數的結果:
    storage(initial 10M next 10M pctincrease 50);
    盤區號        大小        總塊數        盤區容量注釋
    1            10            10            INITIAL
    2            10            20            NEXT
    3            15            35            NEXT×1.5
    4            22.5            57.5            NEXT×1.5×1.5
    5            33.75        91.25        NEXT×1.5×1.5×1.5
    .. .. .. .. .. ..
    理想的情況:
    一個段只具有一個大小合適的盤區,并且next值較小,設表的pctincrease值為零;
    實際上:
    在表空間級設置pctincrease的值為零,會影響ORACLE自動合并表空間中自由空間的能力,把表空間缺省pctincrese設置為一個非常低的值,例如1;

    27、通常稱作TEMP的臨時表空間,由于其自身的特點會有很多碎片,臨時段總是在不斷的創建、擴展和撤銷,對于臨時表,將INITIAL和NEXT盤區大小設為表空間大小的1/20到1/50,對于這個表空間,INITIAL和NEXT缺省設置應該相等,PCTINCREASE的值為0,這樣,段將有同樣大小的盤區構成,當撤消這些段時,下一個臨時段將能夠重新利用這些已撤消的盤區。

    28、
    1)將一個表空間改為臨時表空間:
    alter tablespace tablespace_name temporary;
    2)將一個表空間轉換為能存儲永久對象:
    alter tablespace tablespace_name permenent;
    3)強制表空間合并其自由空間(只能合并位置相鄰的自由盤區):
    alter tablespace talbespace_name coalesce;

    29、
    1)手工縮放數據文件(只能增大不能減小):
    alter database datafile '$path/datafile01.dat' resize nnnM;
    2)創建一個在需要時自動擴展的文件:
    CREATE TABLESPACE DATA
    DATAFILE '$PATH/DATAFILE01.DAT' SIZE 200M
    AUTOEXTEND ON
    NEXT 10M
    MAXSIZE 250M;
    3)通過ALTER TABLESPACE增加一個新的數據文件:
    alter tablespace tablespace_name
    add datafile '$path/datafile02.dat' size 200M
    autoextend on
    maxsize 300M;

    40、移動數據文件:
    1)    關閉實例;
    2)    使用操作系統命令來移動數據文件;
    3)    安裝數據文件并使用ALTER DATABASE命令改變數據庫中的文件名;
    4)    啟動實例;
    具體步驟如下:
    1)>svrmgrl
    >connect internal
    >shutdown
    >exit
    2)mv /db01/oracle/cc1/data01.dbf /db02/oracle/cc1/
    3)>svrmgrl
    >connect internal
    >startup mount cc1
    >alter database rename file '/db01/oracle/cc1/data01.dbf' to '/db02/oracle/cc1/data01.dbf';
    4)    startup

    31、
    查看回滾段名稱:v$rollname
    查看表空間:dba_tablespace;
    查看用戶表空間:user_tablespaces;
    查看回滾段狀態信息:dba_rollback_segs;
    查看數據庫回滾段的當前分配情況:dba_segments;

    32、
    若系統中有多個表空間,就需要在system表空間中創建"第二回滾段"來支持多個表空間,有了"第二回滾段",system表空間就只用于管理數據庫級的事務。

    33、
    ipcs | grep oracle
    ipcrm [-m|-s] ipcid(數字)

    34、連接字符串:||   
    select 'drop talbe '||table_name from user_tables;

    35、視圖中不能使用order by,但可以用group by 代替來達到排序目的:
    create view as select b1,b2 from table_b group by b1,b2;

    36、用戶間復制數據:
    copy from user1@databasex to user2@databasey create table2 using select * from talbe1;

    37、察看數據庫的大小,和空間使用情況
    select b.file_id FileID,b.tablespace_name TableSpace,b.file_name PhysicalFileName,b.bytes TotalBytes,(b.bytes-sum(nvl(a.bytes,0))) UsedSpace,sum(nvl(a.bytes,0)) FreeSpace,sum(nvl(a.bytes,0))/(b.bytes)*100 FreePecent from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name;

    38、Oracle提供了幾個包,它們可以用來完成很多任務,從內部進程通信到文件I/O,到在PL/SQL塊中動態創建和執行SQL語句。所有這些包由SYS用戶所擁有-當Oracle最初安裝時兩個用戶中的一個,這些包中最重要的包括:
    DBMS_ALERT          不用輪詢就允許應用命名并發出警告條件信號的過程與函數
    DBMS_DDL          允許獲取PL/SQL程序內部一定數量的DDL語句的過程
    DBMS_DESCRIBE    為存儲過程與函數描述API的過程
    DBMS_JOB           管理BLOBs、CLOBs、NCLOBs與BFILEs的過程與函數
    DBMS_OUTPUT        允許PL/SQL程序生成終端輸出的過程與函數
    DBMS_PIPE           允許數據庫會話使用管道通信(通信頻道)的過程與函數
    DBMS_SQL           在PL/SQL程序內部執行動態SQL的過程與函數
    DBMS_ULTILITY        DBMS_ULTILITY
    ULT_FILE    允許PL/SQL程序讀寫服務器文件系統上的文本文件的過程與函數

    39、如何解決單機監聽不啟動的問題:
    你給IP固定一個值,然后配置NET8時最好用機器名,把listener.ora,tnsname.ora里的IP改成機器名。

    40、查看日志文件的路徑和數量:
    select * from v$logfile;

    41、oracle中的配置文件:
    init.ora
    tnsname.ora
    listener.ora
    sqlnet.ora

    42、如何利用rownum 檢索紀錄:(在oracle中,只能通過rownum檢索比rownum值小的所有的列)利用如下方法,可以檢索表中rownum等于固定值的列:
    select * from ( select rownum rn,column1,column2,… from table_name) where rn=要查詢的值;

    43、利用translate(char,from,to)函數判斷一個字符串是否可以轉換成 number 型:
    translate(str,'x1234567890','x') is null,則str為純字符串。
    利用from to 參數,把str字段中所有的0-9的字符替換為空,然后判斷函數返回值,返回值為空,則str一定可以轉換成number型。

    44、如何修改internal 用戶的密碼?
    用法:orapwd file= password= entries=
    參數解釋:
        file - name of password file (mand),
        password - password for SYS and INTERNAL (mand),
        entries - maximum number of distinct DBA and OPERs (opt),
        There are no spaces around the equal-to (=) character.
    1)進入DOS下
    2)默認internal密碼文件在c:\orant\database下,是隱藏屬性,文件名稱與數據庫實例名有關
      如默認ORACLE實例名為ORCL,則internal密碼文件名為pwdorcl.ora
    3)建立新的internal密碼文件,起個新名字為pwdora8.ora
      orapwd80 file=pwdora8.ora password=B entries=5     
    --注:password項一定要用大寫,并且不要用單引號
    4)拷貝pwdora8.ora文件到c:\orant\database目錄下
    5)運行regedit,修改口令文件指向
    6)找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE項
      定位ORA_ORCL_PWFILE子項,改變其值為c:\orant\database\pwdora8.ora
    7)關閉ORACLE數據庫,重新啟動
    Cool進入svrmgrl服務程序,測試internal密碼是否更改成功

    45、只有對象的擁有者才有對對象的操作權。如,把用戶user1下的表tab_1賦給用戶user2 查看的權限。此時,必須以uer1用戶登陸,讓后執行如下語句:
    grant select on tab_1 to user2;

    46、Oracle的本地進程    ps -aef | grep LOCAL=YES   的父進程ID不能為 1 ,若為 1 ,則該進程被掉死,需要用命令殺死改進程?。?br />
    47、在Windows 2000 server 操作系統下,用 net start 命令啟動oracle的服務,如下:
    net start OracleServiceORCL
    net start OracleStartORCL
    net start OracleTNSListener80
    net start OracleWWWListener80
    或者,利用 net stop 命令來終止服務:
    net stop oraclestartorcl
    net stop oracleserviceorcl
    net stop oracletnslistener80

    啟動數據庫的另外一個方法:
    oradim -startup -sid SID
    關閉數據庫的另外一個方法:
    oradim -shutdown -sid SID

    48、多表操作在被實際執行前,查詢優化器會根據連接條件,列出幾組可能的連接方案并從中找出系統開銷最小的最佳方案。連接條件要充份考慮帶有索引的表、行數多的表;內外表的選擇可由公式:外層表中的匹配行數*內層表中每一次查找的次數確定,乘積最小為最佳方案。

    49、保持Oracle數據庫優良性能的若干訣竅:
    1)    分區:
    根據實際經驗所得,在一個大數據庫中,數據庫空間的絕大多數是被少量的表所占有。如何簡化大數據庫和管理,如何改善應用的查詢性能,一般可以使用分區這種手段。所謂分區就是動態地將表中記錄分離到若干不同的表空間上,使數據在物理上被分割開來,便于維護、備份、恢復、事務及查詢性能。當使用的時候可建立一個連接所有分區的視圖,使其在邏輯上仍以一個整體出現。
    (1)建立分區表
    Create table Employee (
    EmpNo varchar2(10) primary key,
    Name varchar2(30),
    DeptNo Number(2)
    )
    Partition by range(DeptNo)
    (
    partition PART1 values less than (11)
    tablespace PART1_TS,
    partition PART2 values less than (21)
    tablespace PART2_TS,
    partition PART3 values less than (31)
    tablespace PART3_TS
    partition PART4 values less than (MAXVALUE)
    tablespace PART4_TS
    );
    表Employee依據DeptNo列進行分區。
    (2)分區索引
    Create index Employee_DeptNo on Employee(DeptNo)
    local (
    partition PART1 tablespace PART1_NDX_TS,
    partition PART2 tablespace PART2_NDX_TS,
    partition PART3 tablespace PART3_NDX_TS,
    partition PART4 tablespace PART4_NDX_TS,
    );
    當分區中出現許多事務并且要保證所有分區中的數據記錄的唯一性時采用全局索引,如:
    Create index Employee_DeptNo on Employee(DeptNo)
    global partition by range (DeptNo)
    (
    partition PART1 values less than (11)
    tablespace PART1_NDX_TS,
    partition PART2 values less than (21)
    tablespace PART2_NDX_TS,
    partition PART3 values less than (31)
    tablespace PART3_NDX_TS
    partition PART4 values less than (MAXVALUE)
    tablespace PART4_NDX_TS
    );
    在建立全局索引時,global子句允許指定索引的范圍值,這個范圍值可以不同于表分區的范圍值。只有建立局部索引才會使索引索引分區與表分區間建立起一一對應關系。因此,在大多數情況下,應該使用局部索引分區。若使用了此索引,分區就能夠很容易地將索引分區與表分區建立關聯,局部索引比全局索引更易于管理。
    (3)分區管理
    根據實際需要,還可以使用 alter table 命令來增加、丟棄、交換、移動、修改、重命名、劃分、截短一個已存在分區的結構。

    2)Rebuild Indexes(重建索引不會影響存儲過程)
    如果表中記錄頻繁的被刪除或插入,盡管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不管表中記錄數量是否增加--只僅僅是因為索引中無效空間量的增加。
    要回收那些曾被刪除記錄使用的空間,需要使用alter index rebuild 命令??梢宰鲆粋€定期運行的批處理程序,來重建最活動表的索引。這個批處理程序可以在空閑時運行,以避免程序與用戶沖突。若能堅持索引的這一程序規劃,便可以及時回收那些未使用空間,提高空間利用率。

    3)段的碎片整理
    當生成一個數據庫對象時(一個表或一個索引),通過用戶缺省值或指定值來為它指定表空間。一個在表空間中所生成的段,用于存儲對象的相關數據。在段被關閉、收縮、截斷之前,段所分配的空間將不被釋放。
    一個段是由范圍組成,而范圍是由相鄰的Oracle塊組成。一旦存在的范圍不能再存儲新的數據,那這個段就會去獲得新的范圍,且并不要求這些范圍是彼此相鄰的。這樣的擴展會一直繼續下去,直到表空間中的數據文件不能提供更多的自由空間,或者范圍數量已達到極限。
    因此,一個碎片太多的數據段,不僅會影響運行,也會引發表空間中的空間管理問題。所以,每個數據段只含有一個范圍是十分有益的。借助監控系統,可以通過檢查DBA_SEGMENTS數據字典視圖來了解哪些數據庫對象含有10個或更多范圍的段,確定其數據段碎片。
    若一個段的碎片過多,可用兩種方法解決這個問題:
    (1)用正確的存儲參數建立一個新表,將舊表中的數據插入到新表中,再刪除舊表;
    (2)利用Export/Import工具。
    如:exp system/manager file=exp.dmp compress=Y grants=Y indexes=Y tables=(T1,T2)
    若輸出成功,進入Oracle,刪除上述表。
    注:compress=Y決定將在輸出過程中修改它們的存儲參數。
    imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y
    注:在輸入時重新配置新的存儲參數。

    自由范圍的碎片整理
    表空間中的一個自由范圍是表空間中相連自由(空間)塊的集合。當一個段關閉時,它的范圍將被釋放,并被標記為自由范圍。然而,這些自由范圍再也不能與相鄰的自由范圍合并,它們之間的界線始終存在。但是當表空間的缺省值pctincrease設置不為0時,SMON后臺進會定期的將這些相鄰的自由范圍合并。若pctincrease設置為0,那相鄰自由范圍不會被數據庫自動合并。但可以使用 alter tablespace 命令coalesce選項,來強迫進行相鄰自由范圍的合并。
    不進行自由范圍合并,在日后的空間請求中,會影響到表空間中的空間分配。當需要一個足夠大的范圍時,數據庫并不會合并相鄰的自由范圍,除非沒有其他選擇。這樣,當表空間中前面較小自由范圍已被相關使用時,將使用表空間中后面部分最大的一個自由范圍。結果,會因為它們沒有足夠多的使用空間,從而導致表空間中速度上的矛盾。由于這樣的進程出現,使數據庫的空間分配距理想越來越遠。自由空間碎片常會出現在那些經常關閉又重新生成的數據庫表和索引中。
    在理想的ORACLE表空間中,每一個數據庫對象存儲在一個單獨的范圍中,并且所有有效自由空間集中在一個巨大而連續的范圍中。這樣,在一個對象需要附加存儲空間時,可以在增加獲取足夠大自由空間的可能性同時,最小化空間中的循環調用,提高自由空間使用率

    50、查看和修改Oracle服務器端字符集:
    方法一:
    1)    查看服務器端字符集:
    select * from v$nls_parameters;
    select * from nls_database_parameters;
    select * from sys.props$;
    2)    修改服務器端字符集(用sys用戶):
    首先執行:update props$ set value$ = 'WE8ISO8859P1' where name ='NLS_CHARACTERSET';
    update props$ set value$ = 'china' where name ='NLS_LANGUAGE';
    提交(commit),然后,重新啟動數據庫;
    3)用客戶端工具(PL/SQL DEVELOP or PB etc.)查詢數據庫,若顯示亂碼,先查詢出數據庫端的字符集,然后,從注冊表中修改NLS_LANG字段的值,可能為AMERICAN_AMERICA.WE8ISO8859P1或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者NA等。
    方法二:
    alter system enable restricted session;
    alter database ORCL character set ZHS16GBK;
    alter database ORCL national character set ZHS16GBK;

    51、查看系統中的角色:
    select * from dba_roles;
    -------------------------------------------------------------------------------------------------------------
    Oracle中查看所有的表
    select   table_name   from   user_tables;     //當前用戶的表  
       
      select   table_name   from   all_tables;     //所有用戶的表  
       
      select   table_name   from   dba_tables;       //包括系統表
    -------------------------------------------------------------------------------------------------------------
    posted @ 2008-11-07 09:34 勒緊皮帶向前沖 閱讀(884) | 評論 (0)編輯 收藏
     

    File類有兩個構造方法,File(父目錄,文件名),關聯指定的目錄下指定名稱的文件,File(文件名/目錄名),關聯某個文件名或者目錄,這里的/表示的意思是“或者”。
        比較好的方法是先用一個File對象關聯一個目錄名,然后創建這個目錄,(mkdir()),再用構造方法構造一個文件。以下的代碼是在“我的文檔”里創建一個名為“1.txt”的文件。
      File dir=new File("C:"+File.separator+"Documents and Settings"+File.separator+"Yxy"+File.separator+"My Documents");  //此處注意轉義字符
      dir.mkdir();  //創建目錄
      File file1=new File(dir,"1.txt");
      file1.createNewFile();  //創建一個新文件
            String[] str1=dir.list();  //下文說到的list()
        //不知道為什么這里的空格硬是只能這么長,代碼是我從我自己的代碼里拷過來的,汗      
        //一個先
        各位,其實這里可以用轉義字符“\\”來代替File.separator,但是這不是一個好的習慣。為了實現Java的一次編譯,四處運行的性感特點,我們需要一個通用的文件分隔符,因為各種操作系統下存在差異,比如linux的文件分隔符是正斜杠"/"。而File的特性separator正是獲取當前操作系統下的文件分隔符。另,千萬不要將讓"\"單獨存在,在代碼中這是一個轉義字符的標識,它會將接下來的一個字符理解為轉義字符。
         除了這種方法可以創建新的文件,還可以調用File類下的一個靜態函數
     File createTempFile(String prefix,String suffix,File directory),這是一個完整的版本,在指定的目錄下創建一個以prefix為前綴名,suffix為后綴名的臨時文件,通過deleteOnExit()來刪除。但是還有一個精簡的版本,
    File createTempFile(String prefix,String suffix),沒有指定目錄,將在當前操作系統默認的臨時文件夾里創建以prefix為前綴名,suffix為后綴名的臨時文件。
         以上是如何創建文件,接下來講的是如何查閱目錄下的文件和通過文件過濾器查找文件。
        看到前面的代碼里寫到的list()方法了嗎,返回一個String類型的數組,獲取當前目錄下的所有文件名,包括目錄名(即文件夾)。但是,這樣是不夠的,無法找到我們所需要的文件,我們需要的是按我們的要求找到某個房間。Java.io包類提供類文件過濾器FileNameFilter,它是一個接口,內有方法boolean accept(File dir, String name),這是一個需要重寫的方法,重寫了這個方法之后,list(FileNameFileter f)方法可以列出符合我們要求的方法。
    本文來源【學網】網站鏈接是http://www.xue5.com

     Java中的separator,pathSeparator等常量- -

    File.separatorChar 返回一個字符,表示當前系統默認的文件名分隔符,在Windows中為"\",unix中為"/"。
    File.separator 與前者相同,但將分隔符作為字符串類型返回。
    pathSeparatorChar 返回一個字符,表示當前系統默認的路徑名分隔符,在Windows中為";",unix中為":"
    File.pathSeparator 與前者相同,但將分隔符作為字符串類型返回。

    正文為JDKAPI幫助文檔相關內容:


    separatorChar
    public static final char separatorCharThe system-dependent default name-separator character. This field is initialized to contain the first character of the value of the system property file.separator. On UNIX systems the value of this field is '/'; on Microsoft Windows systems it is '\'.

    See Also:
    System.getProperty(java.lang.String)

    --------------------------------------------------------------------------------

    separator
    public static final String separatorThe system-dependent default name-separator character, represented as a string for convenience. This string contains a single character, namely separatorChar.


    --------------------------------------------------------------------------------

    pathSeparatorChar
    public static final char pathSeparatorCharThe system-dependent path-separator character. This field is initialized to contain the first character of the value of the system property path.separator. This character is used to separate filenames in a sequence of files given as a path list. On UNIX systems, this character is ':'; on Microsoft Windows systems it is ';'.

    See Also:
    System.getProperty(java.lang.String)

    --------------------------------------------------------------------------------

    pathSeparator
    public static final String pathSeparatorThe system-dependent path-separator character, represented as a string for convenience. This string contains a single character, namely pathSeparatorChar.

    posted @ 2008-11-06 11:24 勒緊皮帶向前沖 閱讀(553) | 評論 (0)編輯 收藏
    僅列出標題
    共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
     
    主站蜘蛛池模板: 国产一级a毛一级a看免费人娇| 精品无码AV无码免费专区| 国产亚洲精品不卡在线| 久久免费福利视频| 亚洲色精品三区二区一区| 亚洲色偷偷狠狠综合网| 亚洲黄色免费电影| 精品视频免费在线| 亚洲伦另类中文字幕| 国产色婷婷精品免费视频| 精品一卡2卡三卡4卡免费视频| 色偷偷亚洲女人天堂观看欧| 亚洲欧洲久久久精品| 五月婷婷综合免费| 好男人资源在线WWW免费| 亚洲国产精品免费观看| 亚洲桃色AV无码| 日本黄页网站免费| 99re6免费视频| xxxx日本在线播放免费不卡| 亚洲免费福利在线视频| 亚洲成A∨人片在线观看不卡| 免费高清在线影片一区| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲色最新高清av网站| 亚洲人精品午夜射精日韩| 在线免费观看一级毛片| 免费A级毛片无码视频| 亚洲阿v天堂在线2017免费| 亚洲人av高清无码| 亚洲精品韩国美女在线| 亚洲乱码精品久久久久..| 国产乱色精品成人免费视频| 成人免费视频69| 无码A级毛片免费视频内谢| 一本到卡二卡三卡免费高| 亚洲国产成人无码AV在线影院| 亚洲午夜国产精品| 亚洲av成人无码久久精品| 亚洲人成网7777777国产| 亚洲成a人一区二区三区|