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

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

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

    KevinGong

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 1 Stories :: 9 Comments :: 0 Trackbacks

    2006年9月11日 #

    /*
    ?* 簡(jiǎn)單的讀/寫(xiě)文本文件的示例
    ?* 這里包含了三個(gè)例子,即
    ?* 1. 將文件讀入到內(nèi)存(這里是StringBuffer)的例子
    ?* 2. 將內(nèi)容中的文本寫(xiě)到文件
    ?* 3. 將一個(gè)文件的內(nèi)容讀出來(lái)寫(xiě)入另一個(gè)文件中
    ?*??? 同時(shí)也展示了如果從輸入流中讀出來(lái)內(nèi)容寫(xiě)入輸出流中(僅限文本流)
    ?* 三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。
    ?*/

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
    import java.io.PrintWriter;

    public final class AccessTextFile {

    ??? /**
    ???? * 1. 演示將流中的文本讀入一個(gè) StringBuffer 中
    ???? * @throws IOException
    ???? */
    ??? public void readToBuffer(StringBuffer buffer, InputStream is)
    ??????? throws IOException {
    ??????? String line;??????? // 用來(lái)保存每行讀取的內(nèi)容
    ??????? BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    ??????? line = reader.readLine();?????? // 讀取第一行
    ??????? while (line != null) {????????? // 如果 line 為空說(shuō)明讀完了
    ??????????? buffer.append(line);??????? // 將讀到的內(nèi)容添加到 buffer 中
    ??????????? buffer.append("\n");??????? // 添加換行符
    ??????????? line = reader.readLine();?? // 讀取下一行
    ??????? }
    ??? }

    ??? /**
    ???? * 2. 演示將 StringBuffer 中的內(nèi)容讀出到流中
    ???? */
    ??? public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
    ??????? // 用 PrintStream 可以方便的把內(nèi)容輸出到輸出流中
    ??????? // 其對(duì)象的用法和 System.out 一樣
    ??????? // (System.out 本身就是 PrintStream 對(duì)象)
    ??????? PrintStream ps = new PrintStream(os);??
    ??????? ps.print(buffer.toString());
    ??? }

    ??? /**
    ???? * 3*. 從輸入流中拷貝內(nèi)容到輸入流中
    ???? * @throws IOException
    ???? */
    ??? public void copyStream(InputStream is, OutputStream os) throws IOException {
    ??????? // 這個(gè)讀過(guò)過(guò)程可以參閱 readToBuffer 中的注釋
    ??????? String line;
    ??????? BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    ??????? PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
    ??????? line = reader.readLine();
    ??????? while (line != null) {
    ??????????? writer.println(line);
    ??????????? line = reader.readLine();
    ??????? }
    ??????? writer.flush();???? // 最后確定要把輸出流中的東西都寫(xiě)出去了
    ??????????????????????????? // 這里不關(guān)閉 writer 是因?yàn)?os 是從外面?zhèn)鬟M(jìn)來(lái)的
    ??????????????????????????? // 既然不是從這里打開(kāi)的,也就不從這里關(guān)閉
    ??????????????????????????? // 如果關(guān)閉的 writer,封裝在里面的 os 也就被關(guān)了
    ??? }

    ??? /**
    ???? * 3. 調(diào)用 copyStream(InputStream, OutputStream) 方法拷貝文本文件
    ???? */
    ??? public void copyTextFile(String inFilename, String outFilename)
    ??????? throws IOException {
    ??????? // 先根據(jù)輸入/輸出文件生成相應(yīng)的輸入/輸出流
    ??????? InputStream is = new FileInputStream(inFilename);
    ??????? OutputStream os = new FileOutputStream(outFilename);
    ??????? copyStream(is, os);???? // 用 copyStream 拷貝內(nèi)容
    ??????? is.close(); // is 是在這里打開(kāi)的,所以需要關(guān)閉
    ??????? os.close(); // os 是在這里打開(kāi)的,所以需要關(guān)閉
    ??? }

    ??? public static void main(String[] args) throws IOException {
    ??????? int sw = 1;???? // 三種測(cè)試的選擇開(kāi)關(guān)
    ??????? AccessTextFile test = new AccessTextFile();
    ???????
    ??????? switch (sw) {
    ??????? case 1: // 測(cè)試讀
    ??????? {
    ??????????? InputStream is = new FileInputStream("E:\\test.txt");
    ??????????? StringBuffer buffer = new StringBuffer();
    ??????????? test.readToBuffer(buffer, is);
    ??????????? System.out.println(buffer);???? // 將讀到 buffer 中的內(nèi)容寫(xiě)出來(lái)
    ??????????? is.close();
    ??????????? break;
    ??????? }
    ??????? case 2: // 測(cè)試寫(xiě)
    ??????? {
    ??????????? StringBuffer buffer = new StringBuffer("Only a test\n");
    ??????????? test.writeFromBuffer(buffer, System.out);
    ??????????? break;
    ??????? }
    ??????? case 3: // 測(cè)試拷貝
    ??????? {
    ??????????? test.copyTextFile("E:\\test.txt", "E:\\r.txt");
    ??????? }
    ??????????? break;
    ??????? }
    ??? }

    }

    posted @ 2007-02-03 21:58 KevinGong 閱讀(31697) | 評(píng)論 (0)編輯 收藏

    這一章我主要介紹X系統(tǒng)用的主要配置文件XF86Config-4,我采用了對(duì)照的方法介紹,一邊貼出我的XF86Config-4文件,一邊介紹具體的內(nèi)容。這篇文章對(duì)于大家沒(méi)有什么立桿見(jiàn)影的幫助,不果可以讓你對(duì)于X的只是有一個(gè)基本的了解。

    XF86Config-4文件是X系統(tǒng)的主要配置文件。在Redhat 8以前版本中都叫做XF86Config-4這個(gè)名字,Redhat 8已經(jīng)不再叫做這個(gè)名字。

    編輯這個(gè)文件需要小心謹(jǐn)慎一點(diǎn),因?yàn)橐稽c(diǎn)錯(cuò)誤,你的X將不能啟動(dòng)。不果沒(méi)關(guān)系啦,改回來(lái)就是了學(xué)習(xí)Linux最好的辦法當(dāng)然還是求助于男人(man),大家有什么問(wèn)題盡管看看man的幫助就是了。如果你要?jiǎng)h除文件中的內(nèi)容,最好不要直接的刪除,而應(yīng)該在前面加上#符號(hào)把它變成注釋。

    在Redhat 8以前的版本中,X的配置工具是Xconfigurator,在Debian中X的配種方法是:
    dpkg-reconfigure xserver-xfree86
    當(dāng)然你都得用root的身份來(lái)運(yùn)行。

    在/usr/share/doc/xfree86-common/FAQ.gz文件中你可以看到具體的技巧。


    第一段是Files段,這個(gè)部分用來(lái)配置X系統(tǒng)說(shuō)能夠使用的字體,每一行都代表一個(gè)目錄,保存了具體的字體和字體的配置信息。
    代碼:

    Section "Files"
    ? ?? ???FontPath? ?? ???"/usr/X11R6/lib/X11/fonts/xp"
    ? ?FontPath? ?? ???"/usr/X11R6/lib/X11/fonts/XChinese"
    ? ?FontPath? ?"unix/:7100"? ?? ?? ?# 這是本地字體服務(wù)器
    ? ?# 如果本地字體服務(wù)器出了問(wèn)題,我們可以使用下面的配置
    ? ?FontPath? ?"/usr/lib/X11/fonts/misc"
    ? ?FontPath? ?"/usr/lib/X11/fonts/cyrillic"
    ? ?FontPath? ?"/usr/lib/X11/fonts/100dpi/:unscaled"
    ? ?FontPath? ?"/usr/lib/X11/fonts/75dpi/:unscaled"
    ? ?FontPath? ?"/usr/lib/X11/fonts/Type1"
    ? ?FontPath? ?"/usr/lib/X11/fonts/Speedo"
    ? ?FontPath? ?"/usr/lib/X11/fonts/100dpi"? ?#這兩個(gè)字體是每一個(gè)X
    ? ?FontPath? ?"/usr/lib/X11/fonts/75dpi"? ?#系統(tǒng)都必需安裝的英文字體
    EndSection

    下面的是模塊段,用來(lái)配置X系統(tǒng)加載的模塊。
    代碼:

    Section "Module"
    ? ?Load? ?"xtt"? ?? ?#gtk1使用的字體引擎,效果好,速度稍慢
    ? ?Load? ?"GLcore"? ?#如果你是用的是Nvidia的顯卡,似乎一定要注消掉這一行
    ? ?Load? ?"bitmap"
    ? ?Load? ?"dbe"
    ? ?Load? ?"ddc"
    ? ?Load? ?"dri"
    ? ?Load? ?"extmod"
    #? ?Load? ?"freetype"? ?#如果你使用了xtt模塊,那么freetype模塊就需要注消掉
    ? ?Load? ?"glx"
    ? ?Load? ?"int10"
    ? ?Load? ?"record"
    ? ?Load? ?"speedo"
    ? ?Load? ?"type1"
    ? ?Load? ?"vbe"
    EndSection


    下面的段是用來(lái)配置你的鍵盤(pán)的,屬于“輸入設(shè)備”
    代碼:

    Section "InputDevice"
    ? ?Identifier? ?"Generic Keyboard"? ?#這是你的鍵盤(pán)的名字,隨便你啦
    ? ?Driver? ?? ?"keyboard"? ?? ?#鍵盤(pán)的驅(qū)動(dòng)…哇,鍵盤(pán)也有驅(qū)動(dòng)
    ? ?Option? ?? ?"CoreKeyboard"? ?? ?#如果你有多個(gè)鍵盤(pán),那么你需要在這里指定哪一個(gè)鍵盤(pán)是主要的鍵盤(pán)
    ? ?Option? ?? ?"XkbRules"? ?"xfree86"
    ? ?Option? ?? ?"XkbModel"? ?"pc104"? ?#鍵盤(pán)的分布格式,一般來(lái)說(shuō)
    ? ?Option? ?? ?"XkbLayout"? ?"us"? ?#美國(guó)104鍵盤(pán)是大家通用的。
    EndSection


    這里配置你的鼠標(biāo),當(dāng)然你可以配置兩個(gè)鼠標(biāo),如果你有的話
    代碼:

    Section "InputDevice"
    ? ?Identifier? ?"Configured Mouse"? ?#鼠標(biāo)的名字
    ? ?Driver? ?? ?"mouse"? ?? ?? ?#鼠標(biāo)的驅(qū)動(dòng)
    ? ?Option? ?? ?"CorePointer"? ?? ?
    ? ?Option? ?? ?"Device"? ?? ?"/dev/input/mice"
    ? ?#注意,這里很重要,這是鼠標(biāo)的設(shè)備文件
    ? ?#我的鼠標(biāo)是光電鼠標(biāo),用的USB接口,對(duì)應(yīng)的鼠標(biāo)文件是/dev/input/mice
    ? ?#如果你的鼠標(biāo)是普通的滾輪鼠標(biāo),用的是PS2接口,那么你應(yīng)該使用
    ? ?#/dev/mouse或者/dev/psaux或者/dev/ttys0這個(gè)設(shè)備
    ? ?Option? ?? ?"rotocol"? ?? ?"ImPS/2"
    ? ?#這是鼠標(biāo)的類型,如果不是是滾輪鼠標(biāo),那么使用PS/2
    ? ?Option? ?? ?"Emulate3Buttons"? ?"true"
    ? ?#在Linux系統(tǒng)中,鼠標(biāo)的第三個(gè)鍵非常有用,
    ? ?#如果你的鼠標(biāo)沒(méi)有第三個(gè)鍵,那么我們應(yīng)該允許使用雙鍵同時(shí)點(diǎn)擊來(lái)模擬
    ? ?Option? ?? ?"ZAxisMapping"? ?? ?"4 5"
    EndSection


    下面的設(shè)備是顯卡,這是最頭痛的設(shè)備了,如果你的顯卡太新潮,很有可能不能支持哦。Nvidia的GForce2顯卡就必需自己編譯顯卡的驅(qū)動(dòng)程序才能使用
    代碼:

    Section "Device"
    ? ?Identifier? ?"Generic Video Card"
    ? ?Driver? ?? ?"ati"? ?? ?#如果你是Nivida的顯卡,這里應(yīng)該是"nvidia"
    EndSection



    這個(gè)設(shè)備是顯示器。
    代碼:

    Section "Monitor"
    ? ?Identifier? ?"Generic Monitor"? ?#顯示器的名字
    ? ?HorizSync? ?30-60? ?? ?? ?#顯示器的頻率,一半來(lái)說(shuō)你的顯示器
    ? ?VertRefresh? ?50-75? ?? ?? ?#應(yīng)該可以達(dá)到我的這個(gè)水平
    ? ?? ?? ?? ?? ?? ?#因?yàn)槲业娘@示器是15"的老顯示器了
    ? ?? ?? ?? ?? ?? ?#大家的電腦都比我的好吧?
    ? ?Option? ?? ?"DPMS"
    EndSection


    下面是綜合以上你的配置的設(shè)備的各種顯示效果
    代碼:

    Section "Screen"
    ? ?Identifier? ?"Default Screen"? ?#效果的名字
    ? ?Device? ?? ?"Generic Video Card"? ?#你可以指定你的顯卡的名字
    ? ?Monitor? ?? ?"Generic Monitor"? ?#指定你的顯示器的名字
    ? ?DefaultDepth? ?24? ?? ?? ?#默認(rèn)的顏色深度
    ? ?SubSection "Display"
    ? ?? ?Depth? ?? ?1
    ? ?? ?Modes? ?? ?"1024x768"
    ? ?EndSubSection
    ? ?SubSection "Display"
    ? ?? ?Depth? ?? ?4
    ? ?? ?Modes? ?? ?"1024x768"
    ? ?EndSubSection
    ? ?SubSection "Display"
    ? ?? ?Depth? ?? ?8
    ? ?? ?Modes? ?? ?"1024x768"
    ? ?EndSubSection
    ? ?SubSection "Display"
    ? ?? ?Depth? ?? ?16
    ? ?? ?Modes? ?? ?"1024x768"? ?#在這里你可以指定掃描頻率例如
    ? ?? ?? ?? ?? ?? ?#"1024x768 @ 85"就是用85mhz的頻率
    ? ?EndSubSection
    ? ?SubSection "Display"
    ? ?? ?Depth? ?? ?24
    ? ?? ?Modes? ?? ?"1024x768"
    ? ?EndSubSection
    EndSection



    最終你必需定義下面的段用來(lái)告訴X服務(wù)器你使用的配置
    代碼:

    Section "ServerLayout"
    ? ?Identifier? ?"Default Layout"? ?#剛才我們給我們的配置取的名字
    ? ?Screen? ?? ?"Default Screen"? ?#給我們的效果取的名字
    ? ?InputDevice? ?"Generic Keyboard"? ?#我們的鍵盤(pán)的名字
    ? ?InputDevice? ?"Configured Mouse"? ?#我們的鼠標(biāo)的名字
    ? ?? ?? ?? ?? ?#這些名字一定要在前面的配置中已經(jīng)定義
    EndSection

    Section "DRI"
    ? ?Mode? ?0666
    EndSection



    一般來(lái)說(shuō)我們X啟動(dòng)時(shí)候會(huì)遇到的問(wèn)題是:
    1:no screen found
    這有可能是你沒(méi)有正確的定義所需要的效果,也有可能是你的其他部分定義出錯(cuò)倒置你的效果不能實(shí)現(xiàn)
    2:xtt和freetype的沖突,注消一個(gè)就可以了
    3:驅(qū)動(dòng)沒(méi)有找到,如果你的顯卡非常的新潮,那么多半是這個(gè)錯(cuò)誤了,編譯你的驅(qū)動(dòng)吧…

    posted @ 2006-10-29 14:26 KevinGong 閱讀(282) | 評(píng)論 (0)編輯 收藏

    現(xiàn)在請(qǐng)輸入你的用戶名和密碼,當(dāng)然,我們輸入root,這樣獲得一切管理權(quán)限!

    你一定非常希望立刻看到那些非常漂亮的圖形界面,但是也許我要讓你失望了。我建議在沒(méi)有使用圖形界面以前,首先熟練的掌握基本的Linux命令,這樣才是一個(gè)真正的Linuxer。從哪里開(kāi)始呢?

    1. ls 列出文件和目錄的命令

    你一定很想知道你的電腦里面有哪些東西,現(xiàn)在執(zhí)行命令ls,啊,怎么什么都沒(méi)有?當(dāng)然啦,這是你第一次登錄到這個(gè)系統(tǒng),你的默認(rèn)位置是你的個(gè)人目錄,而不是系統(tǒng)根目錄。你還沒(méi)有在這個(gè)目錄里面存放任何的個(gè)人文件,當(dāng)然什么都沒(méi)有啦。如果你是用root用戶登錄的話,你的個(gè)人目錄就是/root目錄;如果你是用普通用戶登錄,比如叫做kris,那么kris的個(gè)人目錄是/kris。前面的/是什么意思呢?就是“根”的意思,就是最前面的那個(gè)目錄,在根目錄下面建立有很多的子目錄,我們?cè)诘谝徽乱呀?jīng)討論過(guò)了。

    ls命令有很多的選項(xiàng),常用的是:

    -A 選項(xiàng)用來(lái)列出所有的文件,包括那些隱藏的文件。為什么我們要隱藏文件呢?道理和你為什么要把情書(shū)藏起來(lái)不讓爸媽發(fā)現(xiàn)是一樣的。就是為了保密啊。現(xiàn)在執(zhí)行l(wèi)s -A看看?是不是有一個(gè)隱藏文件“.bashrc”被顯示出來(lái)啦?聰明的你一定奇怪的發(fā)現(xiàn)這個(gè)文件名前面有一個(gè)點(diǎn),對(duì)!記住,只要文件名前面第一個(gè)字符是一個(gè)“.”,這個(gè)文件就是隱藏文件。一個(gè)目錄名前面的第一個(gè)字符如果是“.”這個(gè)目錄就是隱藏目錄。
    -l 這個(gè)選項(xiàng)用來(lái)顯示一個(gè)列表,包含了這個(gè)目錄下面所有的文件的絕大部分屬性的列表。你可以每個(gè)文件的大小,所有者,你的權(quán)限還有修改日期等等。
    -R R的意思就是recursive遞歸,明顯這個(gè)選項(xiàng)讓系統(tǒng)顯示出這個(gè)目錄下面的所有文件以外,還要顯示出所有子目錄下面的文件。也就是把我們那一大堆水果全部抖出來(lái)。
    --color 這個(gè)選項(xiàng)特別有用,我估計(jì)大家的顯示器都是彩顯吧,什么?你的顯示器還是黑白的?天哪!既然是彩顯,那么我們可以讓ls命令用不同的眼色代表不同的文件類型。比如可執(zhí)行文件用綠色,普通文件是白色,目錄是藍(lán)色。也許你會(huì)問(wèn),目錄也是文件嗎?對(duì)的,在Linux里面一切都是文件,所有的硬件設(shè)備都用一個(gè)文件來(lái)代替,比如你的軟驅(qū),就是用/dev/fd0來(lái)代替的。目錄也是一個(gè)文件。
    --help 這個(gè)選項(xiàng)幾乎是每一個(gè)Linux命令都有的,用來(lái)顯示出該命令的幫助信息。

    2. cd 和 mkdir 以及 rm 改變當(dāng)然所在目錄,建立新目錄以及刪除目錄命令

    趁熱打鐵的,剛才說(shuō)了目錄,我們每一次登錄都有一個(gè)默認(rèn)目錄就是我們的個(gè)人用戶目錄。我們?cè)趺床拍艿狡渌哪夸浫ツ兀縞d就是用來(lái)改變當(dāng)前所在的目錄的。前面我們說(shuō)過(guò),“/”代表根目錄,那么執(zhí)行cd /就可以進(jìn)入根目錄。不試一下嗎?
    讓我們看看根目錄下面有哪些文件和子目錄吧,執(zhí)行l(wèi)s,我們發(fā)現(xiàn),根目錄下面有一個(gè)目錄名子特別變態(tài),叫做usr,進(jìn)去看看,cd usr,看看這里面有什么?你會(huì)發(fā)現(xiàn)一個(gè)更psycho(變態(tài))的目錄叫做src,進(jìn)入src目錄看看?沒(méi)什么好玩的。那么我們現(xiàn)在回到剛才的usr目錄,怎么做?是不是cd usr?執(zhí)行試一下,好像不行,系統(tǒng)報(bào)告出錯(cuò) cd: usr: No such file or directory。這是怎么搞的?問(wèn)題在于我們現(xiàn)在所在的目錄是/usr/src下,我們執(zhí)行cd usr的意思是進(jìn)入/usr/src/usr目錄而不是/usr目錄。正確的方法是cd /usr。
    就好比你在中華美食的籮筐里面看到一個(gè)四川的籮筐,里面有一個(gè)成都的小籮筐,現(xiàn)在你進(jìn)入以后發(fā)現(xiàn)成都的小籮筐里面有一種叫做“麻辣燙”的很辣的食品。你大飽口福以后想要吃一些甜點(diǎn),于是準(zhǔn)備去福州。你能站在成都的籮筐里面去福州嗎?當(dāng)然不行,福州并不在成都的籮筐里面啊,你應(yīng)該進(jìn)入“/中華美食/福州”而不是“/中華美食/四川/成都/福州”對(duì)不對(duì)?
    好的,一個(gè)問(wèn)題出現(xiàn)了,難道我每一次進(jìn)入一個(gè)目錄,都要用/usr/src...這么復(fù)雜的方式來(lái)表示嗎?不一定。我們用“..”的方式來(lái)表示上一層目錄。如果你現(xiàn)在在/usr/src目錄下,進(jìn)入/usr目錄有兩種辦法:cd /usr和cd ..他們是一樣的。

    怎樣才能知道我現(xiàn)在在哪個(gè)目錄?用命令pwd,這個(gè)命令沒(méi)有什么好說(shuō)的,執(zhí)行一次就知道了。

    現(xiàn)在我想在我自己的個(gè)人目錄里面建立一個(gè)目錄叫做LoveLetter。我應(yīng)該首先回到我自己的目錄,這里有一個(gè)簡(jiǎn)單的方法,就是直接運(yùn)行cd不帶任何參數(shù),這樣就可以回到自己的目錄,當(dāng)然也可以cd /root或者cd /home/kris,看你是用什么用戶登錄的。
    進(jìn)入我自己的目錄以后,建立新目錄的命令是
    mkdir 新目錄名
    我執(zhí)行 mkdir LoveLetter 就可以建立一個(gè)新的叫做LoveLetter的目錄。進(jìn)入這個(gè)目錄看看?什么都沒(méi)有。不著急,慢慢來(lái)。我都不著急你急什么?
    突然我想起這臺(tái)電腦我的爸媽也要使用,他們看到我的情書(shū)目錄怎么辦?你忘了剛才我說(shuō)的可以用加一個(gè)點(diǎn)“.”在前面的方法來(lái)隱藏目錄和文件的?我們可以改變這個(gè)目錄的名字,但是這個(gè)命令我準(zhǔn)備等會(huì)兒講,現(xiàn)在我們用一個(gè)很無(wú)聊的辦法來(lái)完成這個(gè)要求。這個(gè)辦法就是刪掉剛才建立的oveLetter目錄在新建一個(gè).LoveLetter目錄,之所以說(shuō)這個(gè)辦法很無(wú)聊,是因?yàn)槲覀儸F(xiàn)在是在做實(shí)驗(yàn),如果來(lái)真的,你原意刪掉你的情書(shū)嗎?是不是另有新歡啦?哈哈。

    刪除目錄的命令其實(shí)也可以刪除文件,就是rm。
    rm 待刪除的文件名/目錄名
    我記得Redhat會(huì)提示你是不是真的要?jiǎng)h除。按y就是確定,按n就是取消。如果Redhat沒(méi)有提示你,那么等會(huì)請(qǐng)根據(jù)我說(shuō)的方法修改一下系統(tǒng)讓它提示咱們。免得以后心痛。刪除一個(gè)文件很簡(jiǎn)單。麻煩的是刪除一個(gè)目錄,如果一個(gè)目錄里面已經(jīng)有文件,rm是不讓直接刪除的,你必需先把目錄里面的所有文件刪除,再刪除目錄。但是有一個(gè)參數(shù)可以改變一下,就是 -rf ,這個(gè)參數(shù)有一定的危險(xiǎn)性,因?yàn)榧词瓜到y(tǒng)本來(lái)要提醒一下是不是真的刪除目錄,加上這個(gè)參數(shù)也不會(huì)有提示了。執(zhí)行rm 目錄 -rf會(huì)在一眨眼的時(shí)間里面讓你的資料下課!
    那么我現(xiàn)在就刪除LoveLetter目錄了:rm LoveLetter -rf
    建立一個(gè)新的目錄mkdir .LoveLetter
    現(xiàn)在ls看看,是不是看不到LoveLetter目錄了?但是ls -A還是能看到的。所以這種隱藏方式只能偏偏自己,真正讓你的文件安全的方式還是以后再講吧。

    3. mv 改變文件名和目錄名的命令
    cp 復(fù)制文件和目錄命令
    man 命令使用方法參考工具

    mv 老文件名 新文件名
    mv 老目錄名 新目錄名
    就可以改變文件或者目錄的名字。
    我現(xiàn)在想要把剛才的這個(gè)目錄.LoveLetter改名回去,因?yàn)檫@種無(wú)聊的隱藏方式很變態(tài),我們有更高級(jí)的方法來(lái)做這樣一件事情:就是不要告訴爸媽你的密碼!!!
    mv .LoveLetter LoveLetter

    cp命令用來(lái)把一個(gè)文件復(fù)制成為一個(gè)新的文件,

    cp 老文件名 新文件名

    這個(gè)老文件明和新文件名如果在同一個(gè)目錄下面,那么當(dāng)然需要名字不一樣,很簡(jiǎn)單的道理,如果文件名一樣何必建立兩個(gè)文件?如果新老文件在不同的目錄,我們就可以讓它們有相同的名子。下面的例子說(shuō)明了這一點(diǎn):

    cp LoveLetter LoveLetter_yesterday 新的文件LoveLetter_yesterday和舊的LoveLetter在同一個(gè)目錄,所以名子不一樣。
    cp LoveLetter /home/LoveLetter 新的文件在/home目錄下面,但是舊的文件LoveLetter在某一個(gè)用戶的個(gè)人目錄下面,當(dāng)然兩者名子可以相同。

    cp命令也可以復(fù)制整個(gè)目錄,但是現(xiàn)在我們暫時(shí)不講這么復(fù)雜。其實(shí)cp還有rm以及l(fā)s這些命令不僅是整個(gè)Linux的基本命令,更包含了非常多的功能。如果大家有興趣,可以使用man

    man 命令名字

    比如man ls,這樣就可以看到所有l(wèi)s命令和參數(shù)的詳悉解釋,尤其是一部分常用的命令的man幫助已經(jīng)由志愿者翻譯了,大家看起來(lái)更容易。

    一點(diǎn)幽默

    好了,說(shuō)了好多東西了,我想休息一下,給大家說(shuō)一個(gè)有趣的事情,我們說(shuō)了好多命令和目錄的名子,你們是不是覺(jué)得有點(diǎn)奇怪。說(shuō)實(shí)在話,我第一次看到usr這個(gè)目錄時(shí)也不知道是什么意思,后來(lái)才發(fā)現(xiàn)以下對(duì)應(yīng)關(guān)系:
    usr ->; user
    ls ->; list
    mkdir ->; make dir
    rm ->; remove
    src ->; source
    mv ->; move
    cp ->; copy

    是不是很有趣,在UNIX世界,包括Linux世界,人們的想象力就是這么無(wú)敵!簡(jiǎn)寫(xiě)居然能簡(jiǎn)寫(xiě)成這樣子。大家一般的想法是取一個(gè)單詞的前三個(gè)或者前四個(gè)字母作為簡(jiǎn)寫(xiě),可是UNIX的牛人就是喜歡把move簡(jiǎn)寫(xiě)成為mv,真不知道他們?cè)趺聪氲摹4蠹乙黄鹱矫?

    4. nano 和 vi編輯文件的命令 和 cat 以及 more顯示文本文件

    nano是一個(gè)小巧自由,并且友好的編輯器,我認(rèn)為nano更適合初學(xué)Linux的朋友使用。我們現(xiàn)在只學(xué)習(xí)怎樣編輯一個(gè)文件以及怎樣保存。

    nano 文件名

    如果你寫(xiě)的文件名已經(jīng)存在,那么就打開(kāi)并且編輯,否則就建立一個(gè)新的文件。編輯的方法還用說(shuō)嗎?呵呵,當(dāng)你想要退出的時(shí)候,按ctrl+x,nano會(huì)問(wèn)你是不是保存編輯的文件。按Y就是保存,按N就不保存。

    nano最大好處在于用戶可以不用記憶太多的操作鍵,大部分常用的功能的操作方法都在屏幕下放列出了。新手需要注意的是“^X”就是按住ctrl鍵不放再按X的意思。

    下面簡(jiǎn)單的介紹vi。vi是一個(gè)非常強(qiáng)大的編輯軟件。它太龐大了,足夠?qū)懸槐緯?shū)專門(mén)來(lái)講解。我們這里從使用的角度出發(fā),講一下vi的用法。
    vi有兩種模式,一種是命令模式,一種是編輯模式。進(jìn)入vi以后,默認(rèn)處于命令模式。

    現(xiàn)在我們執(zhí)行vi LoveLetter。進(jìn)入以后,按一下鍵盤(pán)上的Insert功能鍵或者i鍵可以進(jìn)入編輯狀態(tài),可以插入字符,再按一下Insert變成復(fù)蓋模式,這兩種模式的區(qū)別很容易體現(xiàn),大家嘗試一下就可以了。上下左右四個(gè)方向鍵可以移動(dòng)光標(biāo)。基本的編輯命令和Windows里面沒(méi)有區(qū)別。是不是很容易呢?當(dāng)你把需要的內(nèi)容輸入完成以后,我們要保存,這時(shí)候按一下ESC鍵從編輯模式回到命令模式,首先輸入一個(gè)冒號(hào)“:”,也就是按住SHIFT鍵不放再按分號(hào)“;”這樣首先輸入一個(gè)“:”,然后,輸入w,回車(chē),就可以保存我們編輯的內(nèi)容到LoveLetter文件。現(xiàn)在我們按一下Insert就可以繼續(xù)編輯。再按ESC,輸入“:”,再按w又可以保存。可是現(xiàn)在我們不需要保存,我們想要不保存就退出,怎么做呢?當(dāng)我們輸入w的時(shí)候是write的意思,保存,那么我們輸入q就是quit退出的意思。好,輸入q,回車(chē),vi提示我們剛才進(jìn)行的修改還沒(méi)有保存,所以記住!一旦需要放棄我們的修改,不能直接用q命令退出,而需要用“q!”命令。輸入q!,好了,退出了。
    我們想看看我們剛才編輯的LoveLetter是不是真的保存好了,再vi LoveLetter,ok,看到了吧?現(xiàn)在我們想要直接退出,就可以只輸入“:q”就可以了,不用輸入那個(gè)“!”因?yàn)槲覀儧](méi)有修改文件內(nèi)容。如果我們修改一下這篇文章,我們?cè)谕顺龅臅r(shí)候可以輸入“ESC : wq”就可以了。不需要把w和q分成兩次輸入。

    vi的最最基本用法說(shuō)到這里差不多了,要是你還想多了解一些vi的知識(shí),在進(jìn)入vi以后直接按F1就可以了,有詳悉的幫助和教學(xué)。

    其實(shí)剛才我們想要看一下編輯的LoveLetter是不是保存好了,不用再vi進(jìn)去的,只需要用命令

    cat LoveLetter

    就可以了。cat就是用來(lái)顯示文本文件內(nèi)容的命令。如果我們的文本文件很長(zhǎng),一個(gè)屏幕顯示不完,cat是不會(huì)自動(dòng)分頁(yè)的。我們可以換用命令

    more LoveLetter

    more命令顯示文本文件時(shí),如果內(nèi)容過(guò)多,會(huì)自動(dòng)的在每一頁(yè)結(jié)束時(shí)暫停下來(lái),等到用戶按一下空格鍵再繼續(xù)。

    5. 最重要的命令:halt reboot 關(guān)機(jī)和重新啟動(dòng)命令

    在Linux里面,不能夠直接用電源按鈕關(guān)機(jī),也不能直接用reset按鈕重新啟動(dòng),這對(duì)系統(tǒng),尤其是硬盤(pán)有比較大的影響。關(guān)機(jī)命令是halt,重啟動(dòng)命令是reboot。其實(shí)還有shutdown命令完成類似功能,需要的話,請(qǐng)用今天學(xué)會(huì)的man命令學(xué)習(xí)使用。
    posted @ 2006-10-29 14:17 KevinGong 閱讀(441) | 評(píng)論 (1)編輯 收藏

    http://www.m-heaven.com/dreamweaver/
    posted @ 2006-09-22 14:23 KevinGong 閱讀(503) | 評(píng)論 (2)編輯 收藏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>無(wú)標(biāo)題文檔</title>
    </head>

    <body>
    <p>
    ? <object id="player" style="display:none" height="400" width="400" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
    ??? <param name="invokeURLs" value="-1">
    ??? <param NAME="AutoStart" VALUE="-1">
    ??? <param name="currentPosition" value="0">
    ??? <param name='uiMode' value='mini'>
    ??? <param NAME="url" VALUE="test.mpg">
    ? </object>
    </p>
    <input name="submit" type="submit" onclick="getInfo()">
    <p>
    ?
    <script language="javascript">
    ?var time;
    ? function getInfo(){
    ??var pl=document.getElementById("player");
    ?? time=pl.currentMedia.durationString;
    ?? alert(parseInt(pl.currentMedia.durationString.substring(0,2)*60));
    ?? //alert(parseInt(pl.currentMedia.durationString.substring(3,5)));
    ??alert(parseInt(pl.currentMedia.durationString.substring(0,2)*60)+parseInt(pl.currentMedia.durationString.substring(3,5)));
    ?}
    </script>
    </p>
    </body>
    </html>


    ??? 首先,我們必須明確,為什么要使用J2EE?J2EE優(yōu)點(diǎn)是什么?使用J2EE的主要原因是多層結(jié)構(gòu),傳統(tǒng)的兩層C/S結(jié)構(gòu)難于維護(hù),穩(wěn)定性極差,界面代碼和數(shù)據(jù)庫(kù)代碼混淆在一起,牽一動(dòng)百,多層結(jié)構(gòu)使得界面和數(shù)據(jù)庫(kù)完全分離,并且誕生了中間件這樣的技術(shù),如下圖:

    Web+EJB能組成真正的多層結(jié)構(gòu)

      為什么使用EJB我原先認(rèn)為這不是一個(gè)討論的話題,因?yàn)镋JB是J2EE重要的組成部分,可以說(shuō)沒(méi)有EJB的J2EE只是一種Web系統(tǒng),這樣的系統(tǒng)非常容易喪失了多層結(jié)構(gòu)的大部分優(yōu)點(diǎn)(仔細(xì)想想那些混合多種層次功能JavaBeans和傳統(tǒng)兩層結(jié)構(gòu)有什么區(qū)別?)。

      當(dāng)然,可以人為地在Javabeans之間進(jìn)行層次劃分,例如Hibernate算數(shù)據(jù)持久層,某些JavaBeans是業(yè)務(wù)核心層,但是因?yàn)槎际瞧胀↗avaBeans,這種劃分沒(méi)有一種強(qiáng)制性和明顯標(biāo)志性,這樣的系統(tǒng)更換了主創(chuàng)人員或設(shè)計(jì)師,可能就會(huì)被新的程序員修改得非常混亂。

      我們先看看一個(gè)包含EJB的J2EE系統(tǒng)是如何清晰地表達(dá)層次。如下圖:

      Web完全只是一個(gè)MVC模式的實(shí)現(xiàn),關(guān)鍵業(yè)務(wù)核心是在EJB的服務(wù)層實(shí)現(xiàn),這樣做的優(yōu)點(diǎn)是,Web只負(fù)責(zé)界面相關(guān)部分,因?yàn)椋绻且粋€(gè)智能客戶端,如Swing或J2ME,在不需要修改任何業(yè)務(wù)核心的情況下能夠方便地更換。同樣,提供Web Services功能,也只是在 Web層修改,不會(huì)涉及EJB方面的修改,同樣保證了系統(tǒng)的穩(wěn)定性,保證了系統(tǒng)升級(jí)和未來(lái)的擴(kuò)展性。

      如果不使用EJB,在EJB服務(wù)層實(shí)現(xiàn)的業(yè)務(wù)核心將由普通JavaBeans實(shí)現(xiàn),使用何種架構(gòu)或設(shè)計(jì)能夠保證負(fù)責(zé)MVC的JavaBeans和負(fù)責(zé)業(yè)務(wù)核心的JavaBeans清晰地分開(kāi),又如何保證在新的程序員不會(huì)破壞和打亂你精心布局的JavaBeans架構(gòu)?

    EJB提供性能優(yōu)化支持

      最主要的是性能問(wèn)題,由于以前國(guó)內(nèi)中文Java網(wǎng)站有些人彎曲EJB,認(rèn)為EJB性能低,其實(shí)這是一種非常膚淺錯(cuò)誤的認(rèn)識(shí),我們首先看看在一般Java環(huán)境中是如何提高性能。

      假定一個(gè)JavaBeans為A,那么一般使用這個(gè)JavaBeans命令如下:

      A a = new A();

      但是,在高訪問(wèn)量的環(huán)境中,new A()其實(shí)是很費(fèi)時(shí)消耗系統(tǒng)性能的,因此,能不能在軟件系統(tǒng)啟動(dòng)時(shí)候就預(yù)先建立一些對(duì)象,這樣,系統(tǒng)運(yùn)行時(shí),從這些已經(jīng)生成的對(duì)象池中借用一個(gè),這樣,就無(wú)需在使用時(shí)進(jìn)行New,節(jié)約了開(kāi)銷(xiāo),提高了性能,因此,真正成熟性能解決方案都是需要對(duì)象池等支持。

      在一個(gè)純Web結(jié)構(gòu)的系統(tǒng)(也就是只能運(yùn)行在Tomat環(huán)境中),例如Struts + Hibernate等這樣的系統(tǒng),除非自己動(dòng)手做,一般是沒(méi)有對(duì)象池技術(shù)支持的,因此他們的性能只能算是Demo演示版本的性能,根本無(wú)法承受大容量并發(fā)訪問(wèn),也無(wú)法稱為一個(gè)成熟的系統(tǒng),所以,我們研究成熟的開(kāi)源Web系統(tǒng),如Jive、OFBize,LifeRay等,他們都在Web層擁有自己的對(duì)象池和緩存池。

      對(duì)象池和緩存機(jī)制是J2EE必須的嗎?當(dāng)然,是所有成熟系統(tǒng)必須的,Windows系統(tǒng)如果去掉緩存將會(huì)變得怎樣?

      自己動(dòng)手開(kāi)發(fā)對(duì)象池和緩存機(jī)制并不是一件簡(jiǎn)單的事情,需要對(duì)多線程以及同步鎖等底層原理有深層次的把握,這其實(shí)也是一門(mén)非常深入的Java研究分支,所以,你可以拋開(kāi)你的客戶焦急的催促,精心研究開(kāi)發(fā)自己的對(duì)象池和緩存池。

      但是,EJB容器(如JBoss)已經(jīng)提供了對(duì)象池和緩存機(jī)制,所以,沒(méi)有事務(wù)機(jī)制的無(wú)狀態(tài)Session Bean的性能肯定要強(qiáng)于普通JavaBeans。EJB容器不但在單機(jī)中提供了對(duì)象池和緩存,而且可以跨服務(wù)器實(shí)現(xiàn)動(dòng)態(tài)負(fù)載平衡,這些都無(wú)需開(kāi)發(fā)者自己開(kāi)發(fā)任何軟件代碼,結(jié)構(gòu)如下:

    EJB組件能提供真正的可重用框架

      每一個(gè)jar包代表一個(gè)EJB組件,一個(gè)系統(tǒng)可以由多個(gè)可重用的EJB組件構(gòu)成,例如:樹(shù)形結(jié)構(gòu)EJB組件;自增序號(hào)EJB組件;用戶資料EJB組件等,這樣的EJB組件可以象積木一樣搭配在大部分應(yīng)用系統(tǒng)中,提高了系統(tǒng)的開(kāi)發(fā)效率,保證了開(kāi)發(fā)質(zhì)量。

      下圖是某個(gè)新的具體系統(tǒng)時(shí)應(yīng)用到的EJB組件圖,在這個(gè)新的應(yīng)用中,由于使用了以前大量可重用的EJB組件,新的開(kāi)發(fā)工作基本集中在界面設(shè)計(jì)和流程安排上:

    EJB提供了事務(wù)機(jī)制

      事務(wù)機(jī)制對(duì)于一些關(guān)鍵事務(wù)是很重要的,例如ATM機(jī)提款,提款有多個(gè)動(dòng)作:修改數(shù)據(jù)庫(kù)以及數(shù)錢(qián)等,如果這其中有任何一個(gè)環(huán)節(jié)出錯(cuò),那么其它已經(jīng)實(shí)現(xiàn)的操作必須還原,否則,就會(huì)出現(xiàn),提款人沒(méi)有拿到錢(qián),但是卡上已經(jīng)扣款等不可思議的事情發(fā)生。

      EJB提供的事務(wù)機(jī)制非常周全,但事務(wù)機(jī)制帶來(lái)的缺點(diǎn)是性能的降低,因此,有些人認(rèn)為EJB很重,因?yàn)樵趯?shí)際應(yīng)用中,有的用戶系統(tǒng)可能不需要事務(wù)機(jī)制,只是需要EJB提供的性能優(yōu)化機(jī)制,這樣,如果使用EJB,就象叫一個(gè)人來(lái)背東西,他除了背著我要的東西外,還背著我不要的東西。

      除非你是一個(gè)完美主義,在一般企業(yè)應(yīng)用或數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用中,EJB不會(huì)對(duì)你構(gòu)成很重的包袱。

    CMP獨(dú)特的優(yōu)點(diǎn)

      開(kāi)源以及一些數(shù)據(jù)庫(kù)持久層技術(shù)崇拜者,一直抨擊CMP,認(rèn)為CMP慢無(wú)用,實(shí)際最大的問(wèn)題是他們的設(shè)計(jì)和使用問(wèn)題。

      由于EJB容器(如JBoss)對(duì)CMP實(shí)現(xiàn)有事務(wù)機(jī)制的緩存優(yōu)化,因此,CMP特別適合多個(gè)用戶同時(shí)更新同一個(gè)數(shù)據(jù)源的情況,CMP這種嚴(yán)格的事務(wù)完整性保證多個(gè)用戶同時(shí)操作一個(gè)數(shù)據(jù)記錄時(shí),能夠保證性能優(yōu)化和數(shù)據(jù)的完整性,如果這個(gè)數(shù)據(jù)記錄是是軟件系統(tǒng)的狀態(tài)標(biāo)志,它的狀態(tài)會(huì)影響系統(tǒng)中很多的環(huán)節(jié),那么狀態(tài)更改的重要性不言而喻。

      如果沒(méi)有事務(wù)完整性支持,你的軟件系統(tǒng)在用戶訪問(wèn)量變大,就會(huì)變得發(fā)生各種不可能發(fā)生的邏輯錯(cuò)誤,查看程序邏輯是正確的,那么問(wèn)題出在哪里?出在數(shù)據(jù)完整性上。

      由于每個(gè)CMP在內(nèi)存中都有一個(gè)緩存,在實(shí)際應(yīng)用中,如果使用CMP批量讀數(shù)據(jù)庫(kù)數(shù)據(jù),幾萬(wàn)條查詢完畢,內(nèi)存中充滿了幾萬(wàn)條CMP緩存,如果這時(shí)你的EJB容器設(shè)置不當(dāng)(如使用JBoss缺省配置),那么JVM的垃圾回收機(jī)制就會(huì)頻繁啟動(dòng),導(dǎo)致你的系統(tǒng)變慢甚至死機(jī),這也是一些人抨擊CMP慢的原因所在,其實(shí)他們使用方法不當(dāng),或者沒(méi)有正確配置EJB容器CMP緩存。

      對(duì)于這種情況,根據(jù)J2EE核心模式,推薦使用DAO+JDBC方式。

    小結(jié)

      除非你對(duì)設(shè)計(jì)模式非常精深,能夠?qū)⒆约合到y(tǒng)中的JavaBeans使用模式或某種框架進(jìn)行固定分層,同時(shí),你孜孜不倦研發(fā)出對(duì)象池,又熟練于JTA等事務(wù)機(jī)制,你可以選擇沒(méi)有EJB的純Web結(jié)構(gòu),就象Jive、OFBiz那樣。當(dāng)然還有一個(gè)前提,老板不懂或者非常有挑戰(zhàn)性(做與IBM SUN 微軟齊名的公司和技術(shù))。

      不要再被TSS那些狂熱的開(kāi)源先生誤導(dǎo),他們有時(shí)間有保障可以做他們喜歡的事情,作為專業(yè)的J2EE程序員,按照J(rèn)2EE標(biāo)準(zhǔn)去學(xué)習(xí)去行動(dòng),也不要認(rèn)為,只要使用了J2EE其中某個(gè)技術(shù)如Jsp或JavaBeans就心安理得認(rèn)為自己的系統(tǒng)是J2EE了。

      當(dāng)然,我并不是說(shuō)純Web系統(tǒng)不能實(shí)現(xiàn)多層結(jié)構(gòu),但是至少在很多方面沒(méi)有Web+EJB結(jié)構(gòu)完善和清晰,所以,EJB不是J2EE可以忽視的部分,而是主要的重要的部分,重要業(yè)務(wù)功能核心都封裝在EJB中,相反Web層是一種次要的、和界面相關(guān)的層次。

      補(bǔ)充:什么情況下不需要EJB,在SUN的SECA架構(gòu)師試卷中回答:小型系統(tǒng)和不需要事務(wù)。另外過(guò)去那種認(rèn)為“EJB有性能問(wèn)題”根本是一種繆誤,具體可參考下面有關(guān)問(wèn)題。

    posted @ 2006-09-11 14:56 KevinGong 閱讀(297) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲阿v天堂在线2017免费| 999国内精品永久免费视频| 国产精品公开免费视频| 亚洲最大无码中文字幕| 久久精品无码一区二区三区免费| 自怕偷自怕亚洲精品| 无码人妻一区二区三区免费n鬼沢| 亚洲妇熟XXXX妇色黄 | 亚洲欧美日韩综合久久久久| 成年人视频在线观看免费| 亚洲高清中文字幕免费| 女人18毛片免费观看| 国产精品亚洲AV三区| 亚洲第一页日韩专区| 精精国产www视频在线观看免费| 国产亚洲精品线观看动态图| 国产免费久久精品99久久| 亚洲人成伊人成综合网久久久| 手机看片国产免费永久| 91精品国产亚洲爽啪在线影院| 亚洲电影免费观看| 亚洲一区AV无码少妇电影| 全黄a免费一级毛片人人爱| 国产一级a毛一级a看免费视频 | 亚洲韩国在线一卡二卡| 久草在视频免费福利| 亚洲av永久无码一区二区三区| 午夜亚洲福利在线老司机| 国产啪精品视频网站免费尤物 | 国产成人无码免费看视频软件| 亚洲AV无码国产一区二区三区| avtt亚洲天堂| 一级毛片在线免费观看| 亚洲人成色4444在线观看| 久久久久久亚洲精品不卡| 亚洲无砖砖区免费| 免费国产a理论片| 亚洲男人的天堂在线播放| 在线播放免费人成视频在线观看| 国产精品日本亚洲777| 亚洲另类激情综合偷自拍|