日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件技术基础复习提纲

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件技术基础复习提纲 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 第一章 緒論
    • 軟件開發過程
    • 數據結構在計算問題中的用途
    • 算法設計
    • 操作系統
    • 操作系統主要功能
    • 編譯原理相關
    • 數據庫相關
  • 第二章 數據結構
    • 2.1 線性表
    • 2.2 復雜度分析
    • 2.3 分治遞歸
    • 2.4 樹
      • 樹的各種基本概念
      • 二叉樹的存儲結構
      • 二叉樹、滿二叉樹、完全二叉樹
      • 二叉樹的遍歷
    • 2.5 圖
      • 圖的定義及相關術語
      • 圖的存儲結構
      • 圖的遍歷
      • 貪心算法與單源最短路徑
  • 第三章 操作系統
    • 3.1 進程相關
      • 進程的定義
      • 進程的五狀態轉換模型
      • 進程的構成與PCB
      • 運行Fork()創建進程
    • 3.2 線程相關
      • 線程的定義
      • 進程和線程的區別
      • 三類線程(用戶級、內核級、混合)
    • 3.3 互斥與同步
      • 競爭臨界資源引起的問題和互斥的條件
      • 掌握信號量方法
        • 信號量進行互斥和同步
        • 解決生產者消費者問題
      • 進程間通信方式
    • 3.4 程序的裝入和鏈接
      • 高級語言的源代碼轉化為進程的三個步驟
      • 靜態鏈接,裝入時鏈接,運行時鏈接的區別,以及各自的優缺點
      • 絕對裝入方式和可重定位裝入方式的優缺點
  • 第四章 編譯原理
    • 4.1 數據類型及其抽象層次
    • 4.2 六種數據類型聚合方式
    • 4.3 語句級控制結構
    • 4.4 定義語言:生成(文法)或識別(語法圖)
    • 4.5 文法的分類
    • 4.6 推導與規約,文法與語言,二義性問題
    • 4.7 短語、直接短語、句柄的含義和求法
    • 4.8 編譯步驟
    • 4.9 語法分析的兩大類別:自下而上和自上而下
    • 4.10 遞歸下降分析法
    • 4.11 預測分析法
    • 4.12 LR分析法是句柄規約
    • 4.13 語義翻譯的概念、作用
    • 4.14 類型檢查
    • 4.15 語義翻譯
    • 4.16 中間代碼的寫法:三地址碼、四元式
  • 第五章 數據庫
    • 5.1 數據庫基本概念
    • 5.2 模式的體系結構,三種模式
    • 5.3 關系模式的基本概念
    • 5.4 主碼與候選碼
    • 5.5 關系運算,運算符表達式
    • 5.6 完整性約束,規則、類別等
    • 5.7 SQL語法
    • 5.8 數據庫設計理論
      • 函數依賴,模式分解
      • 范式的概念、如何區分不同的范式
    • 5.9 數據庫應用設計方法
      • 數據庫的三種數據模型
      • ER模型的概念、結構及使用其構造數據庫的方法
      • 數據庫設計的各個階段及主要工作


第一章 緒論

復習課地址

軟件開發過程

  • 問題的理解:清楚問題的輸入、要求和輸出
  • 算法設計:包括軟件架構設計、模塊分解、選擇具體算法策略、用適當的方式描述和逐步細化算法步驟
  • 數據結構設計:一方面要選擇或設計能有效表示和存儲應用問題中所涉及的數據對象的數據結構,同時還要選擇或設計能支持算法策略實現的數據結構
  • 算法分析:發現有改進完善之處,返回第二步,重新選擇或設計算法與數據結構
  • 程序設計:設計具體的數據存儲方案、數據結構實現細節、基于某種操作系統設計程序實現細節,在計算機上調試和運行程序
  • 程序實現:用某種計算機程序設計語言,定義數據結構、數據存儲、基于某種操作系統編寫實現算法的代碼,編譯代碼并在計算機上調試和運行程序,并不斷優化程序設計
  • 數據結構在計算問題中的用途

    存放要處理的數據、實現算法策略

    算法設計

    研究各類數據結構上的各種運算方法,從而解決計算問題

    操作系統

    一組控制和管理計算機硬件和軟件資源、合理的對各類作業進行調度,以及方便用戶使用的程序的集合

    操作系統主要功能

  • 處理機管理
    按照一定的算法把處理機分配給進程(線程),并對其進行有效的管理和控制

  • 2. 存儲器管理
    為多道程序的運行提供良好的環境,方便用戶使用存儲器,提高存儲器的利用率以及 能 從邏輯上擴充內存

  • 設備管理
    完成用戶進程提出的I/O請求;為用戶進程分配其所需的I/O設備;提高CPU和I/O設備的利用率;提高I/O速度;方便用戶使用I/O設備
  • 文件管理
    對用戶文件和系統文件進行管理,以方便用戶使用,并保證文件的安全性

  • 用戶接口
    提供友好的用戶接口以方便用戶使用
    系統調用是用戶程序取得操作系統服務的唯一途徑

  • 編譯原理相關

  • 依賴操作系統的編譯方式

  • 不依賴操作系統的編譯方式

  • 相關語言

  • 數據庫相關

    數據庫管理系統(DBMS) 是位于用戶與操作系統之間的數據管理軟件。
    數據庫在建立、運用和維護時由數據庫管理系統統一管理、統一控制。它使用戶方便的定義數據和操作數據,并能夠保證數據的安全性、完整性、以及多用戶對數據的并發使用及發生故障后的數據庫恢復。


    第二章 數據結構

    2.1 線性表

    • 線性表的邏輯存儲結構

    • 線性表的順序和鏈式存儲結構
      順序:用一組地址連續的存儲單元依次存放線性表中的數據元素
      鏈式:用一組地址任意的存儲單元存放線性表中的數據元素

    • 兩種方式插入刪除操作
      順序:均為O(n)
      鏈式:O(1)

    • 兩種存儲結構的優缺點
      順序適合查找,鏈式適合插入刪除

    2.2 復雜度分析

    • 常見關系式

    例題:

    • 漸進分析

    2.3 分治遞歸

    • 分治遞歸算法思想
      第一步:要求解一個大問題可劃分為k個子問題,對這k個子問題進行求解,如果子問題的規模仍然不夠小,則再劃分為k個子問題,如此遞歸的進行下去,直到問題的規模足夠小,很容易求出其解為止
      第二步:將求出的小規模問題的解合并為一個更大規模的問題的解,自底向上逐步求出原來問題的解

    • 分支法的適用條件

      該問題的規模縮小到一定的程度就可以容易地解決;
      該問題可以分解為若干個規模較小的相同問題,即該問題具有最優子結構性質;
      利用該問題分解出的子問題可以合并為該問題的解;
      該問題所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子問題。
      Tips: 如果各個子問題不獨立,需要重復的解決公共的子問題,用動態規劃更好

    • 分治思想求解排序問題
      思想:

      比如:

      應用:歸并排序,快速排序等

    2.4 樹

    樹的各種基本概念

    • (Tree)是n(n≥0)個結點的有限集,有且只有一個根結點,其余結點可劃分為不同的根的子樹
    • 樹的結點包含一個數據元素及若干指向其子樹的分支
    • 結點擁有的子樹數稱為結點的度(Degree)
    • 度數為0的結點稱為葉子(Leaf)或終端結點
    • 度數不為0的結點稱為非終端結點分支結點
    • 樹的度是樹內各結點的度的最大值
    • 結點的子樹的跟稱為該結點的孩子,該結點稱為孩子的雙親,同一個雙親的孩子互稱兄弟
    • 結點的祖先是從根到該結點所經分支上的所有結點,反之,以某結點為根的子樹的任意結點都稱為該結點的子孫
    • 結點的層次(Level)從根開始定義起,根為第一層,根的孩子為第二層
    • 其雙親在同一層的結點互稱為堂兄弟
    • 樹中結點的最大層次稱為樹的深度
    • 如果樹中結點的各子樹看成從左到右是有次序的,則稱該樹為有序樹,否則稱為無序樹
    • 森林(Forest)是m(m≥0)棵互不相交的樹的集合

    二叉樹的存儲結構

    • 順序存儲結構
      用一組地址連續的存儲單元依次自上而下、自左至右存儲完全二叉樹上的結點元素;對于一般二叉樹
    • 鏈式存儲結構
      二叉樹的鏈表中的結點至少包含3個域:數據域和左、右指針域,稱之為二叉鏈表,如若還包含指向雙親結點的指針域則稱之為三叉鏈表
      容易證得,在含有nnn個結點的二叉鏈表中有n+1n+1n+1個空鏈域,則應將其每個結點于完全二叉樹上的結點相對照,存儲在一維數組的相應分量中

    二叉樹、滿二叉樹、完全二叉樹

    • 二叉樹(Binary Tree)是另一種樹型結構,它的特點是每個結點至多只有兩棵子樹(度小于等于2),并且二叉樹的子樹有左右之分
    • 滿二叉樹一棵深度為kkk且有222kkk?1-1?1個結點的二叉樹
    • 完全二叉樹深度為kkk的,有n個結點的二叉樹,當且僅當其中每一個結點都與深度為kkk的滿二叉樹中編號1至n的結點一一對應

    二叉樹的遍歷

    先序中序后序遍歷
    關鍵: 遞歸實現(先序指的是根結點的順序在先)

    #include<iostream>using namespace std;typedef struct BiTNode {char data;struct BiTNode* lchild, * rchild; }BiTNode, * BiTree;void creatBiTree(BiTree& T); void InOrderTraverse(BiTree T); void PostOrderTraverse(BiTree T); int getNumOfLeaf(BiTree T, int count); int getDepth(BiTree T);int main() {BiTree T = new BiTNode;cout << "請先序輸入結點:" << endl;creatBiTree(T);cout << endl;cout << "中序遍歷:";InOrderTraverse(T);cout << endl;cout << "后序遍歷:";PostOrderTraverse(T);cout << endl;cout << "葉子結點數:";cout << getNumOfLeaf(T, 0) << endl;cout << "樹的高度:";cout << getDepth(T) << endl << endl;system("pause");return 0; } void creatBiTree(BiTree& T) {char data;cin >> data;if (data == ',') {T = nullptr;return;}T = new BiTNode;T->data = data;creatBiTree(T->lchild);creatBiTree(T->rchild); } void InOrderTraverse(BiTree T) {if (T) {InOrderTraverse(T->lchild);cout << T->data << " ";InOrderTraverse(T->rchild);} } void PostOrderTraverse(BiTree T) {if (T) {PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);cout << T->data << " ";} } int getNumOfLeaf(BiTree T, int count) {if (T) {if (!T->lchild && !T->rchild) {return ++count;}count = getNumOfLeaf(T->lchild, count);count = getNumOfLeaf(T->rchild, count);}return count; } int getDepth(BiTree T) {if (T) {int HL = getDepth(T->lchild);int HR = getDepth(T->rchild);int MaxH = HL > HR ? HL : HR;return (MaxH + 1);}else {return 0;} }

    層次遍歷
    關鍵:隊列實現(父節點出隊列,子節點入隊)

    :給定先序和中序遍歷恢復二叉樹
    核心:判斷根結點

    2.5 圖

    圖的定義及相關術語

    • 是一種較線性表和樹更為復雜的數據結構。在圖形結構中,結點之間的關系是任意的,圖中任意兩個數據元素之間都可能相關。
    • 在圖中的數據元素通常稱做頂點(Vertex),V是頂點的有窮非空集合;VR是兩個頂點之間的關系的集合。若<v,w>∈VR<v,w>∈VR<v,w>VR,則<v,w><v,w><v,w>表示從vvvwww的一條(Arc), 且稱vvv弧尾(Tail)或起始點,稱www弧頭(Head)或終端點。
    • 無向圖<v,w><v,w><v,w><w,v><w,v><w,v>是相同的,即VR是對稱的,用(v,w)(v,w)(v,w)表示vvvwww的一條(Edge),反之稱為有向圖
    • 12\Large\frac{1}{2}21?n(n?1)n(n-1)n(n?1)條邊的無向圖稱為完全圖,有n(n?1)n(n-1)n(n?1)條邊的有向圖稱為有向完全圖
    • 有很少條邊或弧的無向圖稱為稀疏圖,反之稱為稠密圖
    • 有時圖的邊或弧具有與它相關的數,這種與圖的邊或弧相關的數叫做(Weight)。
    • 對于無向圖G=(V,G=(V,G=(V,{EEE}))),如果邊(v,v′)∈E(v,v')∈E(v,v)E,則稱頂點vvvv′v'v互為鄰接點(Adjacent)。邊(v,v′)(v,v')(v,v)依附于頂點vvvv′v'v,或者說(v,v′)(v,v')(v,v)和頂點vvvv′v'v相關聯
    • 頂點的(Degree)是和vvv相關聯的邊的數目,記為TD(V)TD(V)TD(V)。以頂點vvv為頭的弧的數目稱為vvv的入度(InDegree),記為ID(v)ID(v)ID(v);以頂點vvv為尾的弧的數目稱為vvv的出度(OutDegree),記為OD(v)OD(v)OD(v);TD(v)=ID(v)+OD(v)TD(v)=ID(v)+OD(v)TD(v)=ID(v)+OD(v)
    • 一般地,如果頂點vvviii的度記為TD(vTD(vTD(viii))),那么一個有nnn個頂點,eee條邊或弧的圖,滿足e=e=e=12\Large\frac{1}{2}21?∑TD(v)\sum TD(v)TD(v)
    • 無向圖中從頂點vvv到頂點v′v'v路徑是一個頂點序列。第一個頂點和最后一個頂點相同的路徑稱為回路(Cycle)。序列中頂點不重復出現的路徑稱為簡單路徑,類似的,除了第一個和最后一個頂點外,其余頂點不重復出現的回路稱為簡單回路簡單環
    • 無向圖GGG,如果通過頂點vvv到頂點v′v'v有路徑,則稱vvvv′v'v連通的。如果對圖GGG中任意兩個頂點都滿足連通關系,則稱圖GGG連通圖(Connected Graph)。連通分量(Connected (Connected Graph))是指無向圖中的極大連通子圖。
    • 有向圖GGG,如果每一對頂點都有路徑,則稱GGG強連通圖,有向圖中的極大強連通子圖稱做有向圖的強連通分量
    • 一個連通圖的生成樹是一個極小連通子圖,它含有圖中全部頂點,但只有足以構成一棵樹的n?1n-1n?1條邊。
    • 一個有向圖的生成森林由若干棵有向樹組成,含有圖中全部頂點,但只有足以構成若干棵不相交的有向樹的弧。

    圖的存儲結構

    • 由于圖的結構比較復雜,任意兩個頂點之間都可能存在聯系,因此沒有順序映像的存儲結構
    • 鄰接矩陣
    • 鄰接表

    圖的遍歷

    深搜和廣搜
    深搜:遞歸進行
    廣搜:隊列進行,類似樹是層次遍歷

    貪心算法與單源最短路徑

    • 貪心算法
    • 在對問題求解時,總是做出在當前看來是最好的選擇,也就是說僅僅是在某種意義上的局部最優解。
      貪心算法不能對所有問題都得到整體最優解。

    活動安排

    Dijkstra


    第三章 操作系統

    3.1 進程相關

    進程的定義

    • 一個正在執行的程序
    • 可并發執行的程序在一個數據結合上的運行過程
    • 基本特征
  • 動態性:存在生命周期
  • 并發性:任何進程都可以同其他進程一起推進
  • 獨立性:各進程的地址空間相互獨立,除非采用進程間通信手段
  • 異步性:按各自獨立的、不可預知的速度向前推進
  • 結構性:進程 = 進程控制塊(PCB) + 程序塊 + 數據段
  • 進程的五狀態轉換模型

    • 新建狀態
      進程在創建時需要申請一個空白PCB,向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態稱為創建狀態
    • 就緒狀態
      進程已經準備好,已分配到所需資源,只要分配到CPU就能夠立即運行
    • 執行狀態
      進程處于就緒狀態被調度后,進程就會進入到執行狀態
    • 阻塞狀態
      正在執行的進程由于某些事件(I/O請求,申請緩存區失敗)而暫時無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用
    • 終止狀態
      進程結束,或出現錯誤,或被系統終止,進入終止狀態,無法再執行

    進程的構成與PCB

    • 進程 = 進程控制塊(PCB) + 程序塊 + 數據段

    • PCB(process control block)
      進程存在的唯一標識,進程新建時就有

    運行Fork()創建進程

    • 進程的創建

    • Fork()

    • 例題

    3.2 線程相關

    線程的定義

    線程是操作系統匯總獨立調度和分派的基本單位,大部分情況下,他被包含在進程之中,是進程中的實際運作單位。

    進程的倆基本特點:資源所有權和調度基本單位
    現將調度權力給了線程,線程也就不含資源所有權,進程中的所有線程共享進程的資源,當然TCB、程序計數器、寄存器和堆棧這些必不可少的資源除外

    進程和線程的區別

  • 概念
    進程是系統進行資源分配和調度的一個獨立單位
    線程是進程中的一個實體,是獨立調度和分配的基本單位

  • 調度

  • 并發性

  • 擁有資源

  • 系統開銷

  • 三類線程(用戶級、內核級、混合)

    • 根據線程是否對內核透明
  • 用戶級線程
    含義:線程的創建、撤銷和切換等操作全部由應用程序完成
    操作系統內核不知道線程的存在,仍以進程為調度單位

    Infomix OS

  • 內核級線程
    含義:線程的創建、撤銷和切換等操作由系統內核完成,操作系統以線程為調度單位

    Win Linux OS
    優缺點

  • 混合線程
    含義:線程的創建、撤銷、調度和同步等操作在用戶級應用程序中完成,多個用戶級線程被影射到一個或較少的某些內核級線程

    Solaris OS

  • 用戶級、內核級、混合模式比較

  • 3.3 互斥與同步

    競爭臨界資源引起的問題和互斥的條件

    • 臨界資源
      必須互斥使用的資源稱為臨界資源

    • 臨界區
      訪問臨界資源的那段代碼

    • 引起的問題
      忙等、饑餓和死鎖

    • 臨界區使用原則/互斥條件

      空閑讓進
      當無進程處于臨界區時,允許進程進入臨界區
      忙則等待
      當一個進程正處在某臨界區內,任何試圖進入其臨界區的進程都必須進入代碼連續循環,陷入忙等狀態。連續測試一個變量直到某個值出現為止,稱為忙等
      有限等待
      對要求訪問臨界資源的進程,應保證有限時間內能進入自己的臨界區,以免陷入“死等”狀態~(受惠的是進程自己)
      讓權等待
      當進程不能進入自己的臨界區時,應立即釋放處理機,以免進程陷入“忙等”狀態~(受惠的是其他進程)

    掌握信號量方法

    • 互斥與同步解決策略

    信號量進行互斥和同步

    • 基本原理
      兩個或多個進程可以通過傳遞信號的方式進行合作,可以迫使進程在某個位置暫停執行(阻塞等待),知道他收到一個可以“向前推進”的信號(被喚醒
      將實現信號燈作用的變量稱為信號量,常定義為記錄型變量s,其中一個域為整型,另一個域為隊列,其元素為等待該信號量的阻塞進程(FIFO)

    • P/V操作

    • 信號量的物理意義

    • wait、signal應用

    • 信號量分類
      互斥信號量:用于申請或釋放資源的使用權,通常初始化為1
      資源信號量:用于申請或歸還資源,可以初始化為大于1的正整數表示系統中某類資源的可用個數

    解決生產者消費者問題






    進程間通信方式

    • 進程通信
      進程之間的信息交換

    • 進程通信方式

    • 掌握消息傳遞機制

    • 如何用消息傳遞機制實現互斥

    3.4 程序的裝入和鏈接

    高級語言的源代碼轉化為進程的三個步驟

    靜態鏈接,裝入時鏈接,運行時鏈接的區別,以及各自的優缺點

    • 靜態鏈接
      在程序運行之前,先將各目標模塊及他們所需的庫函數,鏈接成一個完整的裝配模塊(又稱執行模塊),以后不再拆開。

    • 裝入時動態鏈接
      目標模塊在裝入內存時,采用邊裝入邊鏈接的鏈接方式。

    • 運行時動態鏈接
      對某些目標模塊的鏈接,是在程序執行中需要該目標模塊時,由操作系統去找到該模塊并將之裝入內存,隨后把他鏈接到調用者模塊e

    絕對裝入方式和可重定位裝入方式的優缺點

    • 絕對裝入方式

    • 可重定位裝入方式

    • 運行時重定位(動態重定位)裝入方式


    第四章 編譯原理

    4.1 數據類型及其抽象層次

    • 含義
      數據類型實質上是對存儲器中所存儲的數據進行的抽象,包括了一組值的集合和一組操作
    • 抽象層次分類
      內部類型、用戶定義類型和抽象數據類型
    • 抽象數據類型
      滿足下述特性的用戶定義類型稱為抽象數據類型
      (1)在定義該類型的程序單元中,建立與表示有關的基本操作
      (2)對使用該類型的程序單元來說,該類型的表示是隱蔽的

      比如Java中get,set而不用public,為了封裝性與安全性

    4.2 六種數據類型聚合方式

  • 笛卡爾積

    • 定義
      n個集合A1, A2, … , An的笛卡兒積:
      A1×A2×…×An,
      它是一個集合,其元素時有序的n元式
      (a1, a2, … , an)
    • 舉例
      例如一個正多邊形用一個整數表示邊數,用一個實數表示長度
      integer×real

      C語言中的結構就是很好應用

  • 有限映像

    • 定義
      從定義域類型DT值的有限集合,到值域類型RT值的有限集合的函數(映像)稱為有限映像
      值域對下給你通過下標變量方式對應
    • 舉例

      數組

  • 序列
    (1)任意多個數據項組成,數據項稱為該序列的成分,且類型相同
    (2)串是序列(字符串)
    (3)順序文件的思想也來自序列的概念,只能順序讀寫

  • 遞歸
    若數據類型T包含屬于同一類型T的成分——遞歸類型
    (1)在類型定義中使用被定義類型的名字
    (2)不允許直接遞歸(C++的靜態對象成員除外)
    (3)指針是構造遞歸類型的重要手段

    struct mlink { int data; struct mlink *next; …

  • 判定或
    可以選擇不同成員的構造機制
    例如C的聯合union

    union Data
    {
    int i;
    float f;
    char str[20];
    } data;
    現在,Data 類型的變量可以存儲一個整數、一個浮點數,或者一個字符串。這意味著一個變量(相同的內存位置)可以存儲多個多種類型的數據。您可以根據需要在一個共用體內使用任何內置的或者用戶自定義的數據類型。

  • 冪集
    類型T的元素所有子集的集合,稱為冪集,T稱為基類型(并不所有語言都有冪集聚合機制,沒有的話可以用鏈表,數組實現)

  • 4.3 語句級控制結構

    • 語句級控制結構
      規定語句執行流程的控制

      單元級控制結構:控制調用程序單元

    • 三種 語句級控制結構
      順序
      選擇(分支)
      重復(循環)

  • 順序

    • 語言可用的、最簡單的控制結構
      A;
      B;

    • 復合語句
      若干個語句可以組合在一起。邏輯上作為一條語句對待
      如{…}

  • 選擇
    選擇控制結構允許在某些可選擇的語句選擇其中一條來執行

    單選: if then
    二選一: if then else
    多選一:嵌套 if then else

  • 重復

    • 兩種情況
      計數器制導
      條件制導

    • 計數器制導
      當預先知道重復次數時,在循環計數器值的有限集合上重復
      (for循環)

    • 條件制導
      不知道次數,只知道條件
      (while, do-while)

  • 4.4 定義語言:生成(文法)或識別(語法圖)

    • 文法從產生的觀點來定義語言的語法,通用性好
    • 語法圖從識別的觀點定義語言的語法,更直觀和清晰
      文法

    4.5 文法的分類

    文法
    0型文法:沒有限制
    1型文法:左邊表達式長度小于右邊(s->埃普西隆除外)
    2型文法:在1基礎上,左邊是非終結符
    3型文法:3型文法也叫正規文法,它對應于有限狀態自動機。它是在2型文法的基礎上滿足:A→α|αB(右線性)或A→α|Bα(左線性)。

    4.6 推導與規約,文法與語言,二義性問題

    文法

    4.7 短語、直接短語、句柄的含義和求法

    詳解博客及練習

    4.8 編譯步驟

    每個步驟的任務,符號表及管理程序的任務

    • 變量四要素:類型、值、作用域和生存期
    • 編譯步驟
  • 詞法分析
    輸入字符串,根據此法規則識別出單詞符號

  • 語法分析
    根據語法規則,將單詞符號構成各類語法單位,并執行語法檢查

  • 語義分析
    根據語義規則,進行初步編譯

  • 優化
    對中間代碼進行等價變換,以使代碼更有效

  • 目標代碼生成
    生成機器語言程序或匯編語言程序

  • 符號表管理
    完成符號表的建立,查找,更新

  • 出錯處理
    發現,指出,限制

    (1)實用的編譯程序不一定總是分成5個階段
    (2)目標程序不一定能立即執行,可能還要經過鏈接、裝入等階段
    (3)編譯的各階段均需要和符號表管理程序、出錯程序打交道

  • 4.9 語法分析的兩大類別:自下而上和自上而下

    先導內容-詞法分析
    語法分析

    4.10 遞歸下降分析法

    公共左因子和左遞歸消除
    語法分析

    4.11 預測分析法

    分析方法,流程,組成
    FIRST集和FOLLOW集
    預測分析表的構造
    LL(1)文法的判斷
    語法分析

    4.12 LR分析法是句柄規約

    語法分析

    4.13 語義翻譯的概念、作用

    4.14 類型檢查

    4.15 語義翻譯

    語義分析

    賦值語句的翻譯
    布爾表達式
    IF語句的翻譯

    4.16 中間代碼的寫法:三地址碼、四元式

    語義分析

    第五章 數據庫

    5.1 數據庫基本概念

    • 數據庫
      數據庫是長期存儲在計算機內、有組織的、可共享的大量數據集合

    • DBMS
      一個能夠讓用戶定義、創建和維護數據庫以及控制對數據庫訪問的軟件系統

      組成:查詢處理器 + 存儲管理器
      查詢處理器:DDL編譯器、DML編譯器、嵌入式DML的預編譯器及查詢運行核心程序
      存儲管理器:授權和完整性管理器、事務管理器、文件管理器及緩沖區管理器

    • 數據庫系統

      DBS是指在計算機系統中引入數據庫后的系統構成

      由硬件系統、數據庫集合、數據庫管理系統及相關軟件、DBA、用戶組成

    5.2 模式的體系結構,三種模式

    • 型 和 值 的概念
      型:對某一類數據的結構和屬性的說明
      值:是型的一個具體賦值

    • 模式
      數據庫邏輯結構和特征的描述
      是型的描述
      反映的是數據的結構及其聯系
      模式是相對穩定的



    5.3 關系模式的基本概念

    • 關系模式
      關系名、屬性的名字及相關聯的域名、完整性約束(表頭)
      關系必須是規范化的,滿足一定的規范條件

    • 關系
      笛卡爾積的一個有意義的子集

    關系模式是靜態的,比如我們看到的一張二維表的表頭,即有哪些構成,每個列的名稱,類型啊長度等等
    關系是動態的,就是一張二維表的具體內容,就是除了標題以外的數據行,因為表數據經常被修改,插入,刪除,所以不同時刻、關系可能不一樣、其實,關系就是數學中的集合了,每一行就是集合的一個元素

    關系為一張二維表的具體內容,就是除了標題行以外的數據行,因為表數據經常被修改,插入,刪除,所以不同時刻,關系可能不一樣。

    • 元組
      表中的一行,表示一個實體,關系是由元組組成的
    • 屬性
      表中的每一列在關系中稱為屬性
    • 域(Domin)
      屬性的取值范圍

    5.4 主碼與候選碼


    5.5 關系運算,運算符表達式

    • 并運算

    • 差運算

    • 交運算

    • 笛卡爾積運算

    • 選擇運算

    • 投影運算

    • 條件運算

    • 自然連接

    • 連接運算

    5.6 完整性約束,規則、類別等

    • 概述
      完整性約束是加在數據庫模式上的一個具體條件,它規定什么樣的數據能夠存儲到數據庫系統中。

      比如,年齡必須為整數,有取值范圍等
      學號一定是唯一的
      學生所在的系是學校開設的系

    • 控制機制

    • 目的
      數據的完整性是為了防止數據庫中存在不符合的數據,防止錯誤數據的輸入和輸出所造成的無效操作和錯誤結果。

    • 分類

  • PK約束
    主鍵約束,非空唯一

  • UNIQUE約束
    唯一,允許為空,多個空都可

  • NOT NULL約束

  • CHECK約束

  • FK約束
    外鍵約束

  • 5.7 SQL語法

    SQL語法

    5.8 數據庫設計理論

    函數依賴,模式分解





    范式的概念、如何區分不同的范式

    • 范式
      是一種關系的狀態,是衡量關系模式的標準。
      1NF、2NF、3NF、BCNF

      檢查關系中屬性間的函數依賴
      滿足特定約束
      避免不必要的數據重復

    • 1NF
      在關系模式R的每個關系中,如果每個屬性值都是不可再分的原子值,那么稱R是第一范式的模式

    • 2NF
      如果關系模式R屬于1NF, 且每個非主屬性(非候選碼中的屬性)完全函數依賴于候選碼,那么稱R屬于2NF的模式

      只有在主鍵是復合屬性下才可能不符合2NF

    • 3NF
      如果關系模式R屬于1NF, 且每個非主屬性都不傳遞依賴于R的候選碼,那么R屬于3NF的模式。

    • BCNF
      如果關系模式R屬于1NF,且每個屬性都不傳遞依賴R的候選碼,那么稱R是BCNF的模式

    • 范式總結

    5.9 數據庫應用設計方法

    數據庫的三種數據模型

    物理,概念,邏輯

    ER模型的概念、結構及使用其構造數據庫的方法



    數據庫設計的各個階段及主要工作

    總結

    以上是生活随笔為你收集整理的软件技术基础复习提纲的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。