程序員面試筆試經(jīng)典學習_第1頁
程序員面試筆試經(jīng)典學習_第2頁
程序員面試筆試經(jīng)典學習_第3頁
程序員面試筆試經(jīng)典學習_第4頁
程序員面試筆試經(jīng)典學習_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一、 數(shù)據(jù)庫一、數(shù)據(jù)庫概念數(shù)據(jù)庫經(jīng)歷了人工管理、文件系統(tǒng)到數(shù)據(jù)庫系統(tǒng)3個階段。數(shù)據(jù)庫是具有邏輯關(guān)系和確定意義的數(shù)據(jù)結(jié)合,它能克服文件組織中所產(chǎn)生的一系列問題,數(shù)據(jù)冗余小,由于關(guān)系模型數(shù)據(jù)管理系統(tǒng)對于信息查詢具有很大的靈活性,并且設計簡單,所以已經(jīng)被廣泛使用在了十幾的系統(tǒng)開發(fā)中。二、關(guān)系數(shù)據(jù)庫與文件數(shù)據(jù)庫系統(tǒng)的區(qū)別關(guān)系數(shù)據(jù)庫是一個被組織成一組正式描述的表格的數(shù)據(jù)項的集合,這些表格中的數(shù)據(jù)能以不同的方式被存取或重新召集而不需要重新組織數(shù)據(jù)庫表格,它對應于一個關(guān)系模型中的所有關(guān)系的集合。例如,教師、學生、課程這些關(guān)系以及關(guān)系間的聯(lián)系就組成了一個教務系統(tǒng)。文件數(shù)據(jù)庫系統(tǒng)是對文件的操作,包存儲、查詢等。

2、關(guān)系數(shù)據(jù)庫系統(tǒng)和文件數(shù)據(jù)庫系統(tǒng)的區(qū)別如下:(1) 關(guān)系數(shù)據(jù)庫系統(tǒng)的主要特點是數(shù)據(jù)的結(jié)構(gòu)化,而文件數(shù)據(jù)庫系統(tǒng)是數(shù)據(jù)的非結(jié)構(gòu)化。(2) 關(guān)系數(shù)據(jù)庫系統(tǒng)中,用戶看到的邏輯結(jié)構(gòu)是二維表,而文件數(shù)據(jù)庫系統(tǒng)中,基本元素是文件。(3) 文件數(shù)據(jù)庫系統(tǒng)可以實現(xiàn)多媒體文件管理,支持c/s工作模式。三、SQL語言的功能SQL是結(jié)構(gòu)化查詢語言的縮寫,其功能包括數(shù)據(jù)查詢、數(shù)據(jù)操作、數(shù)據(jù)定義和數(shù)據(jù)控制4個部分。數(shù)據(jù)查詢是數(shù)據(jù)庫中最常見的操作,通過select語句可以得到所需的信息。SQL語言的數(shù)據(jù)操作語句(DML)主要包括數(shù)據(jù)插入、數(shù)據(jù)修改和刪除數(shù)據(jù)3中語句。SQL語言使用數(shù)據(jù)定義語言(DDL)實現(xiàn)數(shù)據(jù)定義功能,可對數(shù)

3、據(jù)庫用戶、基本表、視圖、索引進行定義和撤銷。數(shù)據(jù)控制語句(DCL)用于對數(shù)據(jù)庫進行統(tǒng)一的控制管理,保證數(shù)據(jù)在多用戶共享的情況下能夠安全?;镜腟QL語句有select、insert、update、delete、create、drop、grant、revoke等。四、內(nèi)連接和外鏈接有什么區(qū)別內(nèi)連接也稱為自然連接,只有二個表相匹配的行才能在結(jié)果集中出現(xiàn)。返回的結(jié)果集是二個表中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。由于內(nèi)連接是從結(jié)果表中刪除與其他連接表中沒有匹配行的所有行,所以內(nèi)連接可能會造成信息的丟失。五、什么是事物事物是數(shù)據(jù)庫中一個單獨的執(zhí)行單元(unit),它通常由高級數(shù)據(jù)庫操作語言(如SQL

4、)或編程語言(如C+)書寫的用戶程序的執(zhí)行所引起的。當在數(shù)據(jù)庫中更改數(shù)據(jù)成功時,在事物中更改的數(shù)據(jù)變回提交,不再改變。否則,事物就取消或者回滾,更改無效。例如:網(wǎng)上購物的交易過程至少包括以下幾個步驟的操作:(1) 更新客戶端所購物商品的庫存信息。(2) 保存客戶付款信息(3) 生成訂單并且保存到數(shù)據(jù)庫中(4) 更新用戶相關(guān)信息,如購物數(shù)量等。 在正常的情況下,這些操作都將順利進行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)信息也成功更新。但是,如果遇到突然掉電或是其他意外情況,導致這一系列過程任何一個環(huán)節(jié)出現(xiàn)錯誤,如在更新商品庫存信息時發(fā)生異常、顧客銀行賬戶余額不足等,都將導致整個交易過程失敗。而一旦

5、交易失敗,數(shù)據(jù)庫中所有信息都必須保持交易前的狀態(tài)不變,比如最后一步更新用戶信息時失敗而導致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫的狀態(tài)。即原有的庫存信息沒有被更新、用戶也沒有付款、訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會不一致,或者出現(xiàn)更為嚴重的不可預測的后果,數(shù)據(jù)庫事務正是用來保證這種情況下交易的平穩(wěn)性和可預測性的技術(shù)。事務必須滿足4個屬性,即原子性、一致性、隔離性、持久性。(1) 原子性。事務是一個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當數(shù)據(jù)修改時,要么全執(zhí)行,要么全都不執(zhí)行。即不允許事務部分地完成,避免了只執(zhí)行這些操作的一部分而帶來的錯誤。原子性要求事務必

6、須被完整的執(zhí)行。(2) 一致性。一個事務執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫數(shù)據(jù)必須保持一致性狀態(tài)。數(shù)據(jù)庫的一致性狀態(tài)應該滿足模式所指定的約束,那么在完整執(zhí)行事務后數(shù)據(jù)庫仍然處于一致性狀態(tài)。為了維護所有數(shù)據(jù)的完整性,在關(guān)系數(shù)據(jù)庫中,所有的規(guī)則必須應用到事務的修改上。數(shù)據(jù)庫的一致性狀態(tài)由用戶來負責,由并發(fā)控制機制來實現(xiàn)。例如,銀行轉(zhuǎn)賬,轉(zhuǎn)賬前后二個賬戶余額之和應該保持不變。由并發(fā)操作帶來的數(shù)據(jù)不一致性包括丟失數(shù)據(jù)修改、讀臟數(shù)據(jù)、不可重復讀和產(chǎn)生幽靈數(shù)據(jù)。(3) 隔離性。隔離性也被稱為獨立性,是指并行事務的修改必須與其它事務的修改相互獨立。當一個事務處理數(shù)據(jù)時,要么是其它事務執(zhí)行之前的狀態(tài),要么是其它事務執(zhí)行

7、之后的狀態(tài)。例如,對任何一對事務T1,T2,對T1而言,T2要么在T1之前已經(jīng)結(jié)束,要么在T1完成之后開始執(zhí)行。數(shù)據(jù)庫有4種類型的事務隔離級別:不提交的讀、提交的讀、可重復的讀和串行化。因為隔離性使得每個事務的更新在它被提交之前,對其它事務都是不可見的,所以實施隔離性是解決臨時更新與消除級聯(lián)回滾問題的一種方式。(4) 持久性。持久性也被稱為永久性,事務完成以后,DBMS保證他對數(shù)據(jù)的修改是永久的,當系統(tǒng)或介質(zhì)發(fā)生變化時,該修改也永久保持。持久性一般通過數(shù)據(jù)庫備份與恢復來保證。嚴格來說,數(shù)據(jù)庫事務屬性都是由數(shù)據(jù)庫管理系統(tǒng)來進行保證的,在整個應用程序運行過程中應用無需去考慮數(shù)據(jù)的ACID實現(xiàn)。一般

8、情況下,通過執(zhí)行COMMIT或ROLLBACK語句終止事務,當執(zhí)行語句時,自從事務啟動以來對數(shù)據(jù)庫所做的一切更改以稱為永久性的了,即被寫入到磁盤;而當執(zhí)行語句時,自動事務啟動以來對數(shù)據(jù)庫所做的一切更改都會被撤銷,并且數(shù)據(jù)庫的內(nèi)容返回到事務開始之前所處的狀態(tài),無論什么情況,在事務完成時,都能保證回到一直狀態(tài)。六什么是存儲過程,它與函數(shù)由什么區(qū)別和聯(lián)系語句執(zhí)行的時候需要先編譯,然后再被執(zhí)行。在大型數(shù)據(jù)庫系統(tǒng)中,為了提高效率,將為了完成特定功能的語句集進行編譯優(yōu)化后,存儲在數(shù)據(jù)庫服務器中,用戶通過指定存儲過程的名字來調(diào)用執(zhí)行。創(chuàng)建存儲過程的常用語法如下:參七什么事主鍵?什么是外鍵主鍵也稱為主碼,是數(shù)

9、據(jù)庫中一個或多個字段,是表中記錄的唯一標識符。主鍵不能為空。一個表中只能有一個主鍵,主鍵列不一定只有一列,可以有多列。由概念克制,主鍵可唯一地標識一行。另外。主鍵可作為一個可以被外鍵有效使用的對象,因此主鍵需遵循以下原則:() 主鍵對用戶而言沒有意義。() 主鍵不能為空() 主鍵保持不變。因為主鍵的用途是唯一地標示一行數(shù)據(jù)。() 主鍵不應包含動態(tài)變化的時間戳() 主鍵原則上應當由計算機自動生成,而非用戶指定。外鍵也稱為外碼,標示的是二個關(guān)系之間的聯(lián)系。當共有關(guān)鍵字在一個關(guān)系中為主鍵時,這個公告關(guān)鍵字被稱為另外一個關(guān)系的外鍵。假設有二個表,是的主鍵,同時也是的字段,那么稱為的外鍵。學號為學生表中

10、的主鍵,同時也是成績表中的字段,所以學號為成績表的外鍵。外鍵用來和其它變建立聯(lián)系,實現(xiàn)表之間的關(guān)聯(lián)。保持數(shù)據(jù)的一致性,實現(xiàn)參照完整性等約束。一個表可以有多個外鍵,也可以為空??傊?,主鍵時表中的唯一標識符。外鍵,是二個關(guān)系之間的聯(lián)系。八什么是死鎖在操作系統(tǒng)中有若干程序并發(fā)執(zhí)行,他們不斷的申請,釋放資源,在此過程中,由于爭奪資源而處于無限期的等待狀態(tài),造成程序無法繼續(xù)執(zhí)行,若無外力作用,他們將無法推進下去,這時成系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖。此時便只能通過外力來打破這種狀態(tài)。產(chǎn)生死鎖的原意有以下點。首先,系統(tǒng)資源不足,在系統(tǒng)中常常有多個進程共享資源的情況,如打印機,這些資源在同一時刻只能被一個

11、進程調(diào)用,當資源數(shù)目不能滿足進程時,便可能因為搶占資源產(chǎn)生死鎖。其次,進程運行推進順序不對,進程在運行中具有異步性,當進程推進不當時,便發(fā)生死鎖。進程產(chǎn)生死鎖的個必要條件:) 互斥,每個資源每次只能被一個進程使用) 請求與保持等待,一個進程因請求資源被阻塞時,對已獲得的資源保持不放) 不可剝奪,進程已獲得的資源,在未使用完之前,不能被強制剝奪。) 環(huán)路等待,若干進程之間形成首位相連的等待資源關(guān)系。所以,為了預防死鎖,就要打破產(chǎn)生死鎖的個條件中的一個或多個,因此需要最大限度的增加系統(tǒng)資源,合理安排進程的順序并確定合理的分配資源的算法。避免死鎖在資源的動態(tài)分配過程中,采取有效的方法防止系統(tǒng)進入不安

12、全狀態(tài),達到預防死鎖的目的,其中最具代表性的方法就是銀行家算法。九什么是共享鎖?什么是互斥鎖在數(shù)據(jù)庫中,鎖主要是對數(shù)據(jù)進行讀寫的一種保護機制,從數(shù)據(jù)庫系統(tǒng)的角度來看,一般可以將鎖分為共享鎖和互斥鎖。共享鎖簡稱鎖,也叫讀鎖用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如語句。如果事務對數(shù)據(jù)加上共享鎖后,則其他事務只能對再加共享鎖,不能加排它鎖。共享鎖可以阻止其他并發(fā)運行的程序獲取重疊的獨占鎖定,但是允許改程序獲取重疊的共享鎖定。其他用戶可以獲取共享鎖鎖定的資源,但是不能進行修改共享鎖。在執(zhí)行命令時。通常會對對象進行共享鎖鎖定。若事務對數(shù)據(jù)加鎖,則其他事務只能對加鎖,而不能加鎖,知道釋放上的鎖,一般要

13、求在讀取數(shù)據(jù)前要向該數(shù)據(jù)加共享鎖,所以共享鎖又稱為讀鎖。通常加共享鎖的數(shù)據(jù)頁被讀取完畢后,共享鎖就會立即被釋放?;コ怄i簡稱鎖,也叫排他鎖,用于數(shù)據(jù)修改操作,如或。確保不會同時對同一資源進行多重更新。為了確保數(shù)據(jù)操作的完整性,引入了互斥鎖。用互斥鎖來保證在任意時刻,只能有一個線程訪問對象。若事務對數(shù)據(jù)加鎖,則其他任何事務都不能再對加任何類型的鎖,直至釋放上的鎖;一般要求在修改數(shù)據(jù)前要向該數(shù)據(jù)加排他鎖,所以排他鎖又稱為寫鎖。而對于鎖的使用,也有一定的限制,需要遵循二個事項:) 先鎖后操作;) 事務結(jié)束之后必須解鎖。十一二三四范式有何區(qū)別在設計與操作維護數(shù)據(jù)庫時,最關(guān)鍵的問題就是要確保數(shù)據(jù)正確的分布

14、到數(shù)據(jù)庫的表中,使用正確的數(shù)據(jù)結(jié)構(gòu),不僅有助于對數(shù)據(jù)庫進行相應的存取操作,還可以極大地簡化應用程序的內(nèi)容。按照數(shù)據(jù)庫規(guī)范化對表進行設計的目的就是減少數(shù)據(jù)庫中的數(shù)據(jù)冗余,從而增加數(shù)據(jù)的一致性。范式是在識別數(shù)據(jù)庫中的數(shù)據(jù)元素關(guān)系以及所需的表和各表中的項目這些初始工作之后的一個細化的過程。常見的范式有2NF 3NF 4NF .1NF,第一范式。第一范式是指數(shù)據(jù)庫的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現(xiàn)重復的屬性,就可能需要定義一個新的實體,新的實體有重復的屬性構(gòu)成,新實體與原實體之間為一對多關(guān)系。第一范式的模式要求屬性值不可

15、在分裂成更小部分,即屬性項不能是屬性組合或由組屬性組成。簡而言之,第一范式就是無重復的列。2NF,第二范式。要求數(shù)據(jù)庫表中的每個實體或行必須可以被唯一地區(qū)分。為實現(xiàn)區(qū)分通常需要為表加上一個列,以存儲各個實例的唯一標識。如果關(guān)系模式R為第一范式,并且R中每一個非主屬性完全函數(shù)依賴于R的某個候選鍵,則R成為第二范式模式。如果A是關(guān)系模型R的候選鍵的一個屬性,則稱A是R的主屬性,否則A是R的非主屬性。3NF,第三范式。每個非主屬性都不傳遞依賴于R的候選鍵,則稱R是第三范式模式十一 什么是CHECK約束CHECK約束是指限制表中某一列或某些列中可接受的數(shù)據(jù)值或數(shù)據(jù)格式,它用于限制列的取值方位,使用形式

16、為:CHECK(約束表達式)。如果對單列定義CHECK約束,那么該列只允許特定的值;如果是對一個表定義CHECK約束,那么此約束會在特定的列中對只進行限制。例如,對于一個員工信息表,給員工的年齡屬性添加了一個約束,即年齡必須大于0且小于120,那么用戶在輸入年齡的時候,就必須遵守該約束,輸入負數(shù)或者121就無法輸入。十二 什么是視圖視圖是由從一個數(shù)據(jù)庫的基本表中選取出來的數(shù)據(jù)組成的邏輯窗口,不同于基本表。它是一個虛表,在數(shù)據(jù)表中,存放的只是視圖的定義而已,不存放視圖包含的數(shù)據(jù)項,這些項目仍然存在原來的基本表結(jié)構(gòu)中視圖的作用非常多,主要有以下幾點:首先可以簡化數(shù)據(jù)查詢語句;其次可以使用戶能從多角

17、度看待同一數(shù)據(jù);然后,通過引入視圖,可以提高數(shù)據(jù)的安全性;最后,視圖提供了一定程度的邏輯獨立性等。通過引入視圖機制,用戶可以將注意力集中在其關(guān)心的數(shù)據(jù)上而非全部數(shù)據(jù),這樣就大大提高了用戶效率和用戶滿意度,而且如這些數(shù)據(jù)來源于多個基本表結(jié)構(gòu),或者數(shù)據(jù)不僅來自于基本表結(jié)構(gòu),還有一部分來源于其他視圖,并且搜索條件又比較復雜時,需要編寫的查詢語句就會比較繁瑣,此時定義視圖就可以使數(shù)據(jù)的查詢語句變得簡答可行。定義視圖可以將表與表之間復雜的操作連接和搜索條件對用戶不可見,用戶只需要簡單的對一個視圖進行查詢即可,所以增加了數(shù)據(jù)的安全性,但是不能提高查詢的效率。十三 什么是觸發(fā)器觸發(fā)器是一種特殊類型的存儲過程

18、,它由事件觸發(fā),而不是程序調(diào)用或手工啟動。當數(shù)據(jù)庫有特殊的操作時,對這些操作有數(shù)據(jù)庫中的事件來觸發(fā),自動完成這些SQL語句。使用觸發(fā)器可以用來保證數(shù)據(jù)的有效性和完整性,完成比約束更復雜的數(shù)據(jù)約束。十二 什么是索引索引就是一種提高數(shù)據(jù)庫查詢速度的機制,它是一個在數(shù)據(jù)庫的表或視圖上按照某個關(guān)鍵字段的值,升序或降序排序創(chuàng)建的對象。當用戶查詢索引字段時,它可以快速地執(zhí)行檢索操作,借助索引,在執(zhí)行查詢的時候不需要掃描整個表就可以快速的找到所需要的數(shù)據(jù)。索引是與表或視圖關(guān)聯(lián)的磁盤上結(jié)構(gòu),即對表中列值得一種結(jié)構(gòu),可以加快從表或視圖中檢索行的速度,執(zhí)行查詢時不必掃描整個表就能更加快速的訪問數(shù)據(jù)庫中的信息。十三

19、 數(shù)據(jù)備份有哪些種類在網(wǎng)絡運行與維護的過程中,經(jīng)常有一些難以預料的因素會導致數(shù)據(jù)的丟失,如硬件損壞、操作失誤等,而且丟失的數(shù)據(jù)通常又會對企業(yè)的業(yè)務產(chǎn)生非常不利的影響,所以必須不定期地對數(shù)據(jù)進行及時 備份,以便在災難發(fā)生后能夠迅速地恢復數(shù)據(jù)。數(shù)據(jù)備份就是保存數(shù)據(jù)的備份,目的就是為了預防災難造成的數(shù)據(jù)丟失。它一般分為完全備份、差異備份、事務日志備份、增量備份幾大類。完全備份是將數(shù)據(jù)庫中的全部信息進行備份,它是恢復的基線,在進行完全備份時,不但備份數(shù)據(jù)庫的數(shù)據(jù)文件、日志文件,還需要備份文件的存儲位置信息以及數(shù)據(jù)庫中的全部對象和相關(guān)信息,在對數(shù)據(jù)庫進行完全備份時,所有未完成的事務或發(fā)生在備份過程中的全

20、部對象被忽略,如果使用完全數(shù)據(jù)庫備份類型,那么從開始備份到開始恢復這段時間內(nèi)發(fā)生的任何針對數(shù)據(jù)庫的修改都將無法修復。所以,只有在一定的要求或條件下才使用這種類型。差異備份時備份從最近的完全備份之后對數(shù)據(jù)所做的修改,它以完全備份為基準點,備份完全備份之后變化了的數(shù)據(jù)文件、日志文件以及數(shù)據(jù)庫中其他被修改的內(nèi)容。差異備份耗費的時間比完全備份少,但也會占用一些時間,同完全備份一樣,差異備份的過程中也允許用戶訪問數(shù)據(jù)庫并對數(shù)據(jù)進行操作,并且在差異備份過程中會把這些操作也一起備份起來。事務日志備份是備份從上次備份之后的日志記錄,而且在默認情況下,事務日志備份完成后要截斷日志,事務日志備份記錄了用戶對數(shù)據(jù)進

21、行的修改操作。隨著時間的推移,日志中的記錄數(shù)會越來越多,容量有事比數(shù)據(jù)備份大,這樣勢必會占滿整個磁盤空間。因此,為了避免這種情況的發(fā)生,必須定期地將日志記錄中不必要的記錄清除掉,以節(jié)省空間。清除掉無用日志記錄的過程叫做截斷日志。增量備份時針對上一次備份的,備份上一次備份后所有發(fā)生改變的文件。在增量備份過程中,只備份有標記的選中的文件和文件夾,它清除標記,即備份后標記文件十四 并發(fā)環(huán)境如何保證數(shù)據(jù)的一致性并發(fā)一般是指多用戶同時訪問相同的數(shù)據(jù)。數(shù)據(jù)一致性是指系統(tǒng)中每個用戶都能夠取得具備一致性的數(shù)據(jù),同時還能夠看到自己活其他用戶所提交的事務對數(shù)據(jù)的修改。并發(fā)環(huán)境下,一般可以采用多種機制來保證數(shù)據(jù)的一

22、致性。例如,oracle系統(tǒng)提供的事務級的一致性、行機鎖、表級鎖等。提交讀和串行事務都使用行級鎖,都會試圖修改一個沒有提交的并行事務更新的行時產(chǎn)生等待。第二個事務等待其他事務提交或者撤銷來釋放它的鎖,才能更新給定的行。不管等待的是什么級別的隔離事務,若其他事務回滾了,都可以對以前鎖定的行進行修改。但是如果其他事務提交并釋放了它的鎖,提交事務科執(zhí)行它想要的修改。 十五 如果數(shù)據(jù)庫日志滿了,會出現(xiàn)什么情況日志文件記錄所有對數(shù)據(jù)庫數(shù)據(jù)的修改,主要是保護數(shù)據(jù)庫以防止故障,以及恢復數(shù)據(jù)時使用。其特點如下:() 每一個數(shù)據(jù)庫至少包含二個日志文件組。每個日志文件組至少包含二個日志文件成員() 日志文件組以循

23、環(huán)方式進行寫操作() 每一個日志文件成員對應一個物理文件通過日志文件來記錄數(shù)據(jù)庫事務可以最大限度地保證數(shù)據(jù)的一致性與安全性,但一旦數(shù)據(jù)庫中日志滿了,就只能執(zhí)行查詢等讀操作,不能執(zhí)行更改、備份等操作。其原因是任何寫操作都要記錄日志,也就是說基本上處于不能使用的狀態(tài)。網(wǎng)絡與通信一 OSI七成模型上三成稱為高層,用于定義應用程序之間的通信和人機界面下四成稱為底層,用于定義數(shù)據(jù)如何進行端到端的傳輸,物理規(guī)范以及數(shù)據(jù)與光電信號間的轉(zhuǎn)換。具體而言,從上往下每一層的功能如下:() 應用層。應用層也稱為應用實體,一般是應用程序,該層主要負責確定通信對象,并確保有足夠的資源用于通信。常見的應用層協(xié)議有FTP、H

24、TTP、SNMP等。() 表示層。表示層一般負責數(shù)據(jù)的編碼與轉(zhuǎn)化,確保應用層能夠正常工作。該層是二進制代碼間互相轉(zhuǎn)化的地方,同時該層負責數(shù)據(jù)的壓縮、解壓、加密、解密等,該層也可以根據(jù)不同的應用目的將數(shù)據(jù)處理為不同的格式,表現(xiàn)出來就是各種各樣的文件名。() 會話層。會話層主要負責在網(wǎng)絡中的二個節(jié)點之間建立、維護、控制會話,區(qū)分不同的會話,以及提供單工、半雙工、全雙工3種通信式服務。NFS、RPC、X Windows等都工作在該層。() 傳輸層。傳輸層是OSI模型中最重要的一層,它主要負責分割、組合數(shù)據(jù),實現(xiàn)端到端的邏輯連接。數(shù)據(jù)在上三層是整體的,到了這一層開始被分割,這一層分割后的數(shù)據(jù)被稱為段。

25、三次握手、面向連接或非面向連接的服務、流量控制等都發(fā)生在此層。常見的傳輸層協(xié)議有TCP、UDP、SPX。() 網(wǎng)絡層。網(wǎng)絡層是將網(wǎng)絡地址翻譯成物理地址,并決定將數(shù)據(jù)從發(fā)送方路由到接收方,主要負責管理網(wǎng)絡地址、定位設備、決定路由,路由器就工作在該層。上層的數(shù)據(jù)段在這一層被分割,封裝后叫做包。包郵二中:一種為用戶數(shù)據(jù)包,是上層傳下來的用戶數(shù)據(jù);另一種為路由更新包,是直接由路由器發(fā)出來的,用來和其他路由器進行路由交換信息。常見的網(wǎng)絡層協(xié)議有IP,RIP,OSPF。() 數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層為OSI模型的第二層,控制物理層與網(wǎng)絡層之間的通信,主要負責物理傳輸?shù)臏蕚?,包括物理地址尋址、CRC檢驗、錯誤

26、通知、網(wǎng)絡拓撲、流量控制、重發(fā)等。MAC地址和交換機都工作在這一層。上層傳下來的包在這一層被分割封裝后叫做幀。常見的數(shù)據(jù)鏈路層協(xié)議有SDLC、STP、幀中繼、HDLC等。() 物理層。物理層是實實在在的物理鏈路,它規(guī)定了激活、維持、關(guān)閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。它為上層協(xié)議提供了一個傳輸數(shù)據(jù)的物理媒體,負責將數(shù)據(jù)以比特流的方式發(fā)送、接受。常見的物理媒體有雙絞線、同軸電纜等。屬于物理層相關(guān)的規(guī)范有。設計模式一 單例模式在某些情況下,有些對象只需要一個就可以了。即每個類只需要一個實例。;例如,一臺計算機上可以連接多個打印機,但是這個計算機上的打印程序只能有一個,這里就

27、可以通過單例模式來避免二個打印作業(yè)同時輸出到打印機,即在整個的打印過程中只有一個打印程序的實例。簡單來說,單例模式的作用就是保證在整個應用程序的生命周期中,任何一個時刻,單例類的實例都只存在一個。單利模式只應在有真正的單一實例的需求是才可以用。需要區(qū)分一下全局變量和單例模式。首先,全局變量是對一個對象的靜態(tài)引用,全局變量確實可以實現(xiàn)單例模式實現(xiàn)的全局訪問這個功能,但是它并不能保證應用程序中只有一個實例,同時在編碼規(guī)范中,也明確指出應該要少用全局變量,因為過多地使用全局變量,會造成代碼難讀,還有就是全局變量并不能實現(xiàn)繼承。而單例模式的話,其在類中保存了他的唯一實例,這個類可以保證只創(chuàng)建一個實例,

28、同時它還提供了一個訪問該唯一的全局訪問點。使用單例模式,需要注意的是,單例模式用來保證系統(tǒng)中一個類只有一個實例。單列了的構(gòu)造函數(shù)必須為私有,同時單例類必須提供一個全局訪問點。二 工廠模式工廠模式專門負責實例化大量公共接口的類。工廠模式可以動態(tài)的決定哪一個類實例化,而不必事先知道每次要實例化那一個類??蛻纛惡凸S類是分開的。消費者無論什么時候需要某種產(chǎn)品,需要做的只是向工廠提出請求即可。消費者無需修改就可以接納新產(chǎn)品。當然,也存在缺點,就是當產(chǎn)品修改時,工廠類也要做相應的修改。工廠模式包括以下幾種形態(tài):() 簡單工廠模式。簡單工廠模式的工廠類是根據(jù)提供給它參數(shù),返回的是幾個可能產(chǎn)品中的一個類的實例,通常情況下它返回的類都有一個公共的父類和公共的方法。() 工廠方法模式。工廠方法模式是類的創(chuàng)建模式,其用意是定義一個用于創(chuàng)建產(chǎn)品對象的工廠的接口,而將實際創(chuàng)建工作推遲到工廠接口的子類中。它屬于簡單工廠模式的進一步抽象和推廣。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論