第一篇:Linux入門到精通的學習與筆記
【01 Linux系統介紹】
1、linux系統是完全免費的,而windows或者mac系統無論是個人版還是服務器版都是收費的。
如果光是有“內核”是實現不了什么具體的功能的,它只是一組核心的代碼。而用戶如果想要linux做事就必須要通過shell告訴linux要執行什么,然后linux執行完后再把結果通過shell返回給用戶。
2、linux有兩種界面模式:
1、字符界面;
2、圖形界面。而字符界面的優點是可操作性強,而且占用硬件資源少(如果是圖形界面需要占用cpu、內存和顯卡等的資源很大,而如果是字符型界面的話可能64M的內存還運行的速度挺快的呢)。
3、linux有兩種版本:
1、內核版本(沒有任何的第三方軟件或者第三方類庫,可以理解為是一堆的c代碼或者c++代碼,它只是把核心操作系統的功能用c程序的方式表現出來,然后我們把它編譯出來再去使用),要注意如下圖中內核版本的版本號如果都是偶數說明這是一個經過修補和改進的穩定版本,如果都是基數說明這是一個測試版本,也就是可能會存在不確定的錯誤的地方,所以我們下載時要注意無論是內核版還是發行版都要下載穩定的版本。而“n”編號是某個人對內核進行的某個功能的修改然后用這個最小版本級別的“n”進行標示一下;
2、發行版本(就是直接把linux內核拿來然后集成進去常用的軟件和配置然后再發行,其實我們自己也是可以這么做的)。
4、redhat是linux發行版的老大,centos覺得redhat違背了開源應當是免費的精神所以把redhat的源代碼經過編譯然后加入自己的東西就成了新的操作系統,其實redhat收費指的是對于需要安裝第三方軟件還有技術支持這類服務才收費的,如果你不需要這樣的服務redhat系統下載下來還是可以免費使用的。Suse linux系統和redhat一樣也是某些需要收費的,雖然也有一個它的免費的類似于centos公司的系統open suse,但是目前使用最多的發行版還是centos。要記住redhat和centos是兩家公司。
而debian和ubuntu也是有淵源的,debian的穩定性是非常好的可是升級太慢了,而ubuntu每年4月份和10月份都是有升級的,而且ubuntu主要針對的是客戶端的系統所以界面非常友好。
5、如何選擇linux發行版:
1、穩定性;
2、硬件兼容性(就是對于硬件的兼容性,驅動程序的更新等等,其實這些發行版已經及時做到,就不用用戶自己去考慮這些了);
3、高效率;
4、可持續性(也就是說這個廠商不會今天還發型新版本呢,明天就倒閉了)。
6、我們之所以選擇linux系統用在服務器上是因為:
1、linux是自由軟件;
2、linux是開源的,所以不會涉及到版權和費用問題的,如果選擇windows肯定會涉及到版權和費用的;
3、windows在性能、管理、安全方面都要低于linux操作系統。
而且linux下面的所用到的網絡軟件如上圖也都是開源免費的,而windows下面的這些類似于linux網絡功能的軟件就不是每個都免費的了,比如exchange就需要大價錢來購買的,sql server也是需要購買的。
【02 Linux系統安裝(上)】
1、我們如果想要下載centos的linux版本可以直接去官方網站下載www.tmdps.cn,但是這個官方網站是英文的而且安裝的linux系統也是英文的,所以不方便。這時我們可以去國內的有些鏡像網站去下載(國內有些大網站有針對于國外的鏡像開源下載站),比如mirrors.163.com是網易的開源鏡像站點,當然搜狐也有。2、32位操作系統和64位操作系統最大的不同就體現在內存上,由于尋址方式的不同,32位操作系統最大只能支持到3G多或者4G的內存,即使你的內存再大,但多于4G也是不能被32位的操作系統識別的,而64位操作系統就不會存在這樣的問題。如下圖是在安裝centos版本linux系統時選擇安裝32位的還是64位的,i386是32位的,x86_64是64位的,而兩者安裝時是沒有任何區別的,只不過是在安裝完成后對于內存支持的不同還有文件的擴展名顯示方式不同。
3、如下圖是比如說你選擇了i386后出現的目錄,由下圖可知如果你要是把iso文件刻錄到cd上面得需要7張cd盤,而如果是用dvd光盤只需要2張就夠了(其實只需要第一張dvd關盤DVD-1of2.ISO就夠了,因為第二張是一些比如office軟件什么的了一些擴展功能了),所以為了節省成本還是用dvd方式刻盤吧。
注意上圖是5.9版本的,所以如果是把系統安裝盤刻成cd需要的是8張光盤,如果是刻成dvd的需要兩張光盤。上面所說的需要7張cd光盤是針對5.8版本而說的。
4、如果是在虛擬機上安裝不論是linux還是windows最好是直接通過你硬盤的鏡像文件安裝,因為這樣要比用光盤的安裝方式速度快而且也不容易出錯,不過如果是在一臺真正的電腦上安裝系統的話就只能是通過光盤或者U盤的方式了。
【03 Linux系統安裝(下)】
1、在安裝linux時選擇語言最好就選擇英文的,因為即使你選擇了中文的以后再安裝其它軟件時這個軟件的界面也是全部英文的界面。
然后鍵盤也選擇美國的標準鍵盤布局:
2、下圖是linux自動給一個新硬盤分的區,linux中把一塊硬盤稱作sda,如果還有第二塊硬盤就是sdb,如果還有第三塊硬盤就是sdc。那么sda1就是第一塊硬盤的第一個分區,sda2就是第一塊硬盤的第二個分區。Ext3和physical都是文件系統格式,就相當于windows里面的ntfs或者fat32。“/boot”就說明這個分區是啟動分區,如下圖所示:
3、linux一般都用GRUB啟動加載器(可以給這個加載器設置密碼)來啟動linux系統,因為linux默認的啟動器會有一些bug。
4、配置網卡時可以不選擇ipv6這個參數,因為國內大多數還是用的ipv4的ip地址(雖然現有的ipv4的ip地址快用完了),而且啟動了ipv6就會多占用一個服務的。
5、如下圖是設置linux的管理員root的密碼的:
5、如下圖是給linux系統選擇需要安裝的軟件:
【04 Linux字符界面基本操作】
1、下圖是本節課需要掌握的知識:
2、使用字符界面的好處如下圖所示:
錄和遠程登錄,putty的使用:、本地登
34、系統的啟動級別:
5、本地登錄linux可以在出現提示符“login:”后輸入用戶名然后回車,然后會提示輸入密碼“password:”(此時輸入密碼時不會像windows那樣出現星號的,而是什么都不會出現。如果密碼輸入正確會直接進入,如果輸入錯誤會出現錯誤信息的),然后輸入此用戶名的密碼然后回車。本地注銷時只需要輸入命令“logout”就可以了,系統就會重新回到登陸窗口了。
6、遠程登錄linux需要用到第三方軟件putty,而下載putty可以在google上面搜索區putty的官方網站去下載。Putty是一個免費、開源、綠色的軟件。在putty軟件里面的session里面輸入要登錄的linux的ip地址然后點擊“open”,然后在出現的窗口中輸入linux的用戶名和密碼后就能登錄遠程的linux了(第一次登錄遠程linux時會出現警告信息,此時直接點擊確定就可以了)。
7、如果在putty里面不想每次都要輸入session中遠程linux的ip地址的話,可以給要經常遠程登錄的linux保存一個session,這樣就不用每次都要輸入遠程linux的ip地址了。必須要啟動linux系統后才能用putty登錄linux系統,也就是形成一個session。而不能沒有啟動linux就直接用putty來登錄,這樣是登錄不進去的(也就是服務器都沒開機你登錄誰去啊)。
8、關機和重啟命令的使用:
【05 Linux基本命令使用】
1、linux系統中的命令都遵循下圖中所示的格式:
2、下圖是通配符的使用:
3、在一個命令后加上選項的時候如果是每一個選項都是一個一個列出來太麻煩了,這時就可以用一個橫杠“-”然后把所有需要加上的選項都加上就可以了。比如“ls –a –l”就可以寫成“ls –al”,后者就比較簡便了。
4、在windows里面文件類型有很多種,比如有.exe、.txt、.doc、.xls等等,但是在linux里面就沒有這么多的講究了,在linux里面用的最多的就是普通文件、目錄和符號鏈接了,如下圖:
如下圖中小橫線“-”開頭的文件都是普通文件,這類普通的文件我們都是可以進行編輯、刪除等操作的。
如下圖最后面是藍色字體,而且最前面是用“d”開頭的是目錄:
如下圖開頭是以“l”開頭的是符號鏈接文件(目錄和文件都可以進行鏈接):
6、用“cd..”可以退到當前目錄的父目錄,用“cd /”可以直接退到根目錄下了。
7、文件的操作命令:
8、文本文件查看命令:
9、linux中的文件操作:
【06 Linux文件權限設置】
1、這節課的學習目的:
2、我們在輸入一個命令的時候只要輸入這個命令的前幾個字母然后按兩下“tab”鍵,linux系統就會把包括這前幾個字母的所有命令給你列出來(當你忘了一個命令的完整寫法時這種方法是比較有用的),這個就叫命令補全。如果你輸入的前幾個字母只可能會成為一個命令的時候,你只需要按一下tab鍵這個命令就會自動補全了。
3、“rmdir”只能刪除空的文件夾(這個命令可能不能刪除文件),而“rm”可以刪除不是空的文件夾當然也可以刪除文件,而且只要加上參數“-rf”就連提示信息都不會有就給刪除了。命令補全也適用于目錄,比如在輸入命令“cd etc/sys”然后按“tab”鍵后linux系統就會自動列出包括“sys”開頭的所有目錄,這就是目錄補全。文件補全和目錄補全或者命令補全也是一個道理的。
4、在linux里面的文件可以有擴展名也可以沒有擴展名,那么我們怎么來區分用目錄補全的方式列出的是文件還是目錄呢。在linux里面用目錄補全的方法列出的目錄和文件的清單里面,目錄后面肯定有一個正斜杠的“/”,而文件是不會有的,如下圖所示。
5、命令行補全,命令歷史:
上圖中的雙感嘆號“!”是執行上一次已經執行的命令(等于是重復執行上一次的命令),單感嘆號“!”是加上一個已經執行過的命令的開頭字母來實現功能的,比如“!c”(當然也可以多加上幾個字母的)就是從執行過的所有命令中從后往前算,如果找到了一個比如是“cat hd1.txt”的命令那么就執行它,如果這個“cat hd1.txt”命令之前還有類似的命令比如“cat hd2.txt”就不會被執行了,因為單感嘆號“!”只會從已經執行過的所有命令中找到最后一次執行的一個命令然后執行就完成了它的使命了,如果比這個找到的命令再早的還有首字母也是“c”的命令也不會執行了,因為單感嘆號“!”只會執行一次命令的。當然單感嘆號也可以加上用命令歷史(history)顯示出來的命令行號來執行如下圖所示:
6、標準輸入輸出:
【07 Linux重定向和管道】
1、系統重定向:
輸出重定向的單大于號“>”是會把先前輸出重定向到一個文件的內容給覆蓋掉的,比如用命令“ls >houdun”就是已經把“ls”的結果重定向到“houdun”這個文件里面去了,而現在又執行了另一個命令“uname –a >houdun”,那么文件“houdun”里面的內容就應該是“uname –a >houdun”的執行后結果內容了而不是“ls >houdun”的執行結果內容了(因為先前的結果被覆蓋掉了)。單大于號“>”是覆蓋,而雙大于號“>>”就是追加了(也就是原來的內容還存在,新加的內容會在原來的基礎上繼續追加的)。其實重定向就是把信息不顯示在屏幕上,而是把信息寫到一個指定的文件里面去。
2、使用重定向的例子:
3、管道:
4、ctrl+l是清屏。
【08 Linux文件權限及設置命令(上)】
1、本節課的學習目的:
2、什么是文件權限:
當用“ls-l”查看文件或者目錄的詳細信息時,看到信息列表最前面的有“rw”的就表示當前用戶可以對于這個文件進行讀和寫的操作:
3、如下圖所示一個文件的權限分為3組,如紅色方框處的第一組權限是對于當前用戶具有可讀可寫的操作,第二組權限是用戶組只對于該文件只具有可讀的權限,第三組權限是其它用戶針對這個文件只具有可讀的權限。這是一個默認的權限(也就是當我們新建一個文件或者目錄時,這個文件或者目錄的權限就是自動設置成這樣的)。
可以通過命令“ls-l”或者“ll”命令來查看文件或者目錄的權限,但是要注意不是所有的linux系統都支持“ll”命令的,但是centOS是肯定支持的。如果其他發行版的linux不支持“ll”命令的話那么就乖乖的用命令“ls-l”吧。“ls-l”是linux的標準命令,而“ll”是某些發行版的linux系統為了方便使用才加上去的。
4、對于“其他用戶”只有一個執行權限的目錄,用“其他用戶”登錄后只能進入這個目錄或者進入這個目錄更深層的目錄,但是不能進行新建文件和刪除文件的操作,甚至連命令“ls”都是不可以用的。如果想要訪問這個對于“其他用戶”只有執行權限的目錄下面的具有可讀屬性的文件的話,必須要知道這個文件名才可以訪問此文件(因為此時無法用ls命令列出文件來,所以你就看不見文件名列表)。一個目錄具有執行權限表示這個目錄可以用“cd”命令進入,如果一個目錄具有可讀權限那么就可以用“ls”命令列出文件或者目錄來,如果一個目錄同時具有可執行權限和可讀權限說明這個目錄可以進入并且可以列出目錄列表來。
5、三種權限的分配:
【09 Linux文件權限及設置命令(下)】
1、由上圖可知如果你想要給當前用戶加上寫權限就可以用命令“chmod u+w”,如果是給用戶組加上寫權限可以用命令“chmod g+w”,如果是給其他用戶加上寫權限可以用命令“chmod o+w”。但要注意我們可以給當前用戶或者用戶組或者其他用戶這三者其中的任意一個同時加上或者去掉讀、寫、執行權限,但是我們并不可以在一條命令里同時把當前用戶、用戶組和其他用戶這三個組加上或者去掉權限,比如這個命令“chmod u+rwx g+rwx o+rwx”是不可以的。增加權限用加號“+”,減去權限用減號“-”,比如去除當前目錄中的文件“houndun”的當前用戶的所有權限的命令是“chmod u-rwx houdun”。如果用數字表示法來設置權限的話就可以在一條命令里把當前用戶、用戶組和其他用戶這三者同時加上或者去掉權限了。因為讀、寫、執行對應的權限分別用八進制的4、2、1來表示,而同時具有讀、寫、執行權限就等于是把4、2、1給加上,那么就等于7了,所以在一條命令里把當前目錄中的文件“houdun”的當前用戶、用戶組和其他用戶這三個組同時加上所有的權限的命令是“chmod 777 houdun”。現在又想把文件“houdun”的當前用戶、用戶組和其他用戶這三個組的寫權限同時去掉的話,就可以用命令“chmod 555 houdun”(因為寫權限的數字表示是2,用7減去2剩下的就是4和1了,也就是剩下讀權限和執行權限了)。當然用數字表示法也可以同時針對當前用戶、用戶組和其他用戶這三者分別設置成不同的權限,比如命令“chmod 745 houdun”(表示當前用戶設置成讀、寫、執行權限,用戶組是讀權限,其他用戶是讀和執行權限)。
2、如下圖所示,第一個root代表用戶,第二個root代表此root用戶所屬的用戶組。如果我們是通過root用戶創建的文件或者目錄,那么此文件或者目錄一定是屬于root這個用戶的(此文件或者目錄的屬主是root),也一定是屬于root這個組的。
3、用命令“chown zhangsan:zhangsan test/”可以把目錄“test”的屬主和所屬用戶組改成zhangsan和zhangsan(因為在創建zhangsan這個賬號時就默認的創建了一個用戶組zhangsan了,而且把用戶zhangsan隸屬于用戶組zhangsan里面去了)。比如一個目錄的當前用戶是讀、寫、執行權限而其他用戶權限只有讀的權限,而現在這個目錄是屬于root的,所以這個目錄的當前用戶就是root,所以root可以對這個目錄具有所有權限,而其他用戶(比如zhangsan)只對這個目錄具有讀的權限。而現在如果把這個目錄的屬主改成zhangsan,那么zhangsan這個用戶就可以對這個目錄具有讀、寫、執行的權限了,因為這個目錄的當前用戶變成zhangsan了,而root用戶變成了這個目錄的“其他用戶”了。所以用命令“chown”通過改變文件或者目錄的屬主也就可以間接的改變用戶對于這個目錄或者文件的權限了。
4、特殊權限位:
SUID:就比如只有管理員才能執行的命令現在給它設置SUID權限,那么現在普通用戶也可以執行這個命令了,而普通用戶并不是用普通用戶的身份執行的這個命令,而是借助管理員的用戶執行的,當普通用戶執行完這個命令后還會回到普通用戶的狀態的。
UGID:比如把一個目錄的屬主的用戶組改成group,并且這個group組對于這個目錄具有rwx的權限,并且這個目錄的權限設置成SGID,然后新建兩個賬號test1和test2都加入到同一個用戶組group里面去,這樣就可以實現用test1創建的文件用test2用戶登錄也可以修改,用test2創建的文件用test1用戶登錄也可以修改了,如果不把這個目錄的權限設置成SGID的話就不會有這個功能了(也就是用test1創建的文件用test2用戶登錄也可以修改,用test2創建的文件用test1用戶登錄也可以修改的功能)。當然特殊權限用的時候不是很多。
sticky-bit:就是一個設置了sticky-bit權限的目錄下面的文件或者目錄必須由此文件或者目錄的屬主來刪除,其它的用戶根本沒有權限刪除(即使其它用戶對這個文件或者目錄具有寫權限)。
【10 Linux系統查找(上)】
1、本課學習目標:
2、windows里面進行查找文件的操作很方便,但是windows需要對整個硬盤分區進行掃描看看有沒有匹配的文件,所以速度會很慢。而linux里面的查找方式和windows就有所不同了。
3、which只能查找在指定目錄的可執行文件,對于不是可執行的文件which是查不到的。即使我們把一個文件的權限改成可執行的也是查不到的,因為which只能查找linux系統的環境變量設置的路徑里面的文件(因為linux的可執行文件都存放到如下圖所示的目錄里面)。通過命令“env”可以查看當前的管理員賬號的linux的環境變量的路徑。
當然可以通過用命令“vim /root/.bash_profile”修改這個文件“.bash_profile” 來給這個環境變量增加內容,如下圖中“$PATH”和“$HOME/bin”都是linux默認的環境變量,我們可以在它們的后面加上一個冒號然后添加上我們自己設定的環境變量路徑。但是要注意剛給root用戶添加好自己的環境變量后不會馬上生效的(用命令“env”不會查到剛剛添加的環境變量路徑),而是要用root用戶重新登陸后才能使剛剛添加的環境變量生效的:
所以總結而言which是用來查找linux中可執行文件的(如果我們要查找可執行文件,比如命令什么的首先要選擇which),which只能查找linux環境變量路徑里面的文件,which是查找不了不在linux環境變量路徑里面的文件的,which查找不了不可執行文件。所以which查找的速度是非常快的。
4、在linux安裝軟件的時候是要遵循嚴格的規矩的,比如軟件的可執行文件必須安裝在哪里,軟件的配置文件必須安裝在哪里,軟件的幫助文件必須安裝在哪里等等。而用命令“whereis”查找是不像“which”那樣只能基于環境變量路徑來查找的,“whereis”不但能夠查找出和你輸入文件名相同的可執行文件,也能夠查找出和你輸入文件名相同的配置文件、幫助文件等等。但是“whereis”有一個問題是:它只能查找自己的數據庫里面的信息(當我們安裝軟件的時候相關的信息就會寫到whereis相應的數據庫里面了),所以它的速度也是相當快的。
5、命令“locate”可以把包含你要搜索的字母或者詞的所有文件都顯示出來,而不是必須要精確到你所輸入的內容(指的是字符不能多也不能少),所以“locate”相當于模糊查找,比如你要搜索pass,那么“whereis”和“which”都會只找和pass名字一模一樣的文件,而“locate”就會把比如“llpasse、passtedd、mlocapass”等文件都會列出來的。所以用“locate”查找出來的內容很多,這時我們可以把列出來的內容用輸出重定向來重定向到一個文件里,這樣方便我們以后查看,而不是列在屏幕上造成看起來很麻煩的結果。“locate”也是查找自己的數據庫的。
6、總結一下:“which”只能查找程序的可執行文件,“whereis”不但能查找程序的可執行文件還能查找配置文件還有幫助文件等等,“locate”不但能查找程序的可執行文件、配置文件還有幫助文件等,還能模糊查找出好多其它的文件。在linux系統中用“which、whereis、locate”基本上已經能滿足大多數人(70%)的需求了。
7、用“find”命令來查找就相當于windows里面的查找了,它是針對整個硬盤或者整個分區進行查找的,如果你的linux電腦是web服務器或者文件服務器那么數據量可能有幾百GB,那么你要是用“find”查找一個文件是非常耗時耗力的。所以不推薦使用“find”進行查找,但是我們如果不是想要查找可執行文件,或者是安裝軟件時的一些文件,而是想要查找我們自己創建的文件就需要用到“find”了。
8、如果直接輸入“find”的話,它會把你當前目錄的所有文件、目錄、甚至隱藏文件都給你列出來。
上圖中“find /-mtime 0”表示查找24小時內修改過的文件(mtime代表修改過的文件),“find /-mtime 3”代表前三天的那一天(而不是指這三天)修改過的文件,“find /-mtime 100”代表前100天的那一天(而不是指這100天)修改過的文件。“find /-mtime +5”代表5天前所有被修改過的文件(這些被修改的文件不僅包括你自己修改的文件,也包括系統調用程序時修改過的文件)。“find /-mtime-5”代表5天以內所有被修改過的文件。上圖中“-atime”代表被讀取過的文件。上圖中“find /-name passwd”代表要查找和passwd全匹配的文件(只是包含passwd字符的不算,必須要全字匹配才成),注意此時是區分大小寫的(也就是passwd和Passwd是不同的),如果你不想要區分大小寫就用命令“find /-iname passwd”。
上圖中“find /-size +1000k”是表示在根目錄下查找文件大小大于1000k的文件,“find /etc –name ‘*pass*’”表示etc目錄下面的所有包括“pass”的文件名或者目錄名的都給列出來,其中星號“*”代表通配符。
【12 Linux系統文本編輯器VI操作(上)】
1、windows里面的記事本和寫字板都屬于文本編輯器,linux系統中的文本編輯器也有很多,VI就是其中最優秀和使用最頻繁的一種。文本編輯器和辦公軟件的不同之處在于:文本編輯器就是用來記錄文字的,它的功能非常簡單。而辦公軟件可以對于文字有更多的操作功能,比如對于文字的排版、美化等等,這些都是文本編輯器所不具備的。文本編輯器是基于ascii碼的,所以運行起來特別快。但是如果想要進行更多的操作,比如插入圖片,文本編輯器就愛莫能助了。
2、vi和vim都是文本編輯器,它們的內核是相同的,vim相當于是vi的升級版(vi的功能沒有vim多)。但是要注意vi是可以編輯任何文本的,但是vim必須在你的linux系統中已經安裝了后才能使用。在好多的linux發行版中默認的就安裝了vi了,而且linux中許多的程序默認也是通過vi來進行編輯的,所以我們要很好的掌握vi。
3、各種文本編輯器的特點:
4、vi的三種狀態模式:
需要掌握的vi技術:
5、用vi新建一個文本文件的命令是“vi houdunwang”(其中新建的文本文件的文件名是houdunwang)。如果想要保存這個文本文件那么在vi編輯器中輸入“:w”就可以了。如果想從vi編輯器模式退出輸入“:q”再回車就可以了,不過要注意如果你在一個新建的文本文件里面沒有輸入任何的內容也沒有保存你就退出了的話,那么這個文件是不會被創建的(因為這個文件里面什么內容都沒有,它只是在內存緩沖區存在過而已)。如果你把一個什么內容都沒有輸入的文本文件保存了,那么這個文件是會被創建的,不過這就是一個空白的文本文件了。比如你執行命令“vi houdunwang”,如果此時houdunwang這個文件在當前目錄中不存在那么就會新建這個文件的,并且文件名是houdunwang,如果這個文件已經存在了那么vi就會打開這個文件的。如果想要在vi編輯器中保存并且退出vi編輯器的話就輸入命令“:wq”(當然也可以先執行“:w”然后再執行“:q”)。用vi打開這個文件和用vim打開一個文件是一樣的,不過如果你發現用vim不能打開一個文件的話那么你就乖乖的用vi打開吧(因為vi是linux集成好的一個編輯器,而vim不是,但是vim的功能要比vi多)。
6、vi普通模式的光標移動和翻頁操作:
我們在vi中只能用鍵盤來進行操作,而不能像圖形化界面似的用鼠標來進行復制粘貼等操作。
7、我們用vi新建或者打開一個文件時默認的模式就是普通模式,在普通模式中我們可以進行文本的復制和粘貼,光標的移動等等操作:
8、用命令“set nu”可以把vi編輯器中的行號顯示出來。
9、如果要輸入命令的話就需要在vi的命令模式下才可以,vi的插入模式其實就相當于對于文件內容的編輯模式,在插入模式中所有的字母和數字都可以正常的輸入了,當然也可以進行文字的添加和刪除或者修改了。Vi的普通模式中的每個字母或者每個數字都有它特定的含義(比如光標移動、上下翻頁等等),在vi的普通模式中是輸入不了內容的。其實普通模式基本上是在進行文字的查找,而插入模式是對文字進行編輯、刪除的。普通模式可以直接轉換到插入模式或者命令模式,而命令模式和插入模式是沒有辦法直接相互轉換的,而是都需要先轉換成普通模式然后再轉換到插入模式或者命令模式。按“esc”鍵可以從插入模式或者命令模式轉換到普通模式。【13 Linux系統文本編輯器VI操作(下)】
1、通過不同的方法進入插入模式:
2、下圖所示表示在普通模式下進行的刪除操作:
3、下圖是撤銷的操作:
4、復制與粘貼操作:
5、字符串查找、替換操作:
6、使用vi打開多個文件的命令是“vi file1 file2 file3”。
【14 Linux系統進程管理與作業控制】
1、程序是一組代碼的集合,然后經過編譯后就可以形成可執行程序。而程序在運行過程中才會產生進程,而一個程序可能產生一個進程也可能產生多個進程的(究竟產生幾個進程要根據軟件自身的編寫情況而定),而當一個程序結束時它相應的一個或者多個進程也會動態的跟著結束的。程序員在設計程序時就會考慮到這個程序需要幾個進程,每個進程的名字會不會和其它軟件的進程名字相沖突等等這些要注意的事項。
2、下圖是用命令“ps-ef”顯示詳細的進程信息的,其中UID指的是這個進程是基于那個用戶的。PID指的是子進程號,PPID是父進程號(子進程是由父進程派生出來的)。
3、軟件可以分為系統軟件和應用軟件,而應用軟件又可以分為視頻軟件、辦公軟件、下載軟件、安全軟件等等,系統軟件可以分為windows、linux、unix、mac等等。進程也是有很多種類的{
1、后臺進程(守護進程):就是在系統啟動時就跟著一起啟動的,比如郵件服務進程sendmail,但是我們也可以對它進行操作,比如用命令“service sendmail stop”把它給停掉;
2、交互進程:也就是可以手動啟動也可以設置成隨著系統啟動一起啟動的進程。
4、比如我們寫一個程序,這個程序的功能就是向屏幕輸出一句話,那么當我們執行這個程序時就會產生一個進程,但是因為這個程序的作用只是輸出一句話就結束了,那么這個程序相應的進程也就馬上結束了(這個就是進程生命周期的體現),所以你用“ps”命令是查不出來這個進程的,如果想要查出來這個軟件的進程的話就需要讓這個程序總是在執行著才行。如果要結束一個進程我們可以用命令“killall”把進程給殺掉,不過我們在關閉軟件的時候還是要通過正常的方法關掉而不要采用這種殺進程的方法關軟件(不然軟件可能會出現不能用或者數據丟失的現象的),除非當我們用正常的方法關閉軟件時卻發現這個軟件相應的進程還存在,這時我們就可以用殺進程的方法把這個軟件的進程給殺掉了。
5、命令“killall –u apache”的意思是把進程的用戶是apache的所有進程都給殺掉。但是我們發現把apache的所有進程殺掉后過了10秒后剛才被殺掉的進程又重新出現了,但是殺之前的子進程號和殺之后的子進程號不同了,但是父進程號還是一樣的,這是因為軟件為了維持它自己的正常工作會自動派生出它自己的子進程的。如果想要徹底的殺掉apache這個進程就直接殺掉它的父進程,比如命令“kill 3957”就是直接把apache的父進程號找到然后殺掉了。如下圖所示:
如果按照進程號殺進程的話建議用命令“kill 進程號”,如果是按照用戶來殺進程的話建議用命令“killall 用戶名”(用這種方法要注意它的父進程是否存在<因為如果光是殺了子進程而沒有殺掉子進程的父進程的話,父進程還是會派生出新的子進程的>,因為殺掉子進程后父進程還是會派生出新的子進程的。有的軟件是沒有父進程和子進程一說的,也就不會存在父進程又會派生出新的子進程的概念了,所以用這種killall的方法就可以把一群進程都給殺掉)。
6、在一個進程執行時可以用“ctrl+z”來暫時的停止它。可以把一個進程放到前臺來執行,這樣屏幕會有顯示,但也可能你就做不了其它的操作了。也可以把一個進程放到后臺去執行,這樣你在前臺還可以做別的操作。有時比如我們想要執行的程序需要工作很長時間,如果這樣我們就做不了別的操作了,這時我們就可以把這個進程放到后臺去執行,然后我們就可以在前臺做其它的操作了。用命令“jobs”可以查看我們自定義程序(也就是不包括系統服務進程、守護進程等等)的作業狀態。用命令“fg”就是讓程序在前臺運行,用命令“bg”就是讓程序在后臺運行。一般我們最好讓一個程序在后臺執行,因為這樣做這個程序有什么信息輸出或者錯誤信息輸出也不會顯示在前臺了,也就不會影響我們在前臺進行別的操作了,不然的話我們就只能乖乖的等著這個程序執行完畢后才能進行別的操作了。
【15 Linux系統shell腳本編程
(一)】
1、本章學習目標:
2、什么是shell腳本:
shell是命令解釋器的意思,也就是我們在終端(比如黑底白字的命令行窗口,或者我們用putty登錄遠程linux后的命令行窗口)輸入的命令,shell負責幫我們傳遞給linux系統,然后linux系統執行完再把結果給shell,然后shell再傳遞給我們,所以shell是用戶和linux之間的一個接口,我們如果想要和linux對話就只能通過shell了。
一般情況下我們寫的如果不是太復雜的shell腳本的話都不會用到結構控制語句的。
3、shell腳本的建立與執行:
如果對一個shell腳本程序沒有執行權限的話可以用“sh”的方式執行,如果用“./”方式是執行不了的,除非把這個程序的權限設置成可執行的。
4、shell腳本的編碼規范:
注意“#!/bin/bash”是最好要加上的,因為加上linux就會用/bin/bash里面的shell了,不然可能用的不是/bin/bash里面的shell。如果linux默認的就是/bin/bash里面的shell可以不用加上這句,但是為了養成好習慣還是要加上的。【16 Linux系統shell腳本編程
(二)】
1、shell變量名一般情況下都是用小寫的字符,如果用大寫的字母會給人看起來不方便的:
2、注意如果想要shell做加減乘除的運算就需要嚴格遵守shell的語法規則,比如先定義變量a=20和b=30,如果想要輸出a+b的值就要用命令echo $(($a+$b)),這個意思也就是把變量a和變量b的值相加后的值再賦給一個變量(也就是最外面的小括號就是這個被賦值的新變量,這個理解起來有點抽象),然后再通過echo命令把這個被賦值的變量的值給輸出出來,也就是要用到兩個小括號。
3、shell字符串操作:
【17 Linux系統shell腳本編程
(三)】
1、shell中的判斷:
要注意的是判斷文件是否有讀、寫、執行權限時,即使是把一個文件的讀、寫、執行權限都去掉的話,如果這個文件是root創建的,那么對于root用戶來講也是對這個文件具有讀、寫、執行權限的,而對于其它用戶就不會有這種特殊情況了(比如如果是用zhangsan這個用戶創建的文件,如果這個文件的讀、寫、執行權限都被去掉的話,那么zhangsan這個用戶此時就對這個文件不具有任何權限了;這個和上面說的root用戶的情況就不同了)。所以當用test判斷當前用戶對文件是否有權限的時候還要考慮到這個文件的屬主問題。
上圖中要注意中括號內(中括號的兩邊最邊上)和變量或者常量間要有空格,“==”兩邊也要有空格,不然執行此命令時會報錯的。
2、條件判斷:
【18 Linux系統shell腳本編程
(四)】
1、多分支除了if形式還有case的形式,如下圖所示read命令是讀取用戶從終端輸入的值然后賦值到變量number中,case下面的1、2、3、*代表變量number的各種可能的值,如果滿足就執行隨后的語句。注意每個條件后面要有兩個分號:
case多分支和if多分支在功能是一樣的,只是語法形式不同,你想用哪個就用哪個。
2、我們在寫一個shell程序后然后執行,但是如果報錯了,比如報的是13行有錯誤,此時在檢查shell程序時發現不一定是13行的錯誤,有可能是12行的錯誤,但是報錯的時候報的卻是13行的錯誤。
3、???我們在寫shell程序時判斷結構用的比較多,而循環和分支結構用的比較少。
【19 Linux系統shell腳本編程
(五)】
1、循環語句:
應注意的是上圖中while后面如果是雙小括號那么里面的比較符號可以用“<、<=、!=、>、>=”等等,可如果while后面的是中括號那么里面的比較符號必須用“-eq、-no、-gt、-qe、-lt、-le”代替“<、>、>=”了,還要注意如果是用中括號那么別忘了比較符號兩邊和中括號里面要加上空格進行隔開。為了標準化linux建議大家不論是分支結構還是循環結構都要使用中括號的方式,雙小括號的方式一般是用來進行整數運算的。
在循環結構里面“大于、小于、大于等于、小于等于”用的比較多,而分支結構里面“等于”用的比較多,比如上圖中如果“$i”和“5”之間的比較符號是等于的話那么這個循環結構根本就不會執行的。
2、如下圖是until循環,它和while循環最不同的地方就是while是當條件滿足時就執行循環體內的語句,而until是一直執行循環體內的語句直到條件滿足時才結束。也就是while是條件滿足時執行循環體,而until是條件不滿足時執行循環體。
【20 Linux系統shell腳本編程
(六)】
1、for循環小例子:
For循環要用這種雙小括號的形式而不用中括號的形式,因為for循環的雙小括號里面涉及到了變量賦值,變量遞增等操作,而while或者until條件里面只涉及到條件判斷、條件比較等操作。
2、function其實就是一個分支程序,也就是把一個重復性的操作寫成一個function,然后主程序需要時就直接調用這個function了,這樣做的目的是為了避免每次寫程序時都要寫重復性的操作。如下圖中,為了避免每次輸出內容時都要寫上“your input is”這句話,所以就把這句話寫成了一個function(這個function的名字是print),然后主程序需要時就直接調用這個function了。下圖中所示的程序寫的不是很完美,但是能夠表達出function的意思來:
【21 Linux系統yum安裝軟件(上)】
1、本章學習目的:
幾乎所有的linux發行版都支持上圖中的3種安裝軟件的方法。
2、yum是一個應用軟件,如果只安裝了linux內核是沒有yum這個應用軟件的,yum是集成到發行版linux系統中去的。
3、linux應用程序和命令的關系:
4、應用程序和第三方應用程序:
5、linux應用程序組成:
6、為什么使用yum:
Linux系統在用yum方式安裝軟件的時候必須是聯網狀態,如果不是聯網狀態那必須在本地配置一個軟件池,這個軟件池可以在你公司內部專門存放軟件的服務器上,也可以在自己的電腦上,但是利用這種本地軟件池的方法卻很少用,因為本地存放軟件不論是在容量、更新程度等等都比不上互聯網上的軟件。
因為centos的linux系統的軟件倉庫在centos的官方網站上,所以在國內下載安裝軟件時速度會比較慢。
【22 Linux系統yum安裝軟件(下)】
1、如下圖所示畫紅色橫線的文件就是配置linux軟件倉庫的。因為centos默認的是centos官網上的軟件倉庫,因為centos是國外的,所以國內下載軟件時速度會很慢。而國內的很多網站也是支持開源的軟件倉庫的,比如網易、搜狐、教育網的,所以我們可以把yum的軟件倉庫改成國內的。
2、如果想要修改軟件倉庫的源的話,首先要把原先默認的配置軟件倉庫的文件備份一下,因為如果哪一天你可能還想使用默認的呢。首先我們可以把默認的配置軟件倉庫的源文件改名(因為改了名字yum在下載或者更新軟件的時候就不會到這個文件里面去找軟件倉庫的配置文件了,因為不認識這個文件了),比如把源配置文件“CentOS-Base.repo” 改名成“CentOS-Base.repo.backup”,可以用命令“mv CentOS-Base.repo CentOS-Base.repo.backup”。然后去網易的開源軟件網站“mirrors.163.com”,根據出現網頁的centos后面的幫助文件操作。先把網易的軟件倉庫配置文件下載下來(網易的軟件倉庫配置文件應該是CentOS5-Base-163.repo),然后再進行更新緩存操作可以用命令“yum makecache”,然后在執行搜索軟件或者下載軟件時就是用的網易的軟件倉庫了。
3、網站“mirrors.163.com”是網易的開源軟件庫,里面支持的系統和軟件非常多。在這個
第二篇:SQL語句從入門到精通之筆記
SQL分類:
DDL—數據定義語言(CREATE,ALTER,DROP,declare)
DML—數據操縱語言(select,delete,update,insert)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,簡要介紹基礎語句:
1、說明:創建數據庫
CREATE DATABASE database-name
2、說明:刪除數據庫 drop database dbname
3、說明:備份sql server
---創建 備份數據的 device USE master exec sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
---開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old(使用舊表創建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、說明:
刪除新表:drop table tabname
6、說明:
增加一個列:Alter table tabname add column col type
注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:
添加主鍵:Alter table tabname add primary key(col)
說明:
刪除主鍵:Alter table tabname drop primary key(col)
8、說明:
創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
9、說明:
創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2)values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like ?%value1%?---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count * as totalcount from table1
求和:select sum(field1)as sumvalue from table1
平均:select avg(field1)as avgvalue from table1
最大:select max(field1)as maxvalue from table1
最小:select min(field1)as minvalue from table1
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時(EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時(INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left outer join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行,http://mrrscn.inmix1.com/。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
其次,大家來看一些不錯的sql語句
1、說明:復制表(只復制結構,源表名:a 新表名:b)(Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b)(Access可用)insert into b(a, b, c)select d,e,f from b;
3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑)(Access可用)insert into b(a, b, c)select d,e,f from b in ?具體數據庫? where 條件
例子:..from b in '“&Server.MapPath(”.“)&”data.mdb“ &”' where..4、說明:子查詢(表名1:a 表名2:b)select a,b,c from a where a IN(select d from b)或者: select a,b,c from a where a IN(1,2,3)
5、說明:顯示文章、提交人和最后回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b
6、說明:外連接查詢(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a)select * from(select a,b,c FROM a)T where t.a > 1;
8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 數值1 and 數值2
9、說明:in 的使用方法
select * from table1 where a [not] in(?值1?,?值2?,?值4?,?值6?)
10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where.....12、說明:日程安排提前五分鐘提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定數據庫分頁
select top 10 b.* from(select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段
14、說明:前10條記錄 select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結果表
(select a from tableA)except(select a from tableB)except(select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄 select newid()
19、說明:刪除重復記錄
delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
20、說明:列出數據庫里所有的表名 select name from sysobjects where type='U'
21、說明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end)FROM tablename group by type
顯示結果: type vender pcs 電腦 A 1 電腦 A 1 光盤 B 2 光盤 A 2 手機 B 3 手機 C 3
23、說明:初始化表table1 TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from(select top 15 * from table order by id asc)table_別名 order by id desc 隨機選擇數據庫記錄的方法(使用Randomize函數,通過SQL語句實現)
對存儲在數據庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP“找個隨機數”然后打印出來。實際上常見的解決方案是建立如下所示的循環: Randomize
RNumber = Int(Rnd*499)+1
While Not objRec.EOF
If objRec(“ID”)= RNumber THEN...這里是執行腳本...end if
objRec.MoveNext Wend
這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是數據庫內記錄的總數)。然后,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。假如你的RNumber 等于495,那么要循環一遍數據庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型數據庫了,后者通常在一個數據庫內就包含了成千上萬條記錄。這時候不就死定了?
采用SQL,你就可以很快地找出準確的記錄并且打開一個只包含該記錄的recordset,如下所示: Randomize
RNumber = Int(Rnd*499)+ 1
SQL = “select * FROM Customers WHERE ID = ” & RNumber
set objRec = ObjConn.execute(SQL)
Response.WriteRNumber & “ = ” & objRec(“ID”)& “ ” & objRec(“c_email”)
不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作“隨機”記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。再談隨機數
現在你下定決心要榨干Random 函數的最后一滴油,那么你可能會一次取出多條隨機記錄或者想采用一定隨機范圍內的記錄。把上面的標準Random 示例擴展一下就可以用SQL應對上面兩種情況了。
為了取出幾條隨機選擇的記錄并存放在同一recordset內,你可以存儲三個隨機數,然后查詢數據庫獲得匹配這些數字的記錄:
SQL = “select * FROM Customers WHERE ID = ” & RNumber & “ OR ID = ” & RNumber2 & “ OR ID = ” & RNumber3
假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 select 語句只顯示一種可能(這里的ID 是自動生成的號碼): SQL = “select * FROM Customers WHERE ID BETWEEN ” & RNumber & “ AND ” & RNumber & “+ 9”
注意:以上代碼的執行目的不是檢查數據庫內是否有9條并發記錄。
隨機讀取若干條記錄,測試過
Access語法:select top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from 表名 order by newid()mysql select * From 表名 Order By rand()Limit n
Access左連接語法(最近開發要用左連接,Access幫助什么都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備后查)
語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where...使用SQL語句 用...代替過長的字符串顯示
語法:
SQL數據庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access數據庫:select iif(len(field)>2,left(field,2)+'...',field)FROM tablename;
Conn.execute說明
execute方法
該方法用于執行SQL語句。根據SQL語句執行后是否返回記錄集,該方法的使用格式分為以下兩種:
1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:
Set 對象變量名=連接對象.execute(“SQL 查詢語言”)
execute方法調用后,會自動創建記錄集對象,并將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以后對象變量就代表了該記錄集對象。
2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:
連接對象.execute “SQL 操作性語句” [, RecordAffected][, Option]
稲ecordAffected 為可選項,此出可放置一個變量,SQL語句執行后,所生效的記錄數會自動保存到該變量中。通過訪問該變量,就可知道SQL語句隊多少條記錄進行了操作。
稯ption 可選項,該參數的取值通常為adCMDText,它用于告訴ADO,應該將execute方法之后的第一個字符解釋為命令文本。通過指定該參數,可使執行更高效。
稡eginTrans、RollbackTrans、CommitTrans方法
這三個方法是連接對象提供的用于事務處理的方法。BeginTrans用于開始一個事物;RollbackTrans用于回滾事務;CommitTrans用于提交所有的事務處理結果,即確認事務的處理。
事務處理可以將一組操作視為一個整體,只有全部語句都成功執行后,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,并恢復到處里前的狀態。
BeginTrans和CommitTrans用于標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。SQL語句大全精要 2006/10/26 13:46 delete語句
delete語句:用于創建一個刪除查詢,可從列在 FROM 子句之中的一個或多個表中刪除記錄,且該子句滿足 WHERE 子句中的條件,可以使用delete刪除多個記錄。語法:delete [table.*] FROM table WHERE criteria 語法:delete * FROM table WHERE criteria='查詢的字' 說明:table參數用于指定從其中刪除記錄的表的名稱。
criteria參數為一個表達式,用于指定哪些記錄應該被刪除的表達式。
可以使用 execute 方法與一個 DROP 語句從數據庫中放棄整個表。不過,若用這種方法刪除表,將會失去表的結構。不同的是當使用 delete,只有數據會被刪除;表的結構以及表的所有屬性仍然保留,例如字段屬性及索引。
update 有關update,在ORACLE數據庫中
表 A(ID ,FIRSTNAME,LASTNAME)表 B(ID,LASTNAME)表 A 中原來ID,FIRSTNAME兩個字段的數據是完整的 表 B中原來ID,LASTNAME兩個字段的數據是完整的
現在要把表 B中的LASTNAME字段的相應的數據填入到A表中LASTNAME相應的位置。兩個表中的ID字段是相互關聯的。
update a set a.lastname=(select b.lastname from b where a.id=b.id)
SQL中有四種基本的DML操作:insert,select,update和delete。由于這是大多數SQL用戶經常用到的,我們有必要在此對它們進行說明。
第三篇:從入門到精通 婦產科必備書單
從入門到精通
婦產科必備書單
對于初入臨床的同學,開始不必強啃大部頭專著,我結合自己學習經驗和丁香園站友評價從綜合到專科、從初級到高級、分門別類、實事求是地推薦一些針對婦科高質量圖書(注明:產科不在此討論之列)。本文仍可能遺漏一些高質量的經典書籍,一家之言,僅供參考。第一部分:入門綜合篇 經典永遠是教科書,上臨床后還需要培養臨床思維,除了與帶教老師查房管理病人外,還需要認真學習如下書籍。1《婦產科學》該書由浙江大學醫學院附屬婦產科醫院謝幸教授和西安交通大學醫學院第一附屬醫院婦產科主任茍文麗教授主編,作者群體均為各大知名附屬醫院的著名教授參與編寫,實用性較之前版本有了明顯的提高。
可以作為婦產科經典學習,特別是總論部分,大家一定要認真看,認真學,學好總論,然后再學習各個疾病,如果能達到通過總論推理出各個疾病的病理生理就可以稱得上半個專家了。
2《婦產科查房實錄》是由中山大學附屬孫逸仙紀念醫院林仲秋教授主編,實用性不用說,教授帶著大家查房,在弄懂第八版教科書的情況下,大家可以參考此書仔細品味。當然林教授的手術也是沒得說的哦。3《婦產科手術學》這本手術學都是劉新民教授主編的手術學,很經典,細節,圖解與文字互補相彰,婦產科手術難點與技巧圖解這本書更是劉教授無私的循循教誨。
4《實用生殖內分泌疾病診治精要》由北京協和醫院孫愛軍教授及北京大學第一醫院婦產科楊欣教授主編,作者群體以北京名校婦科內分泌專家為主。實用性極強,語言十分簡練,在學習好第八版教科書婦科生殖生理總論的前提下再學習這本書,你會覺得婦科內分泌也不是很難哦。5《生殖內分泌學》這本書十分厚重,但是內容十分豐富,是林守清教授主譯的。我是 2006 年在我主任的辦公室里面看到的,然后我就隨便翻了翻,雖然很厚,但是只是看了前面幾頁就被書里面的內容深深吸引住了。
但是說老實話,當時就是是懂非懂,2007 年考上國家統考的碩士研究生后,跟隨我的導師學習婦科內分泌專業知識,并通過學習網絡資料才算基本上了解了這本書的內容,離理解還是有一定的距離,如果大家對婦科內分泌有興趣,而且想從事婦科內分泌的話這本書可能會稱得上是婦科生殖內分泌的經典書籍了。第二篇 超聲篇
作為一名專業的婦科醫生,不但要懂得婦科的專業知識,超聲學知識也一定要了解,如果能做到會做超聲,就像士兵不但懂得了戰斗的技巧手里還握有了戰斗的武器,會為你如虎添翼。《陰道超聲診斷學》
復旦大學附屬腫瘤醫院超聲診斷科主任常才教授主編。我是 2012 年進修生殖醫學(俗稱試管嬰兒技術)時,覺得自己的陰道超聲水平實在太差,所以在進修醫院圖書館找了很多本有關陰道超聲的書籍進行學習,通過比較覺得常才老師的最全面,且里面不只是講怎么做,還講解了大量的原理及超聲研究的相關知識,值得大家花多量的時間閱讀。第三篇 微創手術學篇
在婦產科宮腔鏡、腹腔鏡手術里面,我們必須知道的兩個開創我國婦產科微創的專家:腹腔鏡之父李光儀教授和宮腔鏡之母夏恩蘭教授。他們主編的書籍主要有如下幾本: 弄懂以上微創手術基本技能和技巧,然后再在臨床中實踐并購買兩位大師及其他大師的手術視頻,你們的手術會突飛猛進。
經陰道手術可以看(法)考森 等著,熊光武譯的書籍: 國際知名婦科手術專家編寫了這本具有理論和實踐指導意義的《經陰道手術學》。該書自始至終強調作者們通過實踐證實的手術技巧和建議,以及對需要避免的常見錯誤進行的分析。書中使用了 100 多張彩色示意圖和 230 張彩色照片,對每一個手術步驟進行了非常清晰的闡釋。
全書分 8 個部分。第 1 部分闡述了手術相關的條件和準備工作,之后分 6 個部分詳細介紹了單純子宮切除術、腹腔鏡輔助的手術、腫瘤手術、盆腔臟器脫垂手術和尿失禁手術,以及術中、術后可能發生的并發癥的診斷和治療。在最后一部分,Dargefit 教授對本書所介紹的各種術式進行了非常中肯的評價。
這本書對于每位正在學習婦科手術的年輕醫師、有經驗的婦科手術醫師,乃至普通外科醫師和泌尿外科醫師而言,都是一本必不可少的參考書。
當然經陰道手術除了仔細閱讀這本書外還要綜合佛山市婦幼保健院謝慶煌教授及泰安市婦幼保健院婦產科主任醫師賈振香教授手術視頻進行學習,你的陰式手術就是杠杠的了。第四篇 輔助生殖相關書籍篇
羅麗蘭教授主編的不孕不育,內容全面詳實,適合初級、中級及高級醫師看,美中不足就是太厚了,需要時間慢慢看,后面的輔助生殖技術的相關知識如果不是輔助生殖專業可以忽略不看。
這本書可以結合羅麗蘭教授的書看也可以單獨看,根據每個人的知識儲備而選擇。
宮腔內人工受精與促排卵,(英)理查德等著,全松等譯。主要介紹了體外受精-胚胎移植技術前的一種輔助生殖技術,涵蓋了人工授精的基礎理論、實驗室技術、臨床診療常規,以及療效、并發癥、心理干預和倫理問題等內容,堪稱一部經典、權威的參考書。
本書可供普通執業醫師、家庭醫師、婦科醫師及不孕癥專科醫師閱讀參考。內容不是太難,不過如果你不是輔助生殖專業的醫生可以不用看,當然作為婦科內分泌精準知識的一個了解看看會對你的婦科內分泌有很大的幫助,如果是輔助生殖專業的醫師必須看。如果要從事輔助生殖技術,莊廣倫教授的這本 2005 年出版的書必須的好好閱讀。全書共包括生殖醫學基礎、臨床應用、實驗室技術以及并發癥的防治四部分,可以說是我國輔助生殖的經典書籍之一。第五篇 婦科腫瘤專業書籍篇
不用說了,林巧稚婦科腫瘤學應該是婦科腫瘤醫師需要好好閱讀的一本書了。此外還有武漢大學中南醫院陳惠禎教授的一本書,也建議從事婦科腫瘤專業的醫生仔細閱讀。第六篇 網絡學習篇
書籍一旦寫出來,至少落后臨床 2 年以上,我們的處在一個知識爆炸的時代,網絡的普及使得知識的獲得越來越簡便而且網絡上可以學習部分專業會議內容,更重要的是還是免費的。我建議大家關注丁香園婦產時間并瀏覽丁香園網站婦產科論壇,可以隨時學到很多的實用知識。
介紹了這么多,來做一個總結,初入婦科臨床,大家主要還是以第八版婦產科學教程為主,查房實錄等為輔進行綜合學習。把陰道超聲這門非婦科醫生專業的書籍也要仔細閱讀,將來在臨床中會讓你如虎添翼。
手術及更加專業的亞專科,除了要看專業書籍外還要結合臨床實踐,如手術就要結合各位大師的手術錄像及平時上臺的實踐,能起到事半功倍的作用。如果要想從事更專業的輔助生殖及婦科腫瘤亞專科,就要更加追求專業書籍進行學習并要緊跟國際指南,參加各位大師的學術會議,與大師共同進步。并利用網絡學習最新最全的專業知識,做到與世界接軌,與時俱進。
編者按:感謝丁香園婦產論壇版的版主柳先廉副主任醫師跟我們分享這么多,在此特別強調一點,一定要實時關注網絡上最新的更新內容,畢竟我們已經進入了一個醫學發展的快車道。
第四篇:煤礦技術員——從入門到精通
這里都是一些概念上的東西。不過很有用。回采工作面
在煤層或礦床的開采過程中,一般把直接進行采煤或采有用礦物的工作空間稱為回采工作面或簡稱為采場。賦存在煤層之上的巖層稱為頂板或稱為上覆巖層,位于煤層下方的巖層稱為底板。一般把直接位于煤層上方的一層或幾層性質相近的巖層稱為直接頂。它通常由具有一定穩定性且易于隨工作回術放頂而垮落的頁巖,砂頁巖或粉砂巖等巖層組成。巖石
巖石是組成地殼的基本物質,由各種造巖礦物或巖屑在地質作用下按一定規律組合而成。為與自然狀態下的巖體有所區別,多數巖石力學文獻中,巖石是指從巖體中取出的,尺寸不大的塊體物質,有時又稱巖塊。巖石按不同的標準可分為不同類型,常見的分類有成因,礦物顆粒間的結合特征,巖石力學強度和堅實性。雷管
雷管是爆破工程的主要起爆材料,它的作用是產生起爆能來引爆各種炸藥及導爆索、傳爆管。雷管分為火雷管和電雷管兩種。煤礦井下放炮均采用電雷管。電雷管分為瞬發電雷管和延期電雷管。而延期電雷管又分為秒延期電雷管和毫秒延期電雷管。莫爾強度理論
莫爾于1900年提出了莫爾強度理論,認為材料發生破壞是由于材料的某一面上剪應力達到一定的限度,而這個剪應力與材料本身性質和正應力在破壞面上所造成的摩擦阻力有關。即材料發生破壞除了取決于該點的剪應力,還與該點正應力相關。這是目前巖石力學中應用最廣泛的理論。巖石沿某一面上的剪應力和該面上的正應力理論可表述為三部分。一,表示材料上一點應力狀態的莫爾應力圓,二,強度曲線,三,將莫爾應力圓和強度曲線聯系起來,建立莫爾強度準則。原巖應力
地殼中由于沒有受到人類工程活動(如礦井開掘巷道等)的影響的巖體稱為原巖體,簡稱原巖。存在于地層中示受工程擾動的天然應力為原巖應力,也稱為巖體初始應力,絕對應力或地應力。天然存在于原巖內而與人為因素無關的應力場稱為原巖應力場。原巖應力的形成主要與地球的各種動力運動過程有關,包括:板塊邊界受壓,地幔熱對流,地球內應力,地心引力,地球旋轉,巖漿侵入和地殼非均勻擴容等。此外,原巖體內溫度不均勻,水壓梯度變化,地表被剝蝕或其他物理化學作用也能影響巖體內應力的大小與分布狀態。由地心引力引起的應力場稱為自重應力場,地殼中任一點的自重應力等于單位面積的上覆巖層的重量。由于地質構造運動而引起的應力場稱為構造應力場,構造應力與巖體的特性,以及正在發生過程中的地質構造應力場是原巖應力場的主要組成部分。由于原巖應力場是分析開采窨周圍應力重新分布的基礎,研究巖體的初始應力狀態,為分析開挖巖體過程中巖體內部應力變化,合理設計巷硐支護提供依據。裂紋擴展的應力準則
格里菲斯強度理論的應力準則與庫侖-莫爾準則在破壞機理上的認識是不同的。后者認為破壞主要是壓剪破壞,即使有拉伸破壞,也是發生在有拉應力作用的情況,而前者則認為不論材料處于何種受力狀態,本質上都是由于拉應力引起破壞的。如圖A所示,如果垂直于裂隙的拉應力為巖石內的主應力,則裂隙端部就會產生一個其值可能是該主應力幾倍的拉應力。如果主應力為平行于裂隙的壓應力,則裂隙邊界上的A點也會擴張如圖B。如果巖石試件中的微裂隙與城市應力成一定角度且處于復雜應力狀態,則裂隙端部就會出現應力集中而使原有裂隙擴展如圖c。所有這些應力集中,都是靠近裂隙尖端處應力值達到該點材料的抗拉強度時,才會從這個裂隙端部開始擴展至破裂。因此,脆性破壞不是剪切而破壞,而是由于拉伸而破壞的。格里菲斯在研究這個問題時,假定巖石內部裂隙都看做是長度相當,形狀相似的扁平橢圓孔,并將它作為半無限彈性介質中單個孔洞的平面應力問題來處理,在忽略中間主應力的影響下,根據對橢圓孔的應力分析可得出裂紋擴展應力準則,也稱拉應力準則。裂紋擴展的應力準則
相關圖 巖體
20世紀50年代,國內外學者注意到,巖石與大范圍天然巖體的力學性質有很大差別。概括來說,天然巖體與實驗室內制作的巖石試件(巖 石)有顯著不同:(1)巖體賦存于一定地質環境之中,地應力,地溫,地下水等因素對其物理力學性質有很大影響,而巖石試件只是為實驗室 實驗而加工的巖塊,已完全脫離了原有的地質環境。(2)巖體在自然狀態下經歷了漫長的地質作用過程,其中存在著各種地質構造和弱面,如 不整合,褶皺,斷層,節理,裂隙等等。(3)一定數量的巖石組成巖體,且巖體無特定的自然邊界,只能根據解決問題的需要來圈定范圍。根 據上述特征,將巖體定義為地質體的一部分,并且是由處于一定地質環境中的各種巖性和結構特征巖石所組成的集合體,也可以看成是由結構 面所包圍的結構體和結構面共同組成的。結構體
結構體(structural element)指巖體中被結構面切割圍限的巖石塊體。它不同于巖塊的概念。結構體的規模取決于結構面的密度,密度愈小,結構體的規模愈大,與結構面對應,劃分為五級。常用塊度模數(單位體積內的Ⅳ級結構體數)或結構體體積來表示結構體規模。結構體常見的形狀: 柱狀、板狀、楔形、菱形,見下圖 巖體整體與塊狀結構
主要為均質、巨塊狀巖漿巖、變質巖,巨厚層、厚層沉積巖、正變質巖、塊狀巖漿巖、變質巖;主要結構形狀為巨塊狀、塊狀、柱狀;以原生構造節理為主,只具有少量貫穿性較好的節理裂隙,多呈閉合型,裂隙結構面間距大于0.7m,一般不超過1~3組,無危險結構面組成的落石掉塊,偶有少量分離體。整體性強度高,結構面互相牽制,巖體穩定,可視為均質彈性各向同性體,可能發生的巖土工程問題為不穩定結構體的局部滑動或坍塌,深埋洞室的巖爆。巖體層狀結構
主要為多韻律的薄層及中厚層狀沉積巖、副變質巖;主要結構形狀為層狀、板狀、透鏡體;有層理、片理、節理,常有層間錯動。接近均一的各向異性體,其變形及強度特征受層面及巖層組合控制,可視為彈塑性體,穩定性較差,可能發生的巖土工程問題為不穩定結構體可能產生滑塌,特別是巖層的彎張破壞及軟弱巖層的塑性變形 巖體碎裂狀結構
主要為構造影響嚴重的破碎巖層;主要結構形狀為塊狀;斷層、斷層破碎帶、片理、層理及層間結構面較發育,裂隙結構面間距0.25~0.5m,一般在3組以上,由許多分離體形成。完整性破壞較大,整體強度很低,并受斷裂等軟弱結構面控制,多呈彈塑性介質,穩定性很差,可能發生的巖土工程問題為易引起規模較大的巖體失穩,地下水加劇巖體失穩。巖體散體狀結構
要為構造影響劇烈的斷層破碎帶,強風化帶,全風化帶;主要結構形狀為碎屑狀、顆粒狀;斷層破碎帶交叉,構造及風化裂隙密集,結構面及組合錯綜復雜,并多充填粘性土,形成許多大小不一的分離巖塊。完整性遭到極大破壞,穩定性極差,巖體屬性接近松散體介質,可能發生的巖土工程問題為易引起規模較大的巖體失穩,地下水加劇巖體失穩 巖體中彈性變形能
地下巖體處在復雜和強烈的自重應力和構造應力場中。地下賦存的煤層或巖層在應力作用下,體積和形狀發生變化產生變形,這種變形是外力做功的結果。巖體受外力作用而產生彈性變形時,在巖體內部所儲存的能量,稱為彈性應變能。在彈性范圍內外力緩慢地作用時若不考慮能量損耗,根據能量守恒原理,外力做的功將全部以應變能的形式儲存在彈性體內。因此,處于強烈原巖應力作用下的巖體,可能儲存有巨大的彈性能。彈性體的變形是可逆的。采掘活動改變原巖的應力狀態,一旦解除了在原巖體中作用的應力。巖體在恢復變形的過程中,將釋放出全部的變形能而對外做功,伴生出一系列的礦山壓力現象。圍巖
在巖石地下工程中,由于受開挖影響而發生應力狀態改變的周圍巖體.石門
與地面不直接相通的水平巷道,其長軸線與煤層直交或斜交的巖石平巷稱為石門,為開采水平服務的石門稱主要石門,為采區服務的石門稱采區石門 煤門
在厚煤層內,與煤層走向直交或斜交的水平巷道,稱為煤門。硐室
空間三個軸線長度相差不大且又不直通地面的地下巷道,如絞車房、變電所、煤倉等。立井
立井又稱豎井,為直接與地 面相通的直立巷道。專門或主要用于提升煤炭的叫做主井;主要用于提升矸石、下放設備器材、升降人員等輔助提升工作的叫做副井。采煤系統
回采巷道的掘進一般是超前于回采工作進行的。它們之間在時間上的配合以及在空間上的相互位置關系,稱為回采巷道布置系統,也即采煤系統。采煤工藝
由于煤層的自然條件和采用的機械不同,完成回采工作各工序的方法也就不同,并且在進行的順序、時間和空間上必須有規律地加以安排和配合。這種在采煤工作面內按照一定順序完成各項工序的方法及其配合,稱為采煤工藝。在一定時間內,按照一定的順序完成回采工作各項工序的過程,稱為采煤工藝過程。斜巷
不直通地面且長度短的傾斜巷道,用于行人、通風、運料等,此外,溜煤眼和聯絡巷有時也是傾斜巷道。斜井
與地面直接相通的傾斜巷道,其作用與立井和平硐相同。不與地面直接相通的斜井稱為暗斜井或肓斜井,其作用與暗立井相同。采煤方法
根據不同的礦山地質及技術條件,可有不同的采煤系統與采煤工藝相配合,從而構成多種多樣的采煤方法。如在不同的地質及技術條件下,可以采用長壁采煤法、柱式采煤法或其他采煤法,而長壁與柱式采煤法在采煤系統與采煤工藝方面差別很大。由此可以認為:采煤方法就是采煤系統與采煤工藝的綜合及其在時間和空間上的相互配合。但兩者又是互相影響和制約的。采煤工藝是最活躍的因素,采煤工具的改革,要求采煤系統隨之改變,而采煤系統的改變也會要求 采煤工藝做相應的改革。事實上,許多種采煤方法正是在這種相互推動的過程中得到改進和發展,甚至創造了新的采煤方法。
第五篇:學習SEO從入門到精通之網站建設
學習SEO從入門到精通之網站建設
一、網站基礎
http:中即時協議
中國:25張/s,外國:29張/s,動畫片12張/s
二、html語言
Html語言叫超文本標記語言,有標簽和屬性兩部分構成,由head和body組成。
三、html語法結構
四、html字體語法結構
1.標題字體
語法:
2.文章字體
語法:
顏色名稱:black、red、white、green、blue、yellow、aqua(淺綠)fuchsia(紫紅)gray(灰色)、lime(橙色)、maroon(栗色)、purple
(紫色)olive(橄欖)、sliver(銀色)
3.物理字體
語法:傾斜加粗
下劃線上標下標
4.字符實體
語法: ;:不換行空格>;:>右尖括號,<;:<左尖括號
5.文字對齊
語法:
塊元素下劃線6.文字移動
語法:(1)方向移動,direction的屬性值:right、up、left、down。
(2)行為屬性,behavior的屬性值:scroll循環移動,slide只移動一次,alternate屏幕中間左右移動。
(3)次數屬性loop的屬性值是數值,(4)移動速度 屬性值越大,移動速度越快。
(5)移動范圍
五、html列表屬性
Html的列表主要分為三種:無序列表、有序列表、定義列表。
1.無序列表
語法:
- 大標題
- 小標題
2.有序列表
語法:
- 大標題
- 小標題
3.定義列表
語法:
- 標題
- 內容
六、html中的鏈接屬性
語法:target的屬性值有1.blank在新窗口中打開,2.parent在原窗口中打開,3-self原窗口中打開(默認)4.-top當前窗口打開,并替換原框架鏈接。Compact是文章內容變的緊湊。
鏈接:從上級到下級文件的鏈接:aa/a.html
從下級到上級文件的鏈接:../a.html
圖片鏈接
noshade的屬性值是取消水平線的陰影。
七、html中的表單屬性
1.表單主要用于信息采集,調查表,留言板。
語法:
,action是必須的,用來指定當表單提交到的路徑,method是提交表單的方法,get為顯示提交,post是隱示提交2.表單域
語法:type的屬性值有text、password密碼、checkbox多選項、radio單選、hidden隱藏表單、submit提交表單、reset復位
3.表單域(下拉列表)
4.多行文本框
,cols是列寬度,rows是行寬度。單選時記得加checked。
七、html中的表格屬性
語法:
列標記 |
border邊框厚度、bordercolor是邊框顏色、bgcolor背景顏色、background背景圖片、cellspacing是指單元格之間的距離、cellpadding是指邊框和內容之間的距離。Colspan列合并,rowspan行合并。Valign是指垂直對齊。