此文章已經同步更新到個人博客上,喜歡有側邊欄目錄的同學,可以點擊下面的鏈接跳轉到個人博客上讀閱噢。建議到個人博客讀閱,CSDN這邊更新比較慢,個人博客上,每天都有更新。需要教學視頻和真題的,也可以點擊下面的個人博客地址,在文末有免費的百度雲鏈接分享。
個人博客地址:http://zwd596257180.gitee.io/blog/2019/04/20/soft_exam/
數據結構與算法基礎
線性表
基本數據結構
順序表
在內存中是順序存儲的。內存劃分出來的區域是連續的區塊。
鏈表
在內存中是離散存儲的。
-
head:頭結點
-
結點:包括數據域和指針域(next 域)
鏈表的分類
單鏈表
頭結點 head 指向第一個結點的數據域,第一個結點的指針域指向下一個結點的數據域…
注意:單鏈表的最後一個結點的指針域爲空(null)!!! |
循環鏈表
注意:循環表的最後一個結點的指針域不爲空,而是指向了頭結點!!! |
雙鏈表
鏈表的操作
單鏈表的結點刪除
需求:刪除 a2 結點
具體操作:將要刪除的結點(a2)的前一個結點(a1)的 next 域指向 a2 的後一個的結點(a3)的數據域,然後釋放(free)掉 a2 即可。
單鏈表的結點插入
需求:在 a1 結點後面插入一個新的結點 x
具體操作:將 a1 的 next 域指向 x 的數據域,將 x 的 next 域指向 a2 的數據域即可。
順序表與鏈表的比較
性能類別 | 具體項目 | 順序存儲 | 鏈式存儲 |
---|---|---|---|
空間性能 | 存儲密度 | =1,更優 | < 1 |
容量分配 | 事先確定 | 動態改變,更優 | |
時間性能 | 查找運算 | O(n/2) | O(n/2) |
讀運算 | O(1) | O([n+1]/2),最好情況爲1,最壞情況爲n | |
插入運算 | O(n/2)最好情況爲0,最爲情況爲 n | O(1),更優 | |
刪除運算 | O([n-1]/2) | O(1),更優 |
棧
- 思想:先進後出
隊列
線性隊列
- 思想:先進先出
循環隊列
head:頭指針(隊頭)
tail:尾指針(隊尾)
-
當隊列中沒有存入值的時候,head 指針和 tail 指針指向同一個元素,並且該元素的值是空的!!!
-
當循環隊列開始存入值時,head 指針是不動的,tail 指針是後移一個位置。
注意: 循環隊列中爲了能夠區別隊空和隊滿,犧牲了隊列的最後一個空間。 判空條件:head = tail 判滿條件:head = tail+1 |
樹和二叉樹
樹的一些基本概念
(結合下面的圖進行解釋)
- 結點的度:結點1與下一層的3個結點相關聯,所以結點1的度爲3。
- 樹的度:所有結點度當中,度數最高的一個,所以如圖樹的度爲3。
- 葉子結點:度爲 0 的結點。
- 分支結點:除了葉子節點外,其它都屬於分支結點。
- 內部結點:除了根節點和葉子結點外,其它都屬於內部結點。
- 父結點
- 子結點
- 兄弟結點
- 層次:如圖所示。
樹的遍歷
前序遍歷
訪問順序:先訪問根節點再訪問子結點。
如上圖的前序遍歷爲:1,2,5,6,7,3,4,8,9,10
後序遍歷
訪問順序:先訪問子結點再訪問跟結點
如上圖的後序遍歷爲:5,6,7,2,3,9,10,8,4,1
層次遍歷
訪問順序:從上往下,一層一層訪問
如上圖的層次遍歷爲:1,2,3,4,5,6,7,8,9,10
二叉樹
注意:二叉樹並不是一種特殊的樹,而是一種獨立的數據結構,有明確的左結點和右結點。 |
完全二叉樹的概念:
若設二叉樹的深度爲h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。
二叉樹的重要特性:
-
在二叉樹的第 i 層上最多有 2^(i-1) 個結點(i>=1)
-
深度爲 k 的二叉樹最多有 2^k - 1 個結點(k>=1)
-
對任何一顆二叉樹,如果其葉子結點數爲 n0,度爲 2 的結點數爲 n2,則 n0=n2+1
-
下圖中的運算符號爲向下取整。
二叉樹的遍歷
前序遍歷
- 先訪問根結點,接着訪問左結點,最後訪問右結點。
中序遍歷
- 先訪問左結點,接着訪問根結點,最後訪問右結點。
後序遍歷
- 先訪問左結點,結合訪問右結點,最後訪問根結點。
樹與二叉樹的轉換
- 加線:在兄弟之間加一連線
- 抹線:對每個結點,除了其左孩子外,去除其與其餘孩子之間的關係
- 旋轉:以樹的根結點爲軸心,將整樹順時針轉45°
注意:轉換後,樹和二叉樹的前序遍歷一樣。 |
二叉排序樹
左子樹的值小於根結點的值,右子樹的值大於根結點的值。
在常用的描述二叉排序樹的存儲結構中,關鍵字值最大的結點的右指針一定爲空。
最優二叉樹(哈弗曼樹)
- 需要了解的基本概念
樹的路徑長度:從根結點到某結點的邊數
權:人爲賦值
帶權路徑長度:權值乘於邊數
樹的帶權路徑長度:所有的葉子結點的帶權路徑長度相加
例子:由權值爲9,2,5,7的4個葉子結點構造一棵哈弗曼樹,該樹的帶權路徑長度爲(44)。
解析:
構造哈夫曼樹的方法是依次從提供的權值中(9,2,5,7)選取兩個權值最小(2,5)的最爲左右結點,組合成一個新的根節點(2+5=7)也要參與到第二次權值選擇中。也就是說,第二次要從(9,7,7)中選取兩個最小的權值。
最後生成的樹如下圖:
例子:若一顆哈夫曼樹共有9個頂點,則其葉子節點的個數爲(5)。
n0 = n2 +1
9 = n0 + n2
平衡二叉樹
基本概念
它或者是一顆空數,或者是一顆這樣的樹:樹中任一結點的左、右子樹的深度相差不超過1(即平衡查找樹的每個結點的平衡度只能爲 -1,0,1 三個值之一)。
平衡樹的建立
平衡樹調整
LL 型平衡旋轉(單向右旋平衡處理)
- 第一種情況:
- 第二種情況
RR 型平衡旋轉(單向左旋平衡處理)
LR 型平衡旋轉(雙向旋轉,先左後右)
RL 型平衡旋轉(雙向旋轉,先右後左)
圖
圖的構成
- 一個圖是由兩個集合:V和E組成,V是有限的非空頂點集合,E是用頂點對錶示的邊集合,圖G的頂點集和邊集分別記爲V(G)和E(G),而將圖G表示爲G=(V,E),也就是說,決定一個圖需要知道它的頂點集合與邊的集合。
無向圖與有向圖
- 區別於邊是否有箭頭。
假設A,B爲圖中的兩個頂點。
無向圖的邊表示方法:(A,B)
有向圖的邊表示方法:<A→B>、<B→A>
頂點的度(degree)
-
關聯頂點的邊數
-
有向圖:入度和出度
子圖
- 已知圖A和圖B,如果圖B中所有的頂點都是圖A中的頂點,圖B中的所有邊都是圖A中的邊,則圖B是圖A的子圖。允許兩種極端情況:什麼都不刪;刪去所有點和所有線
真子圖:同“子圖”概念一樣,但不允許什麼都不刪。
完全圖
無向圖,每對頂點之間都有一條邊相連,則稱該圖爲完全圖。
有向圖,每對頂點之間都有兩條有向邊相互連接,則稱該圖爲完全圖。
路徑和迴路
- 假設圖中的兩個頂點A和B,A到B之間經過的邊數稱爲路徑。從頂點A出現,最後又回到頂點A,所走過的邊組成的稱爲迴路。
連通圖和連通分量
無向圖:任何兩個頂點都有路徑到達的圖,稱爲連通圖。
有向圖:每兩個頂點之間都能夠有邊(此處的邊爲有向邊)到達的圖,稱爲連通圖。
連通分量:把連通圖給分割出來,每一部分都是該圖的連通分量。
鄰接矩陣
圖的遍歷
圖的最小生成樹
普里姆算法(Prim 算法)
先選取樹的第一個頂點(如圖點0),再判斷所選點到其它點的權值,如果的所選點無法直接到達的點,權值暫時標記爲無窮大,然後選取與點0的權值最小的點作爲樹的第二個頂點。然後再以第二個頂點爲基點,判斷與其它點的權值大小,循環以上得到第二個頂點的操作,直到生成了樹。
克魯斯卡算法
- 算法思想:依次選取權值最小的邊,只要不行成迴路即可。
拓撲排序
AOV 網絡
我們把用有向邊表示活動之間開始的先後關係。
這種有向圖稱爲用頂點表示活動網絡,簡稱AOV網絡。
拓撲順序
入度爲0先進行。
上圖的拓撲序列有:02143567,01243657,02143657,01243567
關鍵路徑
AOE 網絡
在AOV網絡中,如果邊上的權表示完成該活動所需的時間,則稱這樣的AOV爲AOE網絡。
關鍵路徑的幾個重要概念
關鍵路徑,就是從源點到終點,路徑長度最長的路徑。 |
排序算法
各類排序算法時間複雜度和空間複雜度的對比表
哈希算法(Hash)
什麼是 Hash 表
Hash 函數的構造方法
處理衝突方法
哈希表的查找
可以查考這個博客學習:https://www.cnblogs.com/zhangbing12304/p/7997980.html
查找算法
編譯原理
文法
終結符與非終結符
大寫字母爲非終結符
小寫字母爲終結符,不能單獨在左邊。
例子:
有文法G2[S]爲:
- S->Ap
- S->Bq
- A->a
- A->cA
- B->b
- B->dB
則 S,A,B爲非終結符,而p,q,a,b,c,d爲終結符。
-
VN 表示非終結符集合,即 VN = {S,A,B};
-
VT 表示終結符集合,即 VT = {p,q,a,b,c,d};
-
P 表示生成式,即上面給出的生成式(S->Ap等);
-
S 表示開始符。
文法的類型
0 型文法
設G=(VN,VT,P,S),如果它的每個產生式α→β是這樣一種結構:α∈( VN∪VT )且至少含有一個非終結符,而 β∈(VN∪VT),則G是一個0型文法。0型文法也稱短語文法。
一個非常重要的理論結果是:0型文法的能力相當於圖靈機(Turing)。或者說, 任何0型文語言都是遞歸可枚舉的,反之,遞歸可枚舉集必定是一個0型語言。
0型文法是這幾類文法中,限制最少的一個,所以我們在試題中見到的,至少是0型文 法。
1 型文法
1型文法也叫上下文有關文法,此文法對應於線性有界自動機。它是在0型文法的基礎上每一個α→β,都有 |β|>=|α|。這裏的|β|表示的是β的長度。
例如:
A->B,|α| = 1,而 |β| = 1;
A->Bba,|α| = 1,而 |β| = 3.
注意:雖然要求|β|>=|α|,但有一特例:α→ε也滿足1型文法。 如有 A->Ba 則 |β|=2,|α|=1符合1型文法要求。反之,如 aA->a,則不符合1型文法。 |
2 型文法
2型文法也叫上下文無關文法,它對應於下推自動機。2型文法是在1型文法的基礎上,再滿足:每一個 α→β 都有 α 是非終結符。如A->Ba,符合2型文法要求。
如 Ab->Bab 雖然符合1型文法要求,但不符合2型文法要求,因爲其α=Ab,而Ab不是一個非終結符。 |
3 型文法
3型文法也叫正規文法,它對應於有限狀態自動機。它是在2型文法的基礎上滿足:A→α|αB(右線性)或 A→α|Bα(左線性)。 α 代表的是非終結符,不一定要求字母相同。
特別注意:右線性和左線性,兩套規則不能同時存在。 |
如有:A->a,A->aB, B->a, B->cB,則符合3型文法的要求。
但如果推導 爲:A->ab, A->aB, B->a, B->cB
或推導 爲:A->a, A->Ba, B->a, B->cB則不符合3型方法的要求了。
解釋:
例子A->ab,A->aB,B->a,B->cB中的A->ab不符合3型文法的定義,如果把後面的ab,改成“一個非終結 符+一個終結符”的形式(即爲aB)就對了。
例子A->a,A->Ba,B->a,B->cB中如果把B->cB改爲 B->Bc的形式就對了,因爲A→α|αB(右線性)和A→α|Bα(左線性)兩套規則不能同時出現在一個語法中,只能完全滿足其中的一個,才能算 3型文法。
正規式(正則表達式)
正規式與正規文法之間的轉換:
*:代表的是大於等於0的數
有限自動機(有窮自動機)
確定的有限自動機(DFA)
附加解釋:
1.根據題目提供的狀態集合 {S,A,B,C,f} 畫出5個狀態
2.終態集合中只有一個元素 f ,把 f 畫成雙圈表示終態
3.K(S,0)= B,表示在S狀態,輸入 0 就能到達B狀態。
注意:DFA與NFA最大的區別就是,DFA只有一個確定的終態,NFA可以有多個終態。 |
不確定的有限自動機(NFA)
正規式與有限自動機之間的轉換
操作系統
進程
進程的三態圖
就緒狀態:進程已得到運行所需資源,只等待 CPU 的調度便可運行;
運行狀態:進程已得到運行所需資源,並且得到了 CPU 的調度;
等待狀態:不具備運行條件、等待時機的狀態。(等待狀態也稱爲阻塞狀態)
進程的五態圖(瞭解)
進程的死鎖
- 死鎖發生的必要條件:
互斥條件:即一個資源每次只能被一個進程使用。
保持和等待條件:有一個進程已獲得了一些資源,但因請求其他資源被阻塞時,對已獲得的資源保持不放。
不剝奪條件:有些系統資源是不可剝奪的,當某個進程已獲得這種資源後,系統不能強行收回,只能由進程使用完時自己釋放。
環路等待條件:若干個進程形成環形鏈,每個都佔用對方要申請的下一個資源。
- 解決死鎖的策略:
死鎖預防:例如:要求用戶申請資源時一起申請所需的全部資源,這就破壞了保持和等待條件;將資源分層,得到上一層資源後,才能夠申請下一層資源,它破壞了環路等待條件。預防通常會降低系統的效率。
死鎖避免:避免是指進程在每次申請資源時判斷這些操作是否安全,典型算法是“銀行家算法”。但這種算法會增加系統的開銷。
死鎖檢測:前兩者是事前措施,而死鎖的檢測則是判斷系統是否處於死鎖狀態,如果是,則執行死鎖解除策略。
死鎖解除:這是與死鎖檢測結合使用的,它使用的方式就是剝奪。即將資源強行分配給別的進程。
前趨圖
前趨圖是一個有向無循環圖,記爲 DAG ,用於描述進程之間執行的前後關係。圖中的每個結點可用於描述一個程序段或進程,乃至一條語句;結點間的有向邊則用於表示兩個結點之間存在的偏序或前趨關係“→”。
如果 Pi 必須在 Pj 之前完成,可寫成 Pi → Pj,稱 Pi 是 Pj 的直接前驅,而 Pj 是 Pi 的直接後繼。
把沒有前驅的結點,稱爲初始結點。
把沒有後繼的結點,稱爲終止結點。
PV 操作
臨界資源:諸進程間需要互斥方式對其進行共享的資源,如打印機、磁帶機等。
臨界區:每個進程中訪問臨界資源的那段代碼稱爲臨界區。
信號量:是一種特殊的變量。
P 操作:也稱爲 down()、wait()操作,使 S=S-1,若S<0,進程暫停執行,放入信號量的等待隊列。
V 操作:也稱爲 up()、signal()操作,使 S=S+1,若S<=0,喚醒等待隊列種的一個進程。
生產者與消費者問題
讀者與寫着問題
管程
概念:指關於共享資源的數據及在其上操作的一組過程或共享數據結構及其規定的所有操作。
PV操作缺點:
易讀性差、不利於修改和維護、正確性難以保證
在利用管程方法來解決生產者-消費者問題時,首先便是爲它們建立一個管程,並命名爲PC。包括兩個過程:
-
(1) put(item)過程。生產者利用該過程將自己生產的產品投放到緩衝池種,並用整型變量 count 來表示在緩衝池種已有的產量數目,當 count >= n 時,表示緩衝池已經滿了,生產者須等待。
-
(2) get(item)過程。消費者利用該過程從緩衝池種取出一個產品,當 count <= 0 時,表示緩衝池中已無可取用的產品,消費者應等待。
存儲
實存管理
存儲管理的任務是存儲空間的分配與回收。在現代操作系統中通常有的單一連續分配、固定分區分配、可變分區分配(動態分配法)三種分配方法。
虛存管理
頁式存儲組織
優點:利用率搞,產生的內存碎片小,內存間分配及管理簡單。
缺點:要有相應的硬件支持,增加了系統開銷;請求調頁的算法如選擇不當,有可能產生抖動現象。
解析:
已知頁面大小爲 4K ,因爲 4K = 2^12,所以頁內地址有12位。將邏輯地址8644(10)轉成二進制,10 0001 1100 0100(2),其中的低12位爲頁內偏移量,最高兩位(10)則爲頁號,所以邏輯地址8644的頁號爲10(2),即十進制的2,所以從上圖表格可以得到物理塊號爲8,即二進制的1000。把物理塊號和頁內偏移地址拼合得 1000 0001 1100 0100,化爲十進制得33220。
段式存儲組織
優點:便於多道程序共享內存,便於對存儲器的保護,各段程序修改互不影響。
缺點:內存利用率低,內存碎片浪費大。
段頁式存儲組織
分段之後,在每段中進行分頁。
優點:空間浪費小、存儲共享容易、存儲保護容易、能動態連接。
缺點:由於管理軟件的增加,複雜性和開銷也隨之增加,需要的硬件以及佔用的內容也有所增加,使得執行速度大大下降。
在段頁式管理的存儲器中,實存等分爲頁、程序按邏輯模塊分成段。
在多道程序環境下,每道程序還需要一個基號作爲用戶標誌號。
每道程序都有對應的一個段表和一組頁表。一個邏輯地址包括基號x、段號s、頁號p和頁內地址d四個部分。
頁面置換算法
-
最優算法(OPT)
-
先進先出算法(FIFO):保留最近需要使用的頁面
-
最近最少使用算法(LRU):淘汰最長時間沒有被訪問的頁面
沒有進行頁面置換的,不算入缺頁次數,但剛剛開始的3次需要算入。
局部性原理
時間局部性:被引用過一次的存儲器位置在未來會被多次引用(通常在循環中)。
空間局部性:如果一個存儲器的位置被引用,那麼將來他附近的位置也會被引用。
作業管理
作業右三部分構成,即程序、數據和作業說明書,它是用戶在完成一項任務過程中要求計算機系統所做工作的集合。作業的狀態有後備狀態、運行狀態和完成狀態三種。
等待時間 = 開始時間 - 提交時間
週轉時間 = 完成時間 - 提交時間
最短作業優先調度算法
優先數調度算法
先來先服務調度算法
時間片輪轉算法
每個任務輪流執行一個時間片,時間片結束時,不管任務是否完成都要先暫停任務。
帶權作業週轉時間
單個作業的帶全週轉時間:作業的週轉時間 ➗ 作業的實際運行時間
作業平均帶權週轉時間:所有單個作業的帶權週轉時間相加 ➗ 作業個數
最高響應比有線算法
比較難,需自行查閱資料學習。
文件管理
文件目錄
一級目錄結構(不允許存在相同名字的文件)
二級目錄結構(允許存在相同名字的文件)
樹形目錄結構(注意絕對路徑和相對路徑)
Spooling技術
舉例:平時在打印店打印的時候,在打印機打印的過程中,多臺電腦可以同時繼續提交打印任務,這時打印機也不會說出什麼問題,因爲電腦提交的打印任務是放到了打印機的緩存區,然後打印機會根據提交的順序打印。這就是利用到了 Spooling 技術。
系統開發與軟件工程
軟件開發生命週期模型
瀑布模型
瀑布模型是一種理想化的開發模型,瀑布模型要求有明確的需求分析,而要達到這一點在現實開發中幾乎不可能。與其最相適應的軟件開發方法是結構化方法。
原型法
原型法的最大特點就是它採用了一種動態定義需求的方法。這樣,優勢也就提現出來了,即不需要有明確的需求。
螺旋模型
螺旋模型結合了瀑布模型和演化模型的優點,最主要的特點在於加入了風險分析。它是由制定計劃、風險分析、實施工程、客戶評估這一循環組成的,它最初從概念項目開始第一個螺旋。
噴泉模型
噴泉模型主要用於描述面向對象的開發過程,最核心的特點是迭代(有重複部分)。所有的開發活動沒有明顯的邊界,允許各種開發活動交叉進行。
項目管理基礎
軟件項目管理的內容
軟件項目管理的核心問題(鐵三角):成本、質量、進度
軟件項目管理的主要活動:
- 啓動軟件項目
- 度量
- 估算
- 風險分析
- 進度安排
- 追蹤和控制
軟件項目管理的三個階段:
- 項目啓動階段(項目立項、可行性分析、項目的初步計劃)
- 項目實施階段(制定計劃、執行計劃、監控進度、根據實際情況進行計劃調整、關注需求變更)
- 項目關閉階段
軟件項目估算
自頂向下估算法
優點:耗費時間少
這種方式的一種通常採用的方法,但其並不能夠有效地解決項目估算的問題,經常容易使得估算值與實際值產生很大的差異。比較適合估算系統級別的。
自底向上估算法
這種方式通常能夠得到較爲客觀的、可操作的估算結果,而且還能夠使得項目組成員主動地參與,並且通常能夠對自己所做的承諾權利守信,從而爲項目樹立了一個良好的文化。
軟件規模估算
LOC 估算法
也就是估算軟件的代碼行數,通常使用 KLOC(千行代碼)爲單位
FP 估算法
FP(功能點)是一種衡量工作量大小的單位,它的計算方法是:功能點 = 信息處理規模 X 技術複雜度,其中,技術複雜度 = 0.65 + 調節因子
- 信息處理規模
- 技術複雜度(取值0~0.05之間)
軟件工作量估算
- IBM 模型
- 普特南模型
- COCOMO 模型
軟件成本估算
常用的估算輔助方法
Delphi 法,專家判定技術
Standard-component 方法
軟件項目組織與計劃
- 項目計劃包括:項目組計劃和個人項目計劃
- 計劃的編制,應該包括兩個重要的圖標:人員職責矩陣和甘特圖
- 已獲值分析(EVA) 是最常用的項目進度監控方法。
Gannt 圖
特點:
- 使用水平線段表示任務的工作階段
- 線段的起點和終點分別對應着任務的開工時間和完成時間
- 線段的長度表示完成任務所需的時間
優點:
- 標明瞭各任務的計劃進度和當前進度,能動態地反映項目進展
缺點:
- 難以反映多個任務之間存在的複雜邏輯關係
PERT 技術和 CPM 方法
PERT 技術叫做計劃評審技術,CPM 方法叫做關鍵路徑法。
它們都是安排開發進度,指定軟件開發計劃的常用的方法。它們都採用網絡圖來描述一個項目的任務網絡,也就是從一個項目的開始到結束,把應當完成的任務用圖或表的形勢表示出來。
配置管理
軟件配置管理的任務包括:
- 制定配置管理計劃
- 實施變更管理
- 實施版本管理
- 發行管理
實現變更管理需要藉助於配置數據庫和基線。
配置數據庫可以分爲:開發哭、受控庫、產品庫。
基線:是指軟件生命週期各開發階段末尾的特定點,也稱爲里程碑。
版本管理:是指對系統不同版本進行標識和跟蹤的過程。
風險管理
風險管理通常包括三個主要活動:
風險識別
風險估計
風險駕馭
軟件測試與維護
數據庫
ER 模型
基本概念
實體(Entity):是指客觀存在可以相互區別的事物。實體可以是具體的對象,如:一輛汽車等;也可以是抽象的事件,如:一次借書等。實體型用矩形表示。
屬性(Attribute):實體有很多特性,每一個特性稱爲屬性。每個屬性有一個值域,其類型可以是整數型、實數型、字符串型。屬性用橢圓形表示。
聯繫(Relationship):
1:1聯繫:如果實體集 E1 中的每個實體最多隻能和實體集 E2 中的一個實體有聯繫,反之亦然,那麼實體集 E1 對 E2 的聯繫稱爲“一對一聯繫”。
1:N聯繫:如果實體集 E1 中的每個實體與實體集 E2 中任意個(零個或多個)實體有聯繫,而 E2 中每個實體至多和 E1 中的一個實體有聯繫,那麼實體集 E1 對 E2 的聯繫稱爲“一對多聯繫”。
M:N聯繫:如果實體集 E1 中的每個實體與實體集 E2 中任意個(零個或多個)實體有聯繫,反之亦然,那麼實體集 E1 對 E2 的聯繫稱爲“多對多聯繫”。
ER 模型轉換成關係模式的規則
-
一個實體型轉換爲一個關係模式,實體的屬性就是關係的屬性,實體的碼就是關係的碼。
-
一個1:1聯繫可以轉換爲一個獨立的關係模式,也可以與任意一端對應的關係模式合併。 如果轉換爲一個獨立的關係模式,則與該聯繫相連的各實體的碼以及聯繫本身的屬性均轉換爲關係的屬性, 每個實體的碼均是該關係的候選碼。 如果與某一端實體對應的關係模式合併,則需要在該關係模式的屬性中加入另一個關係模式的碼和聯繫本身的屬性。
-
一個1:n聯繫可以轉換爲一個獨立的關係模式,也可以與n端對應的關係模式合併。 如果轉換爲一個獨立的關係模式,則與該聯繫相連的各實體的碼以及聯繫體本身的屬性均轉換爲關係的屬性,而關係的碼爲n端實體的碼。
-
一個m:n聯繫轉換爲一個關係模式。 與該聯繫相連的各實體的碼以及聯繫本身的屬性均轉換爲關係的屬性,而關係的碼爲各實體碼的組合。
-
三個或三個以上實體間的以上多元聯繫可以轉換爲一個關係模式。 與該多元聯繫相連的各實體的碼以及聯繫本身的屬性均轉換爲關係的屬性。 而關係的碼爲各實體碼的組合。
鍵(碼)、函數依賴及範式
概念理解
超鍵:在關係模式中,能唯一標識元組的屬性集稱爲超鍵。
候選鍵:在關係模式中,能唯一標示元組並且不含多餘屬性的屬性集成爲候選鍵。值得注意的是,超鍵與候選鍵是有區別的,超鍵可能含有多餘屬性,而候選鍵不能。
主鍵:在一個關係的若干個候選鍵中隨意指定一個作爲關鍵字,則此關鍵字就是主鍵。
外鍵:如果關係模式R1中的某屬性集不是R1的候選鍵,而是關係模式R2的候選鍵,則這個屬性集對模式R1而言是外鍵。注意,這不是對於R2而言的。
主屬性:候選碼中的諸屬性稱爲主屬性。
例題:
請指出關係模式: 成績(學號,姓名,課程號,成績)的主屬性和非主屬性注:學生無同名.
候選鍵:(學號,課程號)、(姓名,課程號)
主屬性:學號,姓名,課程號
函數依賴
函數依賴:設R(U)是屬性集U上的關係模式,X,Y是U的子集 若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等,則稱X函數確定Y或Y函數依賴於X,記作X→Y。
三個基本定義:
範式
-
第一範式(1NF):在關係模式 R 中,當且僅當所有域只包含原子值,即每個分量都是不可再分的數據項,則稱實體 E 是第一範式。
-
第二範式(2NF):當且僅當實體 E 是第一範式,且每一個非鍵屬性完全依賴主鍵時,則稱實體 E 是第二範式。(存在數據冗餘等問題,可以每個非鍵屬性給單獨拆分到一個關係模式裏)
-
第三範式(3NF):當且僅當實體 E 是第二範式,且 E 中沒有非主屬性傳遞依賴於碼時,則稱實體 E 是第三範式。(消除傳遞函數依賴)
無損聯接分解
有損:不能還原
無損:可以還原
無損聯接分解:所謂無損聯接分解是指將一個關係模式分解成若干個關係模式後,通過自然聯接和投影等運算仍能還原到原來的關係模式,則稱這種分解爲無損聯接分解。
關係代數及元組演算
關係代數的基本運算
關係代數的五種基本運算並、差、笛卡爾積、選擇和投影。
並(Union,用符號U表示)
計算兩個表在集合理論上的聯合。 給出表R和S(兩者有相同元/列數),RUS的聯合就是所有在R裏面有,或S裏面有,或在兩個表裏面都有的記錄集合。
差(Difference,用符號-表示)
計算兩個表的區別的集合。 令R和S是擁有相同元/列的表。 R-S是在R裏面卻不在S裏面的記錄的集合。
笛卡爾積(PRODUCT,用符號x表示)
計算兩個關係的笛卡爾乘積。令R爲有K1元的表,令S爲有K2元的表。RxS是所有k1+K2元記錄的集合,其前k1個元素來自R裏的一條記錄,而後K2個元素來自S裏的一條記錄。(可以簡單理解爲字段的拼接)
投影(Project,用符號π表示)
從一個關係裏面抽取指明的屬性(列)。 令R爲一個包含一個屬性X的關係。 πX®= { t(X) | t ∈ R },這裏t(X)表示記錄裏的屬性X的值。
選擇(Select,用符號 σ 表示)
從關係裏面抽取出滿足給定限制條件的記錄。
令R爲一個表,包含一個屬性A。 σ A= a® ={ t ∈ R| t(A) = a }這裏表示R的一條記錄,而 t(A)表示記錄 t 的屬性A的值。
交(Intersection,用符號∩表示)
計算兩個表集合理論上的交集。給出表R和S,R∩S是同時在R和S裏面的記錄的集合。我們同樣要求R和S擁有相同的元/列數。
聯接(Join,用符號⋈表示)
通過共同屬性聯接兩個表。令R爲一個有屬性A,B,C的表,令S爲一個有屬性C,D,E的表。兩個表有一個共同的屬性C。
除(Division,用符號➗表示)
設有關係R(X,Y)與關係S(Z),其中,X,Y,Z爲屬性集合。假設Y和Z具有相同的屬性個數,且對應屬性出自相同域。關係R(X,Y)➗S(Z)所得的商關係是關係R在屬性X上投影的一個子集,該子集和S(Z)的笛卡爾積必須包含在R(X,Y)中,記爲R➗S。
元組演算
SQL語言
SQL是結構化查詢語言。
SQL的基本功能:
1.數據定義(Data Definition):可以簡便地建立數據庫和表的結構。
2.數據管理(Data Management):可以實現表中數據的輸入,修改、刪除和更新。
3.數據查詢(Data Query):可以對數據庫中的內容進行查詢。
SQL的特點:
1.SQL語言簡潔,易學易用。 完成核心操作只需要9個動詞。
2.有十分靈活和強大的查詢功能。用一條SQL命令就能完成相當複雜的查詢操作。
3.功能豐富。SQL雖然名爲查詢語言,但實際上具有數據定義、數據查詢、更新和數據控制等多種功能。
4.SQL是一種高度非過程化的語言。用戶只需要指出"做什麼",而不需指明"怎麼做”。
基本表的創建
例:建立一個"學生"表Student,由學號Sno,姓名Sname性別Ssex,年齡Sage、所在系Sdept五個屬性組成。 其中學號不能爲空,值是唯一的,並且姓名取值也唯一。
CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE,/*列級完整性約束條件,Sno取值唯一,不允許爲空*/
Sname CHAR(20)UNIQUE,
Ssex CHAR(1),
Sage INT,
Sdept CHAR(15),
PRIMARY KEY(Sno);
);
/*使用CREATE語句創建學生_課程表*/
CREATE TABLE SC
(Sno CHAR(5)UNIQUE,
Cno CHAR(5)UNIQUE,
GRADE SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno)PEFERENCES S(Sno),FOREIGN KEY(Cno)PEFERENCES C(Cno),
CHECK((GRADE IS NULL)OR(GRADE IS BETWEEN O AND 100))
);
基本表的修改
新增列
- 向 Student 表增加 “入學時間" 列,其數據類型爲日期型。
ALTER TABLE Student ADD Scome DATE;
- 不論基本表中是否已有數據,新增加的列一律爲空值。
修改數據類型
- 將年齡的數據類型改爲短字長整數。
ALTER TABLE Student MODIFY Sage SMALLINT;
刪除約束
- 刪除學生姓名必須取唯一值的約束。
ALTER TABLE Student DROP UNIQUE(Sname);
基本表的撤銷
刪除表
DROP TABLE STUDENT;
基本表定義一旦被刪除,表中的數據、在表上建立的索引和視圖都將自動的被刪除掉。
視圖的創建
- 例:建立信息系學生的視圖。
CREATE VIEW S_Student
AS SELECT Sho, Sname, Sage
FROM Student
WHERE Sdept='IS';
本例中省略了視圖 S_Student 的列名,由子查詢中SELECT子句中的三個列名組成。
- 例:建立信息系學生的視圖,並要求進行修改和插入操作時仍需保證該視圖只有信息系的學生。
CREATE VIEW S_Student
AS SELECT Sno, Sname, Sage
FROM Student
WHERE Sdept='IS';
WITH CHECK OPTION;
-
視圖不僅可以建立在一個基本表上,也可以建立在多個基本表上。
-
例:建立信息系選修1號課程的學生視圖。
CREATE VIEW S_S1
AS SELECT Student Sno, Sname, Grad
FROM Student, SC
WHERE Dept='IS' AND Student.Sno=SC.Sno AND SC.Cno='1'
-
視圖不僅可以建立在一個或多基本表上,也可以建立在一個或多個已定義好的視圖上,或建立在基本表與視圖上。
-
例:建立信息系選修1號課程且成績在90分以上的學生視圖。
CREATE VIEW S_S2
AS SELECT Sno, Sname, Grade
FROM S_S1
WHERE Grade≥90
視圖的刪除
刪除語句的格式爲:
DROP VIEW〈視圖名〉
視圖刪除後視圖的定義將從數據字典中刪除,所以刪除一個視圖時要將由該視圖導出的其它視圖一一刪除,否則用戶使用時會出錯。
索引的創建
建立索引有利於加快查詢速度。用戶可以根據應用環境的需要,在基本表上建立一個或多個索引,以提供多種存取路徑,加快查找速度。
- 例:爲學生-課程數據庫中的 STUDENT、 COUSE、SC三個表建立索引。其中STUDENT表按學號升序建立唯一索引, COUSE表按課程號升序建立唯一索引,SC表按學號升序和課程號降序建立唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Couse(Cno);
CREATE UNIQUE INDEX Scno on SC(Sno ASC, Cno DESC);
索引的刪除
DROP INDEX <索引名>
數據查詢
比較常用的查詢語句不特別列出。
自定義輸出列名
SELECT Sname NAME、'Year of Birth' BIRTH、2006-Sage BIRTHDAY、
ISLOWER(Sdept) DEPARTMENT
FROM Student;
DISTINCT(distinct) 的作用:消除重複行
如果査詢結果包含許多重複的行,要去掉重複行,必須指定 DISTINCT短語
SELECT DISTINCT Sno
FROM SC;
確定範圍
例:查詢年齡在20~30歲包括20歲和30歲)之間的學生的姓名和年齡。
SELECT Sname, Sage
FROM Student
WHERE Sage BETWEEN 20 AND 30;
例:查詢年齡不在20~30歲之間的學生姓名和年齡。
SELECT Sname, Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 30;
確定集合
IN ('IS','SS','CS')
NOT IN ('IS','SS','CS')
字符匹配(LIKE)
%(百分號):代表任意長度(長度可爲0)的字符串。例如,a%b表示以a開頭,以b結尾的任意長度的字符串。
_(下橫線):代表任意單個字符。例如,a_b代表以a開頭,b結尾的長度爲3的字符串。
- 如果用戶要查詢的字符串本身就含有%或,這時就可以使用 ESCAPE ‘<換碼字符>’ 短語對通配符進行轉義。
ESCAPE '\' 短語表示 '\'爲換碼字符,這樣匹配串中緊跟在\後面的字符"_"不再具有通配符的含義,轉義爲'_'字符。
例:查詢DB_ Design課程的課程號和學分。
SELECT Cno, Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE '\'
例:查詢以"DR"開頭,且倒數第3個字符爲的課程的詳細情況
SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i__' ESCAPE '\'
注意:在例20中匹配串DB\%’,只有第一個前面有換碼字符,其它的均沒有,所以只有第一個被轉義稱字符“",其它均爲通配符
涉及空值的查詢
例:某些學生選修課程後沒參加考試,所以有選課記錄,沒有成績。查詢缺少成績的學生的學號和相應課程號。
SELECT Sno, Cno
FROM SC
WHERE Grade is NULL;
- 這裏的s不能用“=”號取代。
例:查詢所有有成績的學生學號和課程號。
SELECT Sno, Cno
FROM SC
WHERE Grade is NOT NULL
對查詢結果排序
用戶可以用 ORDER BY子句對查詢結果按照一個或多個屬性列的升序(ASC)或降序(DESC)排列,缺省值爲升序。 |
例:査詢選修了3號課程的學生的學號及其成績,査詢結果按分數的降序排列。
SELECT Sno, Grade
FROM SC
WHERE Cno=3
oRDER BY Grade DESC;
對於空值按升序排列,含空值的元組將最後顯示。若按降序排列,空值的元組將最先顯示。
使用集函數
COUNT() 統計元組個數
SUM() 計算總和
AVG() 計算平均值
MAX() 求一列值中的最大值
MIN() 求一列值中的最小值
例:查詢學生總人數。
SELECT COUNT(*)
FROM Student;
例:査詢選修了課程的學生總人數。
SELECT COUNT(DISTINCT Sno)
FROM SC;
分組
GROUP BY子句將査詢結果表按某一列或多列值分組,值相等的爲一組。對查詢結果分組的目的是爲了細化集函數的作用對象。
例:求各個課程號及其相應的選課人數
SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno;
該語句對查詢結果按Cno值分組,所有具有相同Cno值的元組爲一組,然後對每一組使用集函數 COUNT計算。
如果分組後還要按一定的條件對這些組進行篩選,最終只輸出滿足指定條件的組則可以用 HAVING短語指定篩選。
例:査詢選修了3門以上課程的學生學號。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;
帶有 ANY 或 ALL 謂詞的子查詢
子査詢返回單值時可以用比較運算符,而使用ANY或ALL謂詞時必須同時使用比較運算符。其一般格式爲:
-
比較運算符ANY:表示在子査詢中滿足比較運算符的某個值。
-
比較運算符ALL:表示在子査詢中滿足比較運算符的所有值。
例:査詢其它系中比信息系某一學生年齡小的學生姓名和年齡
SELECT Sname, Sage
FROM Student
WHERE Sage<ANY(SELECT Sage
FORM Student
WHERE Sdept='IS')
AND Sdept<>'IS'
計算機組成原理與系統結構
流水線
流水線概念
流水線是指在程序執行時多條指令重疊進行操作的一和準並行處理實現技術。各種部件同時處理是針對不同指令而言的,它們可同時爲多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度。
流水線指令運行時間的計算
例:若指令流水線把一條指令分爲取指、分析和執行三部分,且三部分的時間分別是 t(取指)=2ns,t(分析)=2ns,t(執行)=1ns,則100條指令全部執行完畢需()ns。
計算:(2+2+1)+(100-1)x2=5+198=203
注意:如果考試中,按公式計算選不出答案,得換一種方式算,即以運行時間最長的爲基準,把每部分的時間都看成一樣的來運算。
流水線的吞吐率
指在單位時間內流水線所完成的任務數量或輸出的結果數量。
公式:指令總條數/總時間,如上例題計算吞吐率:100/203
流水線的加速比
完成同樣一批任務,不使用流水線所用的時間與使用流水線所用的時間之比稱爲流水線的加速比。
可能產生的最大加速比爲4。
流水線的效率
效率 = 吞吐量x △t
效率 = 加速比/k,k爲流水線分的級別
高速緩衝存儲器
Cache的概念
CPU內部對通用寄存器的存取操作是速度最快的,不是 Cache。
★ Cache的功能:提高CPU數據輸入輸出的速率,調和CPU速度與內存存取速度之間巨大的差異。
★在計算機的存儲系統體系中, Cache是訪問速度最快的層次。
★使用 Cache改善系統性能的依據是程序的局部性原理。
命中率
如果以 h 代表對 Cache的訪問命中率,t1 表示 Cache的週期時間,t2 表示主存儲器週期時間,以讀操作爲例,使用“ Cache+主存儲器”的系統的平均週期爲 t3 ,則
其中,(1-h)又稱爲失效率(未命中率)。
求出系統的平均週期越短的速度越快。
下面的真題,A~C 選項實際上就是要求出系統的平均週期再進行比較(P爲命中率)。
而D,E選項,要求最接近,即 A的平均週期-B的平均週期 的絕對值最小,因此我們可以直接令 A的平均週期-B的平均週期=0 進行計算。
Cache 的讀寫過程
★寫直達:當要寫 Cache時,數據同時寫回主存儲器,有時也稱爲寫通。
★寫回:CPU修改 Cache 的某一行後,相應的數據並不立即寫人主存儲器單元。而是當該行被從 Cache 中淘汰時,才把數據寫回到主存儲器中。
★標記法:對 Cache 中的每一個數據設置一個有效位。
地址映像
★常見的映像方法有直接映像、相聯映像和組相聯映像。
★地址映像是將主存與 Cache的存儲空間劃分爲若干大小相同的頁(或稱爲塊)。例如某機的主存容量爲1GB,劃分爲2048頁,每頁512KB; Cache容量爲8MB,劃分爲16頁,每頁512KB。
直接映像(分區)
全相聯映像(分組)(塊衝突概率低,Cache 空間利用率高)
組相聯映像(先分區再分組)
內存編址方法
1個字節 = 8位
1字 = 64位或32位(具體看計算機系統是哪一種)
編址
3位地址能夠有8個空間。(2^3 = 8)
芯片的拼接
16*4位的芯片(空間數X數據位),即地址線爲4(2^4=16),數據線爲4。
存儲相關計算問題
計磁數 = (外半徑 - 內半徑) X 道密度 X 記錄面數
注意:硬盤的第一面與最後一面是保護用的,要減掉。如4個雙面的盤片的記錄面數是4x2-2=6。
非格式化容量位密度ⅹ最內圈直徑ⅹ總磁道數
注意:位密度是每道不同的,但每道的容量是相同的。0道是最外面的磁道,其位密度最小。
格式化容量每道扇區數ⅹ扇區容量總磁道數
平均數據傳輸速率每道扇區數ⅹ扇區容量ⅹ盤片轉數
存取時間尋道時間等待時間
注意:尋道時間是指磁頭移動到磁道所需的時間;等待時間爲等待讀寫的扇區轉到磁頭下方所用的時間。
數制
進制轉換
十進制轉其他進制:短除法
其他進制轉十進制:如(111)2轉十進制,爲1 X 2^2 + 1 X 2^1 + 1X2^0 = 7(10)
定點整數:原碼
將最高位用做符號位(0表示正數,1表示負數),其餘各位代表數值本身的絕對值的表示形式。
例如:
X = +0110,則 [X]原 = 0 0110;
X = -0110,則 [X]原 = 1 0110;
定點小數:原碼
定點小數的小數點是固定在最高位和次高位之間,定點整數的小數點是固定在最低位後面。
例如:
X = +0.1011,則 [X]原 = 0 1011;
X = -0.1011,則 [X]原 = 1 1011;
定點整數:反碼
正數的反碼與原碼相同。負數的反碼符號位爲1,其餘各位爲該數絕對值的原碼按位取反。這個取反的過程使得這種編碼稱爲“反碼”。
例如:
X = +0110,則 [X]原 = 0 0110;
X = -0110,則 [X]原 = 1 1001;
定點小數:反碼
例如:
X = +0.1011,則 [X]原 = 0 1011;
X = -0.1011,則 [X]原 = 1 0100;
定點整數:補碼
正數的補碼與原碼相同。負數的補碼是該數的反碼加1,這個加1就是“補”。
例如:
X = +0110,則 [X]原 = 0 0110;
X = -0110,則 [X]原 = 1 1010;
定點小數:補碼
例如:
X = +0.1011,則 [X]原 = 0 1011;
X = -0.1011,則 [X]原 = 1 0101;
例:用定點補碼錶示純小數,採用8位字長。編碼1000 0000表示的十進制數是(-1)
[X]補 = 1000 0000,帶入公式可求出爲 -1 。
移碼
求移碼,只需要把補碼的符號位進行取反即可得到。
例如:
X = +1011,[X]移= 1 1011,符號位1表示正號;
X = -1011,[X]移= 0 0101,符號位“0表示負號。
注意:移碼只用於表示浮點數的階碼,所以只用於整數。
8位二進制原碼的表示範圍:-127~+127(有+0和-0) |
8位二進制反碼的表示範圍:-127~+127(有+0和-0) |
8位二進制補碼的表示範圍:-128~+127(只有一個0) |
校驗碼
循環校驗碼 CRC
模二除法
海明校驗碼
計算機的分類
Flynn 分類法
單指令流單數據流(SISD)
單指令流多數據流(SIMD)
多指令流單數據流(MISD)
多指令流多數據流(MIMD)
網絡基礎
網絡的相關基礎概念
網絡的功能
- 數據通信
- 資源共享
- 負載均衡
- 高可靠性
網絡的分類
廣域網(LAN)
城域網(MAN)
局域網(LAN):以共享網絡資源爲目的,分佈距離10米~1000米
網絡的拓撲結構
總線型拓撲結構:採用單根傳輸線作爲公共的傳輸通道(CSMA/CD)
優點 :擴充性能好,可靠性高,廉價,安裝方便
缺點:負載重時,線路的利用率低
樹型拓撲結構:樹根接受個站點發送的數據,然後再廣播發送到全網
特性與總線型網路一樣。
星型拓撲結構:以中央結點爲中心與各結點連接而組成的
優點:維護方便,網絡延遲時間短
缺點:線路利用率低,中央單元負荷重
環型拓撲結構:各結點通過環路接口連在一條首尾相連的閉合環形通路
優點:路徑控制簡單,可靠性高
缺點:擴充性差,傳輸效率低,響應速度慢
網狀拓撲結構(分佈式結構)
OSI 模型
- 應用層(直接和用戶程序交互的一層)
- 表示層(對通信雙方之間傳輸的數據做進一步的轉換處理,以達到提高通信系統的通信效率和安全性等目的,如數據的加密/解密等)
- 會話層(會話的同步管理、會話的活動管理等)
- 傳輸層(提供無連接或面向連接的服務爲基礎,爲雙方的通信進程之間建立直接的端到端的數據傳輸通道)
- 網絡層(路由,IP 地址)
- 數據鏈路層(把來自網絡層的數據包按本層協議規定格式打包成數據幀,通過數據鏈路把幀從一個結點傳輸到相鄰的某個結點)
- 物理層(實現通信雙方之間的非結構化二進制比特流(物理服務數據單元)的傳輸)
通信子網:物理層、數據鏈路層、網絡層
資源子網:會話層、表示層、應用層
常見設備在 OSI 模型中所處層次:
OSI 中的信息流向
TCP/IP 協議族
- 應用層(各種應用層協議):爲用戶接口提供服務,如用於文件傳輸的FTP協議、HTTP協議、用於電子郵件的SMTP和POP3協議
- 傳輸層(TCP或UDP):TCP面向連接,可靠的傳輸服務。UDP相反。
- 網際層(IP):點到點的數據傳輸服務。數據傳送的過程中能夠選擇合適的路由和結點。IP、ICMP、ARP和RARP等。
- 網絡接口層
常用協議
ARP協議:將 IP 地址轉成 MAC 地址。
常用端口知識
(1) 公共服務保留端口( Well known Ports):從0到1023
- 例如:
- 20是FTP的默認數據端口
- 21是FTP的默認控制口
- SMTP的默認端口是25
- 80端口是HTTP通訊端口
- POP3的默認端口是110
- 119 NNTP news新聞組傳輸協議
(2) 註冊端口( Registered Ports):從1024到49151。
(3) 動態和或私有端口( Dynamic andlor Private Ports):從49152到65535。
ED|FAcT( EDI for Administration, Commerce and Transport)是多行業(行政、商業和運輸)電子數據互換標準。
HDLc(High- evel Data Link Contro)是高級數據鏈路控制。
IP 地址的分類及子網的劃分
IP 地址的分類
子網掩碼的概念及子網劃分
子網掩碼的長度與形式都與|P地址一致
子網掩碼的提出,是爲了區分|P地址中的網絡號和主機號。
子網的劃分:
傳輸介質
常用網絡應用
WWW——萬維網
在WWW中,依賴於標準化的統一資源定位器URL( uniformresource locator)地址來定位信息的內容。在進行頁面訪問時採用超文本傳送協議HTTP(hypertexttransferprotocol),其服務端口就是HTTP服務端口(80端口)。首先,瀏覽器軟件與HTTP端口建立一個TCP連接,然後發送GET命令,Web服務器根據命令取出文檔,發送給瀏覽器;瀏覽器釋放連接,顯示文檔。
E-Mail——電子郵件
電子郵件是現在數據量、使用量最大的一個互聯網應用,它用來完成人際之間的消息通信。與它相關的有以下三個協議:
- SMTP:簡單郵件傳送協議,用於郵件的發送,工作在25號端口上
- POP3:郵局協議V3.0,用於接收郵件,工作在110號端口上
- IMAP:郵件訪問協議,是用於替代POP3協議的新協議,工作在143號端口上。
DNS——域名解析協議
網絡用戶希望用有意義的名字來標識主機,而不是|P地址。爲了解決這個需求,應運而生了一個域名服務系統DNS(工作在53號端口)。它是運行在TCP協議之上,負責將域名轉換成實際相對應的P地址,從而在不改變底層協議的尋址方法的基礎上,爲使用者提供一個直接使用符號名來確定主機的平臺。
DNS是一個分層命名系統,名字由若干個標號組成,標號之前用圓點分隔。最右邊的是主域名,最左邊的是主機名,中間的是子域名。例如:xinu.Cs. purdue. edu中,Ⅺnu是主機名、cs、 purdue是子域名(分別代表計算機系、普渡大學)、edu是主域名。可以看出一個域名可以由幾個段組成,那麼它們是怎樣被賦值的呢?它是由國際域名管理機構lnη terNi來制。
FTP——文件傳輸協議
FTP的傳輸模式包括:Bin(二進制)和AsC(文本文件)兩種,除了文本文件之外,都應該使用二進制模式傳輸。
FTP應用的連接模式:在客戶機和服務器之間需建立兩條TCP連接,條是用於傳送控制信息(21端口),一條則是用於傳送文件內容(20端口)。
匿名FTP的用戶名爲 anonymous。
安全性、可靠性及系統性能評價
系統可靠性
數據安全與保密
對稱加密技術
對此加密技術:是 指加密系統的加密密鑰和解密密碼相同。或者雖然不同,但從其中的任意一個可以很容易地推導出另一個。
常見對稱密鑰加密算法
DES(數據加密標準算法):DES主要採用替換和移位的方法加密。它用56位(64位密鑰只有56位有效密鑰)密鑰對64位二進制數據塊進行加密,每次加密可對64位的輸入數據進行16輪編碼,經一系列替換和移位後,輸入的64位原始數據轉換成完全不同的64位輸出數據。
優點:加密速度快,密鑰產生容易。
3DES(三重DES):在DES的基礎上採用三重DES,即用兩個56位的密鑰K1、K2,發送方用K1加密,K2解密,再使用K1加密。接收方則使用K1解密,K2加密,再使用K1解密,其效果相當於將密鑰長度加倍。
RC-5(Rivest cipher 5)RC5是由 Ron rivest(公鑰算法的創始人之一)在1994年開發出來的。RC5是在RCF2040中定義的,RSA數據安全公司的很多產品都使用了RC-5。
IDEA算法:其明文和密文都是64位,密鑰長度爲128位。它比DES的加密性好,而且對計算機功能要求也沒有那麼高。DEA加密標準由PGP( PrettyGood Privacy)系統使用。
非對稱加密技術
RSA 算法
信息摘要
信息摘要算法實際上就是一個單向散列函數。數據塊經過單向散列函數得到一個固定長度的散列值,攻擊者不可能通過散列值而編造數據塊,使得編造的數據塊的散列值和原數據塊的散列值相同。
常用的消息摘要算法有MD5,SHA等,市場上廣泛使用的MD5,SHA算法的散列值分別爲 128 和 160 位,由於SHA通常採用的密鑰長度較長,因此安全性高於MD5。
數字簽名
在書面文件上簽名是確認文件的一種手段,其作用有兩點:
第一,因爲自己的簽名難以認,從而確認了文件已簽署這一事實
第二,因爲簽名不易仿冒,從而確定了文件是真的這一手實。
數字時間戳技術
數字時間戳技術是數字簽名一種變種的應用。
在電子商務交易文件中,時間是十分重要的信息。數字時間戳服務 Digital TimeStamp Service,DTS)是網上電子商務安全服務項目之一,能提供電子文件的日期和時間信息的安全保護。
時間戳( time-stamp)是一個經加密後形成的憑證文檔,它包括3個部分:
1)需加時間戳的文件的摘要( digest)。
2)DTS收到文件的日期和時間。
3)DTS的數字簽名。
SSL 安全協議
SSL安全協議最初是由 Netscape Communication公司設計開發的,又叫安全套接層( Secure Sockets Layer)協議",主要用於提高應用程序之間數據的安聖係數。SSL協議的整個概念可以被總結爲:一個保證任何安裝了安全套接字的客戶和服務器間事務安全的協議,它涉及所有TCP/P應用程序。
(1)SSL安全協議主要提供的服務
- 用戶和服務器的合法性認證。
- 加密數據以隱藏被傳送的數據。
- 保護數據的完整性。
(2)SSL安全協議實現的過程
- SSL安全協議是一個保證計算機通信安全的協議,對通信對話過程進行安全保護,其實現過程主要經過如下幾個階段。
- 接通階段:客戶機通過網絡向服務器打招呼,服務器迴應。
- 密碼交換階段:客戶機與服務器之間交換雙方認可的密碼,一般選用RSA密碼算法,也有的選用 Diffie- Hellmanηf和 Fortezza-KEA密碼算法。
- 會談密碼階段:客戶機與服務器間產生彼此交談的會談密碼
- 檢驗階段:客戶機檢驗服務器取得的密碼。
- 客戶認證階段:服務器驗證客戶機的可信度。
- 結束階段:客戶機與服務器之間相互交換結束的信息。
網絡安全
網絡安全受到威脅的原因:
- 網絡上存在祕密信息
- 網絡系統存在缺陽
- 傳輸可控性差
- 網絡協議存在不完善的地方
信息存儲安全如何保障:
- 用戶的標識與驗證
- 用戶存取權限控制
- 系統安全監控
- 計算機病毒防治
- 數據加密
信息傳輸加密:
- 鏈路加密
- 節點加密
- 端-端加密
VPN 技術
防火牆
類型:
- 包過濾防火牆(應用於網絡層,無法防範黑客的攻擊)
- 應用代理網關防火牆
- 狀態檢測技術防火牆
標準化
基本概念
標準:對重複性的事務和概念所做的統一規定。以科學、技術和實踐經驗的綜合成果爲基礎,經有關方面協商一致,由一個公認機構批准,以特定形式發佈,作爲共同遵守的準則和依據。
標準化:是指在經濟、技術、科學及管理等社會實踐中,對重複性事物的概念通過制訂、發佈和實施標準達到統一,以獲得最佳秩序和社會效益的活動。它是一門綜合性學科,具有綜合性、政策性和統一性的特點。
標準化的過程:一般包括標準產生(調查、研究、形成草案、批准發佈)、標準實施(宣傳、普及、監督、諮詢)和標準更新(複審、廢止或修訂)三個子過程。
標準化的實質和目的是什麼?
- 通過制定、發佈和實施標準,達到統 是標準化的實質。
- 獲得最佳秩序和社會效益 則是標準化的目的。
標準化的對象是什麼?
- 在國民經濟的各個領域中,凡具有多次重複使用和需要制定標準的具體產品,以及各種定額、規劃、要求、方法、概念等,都可稱爲標準化對象。
標準化對象一般可分爲兩大類:
- 一類是標準化的具體對象,即需要制定標準的具體事物;
- 另一類是標準化總體對象,即各種具體對象的總和所構成的整體,
制定標準的原則是什麼?
制定標準應遵循的原則是:
- 要從全局利益出發,認真貫徹國家技術經濟政策;
- 充分滿足使用要求
- 有利於促進科學技術發展
制定標準要經過哪幾個階段?
一項標準的出臺一般要經過六個階段:
- 第一階段,申請階段;
- 第四階段,審査階段
- 第二階段,預備階段;
- 第五階段,批准階段;
- 第三階段,委員會階段;
- 第六階段,發佈階段
標準的更新
1.標準複審
根據我國《國家標準管理辦法》的規定:國家標準實施後,應當根據科學技術的發展和經濟建設的需要,由該國家標準的主管部門組織有關單位適時進行復審,複審週期一般不超過五年。
2.標準確認
只在標準再版時在標準封面寫明*年確認的字樣即可。
3.標準修訂
修訂後的標準,標準號不變,年號更新爲修訂版發佈時的年份。
標準的編號
國際、國外標準代號及編號:標準代號+專業類號+順序號+年代號。
我國標準代號及編號:
- 強制性國家標準代號爲GB
- 推薦性國家標準代號爲GBT
- 行業標準代號由漢語拼音大寫字母組成(如航天QJ,電子SJ,機械JB、金融JR)
- 地方標準代號由大寫漢語拼音DB加上省級行政區劃代碼的前兩位。
- 企業標準代號由“Q加上企業代號組成。
常見標準化組織
我國的標準分類
面向對象技術
基本概念
對象:對象( object)是系統中用來描述客觀事物的一個實體,它是構成系統的個基本單位。
對象三要素:對象標識、屬性和方法。
封裝( encapsulation)是對象的一個重要原則。
它有兩層含義:
- 第一,對象是其全部屬性和全部服務緊密結合而形成的一個不可分割的整體
- 第二,對象是一個不透明的黑盒子,表示對象狀態的數據和實現操作的代碼都被封裝在黑盒子裏面。
類:對具有相同屬性和服務的一個或一組對象的抽象。類與對象是抽象描述和具體實例的關係,一個具體的對象被稱作類的一個實例。類屬是一種參數多態機制。
繼承與泛化:繼承是面向對象方法中重要的概念,用來說明特殊類(子類),與一般類(父類)的關係,通常使用泛化來說明一般類與特殊類之間的關係它們之間是一對多關係。
多態性與重載:多態(即多種形式)性則是指一般類中定義的屬性或服務被特殊類繼承後,可以具有不同的數據類型或表現出不同的行爲,通常是使用重載和改寫兩項技術來實現的。
消息和消息通信:消息就是向對象發出的服務請求,它通常包括提供服務的對象標識、消息名、輸入信息和回答信息。消息通信則是面向對象方法學中的個重要原則,它與對象的封裝原則密不可分,爲對象間提供了惟一合法的動態聯繫的途徑。
面向對象方法學的優點:
- 與人類習慣的思維方法一致
- 穩定性好
- 可重用性好
- 較易開發大型軟件產品
- 可維護性好
OOA/OOD
OOA 模型由5個層次和五個活動組成。
五個層次分別是:主題、對象類、結構、屬性和服務。
五個活動是標識對象類、標識結構與關聯、劃分主題、定義屬性、定義服務。
此外,在 OOA 中還定義了兩種對象類之間的結構:分類結構和組裝結構。
OOD
它由人機交互部件、問題域部件、任務管理部件、數據管理部件四個部分組成,其主要的活動就是這四個部件的設計工作。
Booch方法
Booch認爲軟件開發是一個螺旋上升的過程。在這個螺旋上升的每個週期中,有以下幾個步驟
發現類和對象
確定它們的含義
找出它們之間的相互關係
說明每一個類和對象的界面和實現
靜態模型 | 動態模型 | |
---|---|---|
邏輯模型 | 類圖、對象圖 | 狀態裝換圖、時序圖 |
物理模型 | 模塊圖、進程圖 |
OMT方法
OMT 定義了三種模型:對象模型、動態模型和功能模型。
進行 OMT 建模時的四個活動:分析、系統設計、對象設計和實現。
面向對象程序設計
this 指針的使用
繼承成員訪問控制機制
設計模式
設計模式的要素
- 模式名稱
- 問題
- 解決方案
- 效果
設計模式的分類
模式分類的兩條原則:
- 目的(創建型、結構型、行爲型)
- 範圍(類、對象)
怎樣使用設計模式?
- 大致瀏覽一遍模式
- 回頭研究結構部分、參與者部分和協作部分
- 看代碼示例部分,看看這個模式代碼形式的具體例子
- 選擇模式參與者的名字,使它們在應用上下文中有意義
- 定義類
- 定義模式中專用於應用的操作名稱
- 實現執行模式中責任和協作的操作
模式設計中用到的幾個重要思想理念
- 對接口編程,而不對實現編程
- 對類的功能的擴展,要多用組合,少用繼承
對類的功能的擴展,要多用組合,少用繼承。
原因:
- 子類對父類的繼承是全部的公有和受保護的繼承,這使得子類可能繼承了對子類無用甚至有害的父類的方法。換句話說,子類只希望繼承父類的一部分方法,怎麼辦?
- 實際的對象千變萬化,如果每一類的對象都有他們自己的類,儘管這些類都繼承了他們的父類,但有些時候還是會造成類的無限膨脹。
- 繼承的子類,實際上需要編譯期確定下來,這滿足不了需要在運行內才能確定對象的情況。而組合卻可以比繼承靈活得多,可以在運行期才決定某個對象。
創建型模式
結構型模式
行爲型模式
知識產權
以下形爲都爲侵權行爲:
- 未經著作權人許可,發表其作品的
- 未經合作作者許可,將與他人合作創作的作品當作自己單獨創作的作品發表的;
- 沒有參加創作,爲謀取個人名利,在他人作品上署名的;
- 歪曲、篡改他人作品的;
- 剽竊他人作品的;
- 未經著作權人許可,以展覽、攝製電影和以類似攝製電影的方法使用作品,或者以改編、翻譯、註釋等方式使用作品的,本法另有規定的除外;
- 使用他人作品,應當支付報酬而未支付的;
- 未經電影作品和以類似攝製電影的方法創作的作品、計算機軟件、錄音錄像製品的著作權人或者與著作權有關的校利人許可,出租其作品或者錄音錄像製品的,本法另有規定的除外
- 未經出版者許可,使用其出版的圖書、期刊的版式設計的;
- 未經表演者許可,從現場直播或者公開傳送其現場表演,或者錄製其表演的;
- 其他侵犯著作權以及與著作權有關的權益的行爲。
軟件著作權自軟件開發完成之日起產生
自然人的軟件著作權,保護期爲自然人終生及其死亡後50年,截止於自然人死亡後第50年的12月31日;軟件是合作開發的,截止於最後死亡的自然人死亡後第50年的12月31日。
法人或者其他組織的軟件著作權,保護期爲50年,截止於軟件首次發表後第50年的12月31日,但軟件自開發完成之日起50年內未發表的,本條例不再保護。
有下列侵權行爲的,應當根據情況,承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任:
- 未經軟件著作權人許可,發表或者登記其軟件的;
- 將他人軟件作爲自己的軟件發表或者登記的
- 未經合作者許可,將與他人合作開發的軟件作爲自己單獨完成的軟件發表或者登記的
- 在他人軟件上署名或者更改他人軟件上的署名的;
- 未經軟件著作權人許可,修改、翻譯其軟件的;
- 其他侵犯軟件著作權的行爲
商標法第十九條
兩個或者兩個以上的申請人,在同一種商品或者類似商品上,分別以相同或者近似的商標在同一天申請註冊的,各申請人應當自收到商標局通知日起30日內提交具甲請注卅前在先使用該商標的證據。同日使用或者均未使用的,各申請人可以自收到商標局通知之日起30日內自行協商,並將書面協說報送商標局;不願協商或者協商不成的,商標局通知各申請人以抽籤的方式確定一個申請人,駁回其他人的註冊申請。商標局已經通知但申請人未參加抽籤的,視爲放棄申請,商標局應當書面通知未參加抽籤的申請人。
商標法第三十七條
註冊商標的有效期爲十年,自核準註冊之日起計算。
多媒體
媒體的分類
- 感覺媒體
- 表示媒體(圖像編碼、文本編碼、聲音編碼等)
- 表現媒體(鍵盤、鼠標、掃描儀、顯示器等)
- 交換媒體(存儲媒體和傳輸媒體)
多媒體的特徵
- 多樣性
- 集成性
- 交互性
- 非線性
- 實時性
- 信息使用的方便性
- 信息結構的動態性
虛擬現實技術
概念
虛擬現實是將現實世界的多維信息映射到計算機的數字空間生成相應的虛擬世界。
分類
- 桌面虛擬現實
- 完全沉浸的虛擬現實
- 增強現實性的虛擬現實
- 分佈式虛擬現實
聲音
聲音信號的兩個基本參數是幅度和頻率。幅度是指聲波的振幅,通常用聲壓級表示,計量單位是分貝(dB)。頻率是指聲波每秒鐘變化的次數,用 Hz 表示。
人耳能聽到的聲音信號的頻率範圍是20Hz~20kHz。小於20Hz的聲波信號稱爲亞音信號(次聲波)。大於20kHz的聲波信號稱爲超音頻信號(超聲波)。
聲音文件格式
- .wav
- .snd
- .au
- .aif
- .voc
- .mp3
- .ra
- .mid、.rmi
顏色
顏色的三要素
- 色調。指顏色的類別。
- 飽和度。指某一顏色的深淺程度(或濃度)。
- 亮度。描述光作用於人眼時引起的明暗程度感覺,是指彩色明暗深淺程度。
三基色
紅色、綠色、藍色
顏色模型
- RGB顏色模型,自發光的彩色顯示器。
- CMY顏色模型(青色、品紅色、黃色),打印機。
- YUV顏色模型。
圖形和圖像
概念
圖形。由矢量表示的圖形是用一系列計算機指令來描述和記錄的一幅圖的內容。編輯矢量圖的軟件通常稱爲繪圖軟件。
圖像。圖像是指用像素點來描述的圖。(二值圖像、灰度圖像、彩色圖像)
圖像的屬性
分辨率
分爲圖像分辨率和現實分辨率
圖像分辨率大於顯示分辨率時,在屏幕上只能顯示部分圖像;圖像分辨率小於希納是分辨率時,圖像只佔屏幕的一部分。
例如:用200dpi來掃描一幅2x2.5英寸的彩色照片,可以得到一幅400x500個像素點的圖像。
像素深度
像素深度是指存儲每個像素所用的二進制位數,它也是用來度量圖像的色彩分辨率的。
例如:像素的深度爲10位,每個像素可以是2^10中顏色中的一種。表示一個像素的位數越多,它能表達的顏色數目就越多,它的深度也就越深。
真彩色和僞彩色
真彩色是指組成一幅彩色圖像的每個像素值中由R、G、B3個基色分量,每個基色分量直接決定顯示設備的基色強度。例如,R、G、B分量都用8位來表示,可生成的顏色數,就是2^24種。圖像的壓縮
圖像的壓縮編碼
計算數據量公式:
圖像數據量 = 圖像的總像素數 x 像素深度 / 8(Byte)
例如,一幅640x480的256色圖像,其數據量爲:640x480X8/8 = 300KB
圖像文件格式
- .bmp
- .gif
- .tif
- .pcx
- .png
- .jpg(JPEG)
- .wmf
數據流圖設計
百度資源
鏈接: https://pan.baidu.com/s/1zPJIWeo6_WBJCfsGdd5GhA 提取碼: fgm2