第一章:計算機組成原理與體系結算法
考點1:運算器和控制器數據庫
1. 運算器編程
1. 算術邏輯單元ALU:數據的算術運算和邏輯運算windows
2. 累加寄存器AC:通用寄存器,爲ALU提供一個工做區,用在暫存數據設計模式
3. 數據緩衝寄存器DR:寫內存時,暫存指令或數據數組
4. 狀態條件寄存器PSW:存儲狀態標誌與控制標誌緩存
2. 控制器
安全
1. 程序計數器PC:存儲下一條要執行指令的地址
服務器
2. 指令寄存器IR:存儲即將執行的指令
網絡
3. 指令譯碼器ID:對指令中的操做碼字段進行分析解釋
4. 時序部件:提供時序控制信號
考點2:數據的表示
1. 進制轉換
1. R進制轉十進制:按權展開
2. 十進制轉R進制:短除法
3. 二進制轉8、十六進制:分組快速轉換
2. 數據編碼
1. 原碼:正數的原碼是它自己,負數的原碼是符號位爲1
2. 反碼:正數的反碼是它自己,負數的反碼是除符號位不變,其餘位取反
3. 補碼:正數的補碼是它自己,負數的補碼是負數的反碼+1
4. 移碼:將補碼的最高位取反
3. 浮點數
1. 浮點數的表示:N=M*Re,M爲尾數,R爲基數,e爲階碼
1. 尾數用補碼錶示,階碼用移碼錶示
2. 尾數的位數決定數的有效精度,位數越多精度越高
3. 階碼的位數決定數的表示範圍,位數越多範圍越大
2. 浮點數的運算
1. 對階,將階碼小的擴大,使兩個數的階碼相同
2. 求尾數和(差)
3. 結果規格化並判斷溢出
考點3:Flynn分類法
考點4:CISC與RISC
考點5:流水線技術
1. 流水線相關概念
1. 流水線:流水線是指在程序執行時多條指令重疊進行操做的一種準並行處理實現技術
2. 流水線創建時間:1條指令執行時間
3. 流水線週期:執行時間最長的一段
4. 吞吐率:單位時間內流水線處理機流出的結果。對指令而言就是單位時間內執行的指令數。
2. 流水線相關計算
1. 流水線執行時間
1. 理論公式:(t1+t2+..+tk)+(n-1)*∆t
2. 實踐公式:k*∆t +(n-1)*∆t
2. 吞吐率
1. 吞吐率:TP = 指令條數 / 流水線執行時間
2. 最大吞吐率:1 / ∆t
3. 流水線加速比:順序執行時間 / 流水線執行時間
考點6:存儲系統
1. 分級存儲系統
1. 存儲體系結構
2. 局部性原理
1. 概念:程序在執行時呈現出局部性規律,即在一段時間內,整個程序的執行僅限於程序中的某一部分。相應地,執行所訪問的存儲空間也侷限於某個內存區域
2. 時間局部性:若是程序中的某條指令一旦執行,則不久以後該指令可能再次被執行
3. 空間局部性:一旦程序訪問了某個存儲單元,則不久以後,其附近的存儲單元也將被訪問
2. Cache(高速緩存)
1. 做用:提升CPU對主存的訪問速度。Cache是訪問速度最快的層次。
2. 特色:容量小,速度快,成本高
3. 性能分析:若H表明對Cache的命中率,tc爲Cache的讀寫時間,tm爲主存的讀寫時間,則Cache的等效訪問時間ta爲:ta = Htc + (1-H)tm
4. Cache映像方式
3. 主存
1. 內存單元數:最大地址+1-最小地址
2. 內存總容量:按字節編址,內存單元數*8bit;按字編址,內存單元數*機器字長
3. 已知芯片單位容量,求所用芯片的片數,總容量/單位容量
4. 已知所用芯片的片數,求取芯片單位容量,總容量/芯片片數
考點7:總線系統
1. 數據總線(Data Bus):在CPU與RAM之間來回傳送須要處理或是須要儲存的數據。
2. 地址總線(Address Bus):用來指定在RAM之中儲存的數據的地址。
3. 控制總線(Control Bus):將微處理器控制單元的信號,傳送到周邊設備,通常常見的爲 USB Bus和1394 Bus。
考點8:可靠性
1. 串聯繫統計算:R總=R1*R2;
2. 並聯系統計算:R總=1-(1-R)2;
3. N模混聯繫統:先將整個系統劃分爲多個部分串聯R一、R2…等,再計算R一、R2內部的並聯可靠性,帶入原公式
考點9:校驗碼
1. 奇偶校驗
1. 基本思想:在編碼中增長一位校驗位使編碼中1的個數爲奇數(奇校驗)或者爲偶數(偶校驗)
2. 特色:只能檢測出奇數位出錯但不知道哪位出錯,而且不能夠糾正
2. 循環冗餘校驗碼
1. 基本思想:利用生成多項式爲 k 個數據位產生 r 個校驗位來進行編碼,其編碼長度爲 k+r,運用模二除法計算校驗碼
2. 特色:能夠檢錯但不能糾錯
3. 海明碼
1. 基本思想:在n個數據位之間加上k個校驗位(n和k必須知足 2k - 1 ≥ n+k 的關係),經過擴大碼距來實現檢錯和糾錯。
2. 特色:能夠檢錯和糾錯
第二章:操做系統
考點1:進程管理
1. 進程的狀態
1. 三態模型
2. 五態模型
2. 前趨圖
1. 組成:前趨圖是一個有向無循環圖,由節點和有向線段組成,節點表示進程或程序段,有向線段表示節點間的前趨關係
2. 表示:兩程序段 Pi 和 Pj 的前趨關係表示爲 Pi → Pj ,其中 Pi 是Pj 的前趨, Pj 是 Pi 的後繼, 含義是 Pi 執行完畢才能由 Pj 執行
3. 信號量與PV操做
1. 同步、互斥、臨界資源、臨界區
1. 臨界資源:各進程採起互斥的方式,實現共享的資源稱做臨界資源
2. 臨界區:每一個進程中訪問臨界資源的那段代碼稱爲臨界區,臨界區中的臨界資源同一時間只能由一個進程(線程)訪問
3. 互斥:互斥是進程(線程)之間的間接制約關係。當一個進程(線程)進入臨界區使用臨界資源時,另外一個進程(線程)必須等待。只有當
使用臨界資源的進程退出臨界區後,這個進程(線程)纔會解除阻塞狀態
4. 同步:同步是進程(線程)之間的直接的制約關係。相互合做的進程(線程)須要在某些肯定點上協調他們的工做,當一個進程(線程)
達到這些點後,除非另外一個進程(線程)已經完成某些操做,不然只能等待這些操做結束
2. 信號量:信號量(semaphore)的數據結構爲一個值和一個指針,指針指向等待該信號量的下一個進程,值與相應資源的使用狀況有關。
1. 值 S ≥ 0:表示某資源的可用數
2. 值 S < 0:其絕對值表示阻塞隊列中等待該資源的進程數
3. P 操做定義:S := S - 1 ,將信號量 S 的值減一
1. 若 S ≥ 0,則執行 P 操做的進程繼續執行
2. 若 S < 0,則置該進程爲阻塞狀態,並將其插入阻塞隊列中
4. V 操做定義:S := S + 1,將信號量 S 的值加一
1. 若 S > 0,則執行 V 操做的進程繼續執行
2. 若 S ≤ 0,則從阻塞狀態喚醒一個進程,並將其插入就緒隊列,執行 V 操做的進程繼續執行
4. 死鎖及銀行家算法
1. 死鎖
1. 概念:兩個以上的進程(線程)互相都因要求對方已經佔有的資源致使沒法運行下去的現象,產生的緣由是資源競爭及進程推動順序非法
2. 產生條件:
1. 互斥條件:進程對其要求的資源進行排他性控制,即一次只容許一個進程使用
2. 請求保持條件:零星的請求資源,即得到部分資源後又請求其餘資源被堵塞並對已得到的資源保持不放
3. 不剝奪條件:進程已得到資源在未使用完以前不能被剝奪,只能在使用完後本身釋放
4. 環路條件:在進程資源有向圖中必構成環路,其中每一個進程佔有下一個進程申請的一個或多個資源
3. 處理
1. 預防:使用預先靜態分配法和資源有序分配法來預防
2. 避免:銀行家算法
3. 檢測:容許死鎖發生,但程序會定時運行一個「死鎖檢測」程序,若是檢測到死鎖,則設法加以解除。
4. 解除:使用資源剝奪法和撤銷進程法解除死鎖
2. 銀行家算法
1. 相關概念
1. Available:可利用資源向量,它是一個含有 m個元素的數組,其中每一個元素表明一類可利用資源的數目
2. Max:最大需求矩陣,n*m矩陣,表示n個進程的每個對m類資源的最大需求
3. Allocation:分配矩陣,n*m矩陣,表示每一個進程已分配的每類資源的數目
4. Need:需求矩陣,n*m矩陣,表示每一個進程還須要各種資源數
Need[i,j]= Max[i,j]- Allocation[i,j]
2. 算法步驟
1. 請求性算法步驟
設Request i 爲進程 Pi 的請求向量。若是 Request i[ j ] == k 那麼進程 Pi 須要資源 Rj 的實例數量爲 k,
當進程 Pi 做出資源請求時,執行下列步驟:
1. 若Request i[ j ] ≤ Need[ i, j ],轉步驟(2);不然錯誤返回,由於進程 Pi 超過其最大請求
2. 若Request i[ j ] ≤ Available[ j ],轉步驟(3);不然進程 Pi 等待,由於沒有可用資源
3. 假設系統分配了進程 Pi 所請求的資源,則有:
Available [ j] := Available [ j] - Request i[ j];
Allocation[i, j] := Allocation[i, j]+Request i[ j];
Need[i, j] := Need[i, j] - Request i[ j]
2. 安全性算法步驟
若系統新狀態是安全的,則完成分配;若系統新狀態是不安全的,則恢復原狀態,進程等待
1. Work[ j] := Available[ j];Finish[ i] := false;
2. 尋找知足條件的 i :Finish[ i] = false;Need[i, j] ≤ Work[ j];若不存在,轉步驟(4);
3. Work[ j] := Work[ j] + Allocation[i, j];Finish[ i] := true;轉步驟(2)
4. 若對全部 i,Finish[ i] = true,則系統處於安全狀態,不然處於不安全狀態
考點2:存儲管理
1. 頁式存儲
1. 基本原理
1. 頁或頁面:系統將進程的地址空間劃分紅若干大小相等的區域,稱爲頁或頁面
2. 塊或頁框:系統將主存空間劃分紅與頁相同大小的若干物理塊,稱爲塊或頁框
3. 內存分配:在爲進程分配主存時,將進程中若干頁分別裝入多個不相鄰的塊中
2. 地址結構
1. 組成:頁號P和偏移量W(頁內地址)。0~11位爲頁內地址(4KB),12~31位爲頁號(1MB)
2. 地址變換
1. 頁號P = 邏輯地址 / 頁面大小;頁內地址 = 邏輯地址 % 頁面大小
2. 物理地址 = 物理塊號(頁號對應) * 頁面大小 + 頁內偏移
3. 頁表
1. 概念:系統爲了保證可以在主存中找到每一個頁面所對應的物理塊,爲每一個進程創建了一張頁面映射表,簡稱頁表。
每一個頁面在頁表中佔一個表項,記錄該頁面在主存中對應的物理塊號。進程在執行時,經過查找頁表能夠找到每頁所對應的物理塊號
2. 做用:實現從頁號到物理號的地址映射
4. 快表
1. 概念:在地址映射過程當中,共需兩次訪問主存。第一次訪問頁表,獲得數據的物理地址,第二次纔是存取數據。
在地址映射機制中增長一個小容量的聯想寄存器(相聯存儲器),稱爲快表
2. 做用:存放當前訪問最頻繁的少數頁的頁號及相關信息
2. 段式存儲
1. 基本原理
段是按照程序的天然分界劃分的長度能夠動態改變的區域,每段是一組完整的邏輯信息,地址連續,長度不一樣
2. 地址變換
1. 存儲管理部件首先以段號S爲索引訪問段表的第S個表項
1. 若該表項的有效位爲1,則將虛擬地址的段內地址D與該表項的段長字段比較;
1. 若段內地址較大則說明地址越界,將產生地址越界中斷;
2. 不然,將該表項的段起址與段內地址相加,求得主存實際地址並訪存。
2. 若是該表項的有效位爲0,則產生缺頁中斷,從輔存中調入該頁,並修改段表
3. 段頁式存儲
1. 基本原理:段頁式存儲組織是分段式和分頁式結合的存儲組織方法,用分段方法來分配和管理虛擬存儲器,
用分頁方法來分配和管理實存,這樣可充分利用分段管理和分頁管理的優勢
2. 地址轉換
物理地址:基地址x、段號s、頁號p和頁內地址d,求物理地址(((x)+s)+p)*2^(11)+d
4. 頁面置換算法
考點3:文件管理
1. 絕對路徑和相對路徑
1. 絕對路徑:從根目錄開始寫起,文件的全名爲絕對路徑+文件名
2. 相對路徑:從當前位置下一級目錄開始寫起
2. 索引文件
1. 地址向個數:物理塊大小/地址項長度,向下取整
2. 直接索引,文件大小爲 物理盤塊大小×索引節點數。
3. 一級間接索引,文件大小爲 物理盤塊大小×索引節點數的次冪。
4. 二級間接索引,文件大小爲 物理盤塊大小×索引節點數的次冪。
3. 位示圖
1. 對於位示圖,每個bit位能夠表示一個磁盤的佔用狀況,「0」表示空閒,「1」表示佔用。
2. 對於字的長度與具體機器字長有關,有題目指定,假設機器字長16位,則每一個字能夠表示16個磁盤塊的佔用狀況;
3. 指定序號爲n或第n+1個磁盤,佔用狀況須要用m=(n+1)/16(向上取整)個字表示,字的序號爲m-1。注意其中磁盤序號、字的序號、對應位號都是從0開始,計算過程當中會有加1或減1處理。
4. 磁盤管理
1. 參數
1. 磁頭(head): 固定在可移動的機械臂上,用於讀寫數據。
2. 磁道(track): 每一個盤面都有 n 個同心圓組成,每一個同心圓稱之爲一個磁道。
3. 柱面(cylinder): n 個盤面的相同磁道 (位置相同) 共同組成一個柱面。
4. 扇區(sector): 扇區是硬盤的最小組成單元,一般是 512 字節。磁道上的扇區數最大爲 63 (6 個二進制位)
2. 計算
1. 存儲容量(單位統一)
1. 非格式化容量:位密度 × 磁道最小周長(π×內徑) × 磁道總數((外徑 - 內徑)÷ 2 ×道密度) × 面數
2. 格式化容量:扇區容量 × 扇區數 × 每面磁道數 × 面數
2. 數據傳輸速率:每磁道存儲的用戶信息總數目(扇區數 × 每扇區的字節數) × 每秒鐘磁盤轉動圈數
3. 存取時間=尋道時間+等待時間,尋道時間是指磁頭移動到磁道所需的時間;等待時間爲等待讀寫的扇區轉到磁頭下方所用的時間。有時還須要加上數據的傳輸時間
3. 磁盤調度算法
1. 先來先服務FCFS(誰先申請先服務誰)
2. 最短尋道時間優先SSTF(申請時判斷與磁頭當前位置的距離,誰短先服務誰)
3. 掃描算法SCAN(電梯算法,雙向掃描)
4. 循環掃描CSCAN(單向掃描)
考點4:設備管理
1. I/O傳輸控制方式
1. 程序查詢方式:CPU一直處於詢問、等待的過程,佔用CPU時間最長,CPU利用率最低
2. 中斷方式:I/O完成後向CPU發送中斷請求信號,CPU和I/O能夠並行
3. DMA方式:CPU只作初始化,不參與具體數據傳輸過程
2. 虛設備與SPOOLING技術
1. 概念:
2. 應用場景
3. 技術過程
第三章:數據庫系統
考點1:數據庫模式
1. 三級模式
1. 外模式:用戶與數據庫系統的接口,對應視圖
2. 概念模式:數據庫中所有數據的總體邏輯結構描述,對應數據庫表
3. 內模式:數據庫在物理存儲方面的描述,包括定義的內部數據類型、索引、文件的組織方式,對應物理文件
2. 兩級映射
1. 外模式-概念模式:存在於外部級和概念級之間,實現了外部模式到概念模式之間的相互轉換
2. 概念模式-內模式:存在於概念級3和內部級之間,實現了概念模式到內部模式之間的相互轉換
3. 做用:保證數據庫中的數據具備較高的邏輯獨立性和物理獨立性
3. 數據獨立性
1. 邏輯獨立性:邏輯結構發生改變時,用戶程序對外模式的調用能夠不作修改
2. 物理獨立性:數據庫的內模式發生改變時,數據的邏輯結構不變
考點2:ER模型(內部實體之間有聯繫)
1. ER圖各元素的定義
1. 實體:現實世界中能夠區別於其餘對象的「事件」或「物體」,用矩形表示
2. 弱實體:與依賴的實體以帶圓形的線鏈接,與實體有很強的依賴關係,單獨存在沒有意義,用雙邊矩形表示
3. 屬性:實體的特性,體現爲表中的屬性列名,用橢圓表示
4. 聯繫:反應實體與實體之間的聯繫,用菱形表示
考點3:關係代數
1. 並:結果爲兩者元組之和去除重複行
2. 交:結果爲兩者重複行
3. 差:前者去除兩者重複行
4. 笛卡爾積:結果列數爲兩者屬性列數之和,行數爲兩者元素數乘積
5. 投影:對屬性列的選擇列出
6. 選擇:對元素行的選擇列出
7. 天然鏈接:結果列數爲兩者屬性列數之和減去重複列,行數爲兩者同名屬性列其值相同的結果元組。笛卡爾積、選擇、投影的組合表示能夠與天然鏈接等價
考點4:規範化理論
1. 鍵的求取
1. 候選鍵(候選碼)是可以惟一標識元素卻無冗餘的屬性組合,能夠有多種不一樣的候選鍵,在其中任選一個做爲主鍵。候選鍵的求取能夠利用圖示法找入度爲0的屬性集合,並在此基礎上進行擴展,最終找到可以遍歷全圖的最小屬性組合做爲候選鍵,對於入度爲0在關係依賴集中能夠理解爲從未在箭線右側出現。
2. 組成候選碼的屬性就是主屬性,其餘爲非主屬性。
3. 外鍵是其餘關係模式的主鍵。
2. 範式
1. 第一範式(1NF):在關係模式R中,當且僅當全部域只包含原子值,即每一個屬性都是不可再分的數據
2. 第二範式(2NF):當且僅當關係模式R是第一範式(1NF),且每個非主屬性徹底依賴候選鍵(沒有不徹底依賴)時
3. 第三範式(3NF):當且僅當關係模式R是第二範式(2NF),且R中沒有非主屬性傳遞依賴於候選鍵時
4. BC範式(BCNF):設R是一個關係模式,F是它的依賴集,R屬於BCNF當且僅當其F中每一個依賴的決定因素一定包含R的某個候選碼
3. 規範化過程
1. 保持函數依賴:設數據庫模式ρ={R1,R2,…,Rk}是關係模式R的一個分解,F是R上的函數依賴集,ρ中每一個模式Ri上的FD集是Fi。若是{F1,F2,…,Fk}與F是等價的(即相互邏輯蘊涵),那麼稱分解ρ保持FD。
2. 無損聯接分解:指將一個關係模式分解成若干個關係模式後,經過天然聯接和投影等運算仍能還原到原來的關係模式。(表格法,公式法-僅限分解爲2個子關係)
考點5:SQL語言
1. 數據表操做
1. 建立數據表:create table 表名(
字段名 數據類型 [非空約束][auto_increment]
primary key(字段名)
constraint 外鍵名 foreign key(字段名) references 主表名(主鍵)
);
2. 修改表名:alter table 舊錶名 rename 新表名
3. 修改字段名:alter table 表名 change 舊字段名 新字段名 新數據類型;
4. 修改字段數據類型:alter table 表名 modify 字段名 數據類型;
5. 添加字段:alter table 表名 add 字段名 數據類型
6. 刪除字段:alter table 表名 drop 字段名;
7. 刪除外鍵約束:alter table 表名 drop foreign key 外鍵名
8. 刪除表:drop table 表名
2. 表數據的增刪改
1. 增長數據:insert into 表名(字段1,字段2,...) values(值1,值2,...)
2. 刪除數據:delete from 表名 where 表達式
3. 修改數據:update 表名 set 字段=新值 where 表達式
3. 查詢數據
考點6:併發控制
1. 事務特性
1. 原子性:事務是原子的,要麼都作,要麼都不作
2. 一致性:事務執行的結果必須保證數據庫從一個一致性狀態變到另外一個一致性的狀態
3. 隔離性:事務相互隔離,當多個事務併發執行時,任一事務的更新操做直到其成功提交的整個過程,對其餘事務都是不可見的
4. 持續性:一旦事務成功提交,即便數據庫崩潰,其對數據庫的更新操做也將永久有效
2. 併發產生的問題
3. 封鎖協議
1. 共享鎖(S鎖):若事務T對數據對象A添加了S鎖,則只容許T讀取A,但不能修改A。而且其餘事務只能對A加S鎖,不能加X鎖
2. 排他鎖(X鎖):若事務T對數據對象A添加了X鎖,則只容許T讀取和修改A,其餘事務不能再對A加任何鎖
考點7:數據庫完整性約束
1. 實體完整性:規定其主屬性不能去空值
2. 參照完整性(也稱爲引用完整性):規定其外鍵爲參照表的主鍵值或爲空值
3. 用戶自定義完整性(函數):用戶針對某一具體的關係數據庫的約束條件
4. 觸發器:一種複雜的完整性約束。
第四章:計算機網絡與信息安全
考點1:七層模型
考點2:TCP/IP協議族(★★★★)
1. TCP/IP協議層次模型
2. 常見協議功能和端口號
POP3:110端口,郵件收取
SMTP:25端口,郵件發送
FTP:20數據端口/21控制端口,文件傳輸協議
HTTP:80端口,超文本傳輸協議,網頁傳輸
DHCP:67端口,IP地址自動分配
SNMP:161端口,簡單網絡管理協議
DNS:53端口,域名解析協議,記錄域名與IP的映射關係
TCP:可靠的傳輸層協議
UDP:不可靠的傳輸層協議
ICMP:因特網控制協議,PING命令來自該協議
IGMP:組播協議
ARP:地址解析協議,IP地址轉換爲MAC地址
RARP:反向地址解析協議,MAC地址轉IP地址
考點3:IP地址與子網劃分
1. IP地址分類
1. A類地址:網絡號8位,0開始
2. B類地址:網絡號16位,10開始
3. C類地址:網絡號24位,110開始
4. D類地址:組播地址,1110開始
5. E類地址:保留地址,11110開始
2. IP地址的計算
3. 子網劃分:將一個網絡劃分紅多個子網(取部分主機號當子網號)
4. 路由匯聚:將多個網絡合併成一個大的網絡(取部分網絡號當主機號
考點4:網絡規劃與設計
考點5:3G/4G標準
考點6:對稱加密與非對稱加密
1.對稱加密:加密與解密使用同一祕鑰
1. 特色:
一、加密強度不高,但效率高;
二、密鑰分發困難
2. 常見對稱密鑰加密算法:DES、 3DES(三重DES)、 RC-五、IDEA、AES算法
2. 非對稱加密:密鑰必須成對使用,公鑰加密,相應的私鑰解密
1. 特色:加密速度慢,但強度高
2. 常見非對稱密鑰加密算法: RSA、ECC
考點7:信息摘要與數字簽名
1. 數字簽名的過程以下圖所示(發送者使用本身的私鑰對摘要簽名,接收者利用發送者的公鑰對接收到的摘要進行驗證)
2. 常見的摘要算法:MD5(128位),SHA(160位)
考點8:數字證書
1. 數字證書的內容包括:CA簽名、用戶信息(用戶名稱)、用戶公鑰等。
2. CA簽名驗證數字證書的可靠性。
3. 用戶公鑰:客戶端利用證書中的公鑰加密,服務器利用本身的私鑰解密。
考點9:網絡安全協議
1. 安全協議分層
2. 協議內容
1. HTTPS協議是HTTP協議與SSL協議的結合,默認端口號443
2. PGP協議是郵件安全協議
3. SET協議是電子商務安全協議,涉及電子交易安全
考點10:防火牆技術與網絡攻擊
1. 網絡攻擊分類
2. 常見的攻擊行爲
1. 拒絕服務:攻擊者利用衆多傀儡主機向服務器發送服務請求,致使服務器資源被耗盡,沒法提供正常的服務,向其餘訪問者發送拒絕服務應答
2. 重放攻擊:攻擊者抓取向服務器發送的有效數據包,並利用此數據包不斷地向服務器發送,致使服務器一直應答此數據包,從而崩潰
3. 業務流分析:經過長期監聽被攻擊者的數據流,從而分析出相關業務流,能夠依此瞭解被攻擊者的一些傾向,常見的廣告推送就是創建在業務流分析基礎上的
3. 常見的防護手段
1. 防火牆技術:主要了解它的機制是防外不防內,對於DMZ非軍事區主要放置應用服務器(如郵件服務器,WEB服務器)
2. 漏洞掃描:入侵者能夠利用系統漏洞侵入系統,系統管理員能夠經過漏洞掃描技術,及時瞭解系統存在的安全問題,並採起相應措施來提升系統的安全性
3. 入侵檢測IDS:基於數據源的分類-審計功能、記錄安全性日誌。基於檢測方法-異常行爲檢測而分析出相關業務流,能夠依此瞭解被攻擊者的一些傾向,常見的廣告推送就是創建在業務流分析基礎上的。
考點11:計算機病毒與木馬
1. 常見的病毒、木馬命名
1. 系統病毒(KCOM)
2. 蠕蟲病毒(Worm):紅色代碼,愛蟲病毒,熊貓燒香,Nimda病毒、愛麗滋病毒;
3. 木馬病毒(Trojan):經過遠程網絡進行控制的惡意程序
4. 腳本病毒(Script):
5. 宏病毒(Macro):
2. 常見的病毒分類
1. 文件型計算機病毒感染可執行文件(包括EXE和COM文件)
2. 引導型計算機病毒影響軟盤或硬盤的引導扇區
3. 目錄型計算機病毒可以修改硬盤上存儲的全部文件的地址
4. 宏病毒感染的對象是使用某些程序建立的文本文檔、數據庫、電子表格等文件
第五章:多媒體基礎
考點1. 音頻
1. 聲音
1. 聲音數字化過程:採樣→ 量化→ 編碼
1. 計算機經過話筒收到的信號是音頻模擬信號
2. 數字音樂合成技術爲FW和Wave Table
1. FW中改變數字載波頻率能夠改變樂音的音調,改變信號幅度能夠改變樂音的音高
2. Wave Table:音質更好
3. 聲音信號數字化過程首先要進行的是A/D轉換
2. 聲音格式
1. wav:微軟公司發佈的音頻文件格式, Windows系統使用的標準音頻文件格式。記錄音樂的模擬信號的採樣數值。質量高,數據量大。
2. mod:曲譜和樂曲使用的各類音色樣本
3. mp3:最流行的音頻文件格式
2. 視頻
1. 視頻格式
1. gif:用於網絡傳輸
2. avi:微軟公司發佈的視頻文件格式(AVI文件)
3. mov/qt:Apple公司發佈的視頻文件格式,較小存儲空間,開放性(Quick Time文件)
4. rm/rmvb:Real Networks公司格式,影像實時傳輸與播放(RealVideo文件)
5. mpeg/mpg/dat/mp4:運動圖像壓縮標準,壓縮效率高,質量好,兼容性好
6. fli / foc:Autodesk公司出品答得彩色動畫文件格式(Flic文件)
考點2. 圖像
1. 基本參數
1. 亮度:畫面的明亮程度
2. 色調:顏色的種類
3. 飽和度:色彩的純潔性,即顏色的豔麗程度
4. 顯示分辨率:顯示屏上可以顯示的像素數目,1024*768表示顯示屏分爲768行(垂直分辨率),每行(水平分辨率)顯示1024個像素
5. 圖像分辨率:一幅圖像的像素密度,每英寸多少點(dpi)表示圖像大小 ;200dpi掃描一幅2*2.5英寸的照片,則能夠獲得400*500像素點的圖像
6. 圖像深度:存儲每一個像素所用的二進制數,度量圖像的色彩分辨率,圖像深度爲b位,則該圖像最多的顏色數或灰度級爲2b種
7. DPI:每英寸像素點數。(在二維計算中,須要行、列分別乘一次。)
8. 彩色空間:RGB(普通顯示器)、YUV(電視,兼容)、CMY/CMYK(印刷)、HSV/HSB(藝術家)
2. 圖像格式
1. bmp:windows標準位圖文件格式
2. gif:用於網絡傳輸,數據塊爲單位傳輸信息,採用無損壓縮算法
3. png:做爲GIF替代品
4. jpg:有損壓縮,壓縮比例高,適合於處理大量圖像的場合
3. 計算
1. 音頻的計算:每秒容量=採樣頻率(Hz)×量化/採樣位數(位)×聲道數÷8
2. 視頻的計算:容量=每幀圖像容量(Byte) ×每秒幀數×時間+音頻容量×時間
3. 圖像的計算:
考點3. 種類
1. 多媒體定義
1. 傳播信息的載體,如語言、文字、圖像、視頻、音頻等;
2. 存貯信息的載體,如ROM、RAM、磁帶、磁盤、光盤等
2. 多媒體的分類
1. 感受媒體:直接用於人的感受器官,令人產生直接感受的媒體。如:聲音、圖形、圖像、動畫等
2. 表示媒體:傳輸感受媒體的中介媒體,用於數據交換的編碼。如文本編碼、圖像編碼和聲音編碼等
3. 表現媒體(顯示媒體):進行信息輸入輸出的媒體。如:輸入顯示媒體鍵盤、鼠標和麥克風等;輸出顯示媒體顯示器、打印機和音箱等。
4. 存儲媒體:用於存儲表示媒體的物理介質。如磁盤、光盤和內存等。
5. 傳輸媒體:傳輸表示媒體的物理介質。如電纜、光纜和交換設備等。
3. 多媒體標準
考點 4. 數據壓縮技術
1. 壓縮分類
1. 有損壓縮:也稱爲熵壓縮法,壓縮以後不能還原,如圖片壓縮成jpg格式
2. 無損壓縮:也稱冗餘壓縮法或熵編碼法,壓縮後可以還原,如zip壓縮格式
第六章:程序設計語言
考點1. 編譯與解釋(★★★)
1. 解釋程序(解釋器):直接解釋執行源程序(程序不獨立),解釋程序(控制權)和源程序都要參與到程序的運行過程,邊解釋邊執行,執行效率較低
2. 編譯程序(編譯器):將源程序翻譯成目標語言程序(獨立程序),源程序和編譯程序都再也不參與目標程序的執行過程,執行效率較高。
3. 編譯過程
1. 詞法分析階段:依據語言的詞法規則將源程序逐個字符掃描,識別出一個個「單詞」符號
2. 語法分析階段:依據語言的語法規則將單詞符號序列分解成各種語法單位。如「表達式」、「語句」等
3. 語義分析階段:進行源程序類型分析併產生代碼和檢查是否包含靜態語義錯誤
4. 中間代碼生成:根據語義分析的輸出生成中間代碼,常有樹、後綴式、三地址碼(四元式)
5. 目標代碼生成:把中間代碼變換成特定機器上的絕對指令代碼、可重定位的指令代碼或彙編指令代碼,與具體機器密切相關
6. 符號表:記錄源程序中各個符號的必要信息,輔助語義的正確性檢查和代碼生成,能夠貫穿編譯全部階段
考點2. 文法(★★)
1. 概念: 一個形式文法是一個有序四元組G=(V,T,S,P)
V(非終結符):大寫字母,能夠推導
T(終結符):小寫字母
S(起始符):最開始
P(產生式):用終結符替代非終結符的規則。形如α→β
2. 文法的分類
3. 文法與語法樹的推導:例:文法G=({a, b}, {S, A}, S, P),其中:S→aAS|a;A→SbA|SS|ba。請構造句型aabAa的推導樹。S → aAS; S → a; A → SbA;A → SS; A → ba
考點3. 正規式(★★★★)
1. 對於字母表∑,其上正規式及其表示的正規集定義
1. ε是一個正規式,它表示集合L(ε)={ε}
2. 若a是∑上的字符,則a是一個正則式,它所表示的正規L(a)={a}
3. 若正規式 r 和 s 分別表示正規集L(r)=L(s),則
1. r|s是正規式,表示集合L(r)∪L(s)
2. r·s是正規式,表示集合L(r)L(s)
3. r*是正規式,表示集合(L(r))*
4. (r)是正規式,表示集合L(r)
4. 僅由有限次地使用上述三個步驟定義的表達式纔是∑上的正規式。閉包運算符「*」具備最高的優先級,鏈接運算「.」具備次高優先級,或運算符「|」具備最低優先級
2. 常見正規式的含義
考點4. 有限自動機(★)
1. 字符串判斷:一個有限自動機所識別的語言是從開始狀態到終止狀態全部路徑上的字符串的集合
1. 下圖所示的有限自動機中,s0是初始狀態,s3爲終止狀態,該自動機不能識別()
A.abab B.aaaa C.babb C.abba
1. 對於A:其識別路徑爲s0→s1→s2→s1→s2,字符串結束時的狀態不是終止狀態,因此該自動機不能識別「abab」
2. 對於B:其識別路徑爲s0→s1→s3→s3→s3,字符串結束時的狀態是終止狀態,因此該自動機能夠識別「aaaa」
3. 對於C:其識別路徑爲s0→s2→s1→s2→s3,字符串結束時的狀態是終止狀態,因此該自動機能夠識別「babb」
4. 對於D:其識別路徑爲s0→s1→s2→s3→s3,字符串結束時的狀態是終止狀態,因此該自動機能夠識別「abba」
、 2. 有限自動機轉正規式
1. 採用帶入的方法
2. 判斷正規式的範圍是否和有限自動機的範圍相同
考點5. 表達式(★★★)
1. 前綴表達式(+ab):把運算符寫在運算對象的前面(語法樹的先序遍歷)
2. 中綴表達式(a+b):把運算符寫在運算對象的中間(語法樹的中序遍歷)
3. 後綴表達式(ab-):又叫作逆波蘭式,把運算符寫在運算對象的後面(語法樹的後序遍歷)
4. 例如:表達式(a - b) * ( c + 5)的後綴式是
1. 畫樹:先畫括號內的樹,最後畫括號外的樹
2. 遍歷:先遍歷左子樹(從左到右在到上),後遍歷右子樹(從左到右在到上),最後遍歷根節點
考點6. 傳值與傳址(★★★★)
1. 比較
2. 例題
考點7. 多種程序語言特色(★★★)
1. 結構化程序設計語言
1. Fortran語言:第一個高級程序設計語言,科學計算,執行效率高
2. Pascal語言:表達能力強,Delphi
3. C語言:通用,指針操做能力強,高效
4. COBOL:數據處理領域最爲普遍的程序設計語言,高級編程語言
5. PROLOG:邏輯式語言,間接性,表達能力強,建造專家系統、數據庫、天然語言理解、智能知識庫等
2. 面向對象程序設計語言
1. C++:C語言基礎上增長了類機制,高效,與C兼容,常常用來開發操做系統
2. Java:中間代碼,跨平臺,通用的程序設計語言
3. Python:解釋型程序設計語言,膠水語言,通用的腳本語言
3. 腳本語言:解釋性語言
1. PHP:服務器端腳本語言,製做動態網頁
2. Ruby:簡單快捷、面向對象、腳本語言
4. 函數式語言
1. Lisp:函數式程序語言,符號處理,人工智能
第七章:知識產權與標準化
考點1:法律知識(★★)
1. 法律法規
2. 做品保護期限
考點2:知識產權人肯定(★★★)
1. 做品區分
2. 做品歸屬
考點3:侵權判斷(★★★★)
1. 判斷
2. 特殊
1. 中國公民、法人或者其餘組織的做品,不管是否發表,都享有著做權。
2. 開發軟件所用的思想、處理過程、操做方法或者數學概念不受保護。
3. 著做權不適用的情形:
1. 法律、法規,國家機關的決議、決定、命令和其餘具備立法、行政、司法性質的文件,及其官方正式譯文
2. 時事新聞、曆法、通用數表、通用表格和公式
考點4:標準的分類及代號(★)
1. 國際標準:ISO、IEC等國際標準化組織。代號:標準代號+專業類號+順序號+年代號
2. 國家標準:GB—中國、ANSI—美國、BS—英國、JIS—日本。代號:我國強制性標準代號爲GB、推薦性標準代號爲GB/T、指導性標準代號爲GB/Z、實物標準代號GSB
3. 區域標準:又稱爲地區標準,如PASC—太平洋地區標準會議、CEN—歐洲標準委員會、ASAC—亞洲標準諮詢委員會、ARSO—非洲地區標準化組織
4. 行業標準:GJB—中國軍用標準、MIT-S—美國軍用標準、IEEE—美國電氣電子工程師協會。代號:由漢語拼音大寫字母組成
5. 地方標準:國家的地方一級行政機構制訂的標準。代號:由DB加上省級行政區代碼的前兩位
6. 企業標準:代號由Q加上企業代號組成
第八章:系統開發
考點1:開發模型(★★★★★)
1. 瀑布模型:階段明確,包括需求分析、設計、編碼、運行與維護。一旦需求變,整個項目推倒從新開始。適用於需求明確或二次開發的項目
2. V模型:強調測試貫穿項目始終
3. 噴泉模型:面向對象模型,特色是迭代、無間隙。
4. 原型模型:適用於需求不明確的場景(需求分析階段)
5. 增量模型:結合了瀑布模型和原型模型,在完成核心功能的基礎上,每輪迭代會都會產生新的增量來強化核心功能
6. 螺旋模型:結合了瀑布模型和演化模型的優勢,最主要的特色在於加入了風險分析
考點2:軟件開發過程(★)
1. 需求分析:軟件要完成的功能及性能要求
1. 功能需求:考慮系統要作什麼,在什麼時候作,在什麼時候以及如何修改或升級。
2. 性能需求:存儲容量限制、執行速度、響應時間及吞吐率等性能指標。
3. 設計約束:操做系統限制、開發語言限制等。
2. 概要設計:肯定軟件的模塊劃分,包括系統架構、模塊劃分、系統接口及數據設計
3. 詳細設計:數據結構和算法設計
4. 編碼:代碼編寫和單元測試
5. 軟件複雜性度量參數
1. 規模:指令數或源程序行數
2. 難度:程序中出現的操做數
3. 結構:程序結構
4. 智能:算法的難易程度
考點3:系統設計(★★)
1. 系統設計的原則:高內聚、低耦合
1. 內聚性
1. 偶然聚合:模塊完成的動做之間沒有任何關係
2. 邏輯聚合:模塊內部的各個組成在邏輯上具備類似的處理動做,但功能用途上彼此無關。
3. 時間聚合:模塊內部的各個組成部分所包含的處理動做必須在同一時間內執行。
4. 過程聚合:模塊內部各個組成部分所要完成的動做雖然沒有關係,但必須按特定的次序執行。
5. 通訊聚合:模塊的各個組成部分所使用同一個數據或產生同一輸出數據。
6. 順序聚合:模塊內部的各個部分,前一部分處理動做的最後輸出是後一部分處理動做的輸入。
2. 耦合性
1. 功能聚合:模塊內部各個部分所有屬於一個總體,並執行同一功能,且各部分對實現該功能都比不可少
2. 非直接耦合:兩個模塊之間沒有直接關係,它們的聯繫徹底是經過主模塊的控制和調用來實現的。
3. 數據耦合:兩個模塊彼此間經過數據參數交換信息。
4. 標記耦合:一組模塊經過參數表傳遞記錄信息,這個記錄是某一個數據結構的子結構,而不是簡單變量。
5. 控制耦合:兩個模塊彼此間傳遞的信息中有控制信息。
6. 外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局數據結構,並且不是經過參數表傳遞該全局變量的信息。
7. 公共耦合:兩個模塊之間經過一個公共的數據區域傳遞信息。
8. 內容耦合:一個模塊須要涉及到另外一個模塊的內部信息。
2.
考點4:軟件測試(★★★★)
1. 測試方法分類
2. 黑盒測試方法:不知道內部結構
1. 等價類劃分:肯定無效與有效等價類,設計用例儘量多的覆蓋有效類,設計用例只覆蓋一個無效類
2. 邊界值分析:處理邊界狀況時最容易出錯,選取的測試數據應該剛好等於、稍小於或稍大於邊界值
3. 白盒測試方法:知道內部結構
1. 語句覆蓋:程序的每一個語句(判斷和賦值)至少執行一次
2. 斷定覆蓋:每一個語句至少執行一次,並且每一個斷定的真假分支都至少執行一次
3. 條件覆蓋:每一個語句至少執行一次,並且斷定表達式中的每一個條件都取得各類可能的結果
4. 斷定/條件覆蓋:同時知足斷定覆蓋和條件覆蓋的邏輯覆蓋
5. 路徑覆蓋:選取足夠多的測試用例,使得程序的每條可能執行到的路徑都至少通過一次
4. 各測試階段任務
1. 單元測試:模塊接口、局部數據結構、邊界條件、獨立的路徑、錯誤處理。
2. 集成測試:模塊間的接口和通訊。
3. 系統測試:恢復測試、安全性測試、強度測試、性能測試、可靠性測試和安裝測試。
4. 驗收測試:有效性測試、軟件配置審查、驗收測試。
5. 迴歸測試:修改軟件後進行的測試,防止引入新的錯誤。
5. McCabe複雜度計算:V(G)=m-n+2,其中m是有向邊的條數,n是結點數
考點5:軟件維護(★★★★)
1. 正確性維護:針對真實存在並已經發生的錯誤進行的維護。
2. 預防性維護:針對真實存在但還未發生的錯誤進行的維護。
3. 適應性維護:指使應用軟件適應信息技術變化和管理需求變化而進行的修改。企業的外部市場環境和管理需求的不斷變化也使得各級管理人員不斷提出新的信息需求。
4. 完善性維護:擴充功能和改善性能而進行的修改。對已有的軟件系統增長一些在系統分析和設計階段中沒有規定的功能與性能特徵
考點6:軟件過程改進(★★)
1. 統一過程(UP、RUP):典型特色是用例驅動、以架構爲中心、迭代和增量,四個階段:
1. 初啓階段:項目的初創活動,里程碑是生命週期目標
2. 精化階段:需求分析和框架演進,里程碑是生命週期架構
3. 構建階段:系統的構建,產生實現模型,里程碑是初始運做功能
4. 移交階段:將產品發佈給用戶進行測試評價,並收集用戶的意見,產生軟件增量,里程碑是產品發佈
2. 敏捷開發:是一種以人爲核心、迭代、按部就班的開發方法,適用於小團隊和小項目,具備小步快跑的思想
1. 極限編程
1. 四大價值觀:溝通、簡單、反饋、勇氣
2. 五大原則:快速反饋、簡單性假設、逐步修改、提倡更改、優質工做
3. 十二個最佳實踐
1. 計劃遊戲:快速制定計劃、隨着細節的不斷變化而完善
2. 隱喻:找到合適的比喻傳達信息
3. 小型發佈:系統的設計可以儘量早的交付
4. 簡單設計:只處理當前的需求使設計保持簡單
5. 測試先行:先寫測試代碼在編程
6. 重構:從新審視需求和設計,以符合新的和現有的需求
2. 水晶法:強調常常交付,認爲每一種不一樣的項目都須要一套不一樣的策略、約定和方法論
3. 並列爭球法:核心是迭代、增量交付,按照30天進行迭代開發交付可實際運行的軟件
4. 自適應軟件開發:核心是三個非線性的,重迭的開發階段:猜想、合做、學習
3. 軟件能力成熟度模型
1. CMM:5個級別
1. 初始級(第1級):混亂和不可預測
1. 重複級(第2級):創建基本的項目管理過程和實踐來跟蹤項目經費、進度和功能特性
2. 定義級(第3級):組織具備標準軟件過程
3. 管理級(第4級):對軟件過程的產品都有定量的理解與控制
4. 優化級(第5級):過程的量化反饋和先進的新思想、新技術促使過程不斷改進
2. CMMI:6個級別
1. 未完成級(第0級):過程域的目標未知足
2. 已執行級(第1級):完成過程域的目標
3. 已管理級(第2級):針對單個過程實例的能力
4. 已定義級(第3級):過程的組織級標準化和部署
5. 定量管理級(第4級):過程定量管理
6. 優化管理級(第5級):過程不斷的改進
3. 連續式模型
1. CL0(未完成的):過程域未執行或未獲得CL1中定義的全部目標。
2. CL1(已執行的):其共性目標是過程將可標識的輸入工做產品轉換成可標識的輸出工做產品,以實現支持過程域的特定目標。
3. CL2(已管理的):其共性目標是集中於已管理的過程的制度化。根據組織級政策規定過程的運做將使用哪一個過程,項目遵循已文檔化的計劃和過程描述,全部正在工做的人都有權使用足夠的資源,全部工做任務和工做產品都被監控、控制、和評審。
4. CL3(已定義級的):其共性目標集中於已定義的過程的制度化。過程是按照組織的裁剪指南從組織的標準過程當中裁剪獲得的,還必須收集過程資產和過程的度量,並用於未來對過程的改進。
5. CL4(定量管理的):其共性目標集中於可定量管理的過程的制度化。使用測量和質量保證來控制和改進過程域,創建和使用關於質量和過程執行的質量目標做爲管理準則。
6. CL5(優化的):使用量化(統計學)手段改變和優化過程域,以知足客戶的改變和持續改進計劃中的過程域的功效。
考點7:項目管理
1. Gantt圖和PERT圖
1. 甘特圖:難以反映多個任務之間存在的邏輯關係
2. PERT圖:不能清晰的描述各個任務之間的並行關係
3. 計算
1. 關鍵路徑:圖中源點至匯點的最長路徑,關鍵路徑的時間稱之爲項目工期,也表述爲項目完成所需的最少時間
2. 總時差(鬆弛時間):最晚結束時間減去最先結束時間,或以最晚開始時間減去最先開始時間求取
3. 最先開始時間:順推
4. 最晚開始時間:逆推
2. 風險管理
1. 風險的特性:具備不肯定性,可能會形成損失。
2. 風險分析
1. 風險識別:系統化的肯定項目風險的威脅
2. 風險預測:風險發生的可能性或機率
3. 風險評估:根據風險發生的機率和產生的影響預測是否影響參考水平值
4. 風險控制:輔助項目組創建處理風險的策略,有效的策略應該考慮風險避免(最有效)、風險監控、風險管理及意外事件計劃
3. 風險類別
1. 項目風險:預算、進度、人員、資源以及和客戶相關的問題
2. 技術風險:設計、實現、對接、及維護問題
3. 商業風險:市場風險、策略鳳險、管理風險和預算風險
4. 項目估算方法
1. 專家判斷方法:受專家經驗和主觀性影響
2. 算法方法:模型中的參數難以肯定
3. 機器學習方法:難以定義訓練數據的特徵以及定義數據對象之間的類似性
5. 風險曝光度 = 風險出現率 X 風險損失
3. 文檔知識
1. 系統開發計劃:用於系統開發人員和項目管理人員在項目期內進行溝通,包括工做任務分解表、PERT圖、甘特圖和預算分配表
2. 整體規劃和開發合同:用於與系統分析人員在系統規劃和系統分析階段的溝通
3. 測試計劃:用於系統測試人員與系統開發人員之間的溝通
4. 特色
1. 針對性:文檔編制應考慮讀者對對象羣體
2. 精確性:文檔的行文應該十分確切,不能出現多一性的描述
3. 完整性:任何文檔都應該是完整的、獨立的,應該自成體系
4. 靈活性:各個不一樣軟件項目的規模和複雜程度存在差距,不能一概看待
5. 追溯性:各個開發階段編制的文檔與各個階段完成的工做有密切關係,因此在一個項目各個開發階段之間提供的文檔一定存在着可追溯關係
第九章:數據結構與算法
考點1:矩陣
1. 數組
2. 矩陣:計算時採用帶點排除法,注意一維數組的起始位置
考點2:表
1. 線性表
1. 順序表:順序存儲,即用一組地址連續的存儲單元依次存儲線性表中的數據元素
2. 鏈表:鏈式存儲,即經過指針連接起來的結點來存儲數據元素
1. 單鏈表:每一個結點中除包含數據域外,只設置一個指針域用以指向其直接後繼結點
2. 雙鏈表:每一個結點中除包含數值域外,設置兩個指針域,分別用以指向直接前驅結點和直接後繼結點
3. 循環鏈表:頭結點的指針域指向尾結點的指針域
3. 隊列(先進先出)和棧(先進後出)
1. 循環隊列
1. 隊空條件:head=tail;
2. 隊滿條件:(tail+1)%size=head
2. 解題技巧
1. 按照必定順序輸入棧,那麼出棧的可能有不少,由於進去的同時就立馬出去
2. 隊列和棧結合時,將選項帶入,使用二者的規則進行選擇
2. 廣義表
1. 廣義表是n個表元素組成的有限序列,是線性表的推廣,LS=(a0, a1,…, an)。
2. 長度(最外層表(LS)含有多少個元素),深度(包含括號的重數)
3. 取表頭head(Ls)(最外層表的第一個元素),取表尾tail(Ls)(除了最外層表中第一個元素以外的其餘全部元素)
考點3:樹
1. 樹與二叉樹的特性
1. 樹的概念
1. 孩子(結點的子樹的根稱爲該結點的孩子)、雙親(該結點稱爲其子結點的雙親)、和兄弟(具備相同雙親的結點互爲兄弟)
2. 結點的度:一個結點的子樹的個數
3. 葉子節點(終端結點):指度爲0的結點
4. 內部結點(分支節點):指度不爲0的結點
5. 結點的層次:若某節點在第i層,則其孩子結點在第i+1層
6. 樹的深度:一顆樹的最大層次數
2. 二叉樹的特性
1. 在二叉樹的第i層上最多有2i-1個結點(i≥1);
2. 深度爲k的二叉樹最多有2k -1個結點(k≥1);
3. 對任何一棵二叉樹,若是其葉子結點數爲n0,度爲2的結點數爲n2,則n0=n2+1。
4. 若是對一棵有n個結點的徹底二叉樹的結點按層序編號(從第1層到 L log2n ˩+1層,每層從左到右),則對任一結點i(1≤i≤n),有:
1. 若是i=1,則結點i無父結點,是二叉樹的根;若是i>1,則父結點是L i/2 ˩ ;
2. 若是2i>n,則結點i爲葉子結點,無左子結點;不然,其左子結點是結點2i;
3. 若是2i+1>n,則結點i無右子葉點,不然,其右子結點是結點2i+1。
2. 特殊的二叉樹
1. 二叉樹:二叉樹是每一個結點最多有兩個孩子的有序數,能夠爲空樹,能夠只有一個結點。
2. 滿二叉樹:任何結點恰有兩棵非空子樹。
3. 徹底二叉樹:最多能夠有兩個葉子結點,而且都在左邊
4. 平衡二叉樹:樹中任一結點的左右子樹高度之差不超過1
5. 排序二叉樹:任一結點的權值,大於其左孩子結點,小於其右孩子結點。
6. 線索二叉樹:在每一個結點中增長兩個指針域來存放遍歷時獲得的前驅和後繼信息。
7. 最優二叉樹:又稱爲哈弗曼樹,它是一類帶權路徑長度最短的樹。
1. 路徑長度:從樹根到每個葉子結點的通路數目之和。
2. 結點的帶權路徑長度:路徑長度與該結點權值的乘積。
3. 樹的帶權路徑長度:樹中全部葉子結點的帶權路徑長度之和。
4. 哈弗曼樹的構造
1. 根據給定的權值集合,找出最小的兩個權值,構造一棵子樹最爲其孩子結點,兩者權值之和做爲根結點
2. 在原集合中刪除這兩個結點的權值,並引入根節點的權值
3. 重複步驟(1)和步驟(2),直到原權值集合爲空
3. 樹的遍歷
1. 先序遍歷:按根à左à右的順序進行遍歷
2. 後序遍歷:按左à右à根的順序進行遍歷
3. 中序遍歷:按左à根à右的順序進行遍歷
4. 層次遍歷:按層次順序進行遍歷
考點4:圖
1. 徹底圖
1. 在無向圖中,若每對頂點之間都有一條邊相連,則稱該圖爲徹底圖
2. 在有向圖中,若每對頂點之間都有二條有向邊相互鏈接,則稱該圖爲徹底圖
2. 圖的存儲
1. 鄰接矩陣:具備對稱性,存儲時能夠只存出其中一個三角
2. 鄰接表:首先把每一個頂點的鄰接頂點用鏈表示出來,而後用一個一維數組來順序存儲上面每一個鏈表的頭指針
3. 圖的遍歷
4. 圖的拓撲排序:在AOV網點中從頂點Vi到Vj用有向邊表示活動開始的順序
5. 最小生成樹
1. 選擇入度爲0的頂點做爲起點
2. 選擇頂點之間最短(代價最小)路徑的幾條邊,不能造成環路
考點5:算法基礎及常見算法
1. 算法的特性
1. 有窮性:執行有窮步以後結束
2. 肯定性:算法中每一條指令都必須有確切的含義,不能含糊不清
3. 輸入(>=0),輸出(>=1)
4. 有效性(可行性):算法的每一個步驟都能有效執行並能獲得肯定的結果。例如a=0,b/a就無效
2. 分治法
1. 特徵:把一個大問題拆分紅多個小規模的相同子問題,通常可用遞歸解決。
2. 經典問題:斐波那契數列、歸併排序、快速排序、矩陣乘法、二分搜索、大整數乘法、漢諾塔
3. 動態規劃法(用於求最優解)
1. 特徵:劃分子問題(最優子結構),並把子問題結果使用數組存儲,利用查詢子問題結果構造最終問題結果
2. 經典問題:斐波那契數列、矩陣乘法、揹包問題、 LCS最長公共子序列
4. 回溯法(通用的解題法)
1. 特徵:包含問題的全部解的樹中,按照深度優先的策略,從根節點出發搜索樹。系統的搜索一個問題的全部解或任一解
2. 經典問題:N皇后問題、迷宮、揹包問題
5. 貪心法(用於求滿意解)
1. 特徵:局部最優,但總體不見得最優。每步有明確的,既定的策略
2. 經典問題:揹包問題(如裝箱)、多機調度、找零錢問題
考點6:時間複雜度與空間複雜度(★★★★★)
1. 時間複雜度:程序運行從開始到結束所須要的時間
1. 常見時間複雜度排序:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)
1. O(1):單個語句,無循環
2. O(n)~O(n3):單層循環、雙層嵌套循環、三層嵌套循環
3. O(log2n):樹形結構、二分法、構建堆過程
3. O(nlog2n):堆排序、歸併排序
4. O(2n):全部不一樣可能的排列組合
2. 主定理求固定形式遞歸式的時間複雜度
2. 空間複雜度:算法在運行過程當中臨時佔用存儲空間大小
考點7:排序和查找
1. 查找
1. 順序查找:將待查找的關鍵字依次與表中元素進行比較,時間複雜度爲O(n)
2. 二分法查找:比較次數最多爲log2n +1 ,時間複雜度爲 O(log2n),
1. 肯定中點位置:mid=(low+high)/2
2. 將待查的值K與R[mid].key比較
1. 若R[mid].key>k,新的查找區間是左子表,其中high=mid–1。
2. 若R[mid].key< k,新的查找區間是右子表,其中low=mid+1。
3. 若R[mid].key=k,則查找成功,算法結束。
3. 例題:請給出在含有12個元素的有序表{1,4,10,16,17,18,23,29,33,40,50,51}中二分查找關鍵字17的過程。
3. 散列表查找:已知關鍵字集合U,最大關鍵字爲m,根據函數Hash的值存儲到對應的空間
1. 開放定址法:按照某種探測方法,逐個查找此地址中是否存儲了數據元素,若是沒有,將關鍵字存入,不然,繼續查找下一個地址
1. 線性探測法:將關鍵字存儲在下一個沒有被佔的位置
2. 僞隨機數法:隨機的將關鍵字存儲在沒有被佔的位置
2. 例題:記錄關鍵碼爲(3,8,12,17,9),取m=10(存儲空間爲10),p=5,散列函數h=key%p
2. 排序
1. 直接插入排序
1. 排序規則:第i個記錄Ri依次與Ri-1,…,R2,R1進行比較,找到合適的位置插入
2. 特色:效率低
2. 希爾排序
1. 排序規則
1. 取一個小於n的整數d1將記錄分紅d1個組,距離爲d1的倍數的記錄放在同一個組中,各組內進行直接插入排序
2. 取第二個增量d2<d1重複1步驟,直至所取的增量dt=1,將最後獲得的組進行直接插入排序便可
2. 特色:效率高
3. 直接選擇排序
1. 排序規則
1. 在全部記錄中選出排序碼最小的記錄,把它與第1個記錄交換
2. 在其他的記錄內選出排序碼最小的記錄,與第2個記錄交換……依次類推,直到全部記錄排完爲止
4. 堆排序
1. 堆的定義:設有n個元素的序列{K1,K2,…,Kn}
1. 若Ki ≤ K2i 且 Ki ≤ K2i +1,稱爲小頂堆
2. 若Ki ≥ K2i 且 Ki ≥ K2i +1,稱爲大頂堆
2. 排序規則:先將序列創建堆,而後輸出堆頂元素,再將剩下的序列創建堆,而後再輸出堆頂元素,依此類推,直到全部元素均輸出爲止
1. 將順序表R[1..n]中元素創建爲一個堆,堆頂位於R[1],待序區爲R[1..n]
2. 循環執行步驟3~步驟4,共n-1次
3. 假設爲第i 運行,則待序區爲R[1..n-i+1],將堆頂元素R[1]與待序區尾元素R[n-i+1]交換,此時頂點元素被輸出,新的待序區爲R[1..n-i ]
4. 待序區對應的堆已經被破壞,將之從新調整爲大頂堆
5. 冒泡排序
1. 排序規則:經過相鄰元素之間的比較和交換,將排序碼較小的元素逐漸從底部移向頂部
6. 快速排序
1. 排序規則:將原問題分解成若干個規模更小但結構與原問題類似的子問題。經過遞歸地解決這些子問題,而後再將這些子問題的解組合成原問題的解
1. 在待排序的n個記錄中任取一個記錄做爲基準
2. 使用基準和最後一個元素做比較
3. 而後用第二個元素和基準做比較,依次類推,最後基準在中間
7. 歸併排序
1. 排序規則
1. 將兩個或兩個以上的有序子表合併
2. 比較A[i]和A[j]的排序碼大小,若A[i]的排序碼小於等於A[j]的排序碼,則將第一個有序表中的元素A[i]複製到R[k]中,並令i和k分別加1
3. 如此循環下去,直到其中一個有序表比較和複製完,而後再將另外一個有序表的剩餘元素複製到R中
8. 基數排序
1. 排序規則:基數的選擇和關鍵字的分解是根據關鍵字的類型來決定的,例如關鍵字是十進制數,則按個位、十位來分解
第十章:面向對象
考點1:基礎知識(★★★★★)
1. 概念
1. 對象:屬性(數據)+方法(行爲)+對象ID
2. 類:對象的集合
1. 實體類:現實世界中存在的實體,如人,物等
2. 邊界類(接口):未用戶提供一種與系統合做交互的方式,如顯示屏、窗口、對話框、條形碼、二維碼等
3. 控制類:控制活動流,充當協調者
3. 接口:只有方法定義沒有實現
2. 三大特徵
1. 封裝:隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,提升安全性。
2. 繼承:提升代碼複用性,是實現多態的前提。
3. 多態:父類或接口定義的引用變量指向子類或具體實現類的實例對象,提升了代碼的拓展性。
4. 靜態綁定:在編譯時,把過程調用和響應調用所須要執行的代碼加以結合
5. 動態綁定:在運行時,把過程調用和響應調用所須要執行的代碼加以結合
3. 設計原則
1. 單一職責原則SRP:類的功能要單一。
2. 開放封閉原則OCP:擴展開放,修改關閉。
3. 裏式替換原則LSP:子類能夠替換父類出如今父類可以出現的任何地方。
4. 依賴倒置原則DIP:要依賴於抽象,而不是具體實現;針對接口編程,不要針對實現編程
5. 接口分離原則ISP:使用多個專門的接口比使用單一的總接口要好
6. 組合重用原則:要儘可能使用組合,而不是繼承關係達到重用目的
7. 迪米特原則(最少知識法則):一個對象應當對其餘對象有儘量少的瞭解
4. 面向對象開發過程
1. 面向對象分析:得到對應問題的解決,抽取和整理用戶需求並創建問題域精確模型
1. 認定對象:按天然存在的實體確立對象。通常「名詞」做爲對象
2. 組織對象:分析對象間的關係,將相關對象抽象成類,利用類的繼承性創建具備繼承性的層次的類結構
3. 描述對象間的相互做用:描述對象在應用系統中的關係。
2. 面向對象設計:採用協做的對象、對象的屬性和方法解決軟件問題的方案
3. 面向對象實現:採用面向對象程序設計語言實現系統
4. 面向對象測試:根據規範說明來驗證系統設計的正確性
考點2:UML(★★★★★)
1. UML圖分類
2. 用例圖:描述系統和外部的交互關係。小人表示參與者,圓圈表示用例,實線空箭頭表示泛化關係,虛線普通箭頭<<extend>>表示擴展關係,虛線普通箭頭<<include>>表示包含關係
3. 類圖:描述類、接口及協做之間的關係,用於系統的靜態實現視圖建模。箭頭上可表示關係和角色,方框表示實體
1. 依賴:一個類A使用到了另外一個類B(做爲類A的方法的參數)
2. 關聯:類B做爲成員變量造成存在於類A中
3. 聚合:總體與部分生命週期不一樣
4. 組合:總體與部分生命週期相同
5. 泛化:一個類與它的一個或多個細化類之間的關係
4. 序列圖:對象間消息的傳遞按時間順序。對象名標有下劃線,生命線爲虛線,控制焦點用薄矩形表示,消息爲箭頭
1. 同步消息:進行阻止調用,調用着終止執行,使用實心三角實線表示
2. 異步消息:調用着發出消息後繼續執行,不引發調用着阻塞,使用普通箭頭實線表示
3. 返回消息:使用普通箭頭虛線表示
5. 活動圖:用於系統的動態視圖建模,一般在建模用例圖以後,對複雜用例進行進一步細化。黑色粗線條的數量表示能運行的最大線程數,在此區間的活動能夠同時進行
6. 狀態圖:描述對象、子系統、系統的生命週期。圓圈表明狀態,箭頭表示監護條件
7. 通訊圖:表示對象和對象之間的調用關係。「:」表示對象,前面是對象名,後面是類名
8. 組件圖:描述組件之間的組織和依賴,用於系統的靜態實現視圖,與類圖相關,一般把組件映射爲一個或多個類、接口和協做
9. 部署圖:軟件的構件應該部署在哪一個硬件的節點上,用於系統的靜態實施視圖
考點3:設計模式(★★★★★)
1. 設計模式分類
2. 建立型模式
3. 結構型模式
4. 行爲型模式