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

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

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

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

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

    構(gòu)造方法摘要
    ThreadGroup(String name)
              構(gòu)造一個(gè)新線程組。
    ThreadGroup(ThreadGroup parent, String name)
              創(chuàng)建一個(gè)新線程組。


     

    posted @ 2008-11-14 11:58 勒緊皮帶向前沖 閱讀(213) | 評(píng)論 (0)編輯 收藏
     
    posted @ 2008-11-11 21:18 勒緊皮帶向前沖 閱讀(213) | 評(píng)論 (0)編輯 收藏
     
         摘要: 第一個(gè)   1/** *//************************************************   2MD5 算法的Java Bean   3@author:Topcat Tuppin   4Last Modified:10,Mar...  閱讀全文
    posted @ 2008-11-11 11:38 勒緊皮帶向前沖 閱讀(260) | 評(píng)論 (0)編輯 收藏
     
         摘要:   1import java.io.*;   2import java.util.*;   3/** *//**   4  *   5  * <p>Title: LOG 日志記錄&...  閱讀全文
    posted @ 2008-11-11 11:24 勒緊皮帶向前沖 閱讀(272) | 評(píng)論 (0)編輯 收藏
     
     1import java.util.*;
     2/**
     3 * <p>Title: Time  </p>
     4 * <p>Description: </p>
     5 *      此類主要用來取得本地系統(tǒng)的系統(tǒng)時(shí)間并用下面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 * 取得本地系統(tǒng)的時(shí)間,時(shí)間格式由參數(shù)決定
    24 * @param format 時(shí)間格式由常量決定
    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 * 產(chǎn)生任意位的字符串
    61 * @param time 要轉(zhuǎn)換格式的時(shí)間
    62 * @param format 轉(zhuǎn)換的格式
    63 * @return String 轉(zhuǎn)換的時(shí)間
    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 勒緊皮帶向前沖 閱讀(201) | 評(píng)論 (0)編輯 收藏
     
    JS的正則表達(dá)式
    2008年11月06日 星期四 07:22


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

    //校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開頭、可帶數(shù)字、“_”、“.”的字串
    [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]

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

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

    //校驗(yàn)普通電話、傳真號(hào)碼:可以“+”開頭,除數(shù)字外,可含有“-”
    [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]

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

    //校驗(yàn)郵政編碼
    [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]

    //校驗(yàn)搜索關(guān)鍵字
    [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]

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

    正則表達(dá)式使用詳解

    簡介

    簡單的說,正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)有力的工具。其作用如下:
    測(cè)試字符串的某個(gè)模式。例如,可以對(duì)一個(gè)輸入字符串進(jìn)行測(cè)試,看在該字符串是否存在一個(gè)電話號(hào)碼模式或一個(gè)信用卡號(hào)碼模式。這稱為數(shù)據(jù)有效性驗(yàn)證。
    替換文本。可以在文檔中使用一個(gè)正則表達(dá)式來標(biāo)識(shí)特定文字,然后可以全部將其刪除,或者替換為別的文字。
    根據(jù)模式匹配從字符串中提取一個(gè)子字符串。可以用來在文本或輸入字段中查找特定文字。

    基本語法

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

    正則表達(dá)式的形式一般如下:  

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

    “+”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)一次或多次。

    “*”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中出現(xiàn)零次或連續(xù)多次。

    “?”元字符規(guī)定其前導(dǎo)對(duì)象必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)零次或一次。

    下面,就讓我們來看一下正則表達(dá)式元字符的具體應(yīng)用。

    /fo+/  因?yàn)樯鲜稣齽t表達(dá)式中包含“+”元字符,表示可以與目標(biāo)對(duì)象中的 “fool”, “fo”, 或者 “football”等在字母f后面連續(xù)出現(xiàn)一個(gè)或多個(gè)字母o的字符串相匹配。

    /eg*/  因?yàn)樯鲜稣齽t表達(dá)式中包含“*”元字符,表示可以與目標(biāo)對(duì)象中的 “easy”, “ego”, 或者 “egg”等在字母e后面連續(xù)出現(xiàn)零個(gè)或多個(gè)字母g的字符串相匹配。

    /Wil?/  因?yàn)樯鲜稣齽t表達(dá)式中包含“?”元字符,表示可以與目標(biāo)對(duì)象中的 “Win”, 或者“Wilson”,等在字母i后面連續(xù)出現(xiàn)零個(gè)或一個(gè)字母l的字符串相匹配。

    有時(shí)候不知道要匹配多少字符。為了能適應(yīng)這種不確定性,正則表達(dá)式支持限定符的概念。這些限定符可以指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配。

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

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

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

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

    使用實(shí)例
    在JavaScript 1.2中帶有一個(gè)功能強(qiáng)大的RegExp()對(duì)象,可以用來進(jìn)行正則表達(dá)式的匹配操作。其中的test()方法可以檢驗(yàn)?zāi)繕?biāo)對(duì)象中是否包含匹配模式,并相應(yīng)的返回true或false。
    我們可以使用JavaScript編寫以下腳本,驗(yàn)證用戶輸入的郵件地址的有效性。
    [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]

    正則表達(dá)式對(duì)象
    本對(duì)象包含正則表達(dá)式模式以及表明如何應(yīng)用模式的標(biāo)志。
    [code]
    語法 1 re = /pattern/[flags]
    語法 2 re = new RegExp("pattern",["flags"])
    [/code]
    參數(shù)
    re
    必選項(xiàng)。將要賦值為正則表達(dá)式模式的變量名。

    Pattern
    必選項(xiàng)。要使用的正則表達(dá)式模式。如果使用語法 1,用 "/" 字符分隔模式。如果用語法 2,用引號(hào)將模式引起來。

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

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

    返回值: ain,ain,ain,ain\\
    屬性 lastIndex 屬性 | source 屬性\\
    方法 compile 方法 | exec 方法 | test 方法\\
    要求 版本 3\\
    請(qǐng)參閱 RegExp 對(duì)象 | 正則表達(dá)式語法 | String 對(duì)象\\

    exec 方法
    用正則表達(dá)式模式在字符串中運(yùn)行查找,并返回包含該查找結(jié)果的一個(gè)數(shù)組。
    rgExp.exec(str)

    參數(shù)

    rgExp
    必選項(xiàng)。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象。

    str
    必選項(xiàng)。要在其中執(zhí)行查找的 String 對(duì)象或字符串文字。

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

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

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

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

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

    參數(shù)\\
    rgexp
    必選項(xiàng)。包含正則表達(dá)式模式或可用標(biāo)志的正則表達(dá)式對(duì)象。

    str
    必選項(xiàng)。要在其上測(cè)試查找的字符串。

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

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

    函數(shù)調(diào)用: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 方法
    使用正則表達(dá)式模式對(duì)字符串執(zhí)行查找,并將包含查找的結(jié)果作為數(shù)組返回。\\
    stringObj.match(rgExp)

    參數(shù)\\
    stringObj
    必選項(xiàng)。對(duì)其進(jìn)行查找的 String 對(duì)象或字符串文字。

    rgExp
    必選項(xiàng)。為包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象。也可以是包含正則表達(dá)式模式和可用標(biāo)志的變量名或字符串文字。

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

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

    本示例說明帶 g 標(biāo)志設(shè)置的 match 方法的用法。
    [code]
    function MatchDemo()
    {
    var r, re; // 聲明變量。
    var s = "The rain in Spain falls mainly in the plain";
    re = /ain/ig; // 創(chuàng)建正則表達(dá)式模式。
    r = s.match(re); // 嘗試去匹配搜索字符串。
    return(r); // 返回的數(shù)組包含了所有 "ain"
    // 出現(xiàn)的四個(gè)匹配。
    }
    [/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 方法
    返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)子字符串的位置。

    stringObj.search(rgExp)

    參數(shù)\\
    stringObj
    必選項(xiàng)。要在其上進(jìn)行查找的 String 對(duì)象或字符串文字。

    rgExp
    必選項(xiàng)。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象。

    說明

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \d 匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。

    \D 匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。

    \f 匹配一個(gè)換頁符。等價(jià)于 \x0c 和 \cL。

    \n 匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。

    \r 匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。

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

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

    \t 匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。

    \v 匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。

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

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

    \xn 匹配 n,其中 n 為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長。例如, '\x41' 匹配 "A"。'\x041' 則等價(jià)于 '\x04' & "1"。正則表達(dá)式中可以使用 ASCII 編碼。.

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

    \n 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)后向引用。如果 \n 之前至少 n 個(gè)獲取的子表達(dá)式,則 n 為后向引用。否則,如果 n 為八進(jìn)制數(shù)字 (0-7),則 n 為一個(gè)八進(jìn)制轉(zhuǎn)義值。

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

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

    \un 匹配 n,其中 n 是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的 Unicode 字符。例如, \u00A9 匹配版權(quán)符號(hào) (?)。


    優(yōu)先權(quán)順序
    在構(gòu)造正則表達(dá)式之后,就可以象數(shù)學(xué)表達(dá)式一樣來求值,也就是說,可以從左至右并按照一個(gè)優(yōu)先權(quán)順序來求值。

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

    普通字符

    普通字符由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數(shù)字,所有標(biāo)點(diǎn)符號(hào)以及一些符號(hào)。

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

    /a7M/
    等價(jià)的 VBScript 表達(dá)式為:

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

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

    轉(zhuǎn)自http://hi.baidu.com/zml525/blog/item/59a3a277ed10ba19b051b957.html

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

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

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

    (2.1)
         修改端口號(hào)(默認(rèn)為8080,現(xiàn)改為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)
            添加發(fā)布文件夾,并為每個(gè)文件夾指定要綁定的域名:
            因?yàn)橄胍獙?shí)現(xiàn),在發(fā)布文件夾根目錄下發(fā)布項(xiàng)目,所以,一個(gè)文件夾只能發(fā)布一個(gè)項(xiàng)目,所以,要指定不同的文件夾。
            在<Host name=" 此處是要綁定的域名 " debug="0"   appBase=" 此處是發(fā)布目錄 "
              unpackWARs="true" autoDeploy="true"      xmlValidation="false" xmlNamespaceAware="false">
            如果要建多個(gè)發(fā)布目錄,可以在<Host name.....></Host> 的前邊再加上一個(gè)<Host name....></Host>

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

    4.附錄:
       (4.1)
          C:\WINDOWS\system32\drivers\etc下的hosts文件,內(nèi)容格式為:IP地址    域名
          例如:  
          202.102.240.91    web.nyist.net
       (4.2)
          Tomcat 5.0\conf下的server.xml文件,內(nèi)容基本為:(注: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)
            現(xiàn)在文件夾的結(jié)構(gòu)是:
            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是項(xiàng)目目錄;test和webapps是發(fā)布目錄;

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

    查看每個(gè)表空間占用空間的大小:
        Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name
    -------------------------------------------------------------------------------------------------------------
    查詢Oralce中某個(gè)用戶有多少個(gè)存儲(chǔ)過程
    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、數(shù)據(jù)庫實(shí)例(也稱為服務(wù)器Server),是用來訪問一個(gè)數(shù)據(jù)庫文件集的一個(gè)存儲(chǔ)結(jié)構(gòu)及后臺(tái)進(jìn)程的集合。Oralce并行服務(wù)器是指一個(gè)單獨(dú)的數(shù)據(jù)庫可以被多個(gè)實(shí)例訪問。

    13、查詢實(shí)例名:
       select instance_name from v$instance;

    14、查詢動(dòng)態(tài)視圖v$waitstat、v$system_event、v$session_event、v$session_wait和v$ buffer_pool_statistics(在Oracle8中通過catperf.sql腳本創(chuàng)建)以獲取下面所的統(tǒng)計(jì)信息,
    目的是為了檢查服務(wù)器進(jìn)程是否正等待DBWR(對(duì)單個(gè)會(huì)話而言,也對(duì)整個(gè)數(shù)據(jù)庫而言)。

    15、
    (1)SMON:系統(tǒng)監(jiān)控程序
    (2)PMON:進(jìn)程監(jiān)控程序
    (3)DBWR:數(shù)據(jù)庫寫入程序
    (4)LGWR:日志寫入程序
    (5)CKPT:檢查點(diǎn)進(jìn)程
    (6)ARCH:歸檔日志
    (7)RECO:恢復(fù)進(jìn)程
    (8)SNPn:快照進(jìn)程
    (9)LCKn:鎖定進(jìn)程
    (10)Dnnn:調(diào)度程序進(jìn)程
    (11)Snnn:服務(wù)器進(jìn)程
    (12)Pnnn:并行查詢服務(wù)器進(jìn)程

    16、數(shù)據(jù)庫備份之前,若使用了shutdown abort命令,則需要進(jìn)行如下操作,然后才能進(jìn)行數(shù)據(jù)庫備份:
    1)    執(zhí)行一個(gè)shutdown abort命令;
    2)    啟動(dòng)數(shù)據(jù)庫實(shí)例;
    3)    執(zhí)行shutdown命令;

    17、使用OPS數(shù)據(jù)庫時(shí),如何解決兩個(gè)服務(wù)器同時(shí)對(duì)同一記錄的更新?
    更新同一個(gè)表的數(shù)據(jù)的用戶使用同一個(gè)實(shí)例來訪問數(shù)據(jù)庫。

    18、通過ORACLE數(shù)據(jù)庫對(duì)非ORACLE數(shù)據(jù)庫進(jìn)行訪問,首先需要在運(yùn)行非ORACLE數(shù)據(jù)庫的服務(wù)器端安裝ORACLE透明網(wǎng)關(guān)產(chǎn)品,每種被訪問的數(shù)據(jù)引擎需要一個(gè)獨(dú)立的網(wǎng)關(guān);然后需要在本地ORACLE數(shù)據(jù)庫中建立一個(gè)數(shù)據(jù)庫連接(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數(shù)據(jù)類型在數(shù)據(jù)庫中引用的外部數(shù)據(jù),BFILE數(shù)據(jù)類型含有一個(gè)指向外部二進(jìn)制數(shù)據(jù)文件的指針,用戶必須通過CREATE DIRECTORY命令,在ORACLE中創(chuàng)建一個(gè)目錄指針,指向存儲(chǔ)文件的目錄。
    6)    用作通過DBMS_PIPE訪問的外部程序,該程序必須以O(shè)RACLE支持的3GL來編寫。

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

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

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

    24、創(chuàng)建表時(shí)指定數(shù)據(jù)表空間和索引表空間:
    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表空間只有在大型排序操作時(shí)才使用;

    26、STORAGE子句的意義:
    Storage(initial 盤區(qū)大小 next 盤區(qū)大小 pctincrease 每個(gè)順序盤區(qū)幾何增長的系數(shù));
    使用非零pctincrease參數(shù)的結(jié)果:
    storage(initial 10M next 10M pctincrease 50);
    盤區(qū)號(hào)        大小        總塊數(shù)        盤區(qū)容量注釋
    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
    .. .. .. .. .. ..
    理想的情況:
    一個(gè)段只具有一個(gè)大小合適的盤區(qū),并且next值較小,設(shè)表的pctincrease值為零;
    實(shí)際上:
    在表空間級(jí)設(shè)置pctincrease的值為零,會(huì)影響ORACLE自動(dòng)合并表空間中自由空間的能力,把表空間缺省pctincrese設(shè)置為一個(gè)非常低的值,例如1;

    27、通常稱作TEMP的臨時(shí)表空間,由于其自身的特點(diǎn)會(huì)有很多碎片,臨時(shí)段總是在不斷的創(chuàng)建、擴(kuò)展和撤銷,對(duì)于臨時(shí)表,將INITIAL和NEXT盤區(qū)大小設(shè)為表空間大小的1/20到1/50,對(duì)于這個(gè)表空間,INITIAL和NEXT缺省設(shè)置應(yīng)該相等,PCTINCREASE的值為0,這樣,段將有同樣大小的盤區(qū)構(gòu)成,當(dāng)撤消這些段時(shí),下一個(gè)臨時(shí)段將能夠重新利用這些已撤消的盤區(qū)。

    28、
    1)將一個(gè)表空間改為臨時(shí)表空間:
    alter tablespace tablespace_name temporary;
    2)將一個(gè)表空間轉(zhuǎn)換為能存儲(chǔ)永久對(duì)象:
    alter tablespace tablespace_name permenent;
    3)強(qiáng)制表空間合并其自由空間(只能合并位置相鄰的自由盤區(qū)):
    alter tablespace talbespace_name coalesce;

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

    40、移動(dòng)數(shù)據(jù)文件:
    1)    關(guān)閉實(shí)例;
    2)    使用操作系統(tǒng)命令來移動(dòng)數(shù)據(jù)文件;
    3)    安裝數(shù)據(jù)文件并使用ALTER DATABASE命令改變數(shù)據(jù)庫中的文件名;
    4)    啟動(dòng)實(shí)例;
    具體步驟如下:
    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;
    查看回滾段狀態(tài)信息:dba_rollback_segs;
    查看數(shù)據(jù)庫回滾段的當(dāng)前分配情況:dba_segments;

    32、
    若系統(tǒng)中有多個(gè)表空間,就需要在system表空間中創(chuàng)建"第二回滾段"來支持多個(gè)表空間,有了"第二回滾段",system表空間就只用于管理數(shù)據(jù)庫級(jí)的事務(wù)。

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

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

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

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

    37、察看數(shù)據(jù)庫的大小,和空間使用情況
    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提供了幾個(gè)包,它們可以用來完成很多任務(wù),從內(nèi)部進(jìn)程通信到文件I/O,到在PL/SQL塊中動(dòng)態(tài)創(chuàng)建和執(zhí)行SQL語句。所有這些包由SYS用戶所擁有-當(dāng)Oracle最初安裝時(shí)兩個(gè)用戶中的一個(gè),這些包中最重要的包括:
    DBMS_ALERT          不用輪詢就允許應(yīng)用命名并發(fā)出警告條件信號(hào)的過程與函數(shù)
    DBMS_DDL          允許獲取PL/SQL程序內(nèi)部一定數(shù)量的DDL語句的過程
    DBMS_DESCRIBE    為存儲(chǔ)過程與函數(shù)描述API的過程
    DBMS_JOB           管理BLOBs、CLOBs、NCLOBs與BFILEs的過程與函數(shù)
    DBMS_OUTPUT        允許PL/SQL程序生成終端輸出的過程與函數(shù)
    DBMS_PIPE           允許數(shù)據(jù)庫會(huì)話使用管道通信(通信頻道)的過程與函數(shù)
    DBMS_SQL           在PL/SQL程序內(nèi)部執(zhí)行動(dòng)態(tài)SQL的過程與函數(shù)
    DBMS_ULTILITY        DBMS_ULTILITY
    ULT_FILE    允許PL/SQL程序讀寫服務(wù)器文件系統(tǒng)上的文本文件的過程與函數(shù)

    39、如何解決單機(jī)監(jiān)聽不啟動(dòng)的問題:
    你給IP固定一個(gè)值,然后配置NET8時(shí)最好用機(jī)器名,把listener.ora,tnsname.ora里的IP改成機(jī)器名。

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

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

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

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

    44、如何修改internal 用戶的密碼?
    用法:orapwd file= password= entries=
    參數(shù)解釋:
        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)進(jìn)入DOS下
    2)默認(rèn)internal密碼文件在c:\orant\database下,是隱藏屬性,文件名稱與數(shù)據(jù)庫實(shí)例名有關(guān)
      如默認(rèn)ORACLE實(shí)例名為ORCL,則internal密碼文件名為pwdorcl.ora
    3)建立新的internal密碼文件,起個(gè)新名字為pwdora8.ora
      orapwd80 file=pwdora8.ora password=B entries=5     
    --注:password項(xiàng)一定要用大寫,并且不要用單引號(hào)
    4)拷貝pwdora8.ora文件到c:\orant\database目錄下
    5)運(yùn)行regedit,修改口令文件指向
    6)找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE項(xiàng)
      定位ORA_ORCL_PWFILE子項(xiàng),改變其值為c:\orant\database\pwdora8.ora
    7)關(guān)閉ORACLE數(shù)據(jù)庫,重新啟動(dòng)
    Cool進(jìn)入svrmgrl服務(wù)程序,測(cè)試internal密碼是否更改成功

    45、只有對(duì)象的擁有者才有對(duì)對(duì)象的操作權(quán)。如,把用戶user1下的表tab_1賦給用戶user2 查看的權(quán)限。此時(shí),必須以u(píng)er1用戶登陸,讓后執(zhí)行如下語句:
    grant select on tab_1 to user2;

    46、Oracle的本地進(jìn)程    ps -aef | grep LOCAL=YES   的父進(jìn)程ID不能為 1 ,若為 1 ,則該進(jìn)程被掉死,需要用命令殺死改進(jìn)程!!

    47、在Windows 2000 server 操作系統(tǒng)下,用 net start 命令啟動(dòng)oracle的服務(wù),如下:
    net start OracleServiceORCL
    net start OracleStartORCL
    net start OracleTNSListener80
    net start OracleWWWListener80
    或者,利用 net stop 命令來終止服務(wù):
    net stop oraclestartorcl
    net stop oracleserviceorcl
    net stop oracletnslistener80

    啟動(dòng)數(shù)據(jù)庫的另外一個(gè)方法:
    oradim -startup -sid SID
    關(guān)閉數(shù)據(jù)庫的另外一個(gè)方法:
    oradim -shutdown -sid SID

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

    49、保持Oracle數(shù)據(jù)庫優(yōu)良性能的若干訣竅:
    1)    分區(qū):
    根據(jù)實(shí)際經(jīng)驗(yàn)所得,在一個(gè)大數(shù)據(jù)庫中,數(shù)據(jù)庫空間的絕大多數(shù)是被少量的表所占有。如何簡化大數(shù)據(jù)庫和管理,如何改善應(yīng)用的查詢性能,一般可以使用分區(qū)這種手段。所謂分區(qū)就是動(dòng)態(tài)地將表中記錄分離到若干不同的表空間上,使數(shù)據(jù)在物理上被分割開來,便于維護(hù)、備份、恢復(fù)、事務(wù)及查詢性能。當(dāng)使用的時(shí)候可建立一個(gè)連接所有分區(qū)的視圖,使其在邏輯上仍以一個(gè)整體出現(xiàn)。
    (1)建立分區(qū)表
    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依據(jù)DeptNo列進(jìn)行分區(qū)。
    (2)分區(qū)索引
    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,
    );
    當(dāng)分區(qū)中出現(xiàn)許多事務(wù)并且要保證所有分區(qū)中的數(shù)據(jù)記錄的唯一性時(shí)采用全局索引,如:
    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
    );
    在建立全局索引時(shí),global子句允許指定索引的范圍值,這個(gè)范圍值可以不同于表分區(qū)的范圍值。只有建立局部索引才會(huì)使索引索引分區(qū)與表分區(qū)間建立起一一對(duì)應(yīng)關(guān)系。因此,在大多數(shù)情況下,應(yīng)該使用局部索引分區(qū)。若使用了此索引,分區(qū)就能夠很容易地將索引分區(qū)與表分區(qū)建立關(guān)聯(lián),局部索引比全局索引更易于管理。
    (3)分區(qū)管理
    根據(jù)實(shí)際需要,還可以使用 alter table 命令來增加、丟棄、交換、移動(dòng)、修改、重命名、劃分、截短一個(gè)已存在分區(qū)的結(jié)構(gòu)。

    2)Rebuild Indexes(重建索引不會(huì)影響存儲(chǔ)過程)
    如果表中記錄頻繁的被刪除或插入,盡管表中的記錄總量保持不變,索引空間的使用量會(huì)不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項(xiàng)的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會(huì)不斷增加,不管表中記錄數(shù)量是否增加--只僅僅是因?yàn)樗饕袩o效空間量的增加。
    要回收那些曾被刪除記錄使用的空間,需要使用alter index rebuild 命令。可以做一個(gè)定期運(yùn)行的批處理程序,來重建最活動(dòng)表的索引。這個(gè)批處理程序可以在空閑時(shí)運(yùn)行,以避免程序與用戶沖突。若能堅(jiān)持索引的這一程序規(guī)劃,便可以及時(shí)回收那些未使用空間,提高空間利用率。

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

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

    50、查看和修改Oracle服務(wù)器端字符集:
    方法一:
    1)    查看服務(wù)器端字符集:
    select * from v$nls_parameters;
    select * from nls_database_parameters;
    select * from sys.props$;
    2)    修改服務(wù)器端字符集(用sys用戶):
    首先執(zhí)行:update props$ set value$ = 'WE8ISO8859P1' where name ='NLS_CHARACTERSET';
    update props$ set value$ = 'china' where name ='NLS_LANGUAGE';
    提交(commit),然后,重新啟動(dòng)數(shù)據(jù)庫;
    3)用客戶端工具(PL/SQL DEVELOP or PB etc.)查詢數(shù)據(jù)庫,若顯示亂碼,先查詢出數(shù)據(jù)庫端的字符集,然后,從注冊(cè)表中修改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、查看系統(tǒng)中的角色:
    select * from dba_roles;
    -------------------------------------------------------------------------------------------------------------
    Oracle中查看所有的表
    select   table_name   from   user_tables;     //當(dāng)前用戶的表  
       
      select   table_name   from   all_tables;     //所有用戶的表  
       
      select   table_name   from   dba_tables;       //包括系統(tǒng)表
    -------------------------------------------------------------------------------------------------------------
    posted @ 2008-11-07 09:34 勒緊皮帶向前沖 閱讀(887) | 評(píng)論 (0)編輯 收藏
     

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

     Java中的separator,pathSeparator等常量- -

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

    正文為JDKAPI幫助文檔相關(guān)內(nèi)容:


    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 勒緊皮帶向前沖 閱讀(560) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
     
    主站蜘蛛池模板: 亚洲中文字幕在线无码一区二区 | a级毛片在线视频免费观看| 免费的一级片网站| 亚洲综合一区二区三区四区五区 | 一级人做人爰a全过程免费视频| 四虎永久成人免费| 成人爽a毛片免费| 亚洲乱码中文字幕综合| 国产V片在线播放免费无码| 久久亚洲AV无码西西人体| 最近中文字幕大全免费版在线 | 久久夜色精品国产噜噜噜亚洲AV| 91老湿机福利免费体验| 亚洲一级毛片免费观看| 女性无套免费网站在线看| 色天使亚洲综合在线观看| 国产成人免费a在线视频app| 亚洲av无码不卡一区二区三区| 无码日韩精品一区二区免费暖暖 | 亚洲AV成人无码久久精品老人| 国产亚洲sss在线播放| 久久天天躁狠狠躁夜夜免费观看| 亚洲一区二区三区写真| 亚洲精品99久久久久中文字幕| 91免费福利视频| 亚洲小说图片视频| 国产又长又粗又爽免费视频| 西西人体免费视频| 亚洲欧洲在线播放| 免费h黄肉动漫在线观看| 成人性生交大片免费看好| 亚洲一级免费毛片| 成人亚洲网站www在线观看| 久久精品免费观看| 亚洲一级特黄特黄的大片| 2048亚洲精品国产| 免费精品国产自产拍在| 一级做a爰片久久毛片免费陪| 亚洲精品免费视频| 国产成人精品免费视频大全五级| 久久免费高清视频|