ソフトウェアデザイナー試験準備書類(更新)

CPU

コンピュータの基本的なハードウェア システム: 演算装置、コントローラ、メモリ、入力デバイス、出力デバイス

CPU は、プログラム命令の取得、命令のデコードと実行を担当します (原題)

CPUの機能

コントローラー (プログラムの正常な実行を保証し、異常なイベントを処理するため)

プログラム制御
運転管理
電卓(計算のみ可能) 時間制御
情報処理

電卓

  • 算術論理演算ユニット (ALC)
  • アキュムレーション レジスタ(AC)(ALC が算術論理演算を実行するためのデータを提供し、演算結果を一時的に格納する)(原題)
  • データ バッファー (DR)
  • ステータス条件レジスタ (PSW)

コントローラ(自動化を行う意思決定コンピュータ)

  • 命令計算機 (IR) (オペコードとアドレス コードを格納)
  • プログラムカウンター(PC)(次に指定されたアドレスを指します)(原題)
  • 住所計算機 (AR)
  • 命令デコーダ (ID) (命令をデコード)

命令にはオペコードとアドレスコードが含まれます

命令レジスタはユーザーに対して完全に透過的です (元のタイトル)

コンピュータの基本単位

名前 ユニット 略語 会話
ビット (ビット) 少し

b

バイト バイト B 1バイト=8ビット
キロバイト KB K 1KB=1024b
メガバイト MB M 1MB=1024KB
ギガバイト GB G 1GB=1024MB
テラバイト 結核 T 1TB=1024GB

データの最小単位:bit(ビット)

記憶の最小単位:バイト(btye)

会話

10 進数 (D) 2 進数 (B)、8 進数 (O)、16 進数 (H)

_(H) = _ _ _ _(B)= _(O)= _ _ _(D)

FF(H) = 1111 1111(B)= 128+64+32+16+8+4+2+1 = 255

15*16¹+15*16⁰ = 255

756(O) = 1 1110 1110(B)=256+128+64+32+8+4+2 = 494

7*8²+5*8¹+6*8⁰ = 494

底の足し算と引き算

B C D
10 11 12 13 14 15

     
 

(n) 基数 n から n を引いた余りを 1 に書き込む

        ABDFE(H) 205(O) 90E(H)

    + 1024 - 7 - ファ

—————— —————— —————

         ACE22 176 8FF

元コード、逆コード、補完コード

元のコードと逆コード

0 は正の符号、1 は負の符号を意味します。

[+0] オリジナル = 0 0000000

[-0] 元 = 1 0000000

正の数の逆コードは元のコードと同じであり、負の数の逆コードはその絶対値をビットごとに逆にしたものです

[+0] 逆 = 0 0000000

[-0] 逆 = 1 1111111

補数とシフト

正数の補数は、元の数と補数と同じです。

負の数の補数は、その補数の末尾に 1 を追加することと同じです

[-3] オリジナル = 1 0000011 [-3] インバース = 1 1111100 [-3] コンプリメンタリ = 1 1111101        

[+0] 補数 = [-0] 補数 = 0 0000000

コード シフト: 補数コードに基づいて符号ビットを反転します。

[[x] Complement] Complement = [x] Original 元の補数の補数は、元のコードと同じです

範囲と値

元のコード: +127~-127

逆コード: +127~-127

補数コード: +127~-128

フレーム シフト: +127~-128。        +0 は -0 と同じであるため、最小補数とフレーム シフトは -128 *

浮動小数点数

N=2ᴱ×F Eが注文コード、Fが仮数 小数点以下の桁数が注文コード、小数点以下が仮数

例:1011.10101 = 2⁴ * 0.101110101

整列: 小さいオーダーは大きいオーダーに整列され、浮動小数点数は右に移動されます。10² —> 10⁴ (原題)

浮動小数点数の正規化とは、仮数の絶対値を [0.5,1] * (原題) に制限することです。

アドレッシング

時間で並べ替え:

  1. 即時アドレッシング(命令内オペランド)        
  2. レジスタのアドレス指定 (オペランドはレジスタ内にあります)
  3. 直接アドレス指定 (メモリ内のオペランド、命令内のアドレス)
  4. 間接アドレッシングを登録する
  5. 間接アドレッシング

チェックコード(原題)

パリティ コード

奇数個のエラーのみ検証可能、エラー訂正なし、検証のみ

ヤード距離は 2

ハミングコード

複数セットのパリティによるチェック

エラーを検出して修正できます *

n データ ビットと k ビットのパリティがある場合、2ᴷ  - 1>=n+kを満たす必要があります。

巡回冗長検査コード

エラーを検出でき、エラーを修正できない

k データ ビットの後の r チェック ビット

モジュロ 2 演算

ヤード距離は 2

RISCとCISC (原題)

合理化された 複雑な 複雑な
RISC 削減命令 CISC 複雑な命令
固定長 長さ変更
少ないアドレッシング モード さまざまなアドレッシング方法
デコードのハードワイヤード制御を実装する マイクロプログラム制御技術
多数のレジスタ 一般的
サポート パイプライン パイプラインをサポートしていません
命令の種類が少ない 指示が多い

パイプライン式

最初の命令実行時間 + (n-1) × (最大時間) = パイプライン時間

高速化 = パイプラインなし / パイプライン時間

稼働周期:全期間の中で最も長い期間

スループット: 最長時間の逆数

n 命令のスループット率: n/パイプライン

レートを上げることで使用率を改善できます(元の質問)

メモリー

ブロック単位でフラッシュメモリ(Uディスクに類似)と呼ばれるフラッシュメモリ

保管には 2 つの分類方法があります。

1. アドレスでアクセスするメモリとコンテンツでアクセスするメモリ

2. アドレッシング モードに応じて、ランダム アクセス メモリ、シーケンシャル メモリ、ダイレクト メモリ

連想メモリは、コンテンツによってアクセスされるメモリです

仮想記憶(主記憶+補助記憶)

コンピュータシステムのメインメモリは、主にDRAM(Dynamic Random Access Memory、定期的なリフレッシュによってデータを維持する記憶装置)で構成されています。

                    キャッシュは主に SRAM で構成されています (スタティック ランダム アクセス メモリ、スタティックとは、電源がオンになっている限りデータを常に保持できることを意味します)。

電気的に消去可能なメモリは主にEEPROMで構成されています

データストレージを維持するための DRAM 周期特性 (原題)

キャッシュ(キャッシュ)は、現在最もアクティブなプログラムとデータを保存するために使用されます

CPUとメインメモリの間にあり、速度はメインメモリの5~10倍

プログラマに透過的

コピー情報の一部を格納するために使用されるキャッシュ容量が小さい

キャッシュのヒット率はキャッシュ容量に関係する

キャッシュ容量が大きいほどヒット率が高くなり、キャッシュコストが高くなり、時間がかかる

キャッシュ内のアドレス マップ

  1. ダイレクトイメージ:メインメモリブロックとキャッシュブロックの対応関係が固定されており、競合大きい
  2. 完全な連想イメージ: メイン メモリの任意のブロックをキャッシュ メモリ内の任意の高速スペースに転送できるため、競合が
  3. グループ連想画像:競合が少ない

キャッシュとストレージ アドレス間のマッピングは、ハードウェアによって自動的に行われます。

割り込みベクトルは、割り込みサービス ルーチンのエントリ アドレスを提供します。

割り込み応答時間:割り込み要求が発行されてから割り込みサービス ルーチンに入るまで

シーンを保存する目的:元のプログラムを続行するために戻る

入出力 (I/O) 制御方法

プログラムクエリ方式

  • CPU と I/O はシリアルでしか動作せず、CPU は常にポーリングとチェックを行う必要があり、生産期間はビジー状態であり、CPU 使用率は低い
  • 一度に 1 つの単語だけを読み書きする
  • CPUによって数値をメモリに入れる

割り込み駆動

  • I/O デバイスは、割り込み信号を通じて I/O 操作の完了をアクティブに報告します。
  • CPU と I/O (周辺機器) は並行して動作可能
  • CPU 使用率の増加。一度に読み書きできるのは 1 ワードだけです
  • CPUによって数値をメモリに入れる

ダイレクト メモリ アクセス モード (DMA)

  • CPU と I/O (周辺機器) は並行して動作可能
  • CPU の介入は、転送ブロックの開始時と終了時にのみ必要です。
  • ペリフェラルによってメモリ (メイン メモリ) に直接データを格納する
  • 1回の読み書きの単位はブロック

バスの分類

マイコン内のバスはデータバス、アドレスバス、コントロールバスに分かれる(原題)

略称:デジタルランドコントロール

PCI バスは、パラレル伝送モードを採用する内部バスです。

SCSI バスはパラレル外部バスです。

簡単な注意: それらはすべて並列です. PC は一般的に家庭で使用されるため内部バスであり、別の scsi は外部で使用されるため外部バスです.

バスの多重化により、バス内の信号線の数を減らすことができます (原題)

暗号化技術 (必須)

対称暗号化:

鍵は 1 つだけ、鍵の配布にはデメリットがあります

暗号化と復号化の速度が速く、大量の平文の暗号化に適しています

非ヒープ暗号化:

2 つの鍵があり、公開鍵で暗号化 --> 秘密鍵で復号化、秘密鍵で暗号化 --> 公開鍵で復号化

一方を使用して他方をプッシュすることはできず、暗号化と復号化の速度は遅いです

送信先の公開鍵で暗号化する

デジタル署名

偽造および否認に対する保護

まとめ

改ざんを防ぐ

CA: 権限

CA の公開鍵を使用してデジタル証明書を検証する 

秘密鍵は次の目的で使用されます。復号化と署名

公開鍵は次の目的で使用されます: 暗号化と認証

モットー:公的検査、民間解決

対称暗号化アルゴリズム

DES、3DES、RC-5、IDEA、AES、RC4

非対称暗号化アルゴリズム

RSA、ECC、DSA

ダイジェストアルゴリズム

MD5

SHA-1 セキュア ハッシュ

シリーズシステム

R=R1R2R3...RN

並列システム

R=1-(1-R1)(1-R2)...(1-RN)

命令レジスタの仮数部は命令語長に依存

コンピュータに階層型ストレージシステムを使用する目的は、ストレージ容量のコストと速度の矛盾を解決することです (原題)

CPU用のコンピュータで最も速いのは汎用レジスタです

アクティブな攻撃: リプレイ、IP アドレス スプーフィング、サービス拒否

パッシブ攻撃: トラフィック分析、セッション傍受

低水準言語と高水準言語

通訳者:

インタプリタとソース プログラムは、プログラムの実行プロセスに参加する必要があります。

翻訳者:

ソース プログラムとコンパイル済みプログラムの両方が、ターゲット プログラムの実行プロセスに参加しなくなります。

ソース プログラムを独立して格納されたオブジェクト プログラムに変換 (コンパイル) する 

略記: NB some をコンパイルします。生成されたターゲット プログラムは操作に参加しません。

                ごみを少し説明します。ターゲットプログラムを生成する代わりに、参加する必要があります

プログラムの 3 つの基本的な制御構造: シーケンス、選択、ループ (繰り返し)

プログラムには次のデータ型が必要です。

  • データのストレージ ユニットの合理的な割り当てを容易にする
  • パラメータオブジェクト式のチェックを容易にします
  • 値の範囲を指定すると便利です

プログラミング言語の基本コンポーネントには、データ、操作、制御、および伝送が含まれます。

短絡操作: (必須)

  • 本当||? => 真
  • 偽&& ?=>偽

値による呼び出し: (必須)

値のみを渡し、元の値を変更しないでください

参照による呼び出し: アドレスを渡すと元の値が変更され、パラメーターを定数または式にすることはできません (元の質問)

コンパイル方法:字句解析、構文解析、意味解析、(中間コード生成、コード最適化、オブジェクトコード生成)

解釈方法:語彙分析、文法分析、意味分析

シンボルテーブル: ソースプログラムの関連シンボルの種類と特性を継続的に収集、記録、使用します。

意味解析フェーズの主な役割は、型の解析と検査を行うことです(原題)

文法解析フェーズでは、プログラム内のすべての文法エラーを見つけることができます(原題)

意味解析では、プログラム内のすべての意味エラーを見つけることはできません (原題)

Semantic analysis can find static grammatical errors, but not find dynamicプログラムのエラー.

レジスタの割り付けはオブジェクトコード生成段階(必須)

字句解析:文字を認識する(単語を調べる)(必須)

解析: 分解の調査 (主語-動詞-目的語) (必須)

意味解析: 型が (式の型) と一致するかどうかを確認します: int a = 'qqq' (エラー) (必須)

一般的な中間コード: サフィックス、3 アドレス コード、3 進、4 進、ツリー

中間コードは特定のマシンとは関係なく、異なる高級言語を同じ中間コードに変換でき、中間コードはクロスプラットフォームに対応できます (原題)

特定のマシンとは関係がないため、中間コードの使用は、マシンに依存しない最適化に役立ち、コンパイルの移植性を向上させます。

有限オートマトン

Context-Free Grammar: さまざまなプログラミング言語の文法規則を表現するために広く使用されています。

 サフィックスの優先度

  1.  ()
  2. × /
  3. + -

優先度が同じ場合は右から左へ

インフィックス: a ? b

接尾辞: a b ?

構文ツリーにサフィックスを付ける必要がある場合は、構文ツリーでポストオーダー トラバーサルを実行するだけで十分です。

時間の複雑さ:

O(1) < O(log₂n) < O(n) < O(nlog₂n) < O(n²) < O(n³) < O(2ⁿ) < O(n!) < O(nⁿ)

特別なコードはありません O(1)
while ループ O(log₂n)
for ループ の上)
for ループ + while ループ O(nlog₂n)
二重ループ O(n²)
3 つの for ループ O(n³)

スペースの複雑さ:

O(1) < O(n) < O(n²)

定数 < 一次元配列 < 二次元配列

プログレッシブ記号(必須 + 元の質問)

O は、漸近的な上限 >= として表されます。

  • 10n²+4n+2=O(n²)
  • 10n²+4n+2=O(n³)

Ω は、漸近的な下限 <= として記録されます。

  • 10n²+4n+2=Ω(n²)
  • 10n²+4n+2=Ω(n)

Θ は、漸近的にコンパクトな境界        O =  Ω = Θとして表されます。

  • 10n²+4n+2=Θ(n²)

T(n)= aT\frac{n}{b}+f(n)(必修試験+オリジナル問題)

  1. もし \varepsilon >0,f(n)=O(n^{log_{b}^{a-\varepsilon }})そうならT(n)=\circleddash (n^{log_{b}^{a}})
  2. もしf(n)=\circleddash (n^{log_{b}^{a}}lg^{k}n)そうならT(n)=\circleddash (n^{log_{b}^{a}}lg^{(k+1)}n)

シーケンステーブル リニアテーブル 平均時間の複雑さ
見上げる O(1) の上)
入れる の上) の上)
消去 の上) の上)

スタックとポップのためにリンクされたリストをトラバースする必要はありません

エンキューとデキューは、リンクされたリストをトラバースする必要はありません 

循環キューの利点: エンキュー操作もデキュー操作も、キュー内の他の要素を移動する必要はありません

n はメイン文字列、m はパターン文字列 (一致する文字列) です。

文字列比較の数:

  • ベスト:m回
  • 最悪 (n-m+1) * m 回
  • 平均 (n+m) / 2 回

KMP パターン マッチング アルゴリズム、次の関数値を見つける

ルール: 接頭辞 = 接尾辞を満たす

例:abaabaca 

左から右へ!

現在のキャラクター マッチ文字列 1 2 3 4 5 6 この次の値
ババ_ 0 0
a bドア a 0+1=1 01
_ ab a != b の後

0+1=1

011
アババガ あば 前a=後ろa 前 ab != 後ろ ba 1+1=2 0112
アバ・・アカ お父さん 前a=後ろa 前 ab != 後ろ aa 前ばあ!=後ろばあ 1+1=2 01122
お父さん_ _ 父親 a != b の後 前腹=後ろ腹 前あば!=後ろあぶ 前あばあ != 後ろあばあ 2+1=3 011223
お父さん_ _ 誰が泣いた 前a=後ろa 前 ab != 後ろ ba 前あば=後ろあば 前abaa!=后aaba 前あばあ != 後ろあばあ 3+1=4 0112234
_ _ あばば a != c の後 フロント ab != バック ac 前あば!=後ろ後ろ 前abaa!=后abac 前abaab!=后aabac 前abaaba!=后baabac 0+1=1 01122341

二维数组转为一维数组(必考)

二维:N 行 M 列,数组首地址:loc

按行优先:(按行存储)

当二维数组(0,0)开头时:

a_{i,j}=loc+(M\ast i+j )

当二维数组(1,1)开头时:

a_{i,j}=loc+[M\ast (i-1)+(j-1)]

按列优先:(按列存储)

当二维数组(0,0)开头时:

a_{i,j}=loc+(j\ast M)+i

当二维数组(1,1)开头时:

a_{i,j}=loc + [(j-1)\ast N]+(i-1)

对称矩阵转为一维数组

按行存储下标从(A_{0,0})开始

当 i>=j 时,A_{i,j}=\frac{i(i+1)}{2}+j+1

当 i<=j 时,A_{i,j}=\frac{j(j+1)}{2}+i+1

对称矩阵按行存储下标从(A_{1,1})开始

当 i>=j 时,A_{i,j}=\frac{(i-1)i}{2}+j

当 i<=j 时,A_{i,j}=\frac{(j-1)j}{2}+i

三对角矩阵按行存储下标(A_{0,0})开始

A_{i,j}=2i+j+1

三对角矩阵按行存储下标(A_{1,1})开始

A_{i,j}=2i+j-2 

节点的子树个数称为度(度就是直线的个数)

树的度:树里所有度中的最大值

树中的节点总数 = 树中所有结点度数之和 + 1

度为 m 的树中第 i 层上至多有 m^{i-1} 个结点(i>=1)

对于任何一棵二叉树都有:n_{0}=n_{2}+1

高度为 h 的二叉树最多有 2^{h}-1 个结点

二叉树第 i 层上最多有 2^{i-1} 个结点

具有 n 个结点的完全二叉树的高度为  \left \lfloor log_{2}^{n} \right \rfloor+1

满二叉树:每层都是满的

完全二叉树:从上往下,从左到右排序的。

非完全二叉树: 

二叉树的形态有 \frac{C_{2n}^{n}}{n+1} 种,n为结点数。

C_{6}^{3}=\frac{6\times 5\times4}{3\times2\times1}=20

二叉树包含k个结点时,其二叉链表结点中必有k+1个空的孩子指针

构造二叉树必须要中序遍历!

平衡二叉树:二叉树中的任意一个结点的左右子树高度差的绝对值不超过1.

最优二叉树(哈夫曼树):带权路径最短的树

最优二叉树不唯一

构造哈夫曼树

  1. 从前往后找刘昂个权值最小的数
  2. 小左大右:小的放左边大的放右边
  3. 加入末尾:构造出新的结点数再加到队列尾端
  4. 权值相同,从前往后:当遇到权值相同的结点,依照队列中的先后顺序
  5. 用时再调

哈夫曼编码:左0右1

所有顶点的度数为2e,e为边数,不论有向图还是无向图

有向图:i -> j        <v_{i},v_{j}>

无向图:i -> j          (v_{i},v_{j})

完全图:每个顶点之间都有边,共有\frac{n(n-1)}{2}条边,有向完全图为 n(n-1) 条边

连通图:在无向图中,任意两点之间有路径

最少有 n-1 条边,最多有\frac{n(n-1)}{2}条边

强连通图:在有向图中,任意两点之间都有路径

最少有 n 条边 ,最多有:n(n-1) 条边

邻接矩阵表示法 (适合边数多的)

第 i 行中不为 0 的个数表示 i 的出度数

第 j 列中不为 0 的个数表示 j 的入度数

无向图:矩阵中非 0 元素个数为 2e ,e为边数

有向图:矩阵中非 0 元素个数为 e ,e为边数

邻接链表表示法 (适合边数少的)

 

出度数为该点后的结点数

入度数:寻找指向该结点数

遍历方式

深度优先遍历: (类似栈,递归思想)

优先访问邻接顶点且有下个顶点

用邻接矩阵:O(n^{^{2}})

用邻接表:O(n+e)

广度优先遍历:(类似队列)

遍历结果:125634 

一层一层访问

用邻接矩阵:O(n^{^{2}})

用邻接表:O(n+e)

深度优先遍历与广度优先遍历的时间复杂度相同

 顺序查找适用于顺序存储方式和链式存储方式

查找分为静态查找和动态查找

静态查找:

  • 顺序查找
  • 折半查找
  • 分块查找

动态查找

  • 二叉查找树
  • 平衡二叉树
  • 哈希表

折半查找 知识和顺序存储,有序

最多比较\left \lfloor log_{2}^{n} \right \rfloor+1 次

平均比较 \frac{n+1}{2} 次

哈希表:构造哈希函数时,应尽量使关键字的所有组成部分都能起作用

可以删除、可以插入、可以查找

当k1=k2,且H(k1)≠H(k2),称为同义词

小顶堆与大顶堆

小顶堆

满足 k_{i}\leqslant k_{2i} 且 k_{i}\leqslant k_{2i+1}

as:15,25,21,33,73,65,53

大顶堆

满足 k_{i}\geq k_{2i} 且 k_{i}\geq k_{2i+1}

as:73,65,25,33,53,15,21

建立大顶堆,从上往下,把大的选为父节点

排序算法

算法时间空间复杂度
平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性
直接插入 O(n^{2}) O(n^{2}) O(n) O(1)
希尔排序 O(n^{2}) O(n) O(1) ×
简单选择排序 O(n^{2}) O(n^{2}) O(n^{2}) O(1) ×
堆排序 O(nlog_{2}^{n}) O(nlog_{2}^{n}) O(nlog_{2}^{n}) O(1) ×
冒泡排序 O(n^{2}) O(n^{2}) O(n) O(1)
快速排序 O(nlog_{2}^{n}) O(n^{2}) O(nlog_{2}^{n}) O(1) ×
归并排序 O(nlog_{2}^{n}) O(nlog_{2}^{n}) O(nlog_{2}^{n}) O(n)

红色边框则代表经常会考,记住这三个就好了。 

 算法是否稳定:取决于在排序过程中是否存在乱序的情况,整个算法过程中,一直是从小到大或从大到小,则稳定,反之,不稳定!

直接插入:适合基本有序

冒泡排序:每排序一次确定一个位置

快速排序:分治的思想、有序的序列是最坏的情况、每排序一次确定一个位置

数据库

数据库系统同城采用三级模式:外模式(视图)+模式(基本表)+内模式(存储文件)

逻辑独立性:外模式(视图)

物理独立性:内模式(存储文件)

R
A B
a d
b a
c
S
A B
d a
b a
d c
RUS
A B
a d
b a
c c
d a
d c
R-S
A B
a d
c c

R∩S

A B
b a

自然连接时去重的列的等值连接

R
A B C
1 2 3
4 5 6
S
A B E
1 2 6
4 4 4
R×S
R.A R.B R.C S.A S.B S.C
1 2 3 1 2 6
1 2 3 4 4 4
4 5 6 1 2 6
4 5 6 4 4 4

R∞S
R.A R.B R.C S.E
1 2 3 6

R
A B C
S
B C D

\pi _{A,B,C}(R)\Leftrightarrow select A,B,C from R

\pi _{A,B,C}( \sigma_{B\geqslant 5}(R) )\Leftrightarrow select A,B,C from R where B \geqslant '5'

R \Join S \Leftrightarrow selectR.A,R.B,R.C,S.D from R,S where R.B=S.B and R.C=S.C

可以通过主键唯一标识一个元组

数据库权限给某人,且允许该人将权限授予他人,用 with grant option

视图中表示对update,insert, delete 操作时,保证操作满足视图定义用 with check option

视图是一个虚拟表,查询时可以从一个或者多个基本表或视图中导出。(原题)

索引《=》内模式

候选码

包含在候选码中的元素成为主属性,否则成为非主属性

as:  R(U,F)   U={A,B,C,D,E,H}   F={ A->B , A->C , C->D ,AE-> H }

可以推导出 AE -> ABCDEH,所以AE是候选码,所以 A, E是主属性/主键/关键字,B,C,D,H 是非主属性。

as:  R(U,F)   U={A,B,C,D,E,H}   F={ A->B , A->H , C->E ,B-> DH }

所以 有关键字A,C,候选码AC

第一范式、第二范式与第三范式

部分函数依赖:非主属性可以由候选码中的一部分主属性推导出来,则称存在部分函数依赖

as:A->B,A->C,D->E,AD->F,那么AD为候选码,A为主属性、D为主属性,且存在非主属性B、C、E可以由候选码AD的一部分,A或D推出,所以存在部分函数依赖

完全函数依赖:非主属性只能通过候选码中的所有主属性一起推导出来,则称存在完全函数依赖

as:AB->C,那么AB为候选码,AB为主属性,且非主属性C只能由候选码AB推出,所以称为完全函数依赖


1NF 第一范式

每个属性都不可再分,但可能存在数据冗余和更新异常等问题,因为其中可能存在部分函数依赖

1NF特点:R中属性不可再分

2NF 第二范式

R是第一范式并且每个非主属性都完全函数依赖于候选码,但其中可能存在传递依赖

2NF特点:不存在非主属性对候选码的部分函数依赖

1NF——>2NF  消除部分函数依赖,使得所有非主属性都完全依赖于候选码(所有非主属性只能拿通过候选码推出)


例题:F = {学号-> 姓名,学号->学院,学号->院长,学院->院长,课程号->课程名,(学号,课程号)->成绩}

U = {学号,姓名,学院,院长,课程号,课程名,成绩}

可以看出其中存在:

  • 部分函数依赖:学号-> 姓名,学号->学院,学院->院长,学号->院长,课程号->课程名
  • 完全函数依赖:(学号,课程号)->成绩

所以存在:(学号+课程号)为候选码,学号、课程号为主属性。

候选码:(学号,课程号) 主属性:学号、课程号

将学号记作k1,课程号记作k2进行分解。

F1={ 学号-> 姓名,学号->学院,学号->院长,学院->院长}

U1={ 学号,姓名,学院,院长}

完全函数依赖:学号-> 姓名,学号->学院,学号->院长,学院->院长

主属性为:学号

F2={课程号->课程名}

U2={课程号,课程名}

完全函数依赖:课程号->课程名

主属性为:课程号

F3={ 学号,课程号)->成绩}

U3={课程号,课程名,成绩}

完全函数依赖:学号,课程号)->成绩

主属性为:(学号,课程号)


3NF:R是第三范式

且每个非主属性都非传递依赖函数依赖于候选码,(不存在非主属性对候选码的传递依赖、部分函数依赖,可能存在主属性对候选码的部分函数依赖和传递依赖)

F4={学号->姓名,学号->学院}

U3={学号,姓名,学院}

完全函数依赖:学号->姓名,学号->学院

主属性:学号

x->y , y->z =》 x->z,将z属性单独提出,生成一个新的函数关系

学号->学院,学院->院长=>学号->院长

F5={学院->院长}

完全函数依赖:学院->院长

U5={学院,院长}

有损联接/无损联接 与 函数依赖判断

R(A1,A2,A3,A4), F={ A1A3->A2 , A2->A3 }

R分解为ρ={(A1,A2),(A1,A3)},判断是有损联接还是无损联接?

因为 (A1,A2)\bowtie (A1,A3) = (A1,A2,A3)\neq R(A1,A2,A3,A4),所以是有损联接

对于分解后的ρ,其中 (A1,A2)不在F中,(A1,A3)在F: A1A3->A2 中,但(A1,A3)中没有A2,因此A1A3≠>A2,所以不保持函数依赖

as:R(U,F)  U={A,B,C,D,E,G}  F={ A->B ,A->C,C->D,AE->G }

分解为_____两个子模式,分解后的关系仍保持依赖。

  • R1{A,B,C,D}  ( A->B ,A->C,C->D)
  • R2{A,E,G}   (AE->G)

软件工程

排它锁与事务

加了排它锁后,其他事务不能再加锁,该事务可对它读和修改

加了共享锁后,其他事务只能再加共享锁,只能读,不能修改

模块划分

在划分模块时,一个模块的作用范围应该在其控制范围之内。若发现其作用范围不在其控制范围内,则可以通过

  • 将判定所在模块合并到父模块中,使判定处于较高层次
  • 将判定上移到层级较高的位置
  • 将受判定影响的模块下移到控制范围内

内聚模式

内聚类型 描述
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行
通信内聚 所有处理元素集中在一个数据结构的区域上
过程内聚 处理元素相关,而且必须按特定的次序执行
时间内聚 所包含的任务必须在同一时间间隔内执行
逻辑内聚 完成逻辑上相关的一组任务
巧合内聚 完成一组没有关系或松散关系的任务

开发模型

模型名称 适用情况
瀑布模型

适用于需求明确(相关领域经验、替换原有系统、功能有较清晰的定义、)

增量模型 拥有瀑布模型的所有优点,可快速构造可运行产品
原型模型 适用于需求不明确,不适用于大规模系统
螺旋模型 适用于风险较大,规模较大的系统
喷泉模型 适用于面向对象开发的系统,各个开发阶段没有明显的界限

计算机安全

防火墙

 计算机病毒

网络攻击

 其他网络安全

主动攻击:重放、IP地址欺骗、拒绝服务

被动攻击:流量分析

数据库容灾属于:系统安全和应用安全

网络安全体系:物理线路安全、网络安全、系统安全、应用安全

SSL:传输层,用于实现web安全通信,https是基于SSL

SSH:应用层和传输层,用于终端设备与远程站点之间建立链接,安全远程登录

MIME:电子邮件类型扩展,与安全电子邮箱无关

产权保护

著作权:作者对其创作的作品享有人身权和财产权

人身权:发表权、署名权、修改权、保护作品完整权

只有发表权有时间限制是终生和死后50年,其他的永久有效

软件著作权产生时间:自从作品完成创作之日起

软件著作权的客体不包括:软件开发思想

如果是植物软件作品,那开发者只有署名权

只要考著作权归公司还是个人的不用想都是归公司

对于专利权,20年有效期,谁先谁获得,当天的共同协商

商标权可以延长(10年续加)

同时申请商标,进行协商,协商无效抓阄/抽签决定

计算机网络

物理层:中继器、集线器

数据链路层:网桥、交换机

网络层:路由器

应用层:网关

端口表
POP3(110) NFS
FTP(20/21) HTTP(80) DHCP(67) TFTP(69)
Telnet SMTP(25) SNMP(161) DNS(53)
TCP UDP
IP ICMP IGMP ARP RARP

应用层 文件传输协议
FTP
远程登录协议
Telnet
电子邮件
SMTP
网络文件服务
NFS
网络管理
SNMP
表示层
会话层
传输层 TCP UDP
网络层 IP ICMP ARP RARP
数据链路层 IEEE802,FDDI PPP/SLIP
物理层

 MIME:邮件附件

SMTP:发邮件

POP3:收邮件

DNS域名查询顺序:本地host文件 =》本地DNS缓存 =》本地DNS服务器 =》 根域名服务器

主域名查询顺序:本地缓存 =》 本地host文件 =》 本地数据库 =》 转发域名服务器

IP:222.125.80.128/26 包含了___个可用主机地址,其中地址最小是_____,最大是_____。

  • 32-26 = 6    2⁶-2 =62   
  • 最小地址:222.125.80.129
  • 最大地址:222.125.80.190 

IPV6的地址空间是IPV4的____倍。

  • IPV6=2^{128}
  • IPV4=2^{32}
  • \frac{2^{128}}{2^{32}}=2^{96}  

先ping127.0.0.1,目的是为了测试网络的的连通性。

主机路由子网掩码:255.255.255.255

下午题

数据流图

实体与实体之间不能有数据流

 判断加工是否正确

  1. 父图子图平衡:父图有的 子图也要有对应的连线
  2. 加工数据流有入有出:有入没出:黑洞,有出没有入:白洞:没有入没有出:灰洞
  3. 文章寻找数据守恒:文章描述中寻找关键数据流

几种数据关系

  • 包含关系  A包含B  A是基本用例  执行基本用例必须执行被包含用例

  

  • 扩展关系  A扩展于B A是扩展用例 B是基本用例,A是B的特殊

  • 泛化关系   A泛化出B,C  A是父类,B,C是子类,任选其一 

 

用于最后一题java程序设计代码填空

 如果子类是继承(extends)父类,那么分类是抽象类(abstract)

如果子类是实现类(implements)父类,那么父类是接口(interface)

抽象化を継承するには、抽象化のすべてのメソッドを実装する必要があります

クラスがインターフェースを実装する場合、インターフェース内のすべてのメソッドを実装する必要があります

静的メソッドは、クラス名から直接呼び出すことができます。メソッド名 ()

各種デザインパターンの発生統計

スキーマ名 出現回数 時間
ブリッジモード 3回 09前半 13後半 17後半
コンビネーションモード 4回 11前半 21前半 2009年下半期 10後半
戦略パターン 3回 10前半 19前半 15前半
オブザーバーパターン 3回 14前半 16前半 19年後半
デコレータパターン 2回 12前半 16後半
状態モード 2回 11後半 18後半
モデルを生成する 2回 17前半 18前半

おすすめ

転載: blog.csdn.net/weixin_45369856/article/details/129228836