2008年3月13日

          規(guī)則:
          應(yīng)該將修飾符*  和 &緊靠變量名。例如:int  *a;  int &a;
          類的版式:
          類可以將數(shù)據(jù)和函數(shù)封裝起來,其中函數(shù)是表示類的行為。也可以稱為是服務(wù)。類提供了關(guān)鍵字public ,protect ,private用于聲明哪些是公共的,哪些是保護(hù)的,哪些是 私有的。這樣可以讓類隱藏必要的東西。
          類的版式主要有兩種版式:
           (1):第一種將privte類型的數(shù)據(jù) 寫在前面,將public類型的數(shù)據(jù)寫在后面。采用這種版式的程序員主張“以數(shù)據(jù)為中心,”重點(diǎn)關(guān)注類的結(jié)構(gòu)。
           (2):第二種版式是將public類型寫在前面。將private寫在后面。這種版式的程序員主張“以行為為中心”。重點(diǎn)關(guān)注的是類應(yīng)該提供什么樣的接口(或者服務(wù))。
          我建議大家采用“以行為為中心的”的這種類的 版式。因?yàn)檫@樣設(shè)計(jì)類的時(shí)候。首先考慮的類可以提供什么洋的服務(wù)。而且方便用戶閱讀。

          posted @ 2008-08-05 15:24 清流琴音 閱讀(321) | 評(píng)論 (3)編輯 收藏
           
          空行:
          空行起著分隔程序段落的作用。
          (1):在給個(gè)類的聲明之后,函數(shù)的定義之后,都要加上空行。
          (2):在一個(gè)函數(shù)體內(nèi),邏輯關(guān)系密切的相關(guān)語句之間不可以加上空行。
          代碼行:
          (1):一行代碼指做一件事情。例如:只聲明一個(gè)變量。
          (2);if ,for while,do等語句自占一行。執(zhí)行語句不能緊跟其后。
          建議:在定義變量的同時(shí)。初始化該變量。
          如果變量的引用和定義的地方比較遠(yuǎn),那么很容易就會(huì)忘記了變量的初始化。如果引用了一個(gè)沒有初始化的變量,那么很有可能就會(huì)引起錯(cuò)誤。
          代碼行內(nèi)的空格:
          (1);關(guān)鍵字之后要有空格。向const ,virtual,case等關(guān)鍵字后面至少要留一個(gè)空格。否則的話,無法辨認(rèn)關(guān)鍵字。象if.while, for等關(guān)鍵字后面緊跟一個(gè)空格在跟“(”以顯示關(guān)鍵字的。
          (2):函數(shù)名之后不要留空格,緊跟“(”以和關(guān)鍵字區(qū)別。
          對(duì)齊:
          程序的分界符“{”和"}"應(yīng)該獨(dú)占一行并且位于一列。

          posted @ 2008-08-01 15:32 清流琴音 閱讀(137) | 評(píng)論 (0)編輯 收藏
           
          頭文件由三部分組成:
          1:頭文件開頭出的版本和版權(quán)的 聲明。
          2:預(yù)處理塊。
          3:函數(shù)和類的結(jié)構(gòu)聲明等。
          規(guī)則:
          (1): 為了防止頭文件被重復(fù)的引用,應(yīng)該使用#ifndef/define/endif結(jié)構(gòu)產(chǎn)生與處理模塊。
          (2):用#include<filename.h>來引用標(biāo)準(zhǔn)庫的頭文件(編譯器將從標(biāo)準(zhǔn)庫目錄開始搜索)。
          (3):用#include"filename.h"來引用非標(biāo)準(zhǔn)庫的頭文件(編譯器將從用戶工作的目錄開始搜索)
          建議:頭文件中一般只存放“聲明”,而不存放“定義”

          定義文件的結(jié)構(gòu):

          定義文件的 內(nèi)容有由三部分組成:
          (1):  定義文件開頭處的版本和版權(quán);
          (2):對(duì)一些頭文件的引用;
          (3):程序的實(shí)現(xiàn)體(包括數(shù)據(jù)和代碼)

          頭文件的作用:
          (1):通過頭文件來調(diào)用庫功能。在很多場合源代碼不能(或者不準(zhǔn))提供給用戶。只提供給用頭文件或者二進(jìn)制的庫。用戶只需要按照頭文件中的接口的聲明來調(diào)用庫功能。而不必關(guān)心接口是如何實(shí)現(xiàn)的。編譯器會(huì)從庫中提取相應(yīng)的代碼。
          (2): 頭文件可以用來加強(qiáng)類型安全檢查。如果某個(gè)接口被實(shí)現(xiàn)或者被實(shí)用的時(shí)候,其方式和在頭文件中的聲明不一致的時(shí)候,編譯器就會(huì)報(bào)錯(cuò)。這一簡單的規(guī)則可以大大的減輕程序員調(diào)試和改錯(cuò)的負(fù)擔(dān)。
          目錄結(jié)構(gòu):
          如果一個(gè)軟件的頭文件比較多(超過10個(gè)),就應(yīng)該把頭文件和定義文件分開。分別保存在不同的目錄之中。以便于維護(hù)。
          例如:可以將頭文件保存在inluude目錄之中。將定義文件保存在source文件之中。
          如果某些頭文件是私有的,不會(huì)被程序直接引用,為了加強(qiáng)信息隱藏。那么可以把這些頭文件和定義文件放在同一目錄之中。
          posted @ 2008-08-01 15:13 清流琴音 閱讀(171) | 評(píng)論 (0)編輯 收藏
           
          指針中存有另一個(gè)對(duì)象的地址,使我們可以間接的操作這個(gè)對(duì)象。
          指針的典型用法是構(gòu)建一個(gè)連接的數(shù)據(jù)結(jié)構(gòu),例如:鏈表(list)和數(shù)(tree)。并管理在程序運(yùn)行的過程中動(dòng)態(tài)分配的對(duì)象。以及作為函數(shù)參數(shù)類型。主要用來傳遞數(shù)組和大型類的對(duì)象。
          每個(gè)指針都有相關(guān)的類型。
          不同數(shù)據(jù)類型的指針之間的區(qū)別不在于指針的表示上,也不是指針?biāo)钟械闹担ǖ刂罚!獙?duì)于所有類型的指針這兩個(gè)方面都是一樣的。不同之處在于指針?biāo)傅膶?duì)象的類型上。針織類型可以指定編譯器咋樣解釋特定內(nèi)存上的指定的內(nèi)容,以及該內(nèi)存區(qū)域因該跨越多少內(nèi)存單元。
          posted @ 2008-07-08 14:43 清流琴音 閱讀(180) | 評(píng)論 (0)編輯 收藏
           
          變量名,即變量的標(biāo)識(shí)符,可以由字符,數(shù)字,以及下劃線來組成。他必須以字符或者下劃線來開頭,并且區(qū)分大小寫。
          語言本身沒有對(duì)變量名做什么限制。但是為了用戶著想,他不應(yīng)過長。
          c++保留了一些詞用作關(guān)鍵字。關(guān)鍵字標(biāo)識(shí)符不能在作為標(biāo)識(shí)符在程序中使用了。
          對(duì)于命名對(duì)象有很多已經(jīng)普遍接受的習(xí)慣。主要考慮的因素的是程序的可讀性。
          第一:對(duì)象的命名一般用小寫。
          第二:標(biāo)識(shí)符通常用容易記憶的名字。
          第三:對(duì)于多詞構(gòu)成的標(biāo)識(shí)符一般在詞的中間加上下劃線。
          對(duì)象的定義:
          一個(gè)簡單的對(duì)象的定義由一個(gè)類型指示符后面加上一個(gè)名字構(gòu)成,以分號(hào)結(jié)束。
          例如: int aaaaa;
          當(dāng)同類型的多個(gè)標(biāo)識(shí)符被定義的時(shí)候,我們可以在類型指示符后面用逗號(hào)隔開。
          一個(gè)簡單的定義指定了變量的類型和標(biāo)識(shí)符。他并不提供初始值。
          如果一個(gè)變量是在全局域(globe scope)中定義的,那么系統(tǒng)會(huì)保證給他一個(gè)初始值0。如果一個(gè)變量是在一個(gè)局部域中定義的,或者通過一個(gè)new 動(dòng)態(tài)分配的,那么系統(tǒng)不會(huì)向它提供初始值0。這些對(duì)象被稱為未初始化(uninitialized),未初始化的對(duì)象不是沒有值,而是對(duì)象的值未被定義。
          因?yàn)槭褂梦闯跏蓟膶?duì)象是個(gè)很常見的  錯(cuò)誤,并且很難被發(fā)現(xiàn)。所以建議為每個(gè)定義的對(duì)象進(jìn)行初始化。
          類機(jī)制通過缺省構(gòu)造函數(shù)提供了類對(duì)象的自動(dòng)初始化。
          例如:
          int  main()
          {
          int val;////////未被初始化的值。
          string  project;//////通過string類的缺省的構(gòu)造函數(shù)進(jìn)行了初始化。
          }


          val是一個(gè)未被初始化的局部變量。
          但是project是一個(gè)已經(jīng)被初始化的類對(duì)象——被string類缺省的構(gòu)造函數(shù)自動(dòng)初始化。
          初始化一個(gè)值可以在對(duì)象定義的時(shí)候進(jìn)行。
          c++支持兩種形式的初始化。
          第一種是使用賦值符號(hào)的現(xiàn)實(shí)的操作。
          如:
          int val=111;
          string  project="ssssss";
          隱式形式中,初始化值被放在括號(hào)中。
          int val(111);
          string project("sssssss");
          在對(duì)象的定義之中,當(dāng)對(duì)象的標(biāo)識(shí)符在定義中出現(xiàn)后,對(duì)象名馬上就是可見的了。因此用對(duì)象初始化他自己是合法的,只是這樣做不是明智的。
          例如:int val=val;///////合法,但是不是明智的。
          另外,每種內(nèi)置數(shù)據(jù)類型都支持一種特殊的構(gòu)造函數(shù)。可將對(duì)象初始化為0。
          /////設(shè)置val為0。設(shè)置dval為0.0。
          int val =int();
          double dval=double();
          下列的定義中:
          int()
          vector <int>ival(10);
          函數(shù)int()自動(dòng)被應(yīng)用到ival包含的10個(gè)元素上。
          對(duì)象可以用任意復(fù)雜的表達(dá)式來初始化,也可以用返回值
          posted @ 2008-07-08 14:26 清流琴音 閱讀(704) | 評(píng)論 (0)編輯 收藏
           
          變量為我們提供了一個(gè)有名字的內(nèi)存存貯空間。可以通過程序?qū)ζ溥M(jìn)行 讀寫,處理操作。
          c++中給個(gè)符號(hào)變量都有一個(gè)符號(hào)類型與之對(duì)應(yīng)。這個(gè)類型決定了相關(guān)內(nèi)存的大小,類型,布局,能夠存貯在該內(nèi)存值的范圍。以及可以以用到其上的操作集。我們也可以把變量說成是對(duì)象(object)

          變量和文字常量都有存貯區(qū),并且都有相關(guān)的類型。區(qū)別在于變量是可以尋址的(adressable)常量文字是不可以尋址的(nonadressable),每一個(gè)變量都有兩個(gè)值與之聯(lián)系著,
          1:數(shù)據(jù)值。存貯在內(nèi)存的某個(gè)存貯區(qū)之中。有時(shí)候這個(gè)數(shù)據(jù)值也被稱為是右值(rvalue).我們可以認(rèn)為右值是被讀取的值。文字常量和變量都可以被用來做右值。
          2:它的地址值。即存貯它數(shù)據(jù)值的那塊內(nèi)存的地址。它有時(shí)候被稱為左值(lvalue)。我們也可以認(rèn)為左值的意思是位置值。文字常量不能被用作左值。
          變量的定義會(huì)引起相關(guān)內(nèi)存的分配。因?yàn)橐粋€(gè)對(duì)象只能有一個(gè)存貯位置,所以一個(gè)對(duì)象只能被定義一次。如果在一個(gè)文件中定義的對(duì)象需要在另一個(gè)文件中被訪問,那么就會(huì)出現(xiàn)問題。
          在c++中,對(duì)象在使用之前必須知道對(duì)象,引用一個(gè)未知的對(duì)象會(huì)引起編譯器的錯(cuò)誤。
          如果一個(gè)對(duì)象在另一個(gè)  文件中聲明著,我們想在這個(gè)文件中來使用這個(gè)對(duì)象,但是又不能在這個(gè)文件中在聲明相同的對(duì)象。那么我們可以使用extern關(guān)鍵字來聲明這個(gè)對(duì)象。
          例如; file module.c
           string aaaaa;
          ///定義了對(duì)象aaaaa



          file  module1.c
          ////需要使用對(duì)象aaaaa.,
          ////聲明對(duì)象aaaaa,使程序知道它。但是又不能引入第二個(gè)定義。
          extern string aaaaa;
          對(duì)象聲明是使程序知道對(duì)象的類型和名字。它由關(guān)鍵字extern后面跟對(duì)象的類型和對(duì)象的名字構(gòu)成。
          聲明不是定義,不會(huì)引起內(nèi)存的分配。實(shí)際上它只是說明了在程序之外的某處有這個(gè)變量的定義。
          雖然一個(gè)程序中只能包含一個(gè)對(duì)象的定義,但是可以包含很多的對(duì)象聲明。
          比較好的做法是:   不是在每個(gè)要使用的文件中都單獨(dú)提供一個(gè)聲明。而是在在頭文件中聲明這個(gè)對(duì)象,然后在需要聲明這個(gè)對(duì)象的時(shí)候包含這個(gè)頭文件就好了。按照這個(gè)做法。如果需要修改對(duì)象的聲明只需要修改一次。就能維持多個(gè)使用這個(gè)對(duì)象的聲明文件的一致性。



          posted @ 2008-07-08 10:49 清流琴音 閱讀(191) | 評(píng)論 (0)編輯 收藏
           

          面相對(duì)象的程序設(shè)計(jì)擴(kuò)展了給予對(duì)象的程序設(shè)計(jì)。可以提供類型和子類型的關(guān)系。這個(gè)是通過一種稱作繼承(inheritance)的機(jī)制來實(shí)現(xiàn)的。

          posted @ 2008-07-07 10:33 清流琴音 閱讀(182) | 評(píng)論 (0)編輯 收藏
           

          c++預(yù)定了一組數(shù)值數(shù)據(jù)類型。可以用來表示整型,浮點(diǎn)型和單個(gè)字符。此外還預(yù)定了表示字符串的字符數(shù)組。
          1:字符型char:通常用來表示單個(gè)字符和小整數(shù)。它可以用一個(gè)機(jī)器字節(jié)來表示(即8位表示)。
          2:整型int  短整型short ,長整型long分別表示不同長度的整數(shù)值。典型的情況下:short用半個(gè)字表示(即16位)。int 用一個(gè)字表示(即32位。)long用一個(gè)或者兩個(gè)字表示。(在32位的機(jī)器中通常int 和long的通常長度相同。)
          3:浮點(diǎn)型flont ,雙精度double和長雙精度。長雙精度long double 。分別表示單精度浮點(diǎn)數(shù)。雙精度浮點(diǎn)數(shù)和擴(kuò)展精度的浮點(diǎn)數(shù)。典型的情況下,float用一個(gè)字表示。double用兩個(gè)字表示,long double用三個(gè)或者四個(gè)字表示。
          char ,int, float , long 稱為整值類型(intergral  type)。整值類型可以有符號(hào)也可以沒有符號(hào)。在有符號(hào)的類型中。最左邊的位是符號(hào)為。余下的位代表數(shù)值。。在無符號(hào)的類型中,所有的位表示數(shù)值位。
          如果符號(hào)為被設(shè)置為1。那么數(shù)值被解釋為負(fù)數(shù)。如果符號(hào)為被設(shè)置為0。那么數(shù)值位被解釋為正數(shù)。
          一個(gè)8位有符號(hào)的char 表示-128---127之間的值。而一個(gè)無符號(hào)的char則表示0--255之間的值。
          當(dāng)一個(gè)值。例如1。出現(xiàn)在程序的時(shí)候,我們稱它為文字常量。稱他為“文字”是因?yàn)槲覀冎荒芤运闹档男问絹碇复7Q之為常量是因?yàn)樗闹挡荒鼙桓淖儭C總€(gè)文字都有相應(yīng)的類型。文字常量是不可尋址的(nonadressable)。盡管他的值也被存儲(chǔ)在機(jī)器的某個(gè)內(nèi)存之中。但是我們沒有辦法來尋找它的地址。
          整數(shù)文字常量可以被寫成十進(jìn)制。八進(jìn)制,十六進(jìn)制的形式。(這不會(huì)改變該整數(shù)的位序列)。例如:20可以寫成以下的方式:
          20/////////十進(jìn)制形式
          024/////八進(jìn)制
          0x14////十六進(jìn)制。
          在整型常量前面加上0。該值將被解釋成一個(gè)八進(jìn)制數(shù)。而在整形常量的前面加上0x,則該值將會(huì)被解釋成十六進(jìn)制數(shù)。
          在缺省的情況下,整形常量被當(dāng)作一個(gè)int的有符號(hào)的整數(shù)。
          我們可以在一個(gè)文字常量的后面加上一個(gè)“L”或者"l",將其指定為long類型。
          類似的,我們在文字常量的后面加上“u”或者“U”。表示一個(gè)無符號(hào)的數(shù)。
          此外,我們還可以指定無符號(hào)long類型的數(shù)。例如: 1UL.
          單詞true 和false是bool型的文字常量。
          可以打印的文字常量可以用單引號(hào)''括起來例如:
          'A','S'...等。
          不能夠直接打印的字符,單引號(hào),雙引號(hào),和反斜杠就i可以用轉(zhuǎn)義序列來來表示(轉(zhuǎn)移序列用反斜杠來開頭)。
          \n 換行符
          \t水平制表符
          \v垂直制表符
          \b退格符
          \r回車鍵
          \a響鈴建
          \\反斜杠鍵
          \?問號(hào)
          \'單引號(hào)
          \""雙引號(hào)
          另外字符文字前面可以加上“L
          例如:L'a'
          這個(gè)稱為寬字符文字,類型為wchar_t.寬字符常量用來支持某些語言字符的集合。例如:漢語,日語等
          這些語言中的某些字符不能用單個(gè)的字符來表示。
          字符串常量由零個(gè)或者許多個(gè)由雙引號(hào)括起來的 字符
          不可以打印的字符由相應(yīng)的轉(zhuǎn)移序列來表示,而一個(gè)字符串文字可以擴(kuò)展到多行。在一行的最后加上一個(gè)\,表示字符串文字在下一行繼續(xù)。
          如:"fdfdf fdfdf\dfdfdfsdffdfdfdf"
          字符串文字的類型是常量字符數(shù)組。字符文字本身和 編譯器加上的表示結(jié)束的(NULL),字符構(gòu)成。
          例如:'a'表示一個(gè)單個(gè)的字符a
          "a"則表示一個(gè)字符a和一個(gè)空字符,
          空字符是c和c++用來標(biāo)記字符串結(jié)束的符號(hào)
          正如寬字符文字。L'a'

          也有寬字符串文字L"aaaaaaa"
          寬字符串文字的類型是常量的寬字符數(shù)組。他也有一個(gè)等價(jià)的寬空字符作為結(jié)束的標(biāo)記。
          如果兩個(gè)字符串和或者寬字符串在程序中相鄰。c++就會(huì)把它們連接起來。并且在最后加上一個(gè)空字符,
          例如:"one" "two" 則輸出的結(jié)果為onetwo.
          如果把一個(gè)字符串常量和一個(gè)寬字符串常量鏈接起來,那么結(jié)果會(huì)是如何呢?
          "aa" L"SSS"
          結(jié)果是未定義(undefine)------即沒有這種這兩種不同類型鏈接標(biāo)定義行為。
          使用未定義的程序被稱為是不可以移植的。
          雖然程序可以在當(dāng)前的編譯器下可以執(zhí)行,但是不能保證相同的程序在不同的編譯器下,或者在當(dāng)前的白一起的以后的版本中,還能夠正確的編譯通過。
          在本來可以正常運(yùn)行的程序中來尋找這些是件很令人心煩的事情,所以我們建議不要使用未定義的程序特征。
          posted @ 2008-07-04 15:35 清流琴音 閱讀(201) | 評(píng)論 (0)編輯 收藏
           

          正如我們看到的,盡管c++的數(shù)組支持容器機(jī)制。但是它不支持容器抽象的語義。為了在這個(gè)層次上編寫程序。在標(biāo)準(zhǔn)c++之前。要么我們從某個(gè)途徑獲取這樣的類。要么我們自己編寫這樣的類。
          在標(biāo)準(zhǔn)c++中。數(shù)組類是c++標(biāo)準(zhǔn)庫中的一部分。現(xiàn)在它不叫數(shù)組了,而叫向量(vector)、

          當(dāng)然向量是一個(gè)類模板,我們可以這樣寫:
          vector<int> ivec(10);
          vector<string>svec(10);
          上面的代碼分別定義了包含10個(gè)整型的對(duì)象的向量,和定義了包含10個(gè)字符串的對(duì)象的向量。
          在我們實(shí)現(xiàn)的Array類模板和vector類模板的實(shí)現(xiàn)中有兩個(gè)不同的區(qū)別;
          vector類模板支持“向現(xiàn)有的數(shù)組元素賦值”的概念以及“插入附件元素的”概念---------即vector數(shù)組可以在運(yùn)行時(shí)動(dòng)態(tài)的增長。(如果程序員愿意使用這個(gè)特征的話。)
          第二個(gè)區(qū)別是 : 更加廣泛。代表了設(shè)計(jì)方法的重要改變。vector類不是提供一個(gè)巨大的“可以適用于向量”的操作集。如;store(),min().max()等。而是只是提供一個(gè)最小集;如:等于,小于,size(),empty()等操作。而一些通用的操作如:sort(),min().max(),find()。等操作是作為獨(dú)立的泛型算法(generic algorthem)被提供的。
          要定義一個(gè)向量我們必須包含相關(guān)的頭文件。
          #include<vector>
          下面都是vector對(duì)象的合法定義。
          vector<int>vecto;///////空的vector
          const int size=8;
          const int value=1024;
          //size為8的vector
          ///每個(gè)元素都被初始化為0
          vector<int>vecto(size);

          //size為8的vector
          ///每個(gè)元素都被初始化為1024
          vector<int>vecto(size ,value);
          ////vector3的size為8
          ///vector3的初始化值為ia 的4個(gè)值
          int ia[4]={0,1,1,2};
          vector<int>vector3(ia,ia+4);

          ////vector4是vector2的拷貝。
          vector<int>vector4(vector2);
          既然定義了向量,那么我們就必須遍歷里面的元素。
          與Array類模板一樣。標(biāo)準(zhǔn)的vector類模板也支持使用下面的操作符。
          例如:
          #include<vector>
          extern int getsiz();
          void mumble()
          {
            int size=getsize();
          vector<int>vec(size);
          for(int i=0;i<=size;i++)
          {
           vec[i]=i;
          /////,.............................
          }
          }
          posted @ 2008-06-30 15:18 清流琴音 閱讀(294) | 評(píng)論 (0)編輯 收藏
           

          名字空間允許我們封裝名字,否則的話,這些名字就有可能污染到全局的名字空間(pollute teh global namespce).一般來說,只有我們希望我們的代碼被外部軟件開發(fā)部門使用的時(shí)候。才會(huì)用到名字空間。
          例如;我們可以這樣來封裝Array類,
          namespace cplacple_primer_3E
          {
           template <calss eyemly>
           calss Array{,,,,,,,,,};
          ////////////////////////

          }
          namespce后面的名字標(biāo)明了一個(gè)名字空間。它獨(dú)立于全局名字空間。我們可以在里面放一些希望聲明在函數(shù)和類之外的實(shí)體。名字空間并不改變他們的聲明意義。只是改變了它們的可視性。如果名字空間中的聲明對(duì)于程序來說不是立即可見的。那么我們雜樣來訪問他們呢?我們就要用到限定修飾名字符.
          格式如下:
          namespce_idenerfier::entrityname
          名字空間別名(namespce alias)允許用一個(gè)可替代的,短的,或者跟一般的名字來和名字空間來關(guān)聯(lián)起來。
          例如:
          //提供一個(gè)更一般化的名字
          namespce lib=cplacple_primer_3E
          然后這個(gè)名字就會(huì)稱為原始名字空間的同義詞。
          #include "cplacple.h"
          int main()
          {
           lib::Array{...........}

           }
          別名也可以 用來封裝正在使用的實(shí)際的名字空間。在這種情況下,我們可以通過改變別名的名字空間。
          來改變所使用的聲明集。而無需改變“通過別名來訪問這些聲明”。的實(shí)際代碼。
          using 指示符使名字空間中的所有的聲明都是可見得。這樣這些聲明可以不加任何的限定的使用。
          using和namespce都是關(guān)鍵字。被引用的名字空間必須已經(jīng)被聲明了。否則的話,會(huì)引起編譯的錯(cuò)誤。

          using 聲明提供了更為精細(xì)的名字可視化機(jī)制。它允許使名字空間中的單個(gè)的聲明可見。
          例如:
          #include"IBM_Canada_Labaraory.h"
          using  namespace IBM_Canada_Labaraory::Matriy
          int main()
          {
           //ok; IBM_Canada_Labaraory::Matriy

          Matriy met(4,5);
          //fail,錯(cuò)誤。IBM_Canada_Labaraory::Array不可見
          Array array(4,5);
          }
          為了防止標(biāo)準(zhǔn)的c++庫組件污染用戶定義的名字空間。所有的c++庫組件都聲明在一個(gè)稱為std的名字空間中。
          所以即使我們在我們的文本文件中已經(jīng)包含了c++庫頭文件,頭文件中聲明的內(nèi)容在我們的文本文件中也是不可見的。
          例如:
          在c++中下面的代碼是不能被編譯通過的。
          #include<string>
          ///錯(cuò)誤。string 是不可見的
          string  current_string="asdf dfdff";
          在string 頭文件中所有的聲明都包含在std名字空間中。
          我們可以用“#include 指示符后面加上using 的辦法使在<string>中的,在std中聲明的組件,對(duì)于我們的文本文件是可見得。
          例如:
          #include<string>
           using namespace std
          int main()
          {
           //////////正確。string 是可見的。
            string current_string="asd fdfdf"
          }
          為了使在std中,聲明的組件和名字在我們的文本文件中可見。using指示符通常被看作是一種比較差的選擇方案。
          在上面的例子中。指示符using ,使在string頭文件中聲明的,并且在std名字空間中的  組件在我們的文本文件中都是可見的。這又將全局名字空間污染問題帶回來了。而這個(gè)問題就是std名字空間首先要努力避免的。
          它增加了“c++標(biāo)準(zhǔn)庫組件的名字”與“我們程序中聲明的全局名字”沖突的機(jī)會(huì)。
          現(xiàn)在有兩種機(jī)制可以替代using指示符。來引用隱藏在std名字空間中的名字string.
          第一種方法:
           可以使用限定的名字。
            #include<string>
          /////正確。使用限定的名字
             std:: string current_string="afdfdfsdfs";
          第二種方法:
           如下使用using 聲明;
          #include<string>
           using std::string;
           /////ok.上面的using聲明使string可見。
           string=“dfdfdfafsdf”;
          為了使用名字空間中的聲明的名字。最好使用帶有精細(xì)選擇功能的 using聲明替代using 指示符。

          posted @ 2008-06-30 11:15 清流琴音 閱讀(239) | 評(píng)論 (0)編輯 收藏
           
          異常(exception)是指在運(yùn)行的時(shí)刻程序出現(xiàn)反情況。比如:數(shù)組下標(biāo)越界。打開文件夾失敗,動(dòng)態(tài)創(chuàng)建內(nèi)存失敗等。程序員一般有自己的異常處理方式。這導(dǎo)致個(gè)各種編碼方式,。所以很難整合到一個(gè)程序中。
          異常處理(exception  handing ), 為“響應(yīng)運(yùn)行時(shí)刻的程序“提供了一個(gè)標(biāo)準(zhǔn)語言級(jí)的設(shè)施。它支持統(tǒng)一的語法和風(fēng)格,也允許每個(gè)程序員進(jìn)行微調(diào)。異常處理                不需要我們在程序中處處顯示的測試異常狀態(tài)。從而可以將測試代碼顯示的抽取出來,放在指定的 標(biāo)記的代碼塊中。因此 異常處理設(shè)施大大的 簡化了程序的長度和復(fù)雜度。
          異常處理機(jī)制主要構(gòu)成如下:
          1: 程序中異常出現(xiàn)的點(diǎn)。一旦識(shí)別出程序的異常,就會(huì)拋出異常(throw)。當(dāng)異常被拋出的時(shí)候,程序就會(huì)被掛起,知道異常被處理完畢了。c++中,異常的處理有throw表達(dá)式來執(zhí)行。
          2:程序中異常被處理的點(diǎn). 典型的程序的異常拋出和處理位于獨(dú)立的 函數(shù)或者成員函數(shù)中。找到異常處理代碼一般要展開程序調(diào)用棧(progam call stack ).一旦異常被處理完畢,及恢復(fù)程序的正常執(zhí)行。但是不是在出現(xiàn) 異常的地方恢復(fù),而是在處理異常的地方恢復(fù)執(zhí)行過程。在c++中異常的處理用catch表達(dá)式來執(zhí)行。
          catch和try字句相關(guān)聯(lián)。一個(gè)try塊用一個(gè)或者多個(gè)catch子句將一條或者多條語句組織起來。
          系統(tǒng)根據(jù)被拋出的異常和catch子句的異常類型的匹配的情況來選擇catch子句。
          系統(tǒng)把控制傳遞給catch子句體,其中的語句將順序執(zhí)行。完成后后,除非子句體中還拋出異常,否則的話,控制將會(huì)被傳到程序的當(dāng)前點(diǎn)上。
          posted @ 2008-06-27 14:58 清流琴音 閱讀(194) | 評(píng)論 (1)編輯 收藏
           
          c++的模板提供了一種機(jī)制,它能夠把函數(shù)和類內(nèi)部的數(shù)據(jù)和值參數(shù)化。這些參數(shù)在其他地方不變的代碼中用作占位符。以后,這些參數(shù)會(huì)綁定在實(shí)際的數(shù)據(jù)類型中。可能是內(nèi)置的數(shù)據(jù)類型,也可以是用戶自定義的 類型。
          posted @ 2008-06-27 14:51 清流琴音 閱讀(115) | 評(píng)論 (0)編輯 收藏
           
          在c++ 中,被繼承的類稱為基類(base class)新類  被稱為從基類中派生(derived)來的。我們把它叫做派生類或基類的子類。子類和基類共享公共的接口(common interface--)-----共有操作的公共集.由于共享公共接口,就允許子類和基類在程序內(nèi)部可以互換使用。而無需考慮對(duì)象的類型。從某種意義上說,公共接口接口封裝了子類型中與類型相關(guān)的細(xì)節(jié)。類之間的類型和子類型形成了繼承和派生層次關(guān)系。
          在繼承的機(jī)制下有多個(gè)  類的提供者:一個(gè)提供基類的實(shí)現(xiàn)(可能還提供一些派生類的實(shí)現(xiàn)。另外一個(gè)或者多個(gè)提供者在集成生命周期內(nèi)提供派生類)。子類的提供者經(jīng)常要訪問(并不總是)基類的實(shí)現(xiàn),為了提供這種能力,同時(shí)也為了能夠還要防止對(duì)積累的一般性的訪問,c++中提供了另一種訪問級(jí)別:保護(hù)。在類的保護(hù)區(qū)域的成員函數(shù)和數(shù)據(jù)成員只提供給它的派生類使用,放在基類的數(shù)據(jù)成員和數(shù)據(jù)成員只能被它自己使用,它的派生類也不能使用使用它。

                       
          posted @ 2008-06-27 10:41 清流琴音 閱讀(122) | 評(píng)論 (0)編輯 收藏
           

          更一般的,c++支持函數(shù)重載(funtion  overloding)的機(jī)制。c++允許兩個(gè)或者兩個(gè)以上的函數(shù)具有相同的命名字。限制條件是參數(shù)的不同,可以是參數(shù)的類型或者數(shù)目的不同。根據(jù)不同的參數(shù)表。編譯器就可以區(qū)分開調(diào)用哪個(gè)函數(shù)。
          重載函數(shù)和非重載函數(shù)在運(yùn)行時(shí)刻的行為是一樣的。只是重載函數(shù)在運(yùn)行的時(shí)候,會(huì)花費(fèi)時(shí)間來決定到底用哪個(gè)函數(shù)。如果c++不支持函數(shù)重載的話。那么我們就必須為每個(gè)函數(shù)設(shè)置不相同的名字。
          如果在類的體外進(jìn)行成員函數(shù)的定義的時(shí)候,就必須指出這個(gè)成員函數(shù)屬于哪個(gè)類。這個(gè)可以通過類的域操作符(calss  scope operator)來實(shí)現(xiàn)。
          例如:Inarry::
          ":"冒號(hào)操作符被稱為域操作符。
          當(dāng)與一個(gè)類相連接的時(shí)候。它就成為一個(gè)域操作符了。
          我們可以非正式的把與看作是一個(gè)可視的窗口。非全局域的文件在它的這個(gè)文件中都是可見的,在一個(gè)函數(shù)體內(nèi)定義的對(duì)象是局域的,它只在這個(gè)函數(shù)體內(nèi)可見。每個(gè)類維持一個(gè)域。在這個(gè)域之外,它的成員是不可見的。類域操作符告訴編譯器。域操作符后面的內(nèi)容是可以在這個(gè)域中找到的。
          引用:引用是一種沒有指針語法的指針。與指針一樣,引用提供對(duì)對(duì)象的間接訪問。
          類機(jī)制還支持特殊析構(gòu)成員函數(shù)(destructor member funtion )每一個(gè)類對(duì)象在最后一次被使用之后,析構(gòu)函數(shù)就會(huì)被自動(dòng)調(diào)用。
          我們在析構(gòu)函數(shù)前面加上~線來標(biāo)識(shí)。一般來說,析構(gòu)函數(shù)釋放類對(duì)象和在構(gòu)造函數(shù)中所獲得的資源。

          posted @ 2008-06-26 11:56 清流琴音 閱讀(163) | 評(píng)論 (0)編輯 收藏
           

          基于支持對(duì)象的類的形式為:
          class classname
          {
           public////////公有操作集合
          private:
          //////私有實(shí)現(xiàn)代碼

          }
          這里的class,  pulic。和private 是c++的關(guān)鍵字。classname是一個(gè)標(biāo)識(shí)符,用來命名類名。以便以后引用該類。
          類名代表著一種新型的數(shù)據(jù)類型,我們可以像定義內(nèi)置的數(shù)據(jù)類型一樣來定義對(duì)象。

          例如:
          Inarry    inaaay;////定義一個(gè)單個(gè)類Inarry的對(duì)象inaaay;
          Inrry *inarry=new Inrry;///////定義一個(gè)指向Inrry類的對(duì)象的指針。
          類的定義包含兩個(gè)部分:
          類頭( class head)有關(guān)鍵字class和類名組成。類體(class boday)有花括號(hào)括起來。以分號(hào)結(jié)束。
          類頭本身也做類的聲明。
          類體包含成員定義和訪問標(biāo)簽。如:public和private。成員定義主要包括:“該類主要實(shí)現(xiàn)什么洋的功能,”以及   “代表類抽象所需要的數(shù)據(jù)”這些操作稱為成員函數(shù)(member funtion)。或者稱為方法(methord)。
          程序設(shè)計(jì)中一個(gè)常見的錯(cuò)誤是使用先前沒有正確被初始化的對(duì)象。實(shí)際上這是一個(gè)十分常見的錯(cuò)誤。所以c++為用戶定義的類提供了一種自動(dòng)初始化機(jī)制:類的構(gòu)造函數(shù)(calss  constructor)
          構(gòu)造函數(shù)是一種特殊的成員函數(shù)。專門用于初始化對(duì)象,如果構(gòu)造函數(shù)被定義了。那么每個(gè)對(duì)象在應(yīng)用的時(shí)候,該構(gòu)造函數(shù)就會(huì)被自動(dòng)的應(yīng)用到該對(duì)象上。構(gòu)造函數(shù)由類的提供者來定義。既我們提供類的定義的時(shí)候。就必須定義類的構(gòu)造函數(shù)。
          為一個(gè)類定義一個(gè)構(gòu)造函數(shù)是類設(shè)計(jì)必不可少的一部分。
          為了定義一個(gè)構(gòu)造函數(shù)。我們只要  給出一個(gè)和 類名字相同的函數(shù)就可以了。
          不能指定構(gòu)造函數(shù)有返回值。可以定義很多的構(gòu)造函數(shù)在一個(gè)類中。
          盡管她們具有相同的名字,但是只要編譯器可以根據(jù)參數(shù)區(qū)分他們就可以了。
          更一般的





          posted @ 2008-06-24 14:22 清流琴音 閱讀(181) | 評(píng)論 (0)編輯 收藏
           
          在c++中,內(nèi)存可以是靜態(tài)分配的——編譯器在處理源代碼的時(shí)候就分配,也可以是動(dòng)態(tài)分配的---程序在 運(yùn)行的時(shí)候調(diào)用所需要得庫函數(shù)進(jìn)行分配。這兩種分配方式各有個(gè)的優(yōu)點(diǎn)。由于靜態(tài)內(nèi)存分配是在程序運(yùn)行之前就分配了內(nèi)存,所以執(zhí)行的效率就很高。但是缺乏靈活性。它要求知道程序在之前就知道內(nèi)存的類型和數(shù)目。
          例如:
          利用靜態(tài)分配的字符串?dāng)?shù)組,我們就無法很容易的處理和存貯任意的文本文件。一般來說存貯未知的的數(shù)目的元素,需要?jiǎng)討B(tài)分配內(nèi)存的靈活性。
          例如:以下的定義:
          int ival=1024;
          指示編譯器分配足夠的內(nèi)存來存貯一個(gè)整型值。該存儲(chǔ)區(qū)與名字ival相關(guān)聯(lián)。然后用1024區(qū)初始化該存貯區(qū),這些都是在程序之前完成的。
          c++支持用指針類型來存放對(duì)象的內(nèi)存地址值。
          例如:
          為了聲明一個(gè)存放ival內(nèi)存地址的的指針類型。我們可以聲明如下:
          int *print;//////一個(gè)指向int類型的指針。
          c++預(yù)定一個(gè)專門取地址的操作符(&),當(dāng)他應(yīng)用于一個(gè)對(duì)象上的時(shí)候,返回的是該對(duì)象的地址。
          因此,為了將ival的地址值賦值給print,我們可以寫為:
          int*print;
          print=&ival;///把ival的地址值賦值給print
          為了訪問print所指向的內(nèi)容。我們必須先用解引用(dereference)操作符(*),來先解除的引用。
          例如:我們通過print間接的給ival加1;
          *print=*print+1;
          等價(jià)于:
          直接對(duì) ival進(jìn)行操作
          ival=ival+1;
          在c++中指針主要是用來管理和分配動(dòng)態(tài)分配的內(nèi)存。
          對(duì)象的分配可以通過兩個(gè)不同的版本來實(shí)現(xiàn)。
          第一個(gè)版本用于分配特定類型的單個(gè)對(duì)象。
          int*print=new int 1024);
          分配了一個(gè)沒有名字的int類型的對(duì)象,對(duì)象的初始化值為1024。然后表達(dá)式返回對(duì)象在內(nèi)存中的地址。
          接著這個(gè)地址用來初始化指針對(duì)象print.    對(duì)于動(dòng)態(tài)分配的內(nèi)存。唯一的訪問方式是通過指針來訪問。
          例如:
          new的第二個(gè)版本,用于分配特定的類型和維數(shù)的數(shù)組。
          int *pia=new int[4];
          分配了一個(gè)含有4個(gè)元素的整型數(shù)組。不幸的是我們沒有辦法給動(dòng)態(tài)分配的數(shù)組每個(gè)值顯示的指定一個(gè)初始值。
          分配動(dòng)態(tài)數(shù)組,一個(gè)常令人困惑的問題是,返回值只是一個(gè)指針。與分配單一對(duì)象的返回值是相同的。
          posted @ 2008-06-24 10:11 清流琴音 閱讀(565) | 評(píng)論 (0)編輯 收藏
           
          數(shù)組是一組具有相同數(shù)據(jù)類型的元素的集合。
          c++為基本算術(shù)數(shù)據(jù)類型提供了內(nèi)置的支持。同時(shí)他也支持雙精度和單精度的數(shù)據(jù)支持。除此之外c++還支持布爾類型,以及用來存放字符集中單個(gè)元素的字符支持。
          在內(nèi)置數(shù)據(jù)類型和標(biāo)準(zhǔn)庫類類型之間的是復(fù)合數(shù)據(jù)類型(compuond type)特別是指針和數(shù)組類型。
          數(shù)組(array)是一個(gè)順序的容器.它包含單一類型的元素。
          例如:序列
          0 1 1 2 3 5 8 13 21
          代表菲波那契序列的前9個(gè)數(shù)。(只要給出前兩個(gè)數(shù)據(jù),后面的數(shù)據(jù)就是前兩個(gè)數(shù)據(jù)的之和。)
          a[8]={0,1,2,3,4,5,6,7}
          當(dāng)a[9]的時(shí)候,就會(huì)出現(xiàn)一位偏移錯(cuò)誤(off-by-one):
          通常我們用循環(huán)來遍歷數(shù)組中的元素。
          例如:下面的程序初始化了一個(gè)數(shù)組。前9為分別為0---9
          int main()
          {
            int ia[10];
            int idex;
           for(idex=0;idex<10;idex++)
          {
           ia[idex]=idex;
          }
          for(idex=9;idex>=0;idex--)
          {
           cout<<ia[idex]<<"";
          cout<<endl;
          }
          }
          c++雖然對(duì)數(shù)據(jù)類型提供了內(nèi)置的支持。但是這種支持只是限定于“讀寫單個(gè)數(shù)組元素”。c++不支持?jǐn)?shù)組的抽象(abstracion),也不支持對(duì)整個(gè)數(shù)組的操作.我們有時(shí)候希望對(duì)整個(gè)的數(shù)組進(jìn)行操作。例如:把一個(gè)數(shù)組賦值給另一個(gè)數(shù)組。對(duì)兩個(gè)數(shù)組進(jìn)行比較。。想知道數(shù)組的大小。
          例如:給出兩個(gè)數(shù)組,我們不能直接用賦值操作符,把一個(gè)數(shù)組的值拷貝到另一個(gè)數(shù)組中去。
          比如:
          ia1[10], ia2[10]
          ia1[10]=ia2[10];/////錯(cuò)誤。不能直接把一個(gè)數(shù)組的值通過賦值運(yùn)算符賦值給另一個(gè)數(shù)組。
          如果想把一個(gè)數(shù)組的值賦值給另一個(gè)數(shù)組我們必須自己編寫程序。
          for(int idex=0;idex<10;idex++)
          {
            ia1[idex]=ia2[idex];

          }

          而且數(shù)組類型并沒有自己的意識(shí)。它并不知道自己的長度,我們必須另外記錄數(shù)組的信息。當(dāng)我們希望把一個(gè)數(shù)組作為參數(shù)傳遞給一個(gè)函數(shù)的時(shí)候,問題就出現(xiàn)了。在c++中,數(shù)組不同于整型類型和浮點(diǎn)類型,它不是c++的一等公民(first——class),它是從c語言中繼承而來的,它反映了數(shù)據(jù)與對(duì)其進(jìn)行操作的算法的分離。這正是過程話程序的特點(diǎn)。
          posted @ 2008-06-23 10:28 清流琴音 閱讀(219) | 評(píng)論 (1)編輯 收藏
           
          c++的輸入輸出功能是由輸入輸出流(iostream)庫提供的,輸入輸出流庫是c++面向?qū)ο箢悓哟蔚囊粋€(gè)結(jié)構(gòu),也是c++庫的一部分。
          終端的輸入也稱作是標(biāo)準(zhǔn)的輸入(standard input ),與預(yù)定義的iostream 對(duì)象sin 綁定在一起。
          終端輸出,也稱作是標(biāo)準(zhǔn)輸出(standard output ),與預(yù)定義的iosream的對(duì)象cout 綁定在 一起。
          第三那個(gè)預(yù)定義對(duì)象cerr,也稱為標(biāo)準(zhǔn)錯(cuò)誤。也終端綁定。cerr通常用來給程序用戶提示錯(cuò)誤的 信息,以警告的信息。
          任何想使用iostream庫的文件都要包含,相關(guān)的頭文件。
          #include< iostream.h>
          輸出操作符<<用來把一個(gè)值導(dǎo)向cout標(biāo)準(zhǔn)輸出或者cerr標(biāo)準(zhǔn)錯(cuò)誤上。
          例如:
          cout<<"\n"; 中的“\n表示換行符(new line),輸出換行符的時(shí)候,它結(jié)束當(dāng)前的行,并將輸出導(dǎo)向下一行。
          除了顯式的使用"\n"進(jìn)行換行外,還是可以使用預(yù)定義的iostream 操作符endl。進(jìn)行換行。
          操作符在iostream上,進(jìn)行的是一個(gè)操作,而不只是簡單的提供一個(gè)數(shù)據(jù)。 
          文件的輸入和輸出:
          iostream庫也支持的輸入和輸出。所有能應(yīng)用在標(biāo)準(zhǔn)當(dāng)輸入和輸出的上的操作,也都可以應(yīng)用在已經(jīng)被打開的輸入和輸出文件上。
          為了打開一個(gè)文件供輸入和輸出,除了包含iostream外,還必須包含頭文件,
          #include<fstream>
          為了打開一個(gè)輸出文件,我們必須聲明一個(gè)ofstream類型的對(duì)象。
          ofstream outfile("name_of -files");
          為了測試是否成功的打開一個(gè)文件,我們可以用下面的代碼:
          if(!outfile)
          {
          ///如果文件不能打開,值為false

          }
          類似的,如果我們打開一個(gè)文件供輸入,那么我們必須聲明一個(gè)ifstream的對(duì)象。
          ifstream infile("name-of  _files")
          if(!infile)

          例如:
          c++中
          從一個(gè)文本中1.txt中讀內(nèi)容到2.txt中,
          #include<iosrteam>
          #include<ftream>
          #include<string>
          using spacename std;//////注意這里。


          posted @ 2008-06-21 16:31 清流琴音 閱讀(165) | 評(píng)論 (0)編輯 收藏
           

          注釋是用來幫助程序員來讀程序結(jié)構(gòu)的與語言。它是一種禮儀,可以用來說明變量的意義或者用來某一段難懂的代碼。注釋不會(huì)增加可執(zhí)行代碼的長度,在生成可執(zhí)行代碼之前編譯器會(huì)將注釋的部分從程序中去除的。
          c++中有兩種注釋符,一種是注釋對(duì)(/**/)。與c語言一樣,注釋的部分放在/**/之間。編譯器會(huì)將/**/之間的代碼當(dāng)作注釋部分,注釋的可以放在任何位置。可以含有制表符,空格, 可以跨幾行。
          第二種注釋就是//雙斜線。它可以注釋單行的內(nèi)容,注釋符右邊的內(nèi)容都會(huì)被當(dāng)作注釋的內(nèi)容而被編譯器忽略。

          posted @ 2008-06-21 11:14 清流琴音 閱讀(157) | 評(píng)論 (0)編輯 收藏
           
          assert()是c語言標(biāo)準(zhǔn)庫提供的一個(gè)通用的標(biāo)準(zhǔn)庫預(yù)處理器宏。在代碼中經(jīng)常用assert()來判斷一個(gè)必須的前提條件。例如:要打開一個(gè)文件,我們必須先知道合格文嘉你的名字,然后在可以打開為了使用assert()必須包含與之對(duì)應(yīng)的頭文件
          #include < assert.h>
          下面是一個(gè)簡單的例子:
          assert(filename!=0);
          判斷是否文件的名字為0。建興斷言,如果文件的 名字為0,那么斷言失敗,輸出錯(cuò)誤的診斷信息,然后中止程序。
          assrt.h是c標(biāo)準(zhǔn)庫頭文件的c名字。c++程序可以通過使用c的庫頭文件的c名字或者c++的名字來使用它。
          這個(gè)頭文件的c++名字是cassert. c庫頭文件的c++名字總是以c開頭,后面跟的是c名字去掉.h的名字。(因?yàn)閏++中,頭文件的后綴各不相同,所以標(biāo)準(zhǔn)的c++沒有指定頭文件的后綴).
          使用c庫頭文件名字和使用c++的名字,那么#include 預(yù)處理器的效果也是不一樣的。
          例如:下面的#include指示符;
          #include<cassert>
          當(dāng)我們把這個(gè)頭文件讀入我們的文本文件中的時(shí)候,頭文件中的內(nèi)容 好似不可見的。因?yàn)樗械腸++庫名字是在std名字空間中定義的。所以我們的文本文件是不可見的。除非我們使用using指示符顯示地使其可見。
          using  namespace  cassert;
          使用c庫的頭文件就可以直接的在文本文件中使用assert()。而無需使用using指示符了。


          posted @ 2008-06-21 11:12 清流琴音 閱讀(436) | 評(píng)論 (0)編輯 收藏
           
          編譯c++的時(shí)候,編譯器自動(dòng)定義了一個(gè)預(yù)處理器名字_ _cplusplus,(注意前面有兩個(gè)下劃線)。
          因此我們可以根據(jù)它來判斷程序是否為c++程序,以便有條件的包含代碼。
          例如:
          #ifdef _ _cplusplus
          //不錯(cuò),我們要編譯c++
          //extern "c"我們在第七章在講解
          extern"c"
          #endif
          min(int ,int );
          在編譯c的時(shí)候,編譯器定義一個(gè)_STDC_,當(dāng)然_ _cpluscplus和_STDC_不會(huì)同時(shí)被定義的,
          另外兩個(gè)比較有用的名字是_LINE_和_FILE_。其中_LINE_是指已經(jīng)編譯的行數(shù)。_FILE_包含正在被編譯的文件的名字。
          另外兩個(gè)預(yù)定義的名字是:_TIME_和_DATE_它們分別包含被編譯文件的時(shí)間和日期。
          時(shí)間的格式為:hh:mm:ss
          例如:如果你是在正8點(diǎn)17分編譯這個(gè)文件,那么時(shí)間表示為8:17:00。如果那天剛好為1998年10月23號(hào),那么日期就為:oct23 1998
          如果當(dāng)前的或者文件的名字發(fā)生了變化,那么預(yù)定義名字_LINE_和_FILE_就會(huì)變化,其他的預(yù)定義名字在編譯期間不會(huì)變化的。她們的值也不能被修改




          posted @ 2008-06-21 10:44 清流琴音 閱讀(117) | 評(píng)論 (0)編輯 收藏
           

          頭文件通過預(yù)處理器標(biāo)識(shí)符(include)而成為我們程序的一部分。預(yù)處理器標(biāo)識(shí)符用“#”來標(biāo)識(shí)。這個(gè)符號(hào)放在程序的最開始 的第一行的位置上。處理這些標(biāo)識(shí)符的程序稱為預(yù)處理器(preprocessor),一般綁定在編譯器中。
          include 指示符讀入指定文件的內(nèi)容,它有兩種格式:
          #include<iostream>
          #include"iostream"
          如果文件名用"<"和 ">"括起來。那么表示這個(gè)文件是一個(gè)工程文件或者標(biāo)準(zhǔn)的頭文件。查找過程會(huì)檢查預(yù)定義的目錄。我們可以通過設(shè)置搜索路徑環(huán)境變量或者命令行選項(xiàng)來修改這些目錄。
          如果文件是用引號(hào)括起來的,就表示這個(gè)文件是用戶自己提供的,那么查找這個(gè)文件的時(shí)候,就可以從當(dāng)前的目錄開始查找,
          被包含的文件可能還會(huì)包含#include,一個(gè)同文件可能會(huì)被同一個(gè)原文件多次的包含。條件指示符可以防止這種頭文件被重復(fù)包含的情況。
          例如:
          #ifndef   BOOKSTORE_H
          #define BOOKSTORE_H
          /*bookstore.h的內(nèi)容*/
          #endif
          條件指示符#ifndef用于檢查預(yù)編譯器常量BOOKSTORE_H是否已經(jīng)被定義了(習(xí)慣上我們把與編譯器常量用大寫表示)。如果BOOKSTORE_H沒有在前面定義的話,那么#ifndef 的值為真。那么#ifndef 和#endif中間的語句

          將會(huì)被執(zhí)行,否則的話,之間的語句就會(huì)被忽略。
          為了保證頭文件只被處理一次。把如下的的頭文件放在#ifndef的后面。
          #define指示符放在#ifndef的后面。這樣頭文件在第一次包含的時(shí)候,BOOOKSTORE_H就被定義了,那么以后如果在出現(xiàn)包含頭文件的情況,則 #ifndef的值就為假了。
          只要不存在“兩個(gè)必須包含的頭文件使用同一個(gè)預(yù)編譯器常量”這種情況,那么這種機(jī)制就會(huì)很好的運(yùn)行。
          #ifdef指示符用來判斷一個(gè)預(yù)定義器常量是否已經(jīng)被定義了,以便有條件的包含程序代碼。

          注意:
          #ifndef條件指示符和ifdef指示符的區(qū)別。
          前者用于防止頭文件被重復(fù)包含,而后者則是為了判斷一下一個(gè)預(yù)定義器常量是否被定義了。


          我們在編譯程序的時(shí)候,可以使用-D,在——D的后面寫上預(yù)處理器常量的名字,這樣就可以在命令行中定義一個(gè)與處理器的常量了。
          $CC -DBOOKSTORE_H   main.c
          也可以用#define指示符來定義一個(gè)預(yù)處理器的常量。


          posted @ 2008-06-17 14:58 清流琴音 閱讀(452) | 評(píng)論 (2)編輯 收藏
           

          我們的程序是由算法和數(shù)據(jù)組成的。算法是(就是將指令組織起來實(shí)現(xiàn)特定的功能),
          在c++語言中,動(dòng)作 被稱為表達(dá)式(expression),以分號(hào)結(jié)尾的表達(dá)式稱為語句。在程序中最小的單元是語句(statement).
           函數(shù):把語句按照邏輯分組,就形成了某些單元,。這些單元稱為函數(shù)(funtion)。
          函數(shù)由四個(gè)部分組成:函數(shù)返回值的類型,函數(shù)名,參數(shù)列表,函數(shù)體,前三個(gè)組合起來稱為函數(shù)原型(funtion prototype).
          函數(shù)的參數(shù)由一個(gè)或者多個(gè)逗號(hào)隔開,由一個(gè)小括號(hào)括起來。函數(shù)體由一對(duì)花括號(hào)括起來。
          return 語句是c++語句提供的預(yù)定義的語句,它提供了一種中止函數(shù)執(zhí)行的方法。當(dāng)return返回一個(gè)值的時(shí)候。例如:0 ,就表示這個(gè)函數(shù)返回了這個(gè)值(return value)。在標(biāo)準(zhǔn)的c++中當(dāng)函數(shù)沒有顯示的返回值的時(shí)候,默認(rèn)的函數(shù)返回值為0。
          void 用來指定一個(gè)沒有返回值的函數(shù)。
          #include 是預(yù)處理器指示符(preprocessor directive)
          在c++標(biāo)準(zhǔn)庫中的名字。如:cout 不能直接在程序中使用,除非在預(yù)處理器標(biāo)識(shí)符:#include<iostream>的后面使用 using  namespce std;
          這條語句被稱為using 指示符(using directve),c++標(biāo)準(zhǔn)庫中的名字在我們的程序的文件是不可見的,它們都是在一個(gè)名字空間中聲明的。我們只有顯示的使用它們。這樣的話,這些聲明在名字空間中的名字才有可能在我們的文件中可見。using 告訴編譯器使用在std名字空間中的名字。
          編譯器的一部分的功能是:分析程序代碼的正確性,另一個(gè)功能是轉(zhuǎn)換正確的程序代碼。這種轉(zhuǎn)換稱為代碼的生成(code generation),一般的情況下這些會(huì)生成匯編指令或者目標(biāo)代碼。這些目標(biāo)代碼可以被運(yùn)行這些程序的計(jì)算機(jī)所理解。
          成功編譯的結(jié)果是一個(gè)可執(zhí)行的文件。
          c++定義了一組內(nèi)置的數(shù)據(jù)類型,這些數(shù)據(jù)類型是:整型(int ),浮點(diǎn)型(float),布爾型(ture,和false ),字符類型,
          在這些內(nèi)置的數(shù)據(jù)類型之間可以隱式的發(fā)生轉(zhuǎn)換(conversion).
          c++標(biāo)準(zhǔn)還提供了一組擴(kuò)展的數(shù)據(jù)類型。字符串類型(string),復(fù)數(shù)類型(complex number ),列表(list),向量(vector).



          posted @ 2008-06-17 14:19 清流琴音 閱讀(173) | 評(píng)論 (0)編輯 收藏
           
          動(dòng)態(tài)連接是一種(juest-in -time)連接。這個(gè)就是以意味著,程序在執(zhí)行的時(shí)候要能正確的找到函數(shù)庫,連接器通過把庫文件名和路徑名植入到可執(zhí)行文件中做到這一點(diǎn),這就意味著函數(shù)庫的路徑不可以隨意的改變。
          使用靜態(tài)連接的最大危險(xiǎn)在于,將來版本的操作系統(tǒng)可能會(huì)和現(xiàn)在可執(zhí)行文件所綁定的系統(tǒng)函數(shù)庫不兼容。
          函數(shù)庫鏈接的5個(gè)秘密:
          1;動(dòng)態(tài)鏈接庫文件的擴(kuò)展名字是 ".so",而靜態(tài)連接庫文件的函數(shù)名字是".a".
          posted @ 2008-06-10 15:29 清流琴音 閱讀(129) | 評(píng)論 (0)編輯 收藏
           
          比較數(shù)組和指針的區(qū)別,就是比較它們各自的特點(diǎn):
          第一:指針中保存的是數(shù)據(jù)的地址,而數(shù)組保存的是直接的數(shù)據(jù)。
          第二:指針是間接的訪問數(shù)據(jù),首先得到指針的內(nèi)容,然后以這個(gè)指針的內(nèi)容作為地址,通過這個(gè)地址來訪問數(shù)據(jù), 而數(shù)組則是直接訪問數(shù)據(jù),a[i]表示以a[i-1]為地址來訪問數(shù)據(jù)。
          第三:指針通常用于動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu),數(shù)組一般用于存貯固定數(shù)目且數(shù)據(jù)類型相同的數(shù)據(jù)元素。
          第四:指針相關(guān)的函數(shù)為mallo(),free(),數(shù)組隱式的分配和刪除
          第五:指針通常指向匿名數(shù)據(jù),數(shù)組本身就是數(shù)據(jù)名。

          數(shù)組和指針都可以在它們定義的時(shí)候,用字符串常量來初始化。雖然形式是一樣的,但是底層的機(jī)制卻是不一樣的。
          指針在定義的時(shí)候,編譯器并不為指針?biāo)赶虻膶?duì)象分配空間,而只是為其本身的分配空間。除非在定義的時(shí)候用字符串常量進(jìn)行初始化。但是只能用字符串常量進(jìn)行初始化,其他的象浮點(diǎn)型,int型的常量是不可以的,編譯的時(shí)候會(huì)出現(xiàn)無法編譯的錯(cuò)誤。
          例如:char* p="dfdf f "(為其分配了內(nèi)存空間)
             char*p=3.14//會(huì)出現(xiàn)編譯錯(cuò)誤
          在ASCI C中,初始化指針的字符串常量被定義為只讀。如果試圖通過指針來修改字符串常量的內(nèi)容,就會(huì)出現(xiàn)未定義的行為。有些編譯器中,把這些字符串常量保存在一個(gè)只讀的文本中,防止被修改。
          數(shù)組也可以用字符串常量進(jìn)行初始化,與指針相反的是用字符串常量進(jìn)行初試話的數(shù)組,可以被 修改的,單個(gè)字符在以后中是可以改變的,例如:
           char butter[]="ff ff ff ff";
           strncpy(butter,"111",5);
          結(jié)果就是 char butter[]="111fff';

          posted @ 2008-06-06 10:45 清流琴音 閱讀(503) | 評(píng)論 (0)編輯 收藏
           
          為您介紹簡單方法就是可以從SQL Server Online Book開始學(xué)習(xí)SQL服務(wù)器的所有內(nèi)容,并配合SQL Server開始安裝、設(shè)置和使用了。

            當(dāng)你進(jìn)入了編程環(huán)境,就可以建立數(shù)據(jù)庫并使用不同的工具來學(xué)習(xí)數(shù)據(jù)庫的各種方法,例如設(shè)計(jì)一個(gè)邏輯數(shù)據(jù)模型并執(zhí)行它。因?yàn)镾QL與數(shù)據(jù)的操作有關(guān),你可以使用其各種特性,還可以建立存儲(chǔ)程序,觸發(fā)器,查看等功能。

            提醒您不要忽略安全機(jī)制和性能調(diào)試,對(duì)于一個(gè)數(shù)據(jù)庫而言,觀察并調(diào)試使之順利平穩(wěn)地工作是至關(guān)重要的。除此之外,MCDBA考試還包括與性能調(diào)試和特定程序相關(guān)的問題。

            下面是在輔導(dǎo)下已經(jīng)通過MCDBA的學(xué)員總結(jié)的一些學(xué)習(xí)經(jīng)驗(yàn):

            1、先熟悉MMC,即Enterprise Manager的操作;

            2、學(xué)會(huì)用SQL Query Analyzer分析你的SQL語句執(zhí)行效率;

            3、使用存儲(chǔ)過程/視圖/以及SQL Server特有的服務(wù);

            4、學(xué)會(huì)使用Profiler來調(diào)試你的客戶端程序;

            5、學(xué)習(xí)數(shù)據(jù)庫管理技術(shù);

            6、熟讀SQL Server Online Book非常有用!如果不怕辛苦看一遍很值得。

          posted @ 2008-03-19 18:24 清流琴音 閱讀(221) | 評(píng)論 (3)編輯 收藏
           
          111
          http://www.verycd.com/topics/160024/

          http://www.verycd.com/topics/64762
          http://www.verycd.com/search/folders/mcse
          http://www.mcse.org.cn/showtopic-4987.aspx 
          http://www.mcse.org.cn/showforum-2.html
          http://www.verycd.com/search/folders/mcse
          http://bbs.tech.ccidnet.com/read.php?tid=283574
          http://www.zuowenw.com/jsjks/microsoft/kaoshifudao/MCDBA/
          http://www.softii.com/downlist/s_313_2.html
          posted @ 2008-03-14 20:12 清流琴音 閱讀(155) | 評(píng)論 (3)編輯 收藏
           
          軟認(rèn)證心得:拿下微軟四個(gè)證書
        1. 2007-06-01 10:08:29 來源:考試大 地區(qū):北京 關(guān)鍵字:考經(jīng)  收藏到好誒
        2.   我本人算是半個(gè)IT工作者,所謂半個(gè),是因?yàn)槲颐刻斓墓ぷ饔?nobr oncontextmenu="return false;" onmousemove="kwM(5);" id="clickeyekey5" onmouseover="kwE(event,5, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,5)" onmouseout="kwL(event, this);" target="_1">網(wǎng)絡(luò)維護(hù)、網(wǎng)站維護(hù)、微機(jī)維護(hù)、攝影、攝像等……多樣工作。經(jīng)過一年的努力(兩年的相關(guān)工作經(jīng)驗(yàn)),看完了一尺多高的教材和輔導(dǎo)(十幾斤重,7000到8000頁),才總算快要拿到0MCP+MCDBA+MCSA+MCSE,但經(jīng)我這一年多的觀察,不知?jiǎng)e的地方如何,陜西的MCSE+MCDBA已經(jīng)徹底的混亂和貶值崩潰了,前些日子《西安商報(bào)》一文章競?cè)徊回?fù)責(zé)任的報(bào)道:有一個(gè)高中生在一個(gè)暑假考完了MCP+MCSE+MCDBA+MCSD!!!如此吹牛! 
            我感覺,就是一個(gè)過了大學(xué)英語四級(jí)的學(xué)生也不一定能真正讀懂MCSE課程中的英語!!!特別是像219這門,更何況是一個(gè)高中生!!!他敢站出來和大家說他不是100%的PAPER?可見陜西的MCSE爛到如何程度!!!如此多的100%通過的培訓(xùn)中心,以及到處都有的BIBLE?試問這樣了MCSE值幾個(gè)錢?別的地方我不知道,在陜西,MCSE不代表什么,比個(gè)國家二級(jí)強(qiáng)不了多少!在陜西,一個(gè)100%單純PAPER的MCSE也就值個(gè)250(開個(gè)玩笑,比如那個(gè)《西安商報(bào)》上報(bào)道的用了一個(gè)月考完MCSE+MCDBA+MCSEA+MCSD的。要在一個(gè)月看完二三十斤重、厚達(dá)二尺多,近萬頁的書,佩服!!!!!)如果是靠自己努力考出來的,應(yīng)該值個(gè)1000-3000的。 
            大概談一下我的考試情況: 
            我的考試順序是:先215(215的一些試題為win網(wǎng)絡(luò)的主題,所以建議215,210,216,217連續(xù)考,間隔不要超過一個(gè)月,鞏固概念,逐步加強(qiáng),復(fù)習(xí)217時(shí),會(huì)有50%以上的216的內(nèi)容。第一科是實(shí)踐科目,熟悉考試環(huán)境,培養(yǎng)考試心態(tài)都是在這一科完成的,而且對(duì)以后的士氣很有用,必須一次性通過。)219是綜合科目,在看完全部材料的情況下,最后考219,輕松完成mcse認(rèn)證之旅!后210、216、217、218、228、229、219這樣的考試可以拿MCP、MCSA、MCDBA這個(gè)證書比MCSE有用,當(dāng)然如果你從事數(shù)據(jù)庫方面的開發(fā),維護(hù)的話。感覺在國內(nèi)做大型分布式網(wǎng)絡(luò),僅僅是個(gè)mcse還是不夠的,因?yàn)閣indows在這樣的網(wǎng)絡(luò)里只有充當(dāng)client的分,但是在中小型數(shù)據(jù)庫應(yīng)用程序,sqlserver絕對(duì)是首選。你只要有這個(gè)證書就可以找一份很好的工作了(例如中小型管理軟件的維護(hù))特別說明,216適宜在學(xué)完210和215以后充分準(zhǔn)備再去應(yīng)考,否則除非你是使用微軟產(chǎn)品的高手中的高手,不然十有八九會(huì)掛掉;70-216課程主要是測試運(yùn)行和管理微軟Windows2000網(wǎng)絡(luò)基本構(gòu)造,比基礎(chǔ)(210)和服務(wù)器(215)的考核都難得多。如果你已經(jīng)通過了210和215和考試,就已有了大量對(duì)Windows 2000網(wǎng)絡(luò)親身操作經(jīng)驗(yàn),當(dāng)然,大多數(shù)的人還是要集中精力進(jìn)行大量的重點(diǎn)學(xué)習(xí)和實(shí)驗(yàn)室的實(shí)際工作來達(dá)到熟練掌握以達(dá)到考核水平。網(wǎng)絡(luò)基礎(chǔ)考核的內(nèi)容包括對(duì)Windows2000網(wǎng)絡(luò)服務(wù)器的深入了解以及它的運(yùn)作原理:DHCP, WINS, DNS IPSEC CA和RRAS等是貫穿整個(gè)考試的中心內(nèi)容。同時(shí)也需要了解實(shí)際子網(wǎng)的運(yùn)作方式。你要看一些配置網(wǎng)絡(luò)協(xié)議安全和認(rèn)證服務(wù)器的資料。然而 ,由于你掌握了專業(yè)和服務(wù)器的內(nèi)容,所以能夠理解Windows 2000操作系統(tǒng)的細(xì)節(jié),明白Windows 2000網(wǎng)絡(luò)服務(wù)器功能的基本知識(shí)。 
             對(duì)于大多數(shù)人來說,這門課程是考取MCSE、MCDBA、MCSA最難通過的一門,所以你要慎之又慎,我用的教材是MOC教材,感覺MOC教材一向高就高在是“授人以漁,而非魚”,但要想順利通過216的考試,光看這幾本書還不夠,可以參考清華出版的與MOC相配套的精解練習(xí)以及Training Kit等
        3. posted @ 2008-03-13 13:06 清流琴音 閱讀(146) | 評(píng)論 (0)編輯 收藏
           
           【IT專家網(wǎng)獨(dú)家】區(qū)分?jǐn)?shù)據(jù)庫管理工作的一個(gè)有效方法是按照其對(duì)應(yīng)用系統(tǒng)支持工作的類型來劃分。我們可以列出DBA的職責(zé),然后用一條線將不同的職能分開,根據(jù)區(qū)分開的職能,DBA可以被分為二種:支持開發(fā)工作的DBA和支持產(chǎn)品系統(tǒng)的DBA。

            開發(fā)DBA們對(duì)整個(gè)應(yīng)用開發(fā)的生命周期提供支持。因?yàn)檫@些應(yīng)用的數(shù)據(jù)庫沒有開始運(yùn)行,所以這類DBA的工作對(duì)業(yè)務(wù)不會(huì)產(chǎn)生即時(shí)的影響。開發(fā)DBA致力于構(gòu)建一個(gè)高效、可用的數(shù)據(jù)庫環(huán)境并以此來支持業(yè)務(wù)應(yīng)用。當(dāng)程序和系統(tǒng)構(gòu)建的時(shí)候,開發(fā)DBA對(duì)整個(gè)過程提供支持和輔助工作,包括構(gòu)建和維護(hù)應(yīng)用程序所需要的適當(dāng)數(shù)據(jù)結(jié)構(gòu)。

            開發(fā)DBA們需要數(shù)據(jù)模型和規(guī)范化方面的技能,以保證設(shè)計(jì)出來的數(shù)據(jù)庫符合數(shù)據(jù)完整性。開發(fā)DBA還必須能夠?qū)⑦壿嫈?shù)據(jù)模型轉(zhuǎn)換成物理數(shù)據(jù)庫實(shí)現(xiàn)的能力。

            一旦測試數(shù)據(jù)庫被創(chuàng)建,開發(fā)DBA們將輔助程序員構(gòu)建和編輯測試數(shù)據(jù)。測試數(shù)據(jù)的生產(chǎn)、編輯,載入都必須經(jīng)過一定的處理,以保證這些數(shù)據(jù)對(duì)構(gòu)建的應(yīng)用程序是適合并有效的。開發(fā)DBA還需要給團(tuán)隊(duì)提供工具,以方便數(shù)據(jù)庫測試和數(shù)據(jù)的更新。他或她需要和整個(gè)開發(fā)團(tuán)隊(duì)一起工作,以確保用正確的方法訪問數(shù)據(jù)庫以及應(yīng)用程序中應(yīng)用邏輯的修改。最終,開發(fā)DBA需要和開發(fā)團(tuán)隊(duì)一起工作,創(chuàng)建并維護(hù)高效的數(shù)據(jù)庫相關(guān)邏輯-存儲(chǔ)過程、觸發(fā)器和用戶自定義函數(shù),這些都是數(shù)據(jù)庫管理系統(tǒng)控制下的程序。開發(fā)DBA將幫組構(gòu)建,測試和維護(hù)這些存儲(chǔ)過程、觸發(fā)器和用戶自定義函數(shù)。

            對(duì)比之下,產(chǎn)品DBA的工作是基于已完成的應(yīng)用系統(tǒng),對(duì)正在運(yùn)行中的業(yè)務(wù)系統(tǒng)提供支持。產(chǎn)品DBA致力于確保可行性,優(yōu)化性能,維護(hù)可用性。一旦數(shù)據(jù)庫應(yīng)用系統(tǒng)開始運(yùn)行,關(guān)鍵的工作就變成了如何確保它們持續(xù)穩(wěn)定的運(yùn)行。這可以歸結(jié)為PAR,PAR是三個(gè)單詞的首字母縮寫:性能(performance),管理(administration)和恢復(fù)(recovery)。這三項(xiàng)功能,是產(chǎn)品DBA們在維護(hù)數(shù)據(jù)庫系統(tǒng)過程中的三項(xiàng)最主要工作。

            數(shù)據(jù)庫性能管理是通過資源使用的優(yōu)化,增加利用率并減少資源爭奪,最終實(shí)現(xiàn)盡可能多的處理更多的業(yè)務(wù)。性能需要從IT基層結(jié)構(gòu)開始管理。數(shù)據(jù)庫管理和運(yùn)行有一些日常業(yè)務(wù)可以參照:包括變化管理,數(shù)據(jù)庫結(jié)構(gòu)的檢查,安全和權(quán)限控制等任務(wù)。備份和恢復(fù)需要在特定的時(shí)間對(duì)適當(dāng)?shù)臄?shù)據(jù)庫進(jìn)行適當(dāng)?shù)膫浞荩源_保其可恢復(fù)到以前的狀態(tài)。當(dāng)產(chǎn)品DBA按照PAR工作的時(shí)候,應(yīng)用程序就會(huì)根據(jù)設(shè)定的服務(wù)級(jí)別來運(yùn)行,數(shù)據(jù)庫將在最佳的設(shè)計(jì)和良好的狀態(tài)下被管理,數(shù)據(jù)也能夠有效的備份,在出錯(cuò)或者宕機(jī)的時(shí)候可以恢復(fù)。

            綜上所述,很多時(shí)候,為了創(chuàng)建一個(gè)良好的數(shù)據(jù)庫應(yīng)用系統(tǒng),我們需要定義、計(jì)劃和訓(xùn)練開發(fā)DBA和產(chǎn)品DBA這兩種角色。

          posted @ 2008-03-13 12:57 清流琴音 閱讀(185) | 評(píng)論 (1)編輯 收藏
           

           

          作者: Echo,  出處:IT專家網(wǎng), 責(zé)任編輯: 李書琴, 
          2007-11-12 09:44
             微軟認(rèn)證數(shù)據(jù)庫管理員資格考試是數(shù)據(jù)庫專業(yè)人員展示自己的SQL Server專業(yè)技能水平的一個(gè)機(jī)會(huì)。如果你想要向雇主證明自己的能力,或者希望在事業(yè)的階梯上更向上攀爬,又或者僅僅是想要獲得一張好看的證書給自家的墻壁稍作點(diǎn)綴,MCDBA(微軟數(shù)據(jù)庫管理員認(rèn)證)資格都可以滿足你的欲望……

            【IT專家網(wǎng)獨(dú)家】微軟數(shù)據(jù)庫管理員認(rèn)證

            微軟認(rèn)證數(shù)據(jù)庫管理員資格考試是數(shù)據(jù)庫專業(yè)人員展示自己的SQL Server專業(yè)技能水平的一個(gè)機(jī)會(huì)。如果你想要向雇主證明自己的能力,或者希望在事業(yè)的階梯上更向上攀爬,又或者僅僅是想要獲得一張好看的證書給自家的墻壁稍作點(diǎn)綴,MCDBA(微軟數(shù)據(jù)庫管理員認(rèn)證)資格都可以滿足你的欲望。

            要通過MCDBA認(rèn)證,你需要通過三門核心考試和一門可選考試。跟微軟其他大部分的認(rèn)證項(xiàng)目一樣,MCDBA考試可以參加當(dāng)前最新版本的SQL Server或者是馬上要退居二線的版本的考試。但是,最好當(dāng)然是考現(xiàn)有的最新版本的SQL Server,這樣才可以讓資格證書“保鮮期”盡可能長一點(diǎn)。

            核心考試I:SQL Server管理。

            微軟目前針對(duì)SQL Server 2000只提供70-228考試。

            這門考試主旨在于測試考生對(duì)于數(shù)據(jù)庫管理和解決數(shù)據(jù)庫管理相關(guān)問題的能力。如果你覺得自己已經(jīng)胸有成竹了,可以試一下70-228 Practice Exam。如果你覺得還需要再準(zhǔn)備一下,那么可以嘗試一下Transcender practice tests。這些測試跟真題非常相似。

            核心考試II:SQL Server設(shè)計(jì)

            考生需要通過70-229考試,主要是測試考試成功設(shè)計(jì)并執(zhí)行SQL Server數(shù)據(jù)庫方案的能力。

            核心考試III:網(wǎng)絡(luò)系統(tǒng)。要達(dá)到這個(gè)要求,可以選擇通過以下三門考試中任何一門。首先是70-215考試,這門考試主要測試考生安裝、配置和執(zhí)行管理Microsoft Windows 2000 Server的能力。如果你使用的是Windows 2003,你可以選擇通過測試管理和維護(hù)Microsoft Windows Server 2003環(huán)境的70-290考試,或者測試安裝、配置和執(zhí)行管理Microsoft Windows 2003 Server網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的70-291考試。

            可選考試。考生可以從下面的考試中選出自己需要的MCDBA考試。這些考試覆蓋面廣,包含了許多應(yīng)用程序開發(fā)技術(shù)、數(shù)據(jù)入庫技巧和網(wǎng)絡(luò)設(shè)計(jì)基礎(chǔ)知識(shí)。目前可供選擇的考試包括:

            70-216考試:執(zhí)行和管理Microsoft Windows 2000 網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)

            70-293考試:策劃和維護(hù)Microsoft Windows 2003 網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)

            70-528考試:Microsoft NET Framework 2.0 — 網(wǎng)絡(luò)系統(tǒng)客戶開發(fā)

            70-526考試:Microsoft .NET Framework 2.0 — 桌面系統(tǒng)客戶開發(fā)

            70-529考試:Microsoft .NET Framework 2.0 — 分布式應(yīng)用系統(tǒng)開發(fā)

            70-305考試:運(yùn)用Microsoft Visual Basic .NET 和Microsoft Visual Studio .NET 開發(fā)和執(zhí)行Web應(yīng)用系統(tǒng)

            70-306考試:運(yùn)用Microsoft Visual Basic .NET和Microsoft Visual Studio .NET開發(fā)和執(zhí)行桌面應(yīng)用系統(tǒng)

            70-310考試:運(yùn)用Microsoft Visual Basic .NET和Microsoft .NET Framework 開發(fā)XML Web Services 和Server Components

            70-315考試:運(yùn)用Microsoft Visual C# .NET和Microsoft Visual Studio .NET開發(fā)和執(zhí)行Web應(yīng)用系統(tǒng)

            70-316考試:運(yùn)用Microsoft Visual C# .NET和Microsoft Visual Studio .NET開發(fā)和執(zhí)行桌面應(yīng)用系統(tǒng)

            70-320考試:運(yùn)用Microsoft Visual C# 和Microsoft .NET Framework開發(fā)XML Web Services和Server 組件

            一定要注意的是MCDBA考試跟其他微軟認(rèn)證考試有一定的重疊,包括Microsoft認(rèn)證系統(tǒng)管理員(MCSA)、Microsoft認(rèn)證系統(tǒng)工程師(MCSE)和Microsoft認(rèn)證解決方案開發(fā)專家(MCSD)。如果你正在考慮以后要通過以上認(rèn)證,你就應(yīng)該認(rèn)真地考慮如何選擇你的MCDBA考試了。因?yàn)橥ㄟ^的同一門考試可以作為多個(gè)認(rèn)證的資格考試,認(rèn)真挑選你要通過的考試可以既省錢也省時(shí)間。

          posted @ 2008-03-13 12:55 清流琴音 閱讀(812) | 評(píng)論 (0)編輯 收藏
           

          詳細(xì)講解SQL Server系統(tǒng)數(shù)據(jù)庫的工作原理

          發(fā)布時(shí)間:2007.12.11 04:44     來源:賽迪網(wǎng)    作者:93263

          我們知道,DBA對(duì)SQL數(shù)據(jù)庫引擎的系統(tǒng)數(shù)據(jù)庫必須有深入的了解,同時(shí),數(shù)據(jù)庫開發(fā)人員了解SQL Server自帶的系統(tǒng)數(shù)據(jù)庫也是十分有必要的。下文中列舉了其中的一些系統(tǒng)數(shù)據(jù)庫。

          Master

          Master數(shù)據(jù)庫保存有放在SQLSERVER實(shí)體上的所有數(shù)據(jù)庫,它還是將引擎固定起來的粘合劑。由于如果不使用主數(shù)據(jù)庫,SQLSERVER就不能啟動(dòng),所以你必須要小心地管理好這個(gè)數(shù)據(jù)庫。因此,對(duì)這個(gè)數(shù)據(jù)庫進(jìn)行常規(guī)備份是十分必要的。

          這個(gè)數(shù)據(jù)庫包括了諸如系統(tǒng)登錄、配置設(shè)置、已連接的SERVER等信息,以及用于該實(shí)體的其他系統(tǒng)和用戶數(shù)據(jù)庫的一般信息。主數(shù)據(jù)庫還存有擴(kuò)展存儲(chǔ)過程,它能夠訪問外部進(jìn)程,從而讓你能夠與磁盤子系統(tǒng)和系統(tǒng)API調(diào)用等特性交互。這些過程一般都用像C++這樣的現(xiàn)代編程語言。

          如果不幸碰到系統(tǒng)崩潰而必須恢復(fù)主數(shù)據(jù)庫的情況,你可以參看MCSE/MCDBA Steven Warren在TechRepublic上發(fā)表的文章。這篇文章講得十分透徹,它解釋了恢復(fù)這一重要數(shù)據(jù)庫所需要的一些特殊步驟。

          Model

          Model是一個(gè)用來在實(shí)體上創(chuàng)建新用戶數(shù)據(jù)庫的模版數(shù)據(jù)庫。你可以把任何存儲(chǔ)過程、視圖、用戶等放在模型數(shù)據(jù)庫里,這樣在創(chuàng)建新數(shù)據(jù)庫的時(shí)候,新數(shù)據(jù)庫就會(huì)包含你放在模型數(shù)據(jù)庫里的所有對(duì)象了。

          Tempdb

          正如其名字所提示的,tempdb存有臨時(shí)對(duì)象,例如全局和本地臨時(shí)表格和存儲(chǔ)過程。

          這個(gè)數(shù)據(jù)庫在SQLSERVER每次重啟的時(shí)候都會(huì)被重新創(chuàng)建,而其中包含的對(duì)象是依據(jù)模型數(shù)據(jù)庫里定義的對(duì)象被創(chuàng)建的。除了這些對(duì)象,tempdb還存有其他對(duì)象,例如表格變量、來自表格值函數(shù)的結(jié)果集,以及臨時(shí)表格變量。由于tempdb會(huì)保留SQLSERVER實(shí)體上所有數(shù)據(jù)庫的這些對(duì)象類型,所以對(duì)數(shù)據(jù)庫進(jìn)行優(yōu)化配置是非常重要的。

          在SQL Server 2005里,tempdb數(shù)據(jù)庫還有一項(xiàng)額外的任務(wù);它還被用作一些特性的版本庫,例如新的快照隔離層和在線索引操作等。關(guān)于新的隔離層的簡要說明,請參考我關(guān)于SQL Server 2005高級(jí)特性的文章。

          Distribution

          當(dāng)你的SQLSERVER實(shí)體被配置為復(fù)制分發(fā)SERVER時(shí),這個(gè)數(shù)據(jù)庫就會(huì)被添加到你的系統(tǒng)里。在默認(rèn)情況下,數(shù)據(jù)庫的名字就是distribution,但是你可以更改它的名字。這個(gè)數(shù)據(jù)庫用來保存歷史和快照、合并和事務(wù)復(fù)制等的元數(shù)據(jù)。

          Msdb

          Msdb數(shù)據(jù)庫用來保存于數(shù)據(jù)庫備份、SQL Agent信息、DTS程序包、SQLSERVER任務(wù)等信息,以及諸如日志轉(zhuǎn)移這樣的復(fù)制信息。

          注釋:隨著工作或?qū)W習(xí)的深入,你會(huì)逐漸發(fā)現(xiàn)理解SQL Server的最佳方法是研究系統(tǒng)數(shù)據(jù)庫的工作原理。作為一條普遍的規(guī)律,我們通常不建議大家直接在SQL Server里查詢系統(tǒng)表格,但是通過研究這些系統(tǒng)數(shù)據(jù)庫里的表格,大家可以學(xué)到很多有關(guān)SQL Server工作原理的實(shí)用知識(shí)。

          posted @ 2008-03-13 12:48 清流琴音 閱讀(288) | 評(píng)論 (2)編輯 收藏
           
          IT業(yè)最受歡迎的認(rèn)證分別是:微軟認(rèn)證系統(tǒng)管理員(MCSA)、甲骨文(Oracle)認(rèn)證專家數(shù)據(jù)庫管理員——(OCPDABA)、思科(Cisco)認(rèn)證網(wǎng)絡(luò)工程師(CCNA)、思科認(rèn)證網(wǎng)絡(luò)專家(CCNP)、微軟認(rèn)證數(shù)據(jù)庫管理員(MCDBA)、Red Hat認(rèn)證工程師(RHCE)、Network+、Crtrix認(rèn)證管理員(CCA)、Sun Java認(rèn)證軟件工程師(SCJP)、信息系統(tǒng)安全認(rèn)證專家(CISSP)。

          大多企業(yè)偏愛IT認(rèn)證

          目前正在推動(dòng)內(nèi)部e化的傳統(tǒng)企業(yè)或是一般中小企業(yè),對(duì)于懂得網(wǎng)絡(luò)架構(gòu),能進(jìn)行網(wǎng)絡(luò)規(guī)劃、建立、維護(hù)及支持等工作,也就是為公司提供解決方案的MIS人員需求較大。

          隨著微軟近年市場占有率提升,通過微軟系統(tǒng)的MCSE認(rèn)證,似乎可以在敲門應(yīng)征時(shí),讓初次見面的應(yīng)試主管,對(duì)自己在網(wǎng)絡(luò)管理規(guī)劃的專業(yè)能力有一定的認(rèn)識(shí)。認(rèn)證的價(jià)值等于通行證,代表你有基本的能力,可是決定錄用與否,或薪資與位階的調(diào)整,還是取決于工作經(jīng)驗(yàn)。

          名企多以工作經(jīng)驗(yàn)為標(biāo)準(zhǔn)

          一些大型外資、民營企業(yè),對(duì)于證書的態(tài)度趨于保守。菲利普莫里斯公司的一位人力資源經(jīng)理認(rèn)為,因?yàn)榇笃髽I(yè)的制度比較完備,面試流程、錄用的標(biāo)準(zhǔn)都有一定的程序,通常手持證書的應(yīng)聘者,或許在眾多具有相同資歷的人會(huì)比較突出,不過還是得經(jīng)過公司內(nèi)部的考核。考試通過后,部門主管會(huì)針對(duì)個(gè)人面試,因此,證書只是“附加值”,但絕不是“必備品”,重要的是你到底有多少經(jīng)驗(yàn),口袋里藏有幾把刷子?

          以生產(chǎn)殺毒軟件著稱的瑞星公司,人力資源總監(jiān)張曉江曾說:他們非常愿意不拘一格聘用有真才實(shí)學(xué)的“偏才、怪才”,而不在乎他們是否有專業(yè)證書。對(duì)于那些沒有足夠工作經(jīng)驗(yàn)的“證書收藏家”來說,恐怕只能打道回府了。

          posted @ 2008-03-13 12:24 清流琴音 閱讀(152) | 評(píng)論 (0)編輯 收藏
           
          主站蜘蛛池模板: 芜湖县| 保山市| 客服| 长沙县| 荣昌县| 谢通门县| 钟山县| 肃宁县| 莎车县| 从化市| 祁东县| 阿瓦提县| 巴中市| 攀枝花市| 哈密市| 额尔古纳市| 清原| 鄂托克前旗| 徐州市| 鱼台县| 峨边| 丽江市| 东至县| 高尔夫| 会理县| 大丰市| 普定县| 芜湖县| 屏边| 淮安市| 宣汉县| 冀州市| 邹平县| 仁布县| 东丽区| 岳普湖县| 莱阳市| 上思县| 宜兰县| 邢台市| 抚宁县|