修改为VuePress驱动的静态网站

main
PeterAlbus 2 years ago
parent 7d6a014470
commit bf942b61f8

7
.gitignore vendored

@ -1,2 +1,5 @@
/imgs /markdown/imgs
/html /markdown/html
node_modules
/.idea/
/docs/.vuepress/dist/

@ -17,6 +17,11 @@
## changelog ## changelog
2023年1月29日vuepress驱动大幅提升阅读和查询体验。
---
2022年1月10日重新用nginx完成了部署现在所有域名都可通过note.peteralbus.com访问 2022年1月10日重新用nginx完成了部署现在所有域名都可通过note.peteralbus.com访问
--- ---

@ -0,0 +1,26 @@
module.exports = {
title: 'PeterAlbus的笔记本',
description: '大学期间相关课程的知识点汇总和复习资料',
themeConfig: {
nav: [
{ text: '主页', link: '/' },
{ text: '操作系统', link: '/ComputerOS.md' },
{ text: '计算机组成原理', link: '/ComputerOrganization.md' },
{ text: '计算机网络', link: '/ComputerNetwork.md' },
{
text: '其他',
ariaLabel: '其余笔记链接',
items: [
{ text: '软件工程', link: '/SoftwareEngineering.md' },
{ text: '数据库', link: '/Database.md' },
{ text: '算法基础', link: '/FundamentalsOfAlgorithmics.md' },
{ text: '数学建模', link: '/MathematicalModeling.md' },
{ text: '汇编', link: '/AssemblyLanguage.md' }
]
},
{ text: 'Github', link: 'https://github.com/PeterAlbus/PeterAlbusNotes' },
],
sidebarDepth: 2,
sidebar: 'auto'
}
}

@ -0,0 +1,483 @@
:root {
--side-bar-bg-color: #fff;
--control-text-color: #777;
--font-sans-serif: 'Ubuntu', 'Source Sans Pro', sans-serif !important;
--font-monospace: 'Fira Code', 'Roboto Mono', monospace !important;
}
html {
font-size: 16px;
}
body {
font-family: var(--font-sans-serif);
color: #34495e;
-webkit-font-smoothing: antialiased;
line-height: 1.6rem;
letter-spacing: 0;
margin: 0;
overflow-x: hidden;
}
#write {
max-width: 860px;
margin: 0 auto;
padding: 20px 30px 100px;
}
#write p {
line-height: 1.6rem;
word-spacing: .05rem;
}
#write ol li {
padding-left: 0.5rem;
}
#write > ul:first-child,
#write > ol:first-child {
margin-top: 30px;
}
body > *:first-child {
margin-top: 0 !important;
}
body > *:last-child {
margin-bottom: 0 !important;
}
a {
color: #42b983;
font-weight: 600;
padding: 0 2px;
text-decoration: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
margin-top: 1rem;
margin-bottom: 1rem;
font-weight: bold;
line-height: 1.4;
cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
text-decoration: none;
}
h1 tt,
h1 code {
font-size: inherit !important;
}
h2 tt,
h2 code {
font-size: inherit !important;
}
h3 tt,
h3 code {
font-size: inherit !important;
}
h4 tt,
h4 code {
font-size: inherit !important;
}
h5 tt,
h5 code {
font-size: inherit !important;
}
h6 tt,
h6 code {
font-size: inherit !important;
}
h2 a,
h3 a {
color: #34495e;
}
h1 {
padding-bottom: .4rem;
font-size: 2.2rem;
line-height: 1.3;
}
h2 {
font-size: 1.75rem;
line-height: 1.225;
margin: 35px 0 15px;
padding-bottom: 0.5em;
border-bottom: 1px solid #ddd;
}
h3 {
font-size: 1.4rem;
line-height: 1.43;
margin: 20px 0 7px;
}
h4 {
font-size: 1.2rem;
}
h5 {
font-size: 1rem;
}
h6 {
font-size: 1rem;
color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table {
margin: 0.8em 0;
}
li > ol,
li > ul {
margin: 0 0;
}
hr {
height: 2px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
overflow: hidden;
box-sizing: content-box;
}
body > h2:first-child {
margin-top: 0;
padding-top: 0;
}
body > h1:first-child {
margin-top: 0;
padding-top: 0;
}
body > h1:first-child + h2 {
margin-top: 0;
padding-top: 0;
}
body > h3:first-child,
body > h4:first-child,
body > h5:first-child,
body > h6:first-child {
margin-top: 0;
padding-top: 0;
}
a:first-child h1,
a:first-child h2,
a:first-child h3,
a:first-child h4,
a:first-child h5,
a:first-child h6 {
margin-top: 0;
padding-top: 0;
}
h1 p,
h2 p,
h3 p,
h4 p,
h5 p,
h6 p {
margin-top: 0;
}
li p.first {
display: inline-block;
}
ul,
ol {
padding-left: 30px;
}
ul:first-child,
ol:first-child {
margin-top: 0;
}
ul:last-child,
ol:last-child {
margin-bottom: 0;
}
blockquote {
border-left: 4px solid #42b983;
padding: 10px 15px;
color: #777;
background-color: rgba(66, 185, 131, .1);
}
table {
padding: 0;
word-break: initial;
}
table tr {
border-top: 1px solid #dfe2e5;
margin: 0;
padding: 0;
}
table tr:nth-child(2n),
thead {
background-color: #fafafa;
}
table tr th {
font-weight: bold;
border: 1px solid #dfe2e5;
border-bottom: 0;
text-align: left;
margin: 0;
padding: 6px 13px;
}
table tr td {
border: 1px solid #dfe2e5;
text-align: left;
margin: 0;
padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
margin-bottom: 0;
}
#write strong {
padding: 0 1px;
}
#write em {
padding: 0 5px 0 2px;
}
#write table thead th {
background-color: #f2f2f2;
}
#write .CodeMirror-gutters {
border-right: none;
}
#write .md-fences {
border: 1px solid #F4F4F4;
-webkit-font-smoothing: initial;
margin: 0.8rem 0 !important;
padding: 0.3rem 0 !important;
line-height: 1.43rem;
background-color: #F8F8F8 !important;
border-radius: 2px;
font-family: var(--font-monospace);
font-size: 0.85rem;
word-wrap: normal;
}
#write .CodeMirror-wrap .CodeMirror-code pre {
padding-left: 12px;
}
#write code, tt {
padding: 2px 4px;
border-radius: 2px;
font-family: var(--font-monospace);
font-size: 0.92rem;
color: #e96900;
background-color: #f8f8f8;
}
tt {
margin: 0 2px;
}
#write .md-footnote {
background-color: #f8f8f8;
color: #e96900;
}
/* heighlight. */
#write mark {
background-color: #EBFFEB;
border-radius: 2px;
padding: 2px 4px;
margin: 0 2px;
color: #222;
font-weight: 500;
}
#write del {
padding: 1px 2px;
}
.cm-s-inner .cm-link,
.cm-s-inner.cm-link {
color: #22a2c9;
}
.cm-s-inner .cm-string {
color: #22a2c9;
}
.md-task-list-item > input {
margin-left: -1.3em;
}
@media print {
html {
font-size: 13px;
}
table,
pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
.md-fences {
background-color: #f8f8f8;
}
.md-diagram-panel {
position: static !important;
}
#write pre.md-meta-block {
padding: 1rem;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border: 0;
border-radius: 3px;
color: #777777;
margin-top: 0 !important;
}
.mathjax-block > .code-tooltip {
bottom: .375rem;
}
#write > h3.md-focus:before {
left: -1.5625rem;
top: .375rem;
}
#write > h4.md-focus:before {
left: -1.5625rem;
top: .285714286rem;
}
#write > h5.md-focus:before {
left: -1.5625rem;
top: .285714286rem;
}
#write > h6.md-focus:before {
left: -1.5625rem;
top: .285714286rem;
}
.md-image > .md-meta {
border-radius: 3px;
font-family: var(--font-monospace);
padding: 2px 0 0 4px;
font-size: 0.9em;
color: inherit;
}
.md-tag {
color: inherit;
}
.md-toc {
margin-top: 20px;
padding-bottom: 20px;
}
.sidebar-tabs {
border-bottom: none;
}
#typora-quick-open {
border: 1px solid #ddd;
background-color: #f8f8f8;
}
#typora-quick-open-item {
background-color: #FAFAFA;
border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
border-style: solid;
border-width: 1px;
}
#md-notification:before {
top: 10px;
}
/** focus mode */
.on-focus-mode blockquote {
border-left-color: rgba(85, 85, 85, 0.12);
}
header,
.context-menu,
.megamenu-content,
footer {
font-family: var(--font-sans-serif);
}
.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state {
visibility: visible;
}
.mac-seamless-mode #typora-sidebar {
background-color: var(--side-bar-bg-color);
}
.md-lang {
color: #b4654d;
}
.html-for-mac .context-menu {
--item-hover-bg-color: #E6F0FE;
}

@ -0,0 +1,417 @@
# 高等数学
### 第一章 函数与极限
#### 1.1 映射与函数
##### 1.1.1 映射
映射,用于引出函数的概念。
> 映射: $X、Y$为非空集合,法则$f$,对$X$中每个元素$x$都有**唯一**的$y$与之对应,则$f$被称作映射,$f$是$X\rarr Y$的一个映射。
>
> $y$称作像,对应的$x$称作原像。
>
> $X$叫定义域,记作$D_f$(Domain)$Y$叫做值域,记作$R_f$()
+ 映射的三要素:$X、f、R_f$
+ $x \in X$,对应的$y$是唯一的
$R_f \subset Y$,两者不一定相同
+ 满射:$R_f = Y$,单射:当$x$不同时,对应的$y$也不同
+ 一一映射:同时满足单射和满射
复合映射:第二个映射的定义域包含第一个映射的值域。
##### 1.1.2 函数
1. 函数的概念
> **函数**是从数集到数集的映射。
>
> 自变量、因变量、定义域、值域。
函数的表示方法:
1. 表格
2. 图形
3. 解析式
一些函数的例子:
+ 绝对值函数
+ 符号函数
+ 取整函数
2. 函数的特性
1. 函数的有界性
函数的有界性指函数分为有界函数和无界函数。
通俗的讲,如果存在一个实数,使得值域内所有数都小于该数,同时存在一个实数,使得值域内所有数都大于该数。则该函数为有界函数。
2. 函数的单调性
函数的单调性指函数分为单调函数和非单调函数,单调函数又分为单调递增和单调递减。
如果随着$x$值的增加,$f(x)$始终随之增加,则函数为单调递增。反之,函数为单调递减。
同一个函数在不同区间上的单调性也可能不同。
3. 函数的奇偶性
判断函数的奇偶性时,函数的定义域$D$必须关于原点对称
如果对于任意$x \in D$$f(-x)=f(x)$则函数为偶函数函数图像关于y轴对称
如果对于任意$x \in D$$f(-x)=-f(x)$,则函数为奇函数(函数图像关于原点对称)
其他函数既不是奇函数也不是偶函数。
4. 函数的周期性
> 设函数$f(x)$的定义域为$D$,如果存在一个正数$l$,使得对于任意$x\in D$有$(x+l)\in D$,且:
> $$
> f(x \pm l)=f(x)
> $$
> 恒成立,则称$f(x)$为**周期函数**$l$称为$f(x)$的**周期**,通常我们说的周期函数的周期是指**最小正周期**。
通俗来说,周期性指函数在定义域内周期性变换的特性。
3. 反函数与复合函数
**反函数是逆映射的一种特例。**
通俗来说,如果对于函数中的每个$y$值有唯一的$x$使得$f(x)=y$,则存在反函数使得:
$$
f^{-1}(y)=x
$$
相对于反函数,原来的函数被称为**直接函数**
反函数和直接函数的图形关于直线$y=x$对称
**复合函数则是复合映射的一种特例。**
> 设函数$y=f(x)$的定义域为$D_f$,函数$u=g(x)$的定义域为$D_g$,且值域$R_g \in D_f$,则由下式确定的函数:
> $$
> y=f[g(x)],x\in D_g
> $$
> 称为函数$u=g(x)$与函数$y=f(x)$构成的复合函数,变量$u$称为中间变量。
两者以先g后f的次序复合的函数通常记作$f \circ g$。$(f \circ g)(x)=f[g(x)]$
构成复合函数$f \circ g$的条件是函数$g$的值域必须包含于函数$f$的定义域。
如果限制函数$g$的定义域,使得其值域包含于函数$f$的定义域,这之后两者可组成复合函数。
4. 函数的运算
> 设函数$f(x),g(x)$的定义域依次为$D_f,D_g D=D_f \cap D_g \neq \emptyset$
>
> 和/差:$(f\pm g)(x)=f(x)\pm g(x),x\in D$
>
> 积:$(f \cdot g)(x)=f(x)\cdot g(x),x\in D$
>
> 商:$(\frac f g)(x)=\frac{f(x)}{g(x)},x\in d / \{ x\mid g(x)=0,x\in D \}$
5. 初等函数
五类基本初等函数:
+ 幂函数
+ 指数函数
+ 对数函数
+ 三角函数
+ 反三角函数
由以上五类基本初等函数经过有限次四则运算和函数复合形成的函数都是初等函数。(课程讨论的基本都是初等函数)
#### 1.2 数列的极限
1. 数列极限的定义
> 如果按照某一法则,对每个$n \in N$,对应着一个确定的实数$x_n$,这些实数$x_n$按照下标$n$从小到达排列得到的一个数列:
> $$
> x_1,x_2,x_3,...,x_n,...
> $$
> 就叫做**数列**,简记为数列$\{x_n\}$
数列中每个数叫做数列的项,第$n$项$x_n$叫做数列的**一般项**(或**通项**
例如,数列:
$$
\frac 1 2,\frac 2 3,\frac 3 4,...,\frac {n}{n+1},...
$$
的一般项/通项为$\frac {n}{n+1}$
**数列极限**讨论的问题则是,当$n$无限增大时(即$n \rightarrow \infin$时),对应的$x_n$是否能无限接近某个确定的数值。如果能,这个数值为多少。
一般的,有如下数列极限的定义:
> 设$\{x_n\}$为一数列,如果存在常数$a$,对于任意给定的正数$\epsilon$(不论它多么小),总存在正整数$N$,使得当$n>N$时,不等式
> $$
> \mid x_n-a\mid<\epsilon
> $$
> 都成立,那么就称常数$a$是数列$\{x_n\}$的**极限**,或者称数列**收敛**于$a$。
通俗来讲,数列的极限指数列无限接近的值。
2. 收敛数列的性质
定理1 极限的唯一性:如果数列${x_n}$收敛,那么它的极限唯一
定理2 收敛数列的有界性:如果数列收敛,那么数列一定有界
定理3 收敛数列的保号性:如果$\lim_{x \to +\infty} x_n=a$且$a>0(或a<0)$,那么存在正整数$N$,当$n>N$时,都有$x_n>0$
定理4 收敛数列与其子数列间的关系 如果数列$\{x_n\}$收敛与$a$,那么它的任一字数列也收敛,且极限也是$a$
#### 1.3 函数的极限
##### 1.3.1 函数极限的定义
数列$\{x_n\}$可以看作自变量为$n$的函数,数列的极限$a$就是当函数的自变量$n$取正整数而无限增大时,对应的函数$f(n)$无限接近的数$a$。
通过数列的极限,可以引出函数极限的一般概念:
> 在自变量的某个变化过程中,如果对应的函数值无限接近于某个确定的数,那么这个确定的数就叫做在这一变化过程中**函数的极限**。
数列的极限看作函数$f(n)$当$n \to \infin$时的极限。
自变量的变化过程为其他情形时研究函数的极限,主要研究两种情形:
+ 自变量任意的接近于有限值$x_0$
+ 自变量$x$的绝对值无限增大即区域无穷大
1. 自变量趋于有限值时函数的极限
设函数$f(x)$在点$x_0$的某一去心邻域内有定义,如果存在常数$A$,对于任意给定的正数$\epsilon$,无论它多么小,总存在正数$\delta$,使得当$x$满足不等式$0<\mid x-x_0 \mid < \delta$时,对应的函数值$f(x)$都满足不等式:
$$
\mid f(x) - A \mid < \epsilon
$$
那么常数$A$就叫做函数$f(x)$当$x \to x_0$时的极限。记作
$$
\lim _{x \to x_0}f(x)=A
$$
$x \to x_0$时函数有没有极限,与函数在$x_0$有无定义并无关系。
当仅考虑$x$从$x_0$的左侧或右侧趋于$x_0$的情形时,得到的极限被叫做左极限/右极限。两者统称单侧极限。
函数的极限存在的充分必要条件是左极限和右极限各自存在并且相等。
2. 自变量区域无穷大时函数的极限
设函数$f(x)$当$\mid x \mid$大于某一正数时有定义如果存在常数A对于任意给定的正数$\epsilon$,无论它多小,总存在正数$X$,使得当$x$满足不等式$\mid x \mid >X$时,对应的函数值$f(x)$都满足不等式:
$$
\mid f(x)-A \mid < \epsilon
$$
那么常数$A$就叫做函数$f(x)$当$x \to \infty$时的极限,记作
$$
\lim _{x \to + \infin} = A
$$
##### 1.3.2 函数极限的性质
+ 定理1 函数极限的唯一性 如果$\lim _{x \to x_0} f(x)$存在,那么这极限唯一
+ 定理2 函数极限的局部有界性 通俗地讲,函数极限周围的值总在一个范围内
+ 定理3 函数极限的局部保号性 通俗地讲,函数极限周围一定范围内,符号不变
+ 定理4 函数极限与数列极限的关系 函数极限$\lim _{x \to x_0}f(x)$存在,如果数列为函数的定义域内任意收敛于$x_0$的数列,且$x_n \neq x_0$,那么相应的函数值数列$\mid f(x_n) \mid$必收敛
#### 1.4 无穷小与无穷大
##### 1.4.1 无穷小
> 如果函数$f(x)$当$x \to x_0(或\infin)$时极限为零,那么称$f(x)$为当$x \to x_0(或\infin)$时的无穷小。
##### 1.4.2 无穷大
通俗来说,如果函数在某一去心邻域内有定义,对于任意给定的正数,无论它多么大,总存在一个在去心邻域旁的定义域区间,其中的函数值都能大于给定的正数。这时称函数趋近于该中心的无穷大。
#### 1.5 极限运算法则
**定理1 两个无穷小的和是无穷小**
详细证明过程略。通俗来说如果a和b都是当$x \to x_0$的无穷小。任取一个大于0的数字对于a和b都能找到一个数字使得a和b与$x_0$的距离小于那个值时小于那个数字的1/2则a和b相加 小于那个数字,符合无穷小的定义,故定理成立。
有限个无穷小之和也是无穷小。
**定理2 有界函数与无穷小的乘积是无穷小**
严谨证明过程略。通俗来说由于有界函数在某一去心邻域内值域总在一个实数范围内而对于一个是无穷小的函数来说任取一个大于0的数字无论这个数字除以多么大的一个实数总能找到一个函数小于这个值的范围。因此这个函数与这个有界函数相乘也满足无穷小的定义故定理成立。
**推论1 常数与无穷小的乘积是无穷小**
**推论2 有限个无穷小的乘积是无穷小**
**定理3 如果$\lim f(x)=A, \lim g(x)=B$.那么:**
1. $\lim[f(x) \pm g(x)]=\lim f(x) \pm \lim g(x)=A \pm B$
2. $\lim[f(x) \cdot g(x)]=\lim f(x) \cdot \lim g(x)=A \cdot B$
3. 若又有$B \neq 0$:
$$
\lim \frac {f(x)}{g(x)}= \frac {\lim f(x)}{\lim g(x)}=\frac A B
$$
**推论1 如果$\lim f(x)$存在,而$c$为常数,那么$\lim (cf(x))=c \lim f(x)$**
**推论2 如果$\lim f(x)$存在,而$x$为正整数,那么$lim [f(x)]^n = [lim f(x)]^n$**
**定理4 设有数列$\mid x_n \mid$和$\mid y_n \mid$,极限为$A$和$B$**
1. $\lim _{n \to \infin} (x_n \pm y_n) =A \pm B$
2. $\lim _{n \to \infin} (x_n \cdot y_n) =A \cdot B$
3. $y_n \neq 0$且$B \neq 0$时,$\lim _{n \to \infin} \frac{x_n}{y_n}=\frac AB$
**定理5 如果$f(x)\ge g(x)$,那么$\lim f(x) \ge \lim g(x)$**
定理6 复合函数的极限运算法则:
设$\lim_{x \to x_0} g(x)=u_0$$\lim_{x \to u_0} f(x)=A$,则$\lim _ {x \to x0} f[g(x)]=\lim _ {u \to u0} f(u)=A$
#### 1.6 极限存在准则
**准则1 :如果数列$x_n,y_n,z_n$满足以下条件**
+ 从某项起,即$\exists n_0 \in N$,当$n>n_0$时,有$y_n \le x_n \le z_n$
+ $\lim_{n \to \infin} y_n =A,\lim_{n \to \infin} z_n =A$
那么数列$x_n$的极限存在,且$\lim_{n \to \infin} x_n=A$
准则推广到函数上同样成立,该准则称为夹逼准则。
**准则2单调有界数列必有极限**
当函数的左邻域内单调且有界,那么左极限必定存在。
柯西极限存在准则:数列极限的充要条件,任取一个正数,无论它多么小,存在一项,在这之后任意两项之间的距离都小于改正数。
#### 1.7 无穷小的比较
无穷小的和、差、积仍是无穷小但无穷小的商会出现不同的情况这反映了不同的无穷小趋于0的快慢。如
$$
\lim_{x \to 0} \frac{x^2}{3x}=0,\lim_{x \to 0} \frac{3x}{x^2}=\infin,\lim_{x \to 0} \frac{\sin 3x}{3x}=\frac 13
$$
**定义**
如果$\lim \frac{\beta}{\alpha}=0$,那么就说$\beta$是比$\alpha$高阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=\infin$,那么就说$\beta$是比$\alpha$低阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=c \ne 0$,那么就说$\beta$是$\alpha$同阶的无穷小。
如果$\lim \frac{\beta}{\alpha^k}=c \ne 0$,那么就说$\beta$是管局$\alpha$的k阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=1$,那么就说$\beta$与$\alpha$等阶无穷小,记作$\alpha \sim \beta$。(是同阶无穷小的特殊情形)
**定理1 $\beta$与$\alpha$是等价无穷小的充分必要条件是$\beta=\alpha+o(\alpha)$**
**定理2 求两个等价无穷小之比的极限时,分子和分母都可以用等价无穷小代替。**
#### 1.8 函数的连续性与间断点
##### 1.8.1 函数的连续性
气温变动等连续性变化,反映到函数上,就被称为函数的连续性。
> 定义:设函数$y=f(x)$在点$x_0$的某一邻域内有定义,如果:
> $$
> \lim_{\Delta x \to 0} \Delta y=\lim_{\Delta x \to 0} [f(x_0+\Delta x)-f(x_0)]=0
> $$
> 或
> $$
> \lim_{x \to x_0}f(x)=f(x_0)
> $$
>
>
> 那么就称函数$y=f(x)$在$x$点连续。
连续性还分为左连续和右连续。
在区间上每一点都连续的函数,叫做该区间上的连续函数。
##### 1.8.2 函数的间断点
设函数$f(x)$在点$x_0$的某去心邻域内有定义,如果在下列三种情况之一:
1. 在$x=x_0$没有定义
2. 在$x=x_0$有定义,但$\lim_{x \to x_0}f(x)$不存在
3. 在$x=x_0$有定义,$\lim_{x \to x_0}f(x)$存在,但$\lim_{x \to x_0}f(x) \ne f(x_0)$
那么函数$f(x)$在$x_0$不连续,点$x_0$称为$f(x)$的不连续点或间断点。
常见类型:
+ 无穷间断点
+ 震荡间断点
+ 可去间断点
+ 跳跃间断点
如果间断点处左极限和右极限都存在,那么称之为第一类间断点,反之为第二类间断点。
#### 1.9 连续函数的运算与初等函数的连续性
##### 1.9.1 连续函数的和、差、积、商的连续性
**定理1 设函数$f(x)$和$g(x)$在点$x_0$处连续,则它们的和、差、积、商都在点$x_0$处连续。**
##### 1.9.2 反函数与复合函数的连续性
**定理2 如果函数在区间上单调递增(递减),那么它的反函数在对应的区间上也呈单调递增/递减**
**定理3 设函数$y=f[g(x)]$由函数$u=g(x)$与函数$y=f(u)$复合而成,$x_0$的去心邻域在函数的定义域内,若$\lim_{x \to x_0}g(x)=u_0$,而函数$y=f(u)$在$u=u_0$处连续,则:**
$$
\lim_{x \to x_0}f[g(x)]=\lim_{u \to u_0}f(u)=f(u_0)
$$
**定理4 复合函数$f \circ g$中,若$g$在$x_0$连续,且$g$在$x_0$的值对于$f$在这个位置也连续,则复合函数也连续。**
##### 1.9.3 初等函数的连续性
基本初等函数在它们的定义域内都是连续的。
由本章的定理又可得,初等函数在他们的定义区间内都是连续的。
#### 1.10 闭区间上连续函数的性质
**定理1 在闭区间上连续的函数在该区间上有界且一定能取得它的最大最小值**
**定理2零点定理 设$f(x)$在闭区间$[a,b]$上连续,且$f(a)$与$f(b)$异号则开区间内必有一点函数值为0**
**定理3介值定理设$f(x)$在闭区间$[a,b]$上连续,且$f(a)=A$$f(b)=B$则对于A和B之间的任意一个数c在开区间$(a,b)$内必有一点$c$使得$**f(c)=C$
#### 常见题型及思路
+ 函数和函数是否相同:定义域相同、表达关系相同
+ 求单调性:任取$x_1,x_2$,按定义找。或求导。
+ 奇偶性\偶函数:$f(-x)$。
### 第二章 导数与微分
#### 2.1 导数概念
> 导数表示函数在某一点上的变化率。
定义式:
$$
y{'}=\lim_{\Delta x \rarr 0} \frac {f(x+ \Delta x)-f(x)}{\Delta x}
$$
几何意义:切线方程的斜率
函数在点x初连续是函数在点x处可导的**必要条件**,但不是**充分条件**。
#### 2.2 导数运算法则
+ $[u(x) \pm v(x)]^{'}=u^{'}(x) \pm v^{'}(x)$
+ $[u(x)v(x)]^{'}=u^{'}(x)v(x)+u(x)v^{'}(x)$
+ $[\frac {u(x)}{v(x)}]^{'}=\frac {u^{'}(x)v(x)-u(x)v^{'}(x)}{v^2(x)} (v(x) \ne 0)$
证明方式:定义
根据法则2$(Cu)^{'}=Cu^{'}$
> 反函数的导数等于直接函数导数的倒数

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,243 @@
*written by PeterAlbusCopyright © 2021 - SHOU 1951123 Hong Wu*
## 第1-2章 绪论
### 1.算法基本概念及5个特性
> 算法(algorithm)是对特定问题求解步骤的一种步骤,是指令的有限序列
算法必须满足下列5个重要特性
+ **输入**:一个算法有**零个**或多个输入
+ **输出**:一个算法有**一个**或多个输出
+ **有穷性**:一个算法必须总是(对任意合法的输入)在执行有穷步后结束
+ **确定性**:算法的每一条指令必须有确切的含义,不存在二义性,并且在任何条件下对相同的输入总能得到相同的输出。
+ **可行性**:算法的描述的操作可以通过已经实现的基本操作执行有限次指令来实现。
### 2.算法的描述方法
自然语言通常用来粗略地描述算法的基本思想。
> **伪代码**是介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。
### 3.算法设计的过程
+ 理解问题
+ 选择算法设计技术
+ 设计并描述算法
+ 手工运行算法
+ 分析算法的效率
+ 实现算法
#### 1.3 重要的问题类型
##### 1.3.3 图问题
+ TSP问题
##### 1.3.4 组合问题
### 4.算法复杂度分析:**时间**/空间
#### 2.1 算法的时间复杂性分析
> **渐进分析**是指忽略具体机器、编程语言和编译器的影响,只关注在输入规模增大时算法运行时间的增长趋势。
影响算法时间代价的最主要因素:输入数据的规模
##### 2.1.2 算法的渐进分析
+ 大O
> 若存在两个正的常数$c$和$n_0$,对于任意$n \geq n_0$,都由$T(n) \leq c \times f(n)$,则称$T(n)=O(f(n))$
大O用来描述增长率的上限表示$T(n)$的增长最多像$f(n)$增长的那样快。
+ Ω(平凡下界)
> 对问题的输入中必须要处理的元素进行计数,同时对必须要输出的元素进行计数。
平凡下界反映了完成算法必须要完成的时间复杂度。平凡下界往往因为过小而失去意义。
##### 2.1.3 最好、最坏和平均情况
有的问题即使输入规模相同,但如果输入的数据不同,其时间复杂度也不同。这时就会分为最好、最坏和平均情况。
##### 2.1.5 递归算法的时间复杂性分析
**定理2.1(考)** 使用主定理计算时间复杂度
递归算法通常满足如下通用分治递推式:
$$
T(n)=
\left \{
\begin{array}{ll}
c,n=1\\
aT(n/b)+cn^k,n>1
\end{array}
\right.
$$
若T(n)是一个非递减函数,且满足通用分治递推式,则如下结果成立:
$$
T(n)=
\left \{
\begin{array}{ll}
O(n^{log_bn}),a>b^k\\
O(n^klog_bn),a=b^k\\
O(n^k),a<b^k
\end{array}
\right.
$$
P29 第四题
#### 2.2 算法的空间复杂性分析
1. 输入输出数据占用的空间
2. 算法本身占用的空间
3. 执行算法需要的辅助空间
## 第3章 蛮力法
### 1.蛮力法的基本思想
**蛮力法**是一种简单直接地解决问题地方法,常常直接基于问题的描述。
蛮力法所依赖的基本技术是**遍历**,也称扫描。
### 2.具体问题中的应用
+ 查找问题:顺序
+ 串匹配
+ BF朴素的模式匹配
+ KMP主串无回溯**求NEXT数组**,Page 40
[如何更好地理解和掌握 KMP 算法? - 知乎 (zhihu.com)](https://www.zhihu.com/question/21923021)
+ 排序问题
+ 选择排序
+ 冒泡排序
考试方法给定序列经过n次xx排序后的序列选择题
+ 组合问题: 生成排列/生成子集/任务分配/0-1背包问题
+ 图问题:哈密尔顿回路/TSP
+ ~~几何问题:最近对~~ 简单了解
## 第4章 分治法
### 1.分治法的基本思想
+ 步骤:划分->求解子问题->合并
+ 递归
+ 时间复杂度
### 2.具体问题中的应用
+ 排序问题
+ 归并排序
+ 快速排序
+ 组合问题:最大子段和,棋盘覆盖,循环赛日程安排
+ 几何问题:最近对
## 第5章 减治法
### 1.减治法的基本思想
+ 时间复杂度
### 2.具体问题中的应用
+ 查找问题
+ 折半查找
+ 二叉查找树
+ 排序问题
+ **堆排序**:筛选法
+ 组合问题:淘汰赛冠军、假币问题
## 第6章 动态规划法 -编程题
### 1.动态规划法的基本思想
+ 最优化问题:约束条件/可行解/目标函数
+ 适用问题、步骤
+ 与分治法的异同点
### 2.具体问题中的应用
+ 图问题
+ TSP问题Page 108
+ 多段图的最短路径
+ 组合问题
+ 0/1背包问题
+ 最长公共子序列问题
+ 查找问题
+ 最优二叉查找树
+ 矩阵快速幂->斐波那契数列
## 第7章 贪心法
### 1.贪心法的基本思想
### 2.具体问题中的应用
+ 图问题
+ TSP问题、图着色问题、最小生成树
+ 组合问题
+ 背包问题,活动安排
## 第8章 回溯法
### 1.回溯法的基本思想
+ 解空间树
+ 深度优先搜索
+ 剪枝函数
### 2.具体问题中的应用(解空间树的搜索)
+ 图问题
+ 图着色问题
+ 组合问题
+ 八皇后问题
## 第9章 分支限界法
### 1.分支限界法的基本思想
+ 解空间树
+ 广度优先搜素
+ 限界函数
### 2.具体问题中的应用(解空间树)
+ 图问题
+ TSP
+ 多段图最短路径
+ 组合问题
+ 0/1背包问题 p180 图9.9
## 第10、11、12章
4分近似算法、概率算法舍伍德、拉斯维加斯、蒙特卡罗特点、适用场景

@ -0,0 +1,469 @@
*written by PeterAlbusCopyright © 2021 - SHOU 1951123 Hong Wu*
## 第二章 MATLAB入门
+ 变量
+ 特殊变量ans pi eps flops inf NaN ...
+ 数学符号:+ - * / .*(点乘) ./(点除) ^(幂) \\(左除)
+ 数学函数sin abs sqrt ...
+ 函数m文件、脚本m文件
### 2.3 数组与矩阵
#### 2.3.1 数组
##### 1.数组的建立
```matlab
x=[a b c d e] %创建包含指定元素的行向量
x=first:last %创建从first开始加1计数到last结束的行向量
x=first:increment:last %创建从first开始加increment计数到last结束的行向量
linspace(first,last,n) %创建从first开始到last结束有n个元素的行向量
```
##### 2.数组的访问
+ 使用下标访问一个元素:`x(i)`
+ 访问一块元素:
`x(a,b,c)`表示访问数组x的从第a个开始以步长为b到第c个元素(不超过c)b可以为负数缺省时为一
```matlab
x=[1 2 3 4 5 6 7 8 9 10];
y=x(2:2:11),z=x(10:-3:1);
y=2 4 6 8 10
x=10 7 4 1
```
+ 直接使用元素编址序号x([a b c d])表示提取x的第a,b,c,d个元素构成一个新的元组[x(a) x(b) x(c) x(d)]。
##### 3.数组的方向
先前例子中的数组都是一行数列,以行方向分布,称之为行向量。数组也可以是列向量。
产生列向量可以以两种方式,直接产生和转置产生。
```matlab
c=[1;2;3;4];
b=c';
```
> 以空格或逗号分隔的元素指定的时不同列的元素,以分号分隔的元素指定的是不同行的元素。
>
> 当数组b是复数时转置(b')产生的是复数共轭转置,而点-转置(b.)只对数组进行转置,而不进行共轭。对实数来说两者等价。
```matlab
>> b=[1+2i 4-9i]
b =
1.0000 + 2.0000i 4.0000 - 9.0000i
>> b'
ans =
1.0000 - 2.0000i
4.0000 + 9.0000i
>> b.'
ans =
1.0000 + 2.0000i
4.0000 - 9.0000i
```
##### 4.数组的运算
+ 数组对标量的运算是数组的每个元素对该标量施加相应的运算。
+ 当两个数组有相同维数时,加减乘除幂运算可按照元素对元素方式进行,不同维数不可运算。
#### 2.3.2 矩阵
##### 1.矩阵的建立
数组可以是一个行向量或一个列向量,也可以是具有几个行或列的矩阵形式。矩阵的创建遵循行向量和列向量的模式。
##### 2.矩阵中元素的操作
+ 矩阵A中的第r行`A(r,:);`
+ 矩阵A中的第r列`A(:,r);`
+ 依次提取矩阵A的每一列将A拉伸为一个列向量`A(:);`
+ 取矩阵的第i1到i2行j1到j2列构成新矩阵`A(i1:i2,j1:j2);`
+ 逆序提取矩阵A的第i1到i2行`A(i2:-1:i1,:);`
+ 逆序提取矩阵A的第j1到j2列`A(:,j2:-1:j1);`
+ 删除i1到i2行/j1到j2列`A(i1:i2,:)=[];A(:,j1:j2)=[]`
+ 将矩阵A和B拼接成新矩阵`[A B]`或`[A;B]`
##### 3.矩阵的运算
+ 矩阵加法A+B
+ 矩阵乘法A*B
+ 方阵的行列式det(A)
+ 方阵的逆inv(a)
+ 方阵的特征值与特征向量:[V,D]=eig(A)
### 2.5 MATLAB作图
#### 2.5.1 二维图形
二维图形即平面曲线图形MATLAB提供了画曲线的函数。
##### 1.曲线图
MATLAB作图是通过描点-连线实现要画一个曲线图形必须先取得该图形上一系列点的坐标将坐标传给MATLAB函数。
```matlab
plot(X,Y,S);
plot(X,Y);
plot(X,Y1,S1,X,Y2,S2,...,X,Yn,Sn);
```
X,Y是向量分别表示点集的横坐标和纵坐标。
S表示描绘点集的线形如y表示黄色-表示实线等。
第三条命令表示将多条线画在一起。
##### 2.符号函数画图
符号函数画图可通过ezplot或fplot函数实现。
```matlab
ezplot(f) %在默认区间[-2Π,2Π]上绘制f=f(x)的图形
explot(f,[a,b]) %[a,b]上绘制f=f(x)的图形
ezplot(f,[xmin,xmax,ymin,ymax]) %区间上绘制隐函数f(x,y)=0的图形
ezplot(x,y,[tmin,tmax]) %在区间上绘制x=x(t),y=y(t)的图形
```
##### 3.极坐标图
```matlab
polar(theta,rho,S);
%例
theta=linspace(0,2*pi);
rho=sin(2*theta).*cos(2*theata);
polar(theta,rho,'g')
```
#### 2.5.2 三维图形
##### 1.三维曲线
```matlab
plot3(x,y,z,S) %1条曲线
plot3(X,Y,Z) %多条曲线X,Y,Z都是矩阵每一列表示一条曲线
```
##### 2.空间曲面
```matlab
surf(X,Y,Z) %描点,画成曲面
mesh(X,Y,Z) %描点,画成网格图
```
#### 2.5.3 处理图形
##### 6.散点图
```
scatter(X,Y,S,C) %二维
scatter3(X,Y,Z,S,C) %三维
```
##### 7.等值线图
```matlab
contour(x,y,z,n)
contour(x,y,z,n)
%n表示等值线条数
```
---
## 第三章 线性规划
> 优化问题,一般是指用“最好”的方式,使用或分配有限的资源,即劳动力、原材料、机器、资金等,使得费用最小或利润最大。
>
> 建立优化问题的数学模型首先要确定问题的决策变量x(n维向量)然后构造模型的目标函数和x的允许取值范围。允许取值范围一般称为约束条件。
一般优化模型可表示为下列形式:
$$
\min \limits _x z=f(x) \\
s.t. g_i(x) \leq 0 (i=1,2,\ldots,m)
$$
如果目标函数和约束条件都是线性函数,那么该模型称为线性规划。
决策变量、目标函数和约束条件构成了线性规划的3个基本要素。
### 3.1 线性规划模型
建立线性规划模型的三个步骤:
+ 找出待定的未知变量(决策变量)。并用代数符号表示它们。
+ 找出问题中所有的限制或约束,写出未知变量的线性方程或线性不等式。
+ 找到模型的目标或判据,写出决策变量的线性函数,以便求出其最大值或最小值。
### 3.2 线性规划实例及编程求解
#### 3.2.1 用MATLAB优化工具箱求解线性规划
用MATLAB软件求解线性规划的命令如下
```matlab
x=linprog(c,A,b)
x=linprog(c,A,b,Aeq,beq)
x=linprog(c,A,b,Aeq,beq,vlb,vub)
x=linprog(c,A,b,Aeq,beq,vlb,vub,x0)
[x,fval]=linprog(...)
```
P33 例1
linprog只能求解极小化模型需把极大化转换为极小化方法目标函数中参数取负
---
## 第四章 非线性规划
优化模型中,目标函数或约束条件中至少有一个是非线性函数时的最优化问题叫做非线性规划问题。
### 4.2 非线性规划实例及编程求解
非线性规划的标准型:
$$
\min F(X) \\
s.t.\begin{align*}
\begin{split}
\left \{
\begin{array}{ll}
AX<B, \\
Aeq \cdot X=beq,\\
G(X)=0,\\
Ceq(X)=0,\\
VLB \leq X \leq VUB
\end{array}
\right.
\end{split}
\end{align*}
$$
+ 首先建立M文件func.m定义目标函数F(X):
```matlab
function f=fun(x)
f=F(x);
```
+ 若约束条件中有非线性约束则建立nonlcon.m定义函数G(X)与Ceq(X)
```matlab
function [G,Ceq]=nonlcon(X)
G=...
Ceq=...
```
+ 建立主程序非线性规划的求解的函数是fmincon命令的基本格式如下
```matlab
x=fmincon('fun',X0,A,b)
x=fmincon('fun',X0,A,b,Aeq,beq)
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB)
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon')
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options)
[x,fval,exitflag,output]=fmincon(...)
```
p53例1
---
## 第五章 网络优化
### 5.1 图论的基本概念
#### 5.1.2 图的矩阵表示
+ 关联矩阵:顶点-边
+ 邻接矩阵:顶点-顶点
### 5.2 最短路问题及其算法
+ Dijkstra
+ Floyd
### 5.5 中国邮递员问题
寻找最佳巡回
**欧拉图**:存在欧拉巡回(经过每条边至少一次的巡回)的图。
+ 若图是欧拉图:每个欧拉巡回都是最佳巡回。
+ 若图不是欧拉图:引入重复边,使其成为欧拉图
+ 正好有两个奇次顶点:寻找两个奇次顶点的最短路径,加入原图成为欧拉图
+ 2n个奇次顶点将奇次顶点配对要求最佳配对。
### 5.7 最小生成树问题
+ Kruskal
+ Prim
---
## 第六章 微分方程与差分方程
建立微分方程模型
+ 根据规律建模
+ 微元法建模
+ 模拟近似法建模
**P118例1** 变化率->导数->微分方程求解
### 6.3 MATLAB解微分方程
+ 解析解dsolve
+ 数值解ode45,ode23,ode113,ode15s,ode23s
### 6.4 差分方程模型及其解法
差分方程也叫递推关系
通常需求差分方程的特征方程。
---
## 第七章 插值与拟合
**插值**:给定一批数据点,确定满足特定要求的曲线或曲面,求曲线或曲面通过的所有点,
**拟合**:如果不要求曲线通过所有点,而是能反映对象的整体变化趋势,得到简单实用的近似函数,就是数据拟合。
### 7.2 用MATLAB解插值问题
#### 7.2.1 一维插值
```matlab
Interpl(x,y,cx,'method')
method
'linear' %线性插值
'spline' %三次样条插值
'cubic' %三次插值
'nearest' %最近邻点插值
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
T=interpl(hours,temps,[3.2 6.5 7.1 11.7],'spline');
T=9.6734 30.0427 31.1755 25.3820
```
#### 7.2.3 三维插值
P162 例
`griddata(x,y,z,cx,cy,'cubic');`
### 7.4 用MATLAB解曲线拟合问题
多项式拟合:
```matlab
A=polyfit(x,y,m);
y=polyval(A,x); %多项式在x处的值
```
P167 例1
---
## 第八章 数据的统计描述
p183 底部
### 8.5 MATLAB数据统计
#### 8.5.1 MATLAB中大量数据的读取与输出
```matlab
f=fopen('filename','mode');
A=xlsread('data.xls','a1:c5');
xlsread(filename,sheetname,range);
```
#### 8.5.2 基本统计量
+ 均值 mean(x)
+ 中位数 median(x)
+ 标准差 std(x)
+ 方差 var(x)
+ 偏度 skewness(x)
+ 峰度 kurtosis(x)
#### 8.5.3 常见概率分布的函数
八个分布:
+ 正态分布 norm
+ 指数分布 exp
+ 泊松分布 poiss
+ β分布 beta
+ 韦布尔分布 wbl
+ 卡方分布 chi2
+ t分布 t
+ f分布 f
五类函数
+ 概率密度 pdf
+ 概率分布 cdf
+ 逆概率分布 inv
+ 均值与方差 stat
+ 随机数生成 rnd
某一种分布的某一种函数将上方两者拼接如normcdf
P203-204
#### 8.5.5 参数估计
P205-206例7 置信区间、假设检验
---
## 第九章 统计分析
+ 回归分析命令
regress
`[b,bint,r,rint,status]=regress(Y,X,alpha)`
+ 聚类分析六个MATLAB函数(P238例1)
+ pdist
+ squareform
+ linkage
+ dendrogram
+ cophenet
+ cluster
+ 判别分析
+ 主成分分析(p251)
+ 标准化
+ 相关系数、特征值、特征向量
+ 计算贡献率
+ 累计贡献率
+ 主成分载荷,归一化
若计算前两个主成分,如何简化

@ -0,0 +1,66 @@
---
home: true
heroImage: null
heroText: PeterAlbus的笔记本
tagline: 整合了个人整理的用于期末复习的各科目笔记
actionText: 开始阅读 →
actionLink: /ComputerOS
features:
- title: 聚焦重点
details: 将课本中的考试知识重点进行整合,考前快速进行复习。
- title: 浅显易懂
details: 笔者尝试以自己的语言和理解,通过简单的方式阐述严谨的定义。
- title: 优秀的阅读体验
details: 基于VuePress和Markdown搭建页面跳转快速内容查询方便。
footer: GPL Licensed | Copyright © 2021-present PeterAlbus
---
所有笔记都在GitHub仓库内有.md文件可自行下载使用markdown阅读器查看或转换成PDF等其他格式使用以及传播时保证保留最上方的版权信息即可。有错别字等问题或错误以及漏了哪些知识点可以github提出issue也可以点击博客右方邮件按钮联系我也可以直接跟我说。
[PeterAlbusNotes-GitHub](https://github.com/PeterAlbus/PeterAlbusNotes)
### 部署到我的域名上的笔记链接:
+ **软件工程笔记**[SoftwareEngineering (peteralbus.com)](/SoftwareEngineering.md)
+ **汇编笔记**[Assembly Language (peteralbus.com)](/AssemblyLanguage.md)
+ **计算机网络笔记**[Computer Network (peteralbus.com)](/ComputerNetwork.md)
+ **数据库笔记**[Database (peteralbus.com)](/Database.md)
+ **操作系统笔记**[ComputerOS (peteralbus.com)](/ComputerOS.md)
+ **计算机组成原理笔记**: [ComputerOrganization (peteralbus.com)](/ComputerOrganization.md)
+ **算法基础笔记**[FundamentalsOfAlgorithmics (peteralbus.com)](/FundamentalsOfAlgorithmics.md)
+ **数学建模笔记**[MathematicalModeling (peteralbus.com)](/MathematicalModeling.md)
## changelog
2023年1月29日vuepress驱动大幅提升阅读和查询体验。
---
2022年1月10日重新用nginx完成了部署现在所有域名都可通过note.peteralbus.com访问
---
2022年1月8日16:00完成了软件工程笔记[SoftwareEngineering (peteralbus.com)](/SoftwareEngineering.md),大三下的笔记整理也结束了
---
2022年1月6日13:28完成了汇编语言笔记编写[Assembly Language (peteralbus.com)](/AssemblyLanguage.md),并且修复了手机不能查看目录的问题。
---
2022年1月3日11:05完成了计算机网络笔记的编写[Computer Network (peteralbus.com)](/ComputerNetwork.md)
---
2021年6月26日23:00计算机组成原理笔记完成本学期的复习笔记全部完成也都部署到了服务器上以便于查看。计组的笔记同样添加了
---
2021年6月26日12:00操作系统笔记已更新添加了目录点击目录即可展开推荐使用电脑查看
目录的生成在[typora生成html添加侧边目录/typora侧边栏与正文,toc都带序号_酒逢知己千杯少,欢迎驾临-CSDN博客_typora导出html带大纲](https://blog.csdn.net/u012914436/article/details/99679320)的基础上修改
---

@ -49,20 +49,22 @@
##### 1.1.3 软件危机 ##### 1.1.3 软件危机
> ***软件危机*是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。**
随着计算机应用的逐步扩大,软件的需求量也迅速增加,规模日益增长。开发一个数万乃至于数百万行的代码,其复杂度将会大大增加。这导致大型软件的开发费用往往超出预算,完成时间也常常脱期。庞大的软件费用和软件质量的下降对计算机应用的继续扩大构成了巨大的威胁。面对这种严峻的形势,软件界一些有识之士提出了软件危机的警告。 随着计算机应用的逐步扩大,软件的需求量也迅速增加,规模日益增长。开发一个数万乃至于数百万行的代码,其复杂度将会大大增加。这导致大型软件的开发费用往往超出预算,完成时间也常常脱期。庞大的软件费用和软件质量的下降对计算机应用的继续扩大构成了巨大的威胁。面对这种严峻的形势,软件界一些有识之士提出了软件危机的警告。
软件危机出现的原因有维护和生产两个方面: 软件危机出现的原因有维护和生产两个方面:
+ 软件维护费用急剧上升,直接威胁计算机应用的扩大 + 软件维护费用急剧上升,直接威胁计算机应用的扩大
+ 软件生产技术进步缓慢,是加剧软件危机的重要原因——许多人士意识到必须把软件生产从个人化方式改为工程化方式 + 软件生产技术进步缓慢,是加剧软件危机的重要原因——许多人士意识到必须把软件生产从个人化方式改为工程化方式
#### 1.2 软件工程学的范畴 #### 1.2 软件工程学的范畴
“软件工程”一是1968年北大西洋公约组织NATO在联邦德国召开的一次会议上提出的。它反映了软件人员认识到软件危机的出现以及为谋求解决这一危机而做的一种努力。 “软件工程”一是1968年北大西洋公约组织NATO在联邦德国召开的一次会议上提出的。它反映了软件人员认识到软件危机的出现以及为谋求解决这一危机而做的一种努力。
软件工程有着各种各样的定义。无论多少种说法,它的中心思想都是**把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”**。 软件工程有着各种各样的定义。无论多少种说法,它的中心思想都是**把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”**。
![image-20220106153429172](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106153429172.png) ![image-20220106153429172](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106153429172.png)
##### 1.2.3 软件工程环境 ##### 1.2.3 软件工程环境
@ -78,23 +80,23 @@
1. 过程式编程范型 1. 过程式编程范型
过程式编程范型遵循“程序=数据结构+算法”的思路,把程序理解为由一组被动的数据和一组能动的过程组成。编程时,先设计数据结构,围绕数据结构编写其算法过程。 过程式编程范型遵循“程序=数据结构+算法”的思路,把程序理解为由一组被动的数据和一组能动的过程组成。编程时,先设计数据结构,围绕数据结构编写其算法过程。
典型FORTRAN、Pascal、C 典型FORTRAN、Pascal、C
由于客观事物中,实体的“状态”(数据)和"运动"(方法)总是结合在一起的但使用POPL(面向过程编码语言procedure-oriented programming langue)编程时数据结构和算法是独立的导致程序模型解空间solution domain会偏离客观事物本身的模型问题空间problem domain程序规模越大这种编程泛型的缺陷更加明显。 由于客观事物中,实体的“状态”(数据)和"运动"(方法)总是结合在一起的但使用POPL(面向过程编码语言procedure-oriented programming langue)编程时数据结构和算法是独立的导致程序模型解空间solution domain会偏离客观事物本身的模型问题空间problem domain程序规模越大这种编程泛型的缺陷更加明显。
这类范型通常只用于编写规模不大(50000行下),不会轻易更改的程序 这类范型通常只用于编写规模不大(50000行下),不会轻易更改的程序
2. 面向对象编程范型 2. 面向对象编程范型
在面向对象的程序设计中,数据及其操作被封装在一个个称为对象(object)的统一体,对象之间则通过消息(message)相互联系,"对象+消息"的机制取代了"数据结构+算法"的思路。较好地实现了解空间和问题空间的一致性。 在面向对象的程序设计中,数据及其操作被封装在一个个称为对象(object)的统一体,对象之间则通过消息(message)相互联系,"对象+消息"的机制取代了"数据结构+算法"的思路。较好地实现了解空间和问题空间的一致性。
面向过程到面向对象程序设计(object-oriented programming, OOP)是程序设计方法的一次飞跃。 面向过程到面向对象程序设计(object-oriented programming, OOP)是程序设计方法的一次飞跃。
面向对象编程泛型的优势也体现在软件的维护上,能够使得大型软件的维护更加容易和快捷。 面向对象编程泛型的优势也体现在软件的维护上,能够使得大型软件的维护更加容易和快捷。
3. 于构件技术的编程泛型 3. 于构件技术的编程泛型
构建(component,也译为组件)可以理解为标准化的对象类,它本质上是一种通用的,可支持不同应用程序的组件。 构建(component,也译为组件)可以理解为标准化的对象类,它本质上是一种通用的,可支持不同应用程序的组件。
@ -105,8 +107,8 @@
常用编程粒度的大小来比较3种编程范型的差异。 常用编程粒度的大小来比较3种编程范型的差异。
+ 过程式编程范型:着眼于程序的过程和基本控制结构,粒度最小 + 过程式编程范型:着眼于程序的过程和基本控制结构,粒度最小
+ 面向对象编程型:着眼于程序中的对象,粒度比较大 + 面向对象编程型:着眼于程序中的对象,粒度比较大
+ 基于构件技术的编程范型:着眼于适合整个领域的类对象,度更大 + 基于构件技术的编程范型:着眼于适合整个领域的类对象,度更大
##### 1.3.2 三代软件工程 ##### 1.3.2 三代软件工程
@ -130,7 +132,12 @@
一个软件从开始立项起,到废弃不用止,统称为软件的生存周期(life cycle)。 一个软件从开始立项起,到废弃不用止,统称为软件的生存周期(life cycle)。
![image-20220106161809030](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106161809030.png) 软件生存周期分为三个时期八个阶段:
+ 三个时期:软件定义、软件开发、软件维护
+ 八个阶段:问题定义、可行性研究(可行性研究报告)、需求分析(软件需求规格说明书)、概要设计、详细设计、编码和单元测试、综合测试、运行维护
![image-20220106161809030](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106161809030.png)
##### 2.1.1 软件生存周期的主要活动 ##### 2.1.1 软件生存周期的主要活动
@ -140,7 +147,7 @@
2. 软件分析 2. 软件分析
软件分析的任务是在系统需求模型的基础上,从开发人员的视角对软件的需求模型进行分析,建立与需求模型一致的,与实现无关的软件分析模型。它是对软件逻辑模型的描述,也是下一步进行软件设计的依据 软件分析的任务是在系统需求模型的基础上,从开发人员的视角对软件的需求模型进行分析,建立与需求模型一致的,与实现无关的软件分析模型。它是对软件逻辑模型的描述,也是下一步进行软件设计的依据
3. 软件设计 3. 软件设计
@ -170,7 +177,7 @@
1. 从软件生存周期到过程模型 1. 从软件生存周期到过程模型
软件过程可理解为围绕软件开发所进行的一系列活动。早些时候,人们常常把软件过程称为“软件开发模型”(software development model)。著名的瀑布模型(waterfall model)是神棍周期和软件过程的研究互相结合的一个早期实例。 软件过程可理解为围绕软件开发所进行的一系列活动。早些时候,人们常常把软件过程称为“软件开发模型”(software development model)。著名的瀑布模型(waterfall model)是生存周期和软件过程的研究互相结合的一个早期实例。
早期的软件工程,软件开发模型包含的阶段与活动和软件生存周期划分的阶段与活动基本一致。上图显示的典型软件生存周期,也可以用来展示典型瀑布模型的阶段与活动,二者都属于线性模型,且具有等同性。它们共同特点是严格地划分阶段,各阶段的活动分步完成,前一阶段的活动没有结束,下一阶段的活动就不能进行,恰如奔流不息,拾级而下的瀑布。 早期的软件工程,软件开发模型包含的阶段与活动和软件生存周期划分的阶段与活动基本一致。上图显示的典型软件生存周期,也可以用来展示典型瀑布模型的阶段与活动,二者都属于线性模型,且具有等同性。它们共同特点是严格地划分阶段,各阶段的活动分步完成,前一阶段的活动没有结束,下一阶段的活动就不能进行,恰如奔流不息,拾级而下的瀑布。
@ -182,7 +189,7 @@
##### 2.2.1 瀑布模型 ##### 2.2.1 瀑布模型
![image-20220106165027990](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106165027990.png) ![image-20220106165027990](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106165027990.png)
瀑布模型是基于软件生存周期的线性开发模型,有如下特点: 瀑布模型是基于软件生存周期的线性开发模型,有如下特点:
@ -192,7 +199,7 @@
+ 推迟实现的观点 + 推迟实现的观点
不要过早的进行编码,把开发软件的逻辑设计和物理实现清晰的区别开来。不要过早考虑实现。 不要过早地进行编码,把开发软件的逻辑设计和物理实现清晰地区别开来。不要过早考虑实现。
+ 保证质量 + 保证质量
@ -200,11 +207,11 @@
每一阶段都要对完成的文档进行复审 每一阶段都要对完成的文档进行复审
按照瀑布模型开发软件,需要分析员能够做出准确的需求分析,“在软件产品的某个版本试用之前,要用户完全、正确对一个现代软件产品提出确切的需求实际上是不可能的”——F. Brooks。为了解决这一问题人们提出了快速原型模型。 按照瀑布模型开发软件,需要分析员能够做出准确的需求分析,“在软件产品的某个版本试用之前,要用户完全、正确对一个现代软件产品提出确切的需求实际上是不可能的”——F. Brooks。为了解决这一问题人们提出了快速原型模型。
##### 2.2.2 快速原型模型 ##### 2.2.2 快速原型模型
![image-20220106165620467](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106165620467.png) ![image-20220106165620467](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106165620467.png)
**快速原型模型**(rapid prototype model)的中心思想是,先建立一个能够反映用户主要需求的原型;让用户实际看一下未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进,之后将原型反复改进。直至符合用户要求。 **快速原型模型**(rapid prototype model)的中心思想是,先建立一个能够反映用户主要需求的原型;让用户实际看一下未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进,之后将原型反复改进。直至符合用户要求。
@ -222,7 +229,7 @@
增量模型(incremental model)是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。这种模型把软件看作一系列相互联系的增量(increments),开发迭代中每次完成一个增量。 增量模型(incremental model)是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。这种模型把软件看作一系列相互联系的增量(increments),开发迭代中每次完成一个增量。
![image-20220106174736343](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106174736343.png) ![image-20220106174736343](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106174736343.png)
其中任意一个增量的开发流程均可按瀑布模型或快速原型法完成。 其中任意一个增量的开发流程均可按瀑布模型或快速原型法完成。
@ -232,7 +239,7 @@
螺旋模型(spiral model)是目前软件开发中最常用的一种软件开发模型,是在结合瀑布模型与快速原型模型基础上演变而成的,尤其适用于大型软件的开发。 螺旋模型(spiral model)是目前软件开发中最常用的一种软件开发模型,是在结合瀑布模型与快速原型模型基础上演变而成的,尤其适用于大型软件的开发。
![image-20220106175129479](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106175129479.png) ![image-20220106175129479](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106175129479.png)
螺旋模型是一种典型的迭代模型,每迭代一次,螺旋线前进一周。 螺旋模型是一种典型的迭代模型,每迭代一次,螺旋线前进一周。
@ -245,15 +252,15 @@
软件开发时存在着风险。对于高风险的大型软件,螺旋模型较为理想,螺旋模型任意一次迭代均可应用原型方法降低风险,总体上保留了瀑布模型的顺序性。 软件开发时存在着风险。对于高风险的大型软件,螺旋模型较为理想,螺旋模型任意一次迭代均可应用原型方法降低风险,总体上保留了瀑布模型的顺序性。
螺旋模型的特点就是在项目阶段都考虑风险。螺旋模型开发的成败,在很大程度上依赖于风险评估的准确性。 螺旋模型的特点就是在项目阶段都考虑风险。螺旋模型开发的成败,在很大程度上依赖于风险评估的准确性。
##### 2.2.3 构建集成模型 ##### 2.3.3 构件集成模型
上述软件开发模型同时适用于面向过程和面向对象软件开发。构建集成模型则主要适用于面向对象软件开发。 上述软件开发模型同时适用于面向过程和面向对象软件开发。构建集成模型则主要适用于面向对象软件开发。
构建集成模型利用预先封装好的构建来构造应用系统,它融合了螺旋模型的不少特征,也支持软件开发的迭代方法。 构建集成模型利用预先封装好的构建来构造应用系统,它融合了螺旋模型的不少特征,也支持软件开发的迭代方法。
![image-20220106180707307](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106180707307.png) ![image-20220106180707307](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106180707307.png)
#### 2.4 形式化方法模型 #### 2.4 形式化方法模型
@ -283,7 +290,7 @@
#### 2.6 软件可行性研究 #### 2.6 软件可行性研究
确定开发是否指定进行,分析它存在哪些风险。 确定开发是否值得进行,分析它存在哪些风险。
### 第三章 结构化分析与设计 ### 第三章 结构化分析与设计
@ -297,7 +304,7 @@
分为结构化设计(structured design, SD)和结构化分析(structured analysis, SA)技术。 分为结构化设计(structured design, SD)和结构化分析(structured analysis, SA)技术。
作为一种系统化开发方法,构化分析与设计是瀑布模型的首次实践。该模型一般分为如下阶段 作为一种系统化开发方法,构化分析与设计是瀑布模型的首次实践。该模型一般分为如下阶段
需求定义与分析→总体设计→详细设计→编码→测试→使用维护 需求定义与分析→总体设计→详细设计→编码→测试→使用维护
@ -319,9 +326,9 @@
+ 结构化设计 + 结构化设计
软件设计-总体设计+详细设计。SD阶段把分析模型中的DFD图转换成SC图完成了总体设计。随后的详细设计中还需要用适当的工具对各个模块采用的算法和数据结构做适当的描述。 软件设计=总体设计+详细设计。SD阶段把分析模型中的DFD图转换成SC图完成了总体设计。随后的详细设计中还需要用适当的工具对各个模块采用的算法和数据结构做适当的描述。
![image-20220106184458971](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106184458971.png) ![image-20220106184458971](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106184458971.png)
##### 3.1.2 SA模型的组成与描述 ##### 3.1.2 SA模型的组成与描述
@ -329,7 +336,7 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
1. SA模型的组成 1. SA模型的组成
![image-20220106184813675](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106184813675.png) ![image-20220106184813675](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106184813675.png)
下图显示了SA模型的组成**数据字典**(data dictionary, DD)处于模型的核心它是系统涉及的各种数据对象的总和。从DD出发可以构建 下图显示了SA模型的组成**数据字典**(data dictionary, DD)处于模型的核心它是系统涉及的各种数据对象的总和。从DD出发可以构建
@ -337,7 +344,7 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
+ **数据流图**data flow diagramDFD指明系统间数据如何流动和变换DFD图的每个功能用**加工规格说明**(process specification, PSPEC)描述 + **数据流图**data flow diagramDFD指明系统间数据如何流动和变换DFD图的每个功能用**加工规格说明**(process specification, PSPEC)描述
+ **状态变换图**status transform diagramSTD指明系统在外部事件的作用下如何动作。软件控制方面的附加信息还可以用**控制规格说明**control specificationCSPEC描述 + **状态变换图**status transform diagramSTD指明系统在外部事件的作用下如何动作。软件控制方面的附加信息还可以用**控制规格说明**control specificationCSPEC描述
![image-20220106190325200](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106190325200.png) ![image-20220106190325200](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106190325200.png)
2. SA模型描述工具 2. SA模型描述工具
@ -345,21 +352,21 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
使用四种基本图形符号圆框代表加工箭头代表数据流向方框表示数据源点和终点双杠表示数据文件或数据库。DFD不能表示程序的控制结构。 使用四种基本图形符号圆框代表加工箭头代表数据流向方框表示数据源点和终点双杠表示数据文件或数据库。DFD不能表示程序的控制结构。
![image-20220106190624683](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106190624683.png) ![image-20220106190624683](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106190624683.png)
+ 数据字典 + 数据字典
对软件中的每个数据规定一个定义条目 对软件中的每个数据规定一个定义条目
![image-20220106190748505](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106190748505.png) ![image-20220106190748505](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106190748505.png)
+ 加工规格说明 + 加工规格说明
常用结构化语言、判定表或判定树作为描述工具 常用结构化语言、判定表或判定树作为描述工具
![image-20220106190834055](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106190834055.png) ![image-20220106190834055](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106190834055.png)
![image-20220106190852955](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106190852955.png) ![image-20220106190852955](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106190852955.png)
##### 3.1.3 SD模型的组成与描述 ##### 3.1.3 SD模型的组成与描述
@ -367,7 +374,7 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
SD模型由SA模型映射而来SA的数据字典可转换为数据设计数据流图可转换为体系结构设计SC图和接口设计加工规格说明可转换为模块内部的详细过程设计。 SD模型由SA模型映射而来SA的数据字典可转换为数据设计数据流图可转换为体系结构设计SC图和接口设计加工规格说明可转换为模块内部的详细过程设计。
![image-20220106191509219](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106191509219.png) ![image-20220106191509219](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106191509219.png)
2. SD模型的描述工具 2. SD模型的描述工具
@ -375,11 +382,11 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
SC图由六种模块组成 SC图由六种模块组成
![image-20220106191820794](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106191820794.png) ![image-20220106191820794](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106191820794.png)
SC图的模块调用分为简单调用、选择调用和循环调用 SC图的模块调用分为简单调用、选择调用和循环调用
![image-20220106191906521](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106191906521.png) ![image-20220106191906521](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106191906521.png)
#### 3.2 结构化系统分析 #### 3.2 结构化系统分析
@ -391,17 +398,17 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
大型系统DFD含有数百甚至数千个加工不可能一次将其画完。需要从系统的基本功能模型整个系统作为一个加工逐层的对系统进行分解。没分解一次系统的加工数量就会多一些加工也更具体一点。直到加工不能再分解这种称为基本加工。以下为逐步分解的一个例子 大型系统DFD含有数百甚至数千个加工不可能一次将其画完。需要从系统的基本功能模型整个系统作为一个加工逐层的对系统进行分解。没分解一次系统的加工数量就会多一些加工也更具体一点。直到加工不能再分解这种称为基本加工。以下为逐步分解的一个例子
![image-20220106192438563](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106192438563.png) ![image-20220106192438563](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106192438563.png)
![image-20220106192446616](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106192446616.png) ![image-20220106192446616](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106192446616.png)
![image-20220106192500229](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106192500229.png) ![image-20220106192500229](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106192500229.png)
分层DFD可以避免一次引入过多细节此外可以让不同业务人员之阅读与本身有关的图形而不必阅读总图。 分层DFD可以避免一次引入过多细节此外可以让不同业务人员之阅读与本身有关的图形而不必阅读总图。
##### 3.2.2 确定数据定义与加工策略 ##### 3.2.2 确定数据定义与加工策略
分层DFD图确定了系统的全部数据和加工。之后从DFD图的终点一步步向远点开始会输写出加工规格说明和数据字典发现问题时对DFD图进行修正。最终生成一个一致统一的文档——SRS。 分层DFD图确定了系统的全部数据和加工。之后从DFD图的终点一步步向源点开始绘制写出加工规格说明和数据字典发现问题时对DFD图进行修正。最终生成一个一致统一的文档——SRS。
##### 3.2.3 需求分析的复审 ##### 3.2.3 需求分析的复审
@ -415,7 +422,7 @@ SA模型通过现实环境得出的具体模型→当前系统模型→目标系
软件设计分为面向数据流设计(SD)方法和面向数据设计(Jackson方法)两大类,后者已基本过时。 软件设计分为面向数据流设计(SD)方法和面向数据设计(Jackson方法)两大类,后者已基本过时。
![image-20220106193612308](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106193612308.png) ![image-20220106193612308](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106193612308.png)
##### 3.3.2 从DFD图到SC图 ##### 3.3.2 从DFD图到SC图
@ -425,11 +432,11 @@ DFD数据流图分为变换型结构和事务型结构两种类型
变换型结构由传入路径,变换中心和传出路径三部分组成 变换型结构由传入路径,变换中心和传出路径三部分组成
![image-20220106193939891](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106193939891.png) ![image-20220106193939891](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106193939891.png)
事务结构则由一条接收路径,一个事务中心与若干条动作路径组成。一个事务中心获得某一特定值,就能启动某一条动作路径的操作。 事务结构则由一条接收路径,一个事务中心与若干条动作路径组成。一个事务中心获得某一特定值,就能启动某一条动作路径的操作。
要从DFD图映射到SC图需要先鉴别是变换型还是事务(也可能同时存在两类结构) 要从DFD图映射到SC图需要先鉴别是变换型还是事务(也可能同时存在两类结构)
然后通过变换映射将变换型DFD图转换为初始SC图 然后通过变换映射将变换型DFD图转换为初始SC图
@ -438,7 +445,7 @@ DFD数据流图分为变换型结构和事务型结构两种类型
##### 3.3.3 变换映射 ##### 3.3.3 变换映射
+ 划分DFD图的边界 + 划分DFD图的边界
![image-20220106193948803](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106193948803.png) ![image-20220106193948803](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106193948803.png)
+ 建立初始SC图的框架 + 建立初始SC图的框架
@ -446,9 +453,9 @@ DFD数据流图分为变换型结构和事务型结构两种类型
+ 将第一层分为传入模块、变换模块和传出模块,之后再对其进行分解 + 将第一层分为传入模块、变换模块和传出模块,之后再对其进行分解
![image-20220106194834531](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106194834531.png) ![image-20220106194834531](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106194834531.png)
![image-20220106194841031](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106194841031.png) ![image-20220106194841031](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106194841031.png)
+ 最终合并在一起形成初始SC图 + 最终合并在一起形成初始SC图
@ -458,7 +465,7 @@ DFD数据流图分为变换型结构和事务型结构两种类型
+ 画出SC图框架把三个部分映射为事务控制模块接收模块和动作发送模块 + 画出SC图框架把三个部分映射为事务控制模块接收模块和动作发送模块
+ 分解细化接收分支和发送分支完成初始SC图。 + 分解细化接收分支和发送分支完成初始SC图。
![image-20220106195543043](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106195543043.png) ![image-20220106195543043](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106195543043.png)
##### 3.3.5 优化初始SC图的指导规则 ##### 3.3.5 优化初始SC图的指导规则
@ -470,9 +477,9 @@ DFD数据流图分为变换型结构和事务型结构两种类型
扇入高则上级模块多,能够增加模块利用率,扇出低表示下级模块少,可以减少模块调用和控制的复杂度。可以用增加中间层的方式减小扇出,煎饼形一般是不可取的。 扇入高则上级模块多,能够增加模块利用率,扇出低表示下级模块少,可以减少模块调用和控制的复杂度。可以用增加中间层的方式减小扇出,煎饼形一般是不可取的。
![image-20220106200205895](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106200205895.png) ![image-20220106200205895](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106200205895.png)
翁型结构是最理想的结构。但这种结构往往比较难追求,大量中间模块都服用了下级模块,这是非常难做到的。 瓮型结构是最理想的结构。但这种结构往往比较难追求,大量中间模块都复用了下级模块,这是非常难做到的。
#### 3.4 模块设计 #### 3.4 模块设计
@ -497,7 +504,7 @@ DFD数据流图分为变换型结构和事务型结构两种类型
##### 3.4.3 常用的表达工具 ##### 3.4.3 常用的表达工具
+ 流程图和N-S图 + 流程图和N-S图
![image-20220106202530125](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106202530125.png) ![image-20220106202530125](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106202530125.png)
+ 伪代码和PDL语言 + 伪代码和PDL语言
## 中篇 面向对象软件工程 ## 中篇 面向对象软件工程
@ -547,7 +554,7 @@ UML是一种基于面向对象的可视化建模语言。提供了丰富的以
UML定义了两类模型元素一类模型元素用于表示模型中的某个概念如类、对象、构件、用例、结点(node)、接口、包和注释等,另一类用于表示模型间相互联系的关系,关系主要有关联、泛化、依赖、实现、聚集和组合。 UML定义了两类模型元素一类模型元素用于表示模型中的某个概念如类、对象、构件、用例、结点(node)、接口、包和注释等,另一类用于表示模型间相互联系的关系,关系主要有关联、泛化、依赖、实现、聚集和组合。
![image-20220106204433533](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106204433533.png) ![image-20220106204433533](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106204433533.png)
几种主要连接关系的含义——对于这六种连接关系,需要了解其对应图示和对应的代码表示: 几种主要连接关系的含义——对于这六种连接关系,需要了解其对应图示和对应的代码表示:
@ -556,11 +563,11 @@ UML是一种基于面向对象的可视化建模语言。提供了丰富的以
+ 依赖(dependency):一个元素依赖于另一个元素,为短暂性关系。 + 依赖(dependency):一个元素依赖于另一个元素,为短暂性关系。
+ 实现(realization):表示接口和实现它的模型之间的关系。**代码中表现为虚函数的实现。** + 实现(realization):表示接口和实现它的模型之间的关系。**代码中表现为虚函数的实现。**
+ 聚集(aggregation):整体与部分,例如鸟聚集形成鸟群 + 聚集(aggregation):整体与部分,例如鸟聚集形成鸟群
+ 组合(composition):强烈的整体与部分,例如轮胎是车的一部分 + 组合(composition):强烈的整体与部分,例如轮胎是车的一部分,轮胎组合而形成车
2. UML的元模型结构 2. UML的元模型结构
![image-20220106204915314](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106204915314.png) ![image-20220106204915314](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106204915314.png)
+ 元元模型(meta-meta model):任何模型的基础,概念非常难解释,或许可以理解为元模型的抽象 + 元元模型(meta-meta model):任何模型的基础,概念非常难解释,或许可以理解为元模型的抽象
@ -568,11 +575,11 @@ UML是一种基于面向对象的可视化建模语言。提供了丰富的以
+ 模型(model):是对现实世界(问题领域/解决方案)的抽象 + 模型(model):是对现实世界(问题领域/解决方案)的抽象
![image-20220106205355420](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106205355420.png) ![image-20220106205355420](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106205355420.png)
+ 用户模型(user model):模型的实例,用于表达一个模型的特殊情况 + 用户模型(user model):模型的实例,用于表达一个模型的特殊情况
![image-20220106205543492](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106205543492.png) ![image-20220106205543492](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106205543492.png)
3. 图和视图 3. 图和视图
@ -609,11 +616,11 @@ UML的静态建模机制包括用例图、类图和对象图
用例模型由一组用例图构成,其基本组成部件是用例、参与者和系统。用例图可以描述软件系统和外部参与者(actor)之间的监护,一个用例代表从外部可见的系统的一个功能。 用例模型由一组用例图构成,其基本组成部件是用例、参与者和系统。用例图可以描述软件系统和外部参与者(actor)之间的监护,一个用例代表从外部可见的系统的一个功能。
1. 组成符号 1. 组成符号
![image-20220106210606706](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106210606706.png) ![image-20220106210606706](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106210606706.png)
2. 建立用例图 2. 建立用例图
![image-20220106210704774](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106210704774.png) ![image-20220106210704774](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106210704774.png)
3. 用例之间的关系 3. 用例之间的关系
@ -627,7 +634,7 @@ UML的静态建模机制包括用例图、类图和对象图
一个用例的行为包含另一个用例的行为。 一个用例的行为包含另一个用例的行为。
![image-20220106211825165](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106211825165.png) ![image-20220106211825165](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106211825165.png)
##### 4.3.2 类图和对象图 ##### 4.3.2 类图和对象图
@ -637,7 +644,7 @@ UML的静态建模机制包括用例图、类图和对象图
类图描述同类对象的属性和形为类图可表示类和类之间的关系在UML中类一般表示为一个划分成3格的矩形框下面的两格可以进行省略。第一格指定类的名字。第二格为类的属性第三格为类的操作。 类图描述同类对象的属性和形为类图可表示类和类之间的关系在UML中类一般表示为一个划分成3格的矩形框下面的两格可以进行省略。第一格指定类的名字。第二格为类的属性第三格为类的操作。
![image-20220106212259920](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106212259920.png) ![image-20220106212259920](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106212259920.png)
类种表示属性的语法为:可见性 属性名:类型 = 默认值(约束特性) 类种表示属性的语法为:可见性 属性名:类型 = 默认值(约束特性)
@ -651,27 +658,27 @@ UML的静态建模机制包括用例图、类图和对象图
+ 普通关联:最常见的关联,两个类之间用一条直线连接 + 普通关联:最常见的关联,两个类之间用一条直线连接
![image-20220106213007165](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213007165.png) ![image-20220106213007165](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213007165.png)
关联的两端可以协商一个被称为重数的数值范围 关联的两端可以协商一个被称为重数的数值范围
![image-20220106213015327](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213015327.png) ![image-20220106213015327](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213015327.png)
+ 递归关联:一个类和自身关联 + 递归关联:一个类和自身关联
![image-20220106213047926](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213047926.png) ![image-20220106213047926](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213047926.png)
+ 多重关联:两个以上的类之间互相关联 + 多重关联:两个以上的类之间互相关联
![image-20220106213217305](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213217305.png) ![image-20220106213217305](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213217305.png)
+ 有序关联:在多的关联端的对象可以是一个无序集合,如果该集合有序,可以加上{ordered}来指明 + 有序关联:在多的关联端的对象可以是一个无序集合,如果该集合有序,可以加上{ordered}来指明
![image-20220106213224640](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213224640.png) ![image-20220106213224640](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213224640.png)
+ 限制关联:用于一对多或多对多的关联,将一端的多通过**限制子**简化为1 + 限制关联:用于一对多或多对多的关联,将一端的多通过**限制子**简化为1
![image-20220106213331823](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220106213331823.png) ![image-20220106213331823](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220106213331823.png)
+ 或关联:例如房产只能归属于个人或公司中的一方 + 或关联:例如房产只能归属于个人或公司中的一方
@ -686,7 +693,7 @@ UML的静态建模机制包括用例图、类图和对象图
1. 聚集:“部分”对象可以是“整体”对象的一部分。 1. 聚集:“部分”对象可以是“整体”对象的一部分。
2. 组合:“整体”强烈拥有部分。 2. 组合:“整体”强烈拥有部分。
![image-20220108080030986](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108080030986.png) ![image-20220108080030986](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108080030986.png)
4. 泛化 4. 泛化
@ -696,7 +703,7 @@ UML的静态建模机制包括用例图、类图和对象图
+ 一般元素所具有的关联、属性和操作。特殊元素也都隐含性地具有。 + 一般元素所具有的关联、属性和操作。特殊元素也都隐含性地具有。
+ 特殊元素应包含额外信息。 + 特殊元素应包含额外信息。
+ 允许使用特殊元素实例地方,也应能使用一般元素。 + 允许使用特殊元素实例地方,也应能使用一般元素。
1. 普通泛化 1. 普通泛化
@ -718,7 +725,7 @@ UML的静态建模机制包括用例图、类图和对象图
约束和派生一般用花括号括起来放在模型元素旁边,或者用圆括号括起来以注释的方式与模型元素相连。 约束和派生一般用花括号括起来放在模型元素旁边,或者用圆括号括起来以注释的方式与模型元素相连。
![image-20220108083126972](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108083126972.png) ![image-20220108083126972](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108083126972.png)
##### 4.3.3 包 ##### 4.3.3 包
@ -734,7 +741,7 @@ UML不仅能够描述系统静态结构也提供了描述系统动态行为
UML中用带有箭头的线段将消息的发送者和接收者联系起来箭头的类型表示消息的类型 UML中用带有箭头的线段将消息的发送者和接收者联系起来箭头的类型表示消息的类型
<img src="https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108084143350.png" alt="image-20220108084143350" style="zoom:150%;" /> <img src="https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108084143350.png" alt="image-20220108084143350" style="zoom:150%;" />
1. 简单消息(simple message):表示简单的控制流。用于描述控制是如何在对象间进行传递的,而不考虑通信的细节。 1. 简单消息(simple message):表示简单的控制流。用于描述控制是如何在对象间进行传递的,而不考虑通信的细节。
2. 同步消息(synchronous message):表示嵌套的控制流。操作的调用是一种典型的同步消息。调用者发送消息后必须等待消息返回,才可继续执行自己的操作。 2. 同步消息(synchronous message):表示嵌套的控制流。操作的调用是一种典型的同步消息。调用者发送消息后必须等待消息返回,才可继续执行自己的操作。
@ -750,11 +757,11 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
状态图有初态、终态与中间状态3种状态。一个状态图只能有一个初态终态则可以有多个。 状态图有初态、终态与中间状态3种状态。一个状态图只能有一个初态终态则可以有多个。
![image-20220108084819616](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108084819616.png) ![image-20220108084819616](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108084819616.png)
一个状态由状态名、状态变量和活动3个部分组成。状态变量和活动是可选的。前者表示对象在该状态时的属性值后者表示该状态时要执行的操作。 一个状态由状态名、状态变量和活动3个部分组成。状态变量和活动是可选的。前者表示对象在该状态时的属性值后者表示该状态时要执行的操作。
![image-20220108085124308](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108085124308.png) ![image-20220108085124308](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108085124308.png)
2. 状态转移 2. 状态转移
@ -780,7 +787,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
状态图可以给其他状态图发送消息。可以通过动作(在发送子句指定接收者)或者状态图间用虚线箭头表示。后者必须用矩形框把状态图中所有对象组合在一起。 状态图可以给其他状态图发送消息。可以通过动作(在发送子句指定接收者)或者状态图间用虚线箭头表示。后者必须用矩形框把状态图中所有对象组合在一起。
![image-20220108090452416](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108090452416.png) ![image-20220108090452416](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108090452416.png)
##### 4.4.3 时序图和协作图 ##### 4.4.3 时序图和协作图
@ -788,7 +795,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
时序图(sequence diagram)用来描述对象之间的动态交互。体现对象间消息传递的时间顺序。它以垂直轴表示时间,水平轴表示不同的对象。 时序图(sequence diagram)用来描述对象之间的动态交互。体现对象间消息传递的时间顺序。它以垂直轴表示时间,水平轴表示不同的对象。
![image-20220108091532083](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108091532083.png) ![image-20220108091532083](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108091532083.png)
时序图中的消息可以是信号(signal)或操作调用。收到消息时,接收对象即开始活动,表名对象被激活,通过在对象生命线上显示一个细长矩形框来表示激活。 时序图中的消息可以是信号(signal)或操作调用。收到消息时,接收对象即开始活动,表名对象被激活,通过在对象生命线上显示一个细长矩形框来表示激活。
@ -796,7 +803,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
协作图(collaboration diagram)用于描述相互协作的对象间的交互和链接。虽然时序图也可用来描述对象间的交互,但侧重点不同。时序图着重于时间顺序,协作图着重于对象之间的连接。 协作图(collaboration diagram)用于描述相互协作的对象间的交互和链接。虽然时序图也可用来描述对象间的交互,但侧重点不同。时序图着重于时间顺序,协作图着重于对象之间的连接。
![image-20220108091928558](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108091928558.png) ![image-20220108091928558](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108091928558.png)
##### 4.4.4 活动图 ##### 4.4.4 活动图
@ -804,7 +811,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
活动图中动作状态之间的迁移不是靠事件触发,活动图中一个活动结束后就将立即进入下一个活动。 活动图中动作状态之间的迁移不是靠事件触发,活动图中一个活动结束后就将立即进入下一个活动。
![image-20220108093205411](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108093205411.png) ![image-20220108093205411](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108093205411.png)
1. 活动和转移 1. 活动和转移
@ -838,7 +845,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
+ **业务需求**。客户或市场的高层次目标要求。 + **业务需求**。客户或市场的高层次目标要求。
+ **用户需求**。从用户使用角度描述软件产品必须完成的任务。一般用用例模型文档描述。 + **用户需求**。从用户使用角度描述软件产品必须完成的任务。一般用用例模型文档描述。
+ **功能需求**。定义软件开发人员必须实现的软件功能。是用户需求在系统上的具体反应,刺尻的角度从用户转换到了开发者。 + **功能需求**。定义软件开发人员必须实现的软件功能。是用户需求在系统上的具体反应,思考的角度从用户转换到了开发者。
##### 5.1.2 软件需求的特性 ##### 5.1.2 软件需求的特性
@ -857,12 +864,12 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
##### 5.2.1 需求分析的步骤 ##### 5.2.1 需求分析的步骤
![image-20220108095435486](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108095435486.png) ![image-20220108095435486](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108095435486.png)
软件需求分析一般包括如上图的四个步骤: 软件需求分析一般包括如上图的四个步骤:
+ 需求获取,从分析当前系统包含的数据开始。需要与用户交流,从用户收集功能需求,在考虑对质量要求和是否可复用已有软件。 + 需求获取,从分析当前系统包含的数据开始。需要与用户交流,从用户收集功能需求,在考虑对质量要求和是否可复用已有软件。
+ 需求建模,主要任务是建立需求模型,图形化模型是可视化地说明软件需求最好手段。常用模型:用例图、数据流图、实体联系图、控制流图、状态转换图。 + 需求建模,主要任务是建立需求模型,图形化模型是可视化地说明软件需求最好手段。常用模型:用例图、数据流图、实体联系图、控制流图、状态转换图。
+ 需求描述即编写SRS任务是编写软件需求规格说明书SRS必须使用统一格式的文档进行描述。编写SRS应该指明需求来源并为每项需求注上标号。 + 需求描述即编写SRS任务是编写软件需求规格说明书SRS必须使用统一格式的文档进行描述。编写SRS应该指明需求来源并为每项需求注上标号。
+ 需求验证:确保需求规格说明书可作为软件设计和最终系统验收的依据。 + 需求验证:确保需求规格说明书可作为软件设计和最终系统验收的依据。
@ -876,7 +883,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
该模型主要由三部分组成:包括数据流图和加工规格说明的**功能模型**、主要由数据字典和E-R图等组成的**数据模型**、由状态转换图、控制流图和控制规格说明等组成的**行为模型**。 该模型主要由三部分组成:包括数据流图和加工规格说明的**功能模型**、主要由数据字典和E-R图等组成的**数据模型**、由状态转换图、控制流图和控制规格说明等组成的**行为模型**。
![image-20220108100721963](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108100721963.png) ![image-20220108100721963](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108100721963.png)
2. 面向对象需求模型 2. 面向对象需求模型
@ -888,7 +895,7 @@ UML中用带有箭头的线段将消息的发送者和接收者联系起来
此外还有补充规约和术语表辅助描述该需求模型。 此外还有补充规约和术语表辅助描述该需求模型。
![image-20220108101358313](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108101358313.png) ![image-20220108101358313](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108101358313.png)
本质上看,需求模型是站在用户的角度从系统外部来描述系统的功能的。 本质上看,需求模型是站在用户的角度从系统外部来描述系统的功能的。
@ -937,7 +944,7 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
2. OOA的模型 2. OOA的模型
![image-20220108104054484](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108104054484.png) ![image-20220108104054484](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108104054484.png)
OOA模型核心是以用例模型为主题的需求模型。获得软件需求后可以定义如图所示的三种子模型。 OOA模型核心是以用例模型为主题的需求模型。获得软件需求后可以定义如图所示的三种子模型。
@ -971,7 +978,7 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
面向对象软件开发过程如图所示 面向对象软件开发过程如图所示
![image-20220108104704621](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108104704621.png) ![image-20220108104704621](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108104704621.png)
面向对象的开发全过程其实是OOA、OOD、OOP和OOT的迭代过程。 面向对象的开发全过程其实是OOA、OOD、OOP和OOT的迭代过程。
@ -985,14 +992,14 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
1. 分析类的类型 1. 分析类的类型
分析类被划分为3种类型**边界类**、**控制类**和**实体类**,分别用标记<<boundary>>、<<control>>和<<entity>>标识。 分析类被划分为3种类型**边界类**、**控制类**和**实体类**,分别用标记\<\<boundary\>\>、\<\<control\>\>和\<\<entity\>\>标识。
+ 边界类是对参与者或外部交互协议的接口。一个系统可能有多种边界类 + 边界类是对参与者或外部交互协议的接口。一个系统可能有多种边界类
+ 用户界面类 + 用户界面类
+ 系统接口类 + 系统接口类
+ 设备接口类 + 设备接口类
+ 控制类用于封装一个或几个用例所特有的流程控制行为。 + 控制类用于封装一个或几个用例所特有的流程控制行为。
+ 实体类用于对必须存储的信息和相关的行为建模。主要职责是储存和管理系统的信息。通常具有持久性。 + 实体类用于对必须存储的信息和相关的行为建模。主要职责是储存和管理系统的信息。通常具有持久性。
2. 查找分析类 2. 查找分析类
@ -1006,7 +1013,7 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
时序图按时间顺序描述系统元素间的交互。时序图中需要有这个用例出的参与者、边界类对象、控制类对象、实体类对象,这四类对象按序加入,因为每个用例都应当是参与者触发的,按顺序依次调用各类图。 时序图按时间顺序描述系统元素间的交互。时序图中需要有这个用例出的参与者、边界类对象、控制类对象、实体类对象,这四类对象按序加入,因为每个用例都应当是参与者触发的,按顺序依次调用各类图。
按笔者的实际体会感受来说,时序图的绘画并没有什么技巧可言,按照你对用的理解,把每次消息传递当作:“调用这个类的一个方法”看待,画图即可。 按笔者的实际体会感受来说,时序图的绘画并没有什么技巧可言,按照你对用的理解,把每次消息传递当作:“调用这个类的一个方法”看待,画图即可。
2. 协作图 2. 协作图
@ -1018,7 +1025,7 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
该段文字的含义与我在时序图末尾的个人感受基本一致。一条消息的接收者通过承担响应的职责(这里还不是一个类的操作,但投射到软件设计中就是类中需要有这个方法)来作为对消息发出者的回应。 该段文字的含义与我在时序图末尾的个人感受基本一致。一条消息的接收者通过承担响应的职责(这里还不是一个类的操作,但投射到软件设计中就是类中需要有这个方法)来作为对消息发出者的回应。
![image-20220108110124367](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108110124367.png) ![image-20220108110124367](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108110124367.png)
4. 状态图 4. 状态图
@ -1040,13 +1047,13 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
分析类图用于表现分析类及其关系其中描述某个用例的分析类图称为参与类图view of participating。逻辑上每个用例对应一张完整的参与类图。 分析类图用于表现分析类及其关系其中描述某个用例的分析类图称为参与类图view of participating。逻辑上每个用例对应一张完整的参与类图。
![image-20220108122519228](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108122519228.png) ![image-20220108122519228](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108122519228.png)
4. 分析类的合并 4. 分析类的合并
对于整个系统而言,需要合并分析类,把具有相似行为的类合并为一个。每当更新一个类,就要更新或补充用例规约,必要时更新原始需求。 对于整个系统而言,需要合并分析类,把具有相似行为的类合并为一个。每当更新一个类,就要更新或补充用例规约,必要时更新原始需求。
![image-20220108122631886](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108122631886.png) ![image-20220108122631886](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108122631886.png)
### 第七章 面向对象设计 ### 第七章 面向对象设计
@ -1111,13 +1118,13 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
内聚是从功能的角度对模块内部聚合能力的量度。以下分为7类的模块从左到右内聚能力逐步增强。 内聚是从功能的角度对模块内部聚合能力的量度。以下分为7类的模块从左到右内聚能力逐步增强。
![image-20220108131957450](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108131957450.png) ![image-20220108131957450](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108131957450.png)
2. 耦合 2. 耦合
耦合是对软件不同模块间联系的度量同样分为7类 耦合是对软件不同模块间联系的度量同样分为7类
![image-20220108132047456](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108132047456.png) ![image-20220108132047456](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108132047456.png)
耦合越弱,表名模块的独立性越强。但实际工作中,中等甚至较强的耦合不可能也不必完全禁用。但强耦合(一个模块直接调用另一个模块的数据等)应该尽量不用。 耦合越弱,表名模块的独立性越强。但实际工作中,中等甚至较强的耦合不可能也不必完全禁用。但强耦合(一个模块直接调用另一个模块的数据等)应该尽量不用。
@ -1125,7 +1132,7 @@ SRS包括引言、信息描述、功能描述、行为描述、质量保证、
##### 7.2.1 面向对象设计模型 ##### 7.2.1 面向对象设计模型
![image-20220108132809383](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108132809383.png) ![image-20220108132809383](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108132809383.png)
##### 7.2.2 面向对象设计的任务 ##### 7.2.2 面向对象设计的任务
@ -1172,7 +1179,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
进行具体元素设计之前,首先需要确定系统高层结构,为后续设计提供一个公共的基础方案。 进行具体元素设计之前,首先需要确定系统高层结构,为后续设计提供一个公共的基础方案。
设计系统高层结构时可以选用架构模式(layers,model-view-control-pipes and filters,blackboard等)作为模板来定义系统高层框架。 设计系统高层结构时可以选用架构模式(layers,model-view-control,pipes and filters,blackboard等)作为模板来定义系统高层框架。
一种针对中大型软件的典型分层方法包括4个层次 一种针对中大型软件的典型分层方法包括4个层次
@ -1181,7 +1188,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
+ 中间件层 + 中间件层
+ 系统软件层 + 系统软件层
![image-20220108135035540](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108135035540.png) ![image-20220108135035540](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108135035540.png)
##### 7.3.2 确定设计元素 ##### 7.3.2 确定设计元素
@ -1236,7 +1243,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
类图的设计一般依赖于时序图,在设计好类的属性和方法后,还需要定义类之间的依赖关系。 类图的设计一般依赖于时序图,在设计好类的属性和方法后,还需要定义类之间的依赖关系。
![image-20220108141931995](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108141931995.png) ![image-20220108141931995](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108141931995.png)
设计类还应该加以改进来处理适应编程语言、提高性能、处理错误等非功能性需求。 设计类还应该加以改进来处理适应编程语言、提高性能、处理错误等非功能性需求。
@ -1250,7 +1257,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
编码目的是使用选定的程序设计语言,把设计模型翻译为用该语言书写的源程序。 编码目的是使用选定的程序设计语言,把设计模型翻译为用该语言书写的源程序。
![image-20220108142728875](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108142728875.png) ![image-20220108142728875](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108142728875.png)
程序员需要养成良好的编码的风格,而且要十分熟悉使用的语言。 程序员需要养成良好的编码的风格,而且要十分熟悉使用的语言。
@ -1304,7 +1311,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
+ 目的:定位和纠正错误 + 目的:定位和纠正错误
+ 任务:消除软件故障,保证程序的可靠运行 + 任务:消除软件故障,保证程序的可靠运行
![image-20220108144258240](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108144258240.png) ![image-20220108144258240](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108144258240.png)
##### 8.4.2 测试的特性 ##### 8.4.2 测试的特性
@ -1315,7 +1322,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
##### 8.4.3 测试的种类 ##### 8.4.3 测试的种类
![image-20220108144953828](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108144953828.png) ![image-20220108144953828](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108144953828.png)
##### 8.4.4 测试的文档 ##### 8.4.4 测试的文档
@ -1337,13 +1344,13 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
划分等价类不仅要考虑有效等价类,还要考虑无效等价类。若干个无效等价类的测试用例不能合并。 划分等价类不仅要考虑有效等价类,还要考虑无效等价类。若干个无效等价类的测试用例不能合并。
![image-20220108145826952](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108145826952.png) ![image-20220108145826952](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108145826952.png)
2. 边界值分析法boundary value analysis 2. 边界值分析法boundary value analysis
由于程序员处理边界情况时常常发生疏忽,因此在边界值附近程序出错概率较大。等价分类法的测试数据在各个等价类允许的值域内任意选取,而边界值分析的测试数据必须在边界值附近选取。 由于程序员处理边界情况时常常发生疏忽,因此在边界值附近程序出错概率较大。等价分类法的测试数据在各个等价类允许的值域内任意选取,而边界值分析的测试数据必须在边界值附近选取。
![image-20220108150227494](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108150227494.png) ![image-20220108150227494](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108150227494.png)
3. 错误猜测法 3. 错误猜测法
@ -1361,7 +1368,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
通用流程图来设计测试用例,考察的重点是图中的判定框。 通用流程图来设计测试用例,考察的重点是图中的判定框。
![image-20220108151323277](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108151323277.png) ![image-20220108151323277](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108151323277.png)
2. 路径测试法 2. 路径测试法
@ -1372,7 +1379,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
+ 顺序执行的多个节点可以合并成一个节点 + 顺序执行的多个节点可以合并成一个节点
+ 符合条件的判定框,应该先分解成几个简单条件判定框,再画程序图 + 符合条件的判定框,应该先分解成几个简单条件判定框,再画程序图
![image-20220108151657099](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108151657099.png) ![image-20220108151657099](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108151657099.png)
路径测试就是对程序图种每一条可能的程序执行路径至少测试一次。路径覆盖包含了点覆盖和边覆盖。 路径测试就是对程序图种每一条可能的程序执行路径至少测试一次。路径覆盖包含了点覆盖和边覆盖。
@ -1406,7 +1413,7 @@ OOD的软件设计也可划分为两个层次系统架构设计和系统元
按照软件工程的观点多模块程序的测试共包括4个层次。 按照软件工程的观点多模块程序的测试共包括4个层次。
![image-20220108153201792](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220108153201792.png) ![image-20220108153201792](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220108153201792.png)
+ 单元测试应在编码阶段完成。单元一般以模块或子程序为单位。是测试的基础。单元测试发现错误约占总错误数的65%。 + 单元测试应在编码阶段完成。单元一般以模块或子程序为单位。是测试的基础。单元测试发现错误约占总错误数的65%。
+ 集成测试:将经过单元测试的模块逐步组装成具有良好一致性的完整的程序。 + 集成测试:将经过单元测试的模块逐步组装成具有良好一致性的完整的程序。

@ -0,0 +1,417 @@
# 高等数学
### 第一章 函数与极限
#### 1.1 映射与函数
##### 1.1.1 映射
映射,用于引出函数的概念。
> 映射: $X、Y$为非空集合,法则$f$,对$X$中每个元素$x$都有**唯一**的$y$与之对应,则$f$被称作映射,$f$是$X\rarr Y$的一个映射。
>
> $y$称作像,对应的$x$称作原像。
>
> $X$叫定义域,记作$D_f$(Domain)$Y$叫做值域,记作$R_f$()
+ 映射的三要素:$X、f、R_f$
+ $x \in X$,对应的$y$是唯一的
$R_f \subset Y$,两者不一定相同
+ 满射:$R_f = Y$,单射:当$x$不同时,对应的$y$也不同
+ 一一映射:同时满足单射和满射
复合映射:第二个映射的定义域包含第一个映射的值域。
##### 1.1.2 函数
1. 函数的概念
> **函数**是从数集到数集的映射。
>
> 自变量、因变量、定义域、值域。
函数的表示方法:
1. 表格
2. 图形
3. 解析式
一些函数的例子:
+ 绝对值函数
+ 符号函数
+ 取整函数
2. 函数的特性
1. 函数的有界性
函数的有界性指函数分为有界函数和无界函数。
通俗的讲,如果存在一个实数,使得值域内所有数都小于该数,同时存在一个实数,使得值域内所有数都大于该数。则该函数为有界函数。
2. 函数的单调性
函数的单调性指函数分为单调函数和非单调函数,单调函数又分为单调递增和单调递减。
如果随着$x$值的增加,$f(x)$始终随之增加,则函数为单调递增。反之,函数为单调递减。
同一个函数在不同区间上的单调性也可能不同。
3. 函数的奇偶性
判断函数的奇偶性时,函数的定义域$D$必须关于原点对称
如果对于任意$x \in D$$f(-x)=f(x)$则函数为偶函数函数图像关于y轴对称
如果对于任意$x \in D$$f(-x)=-f(x)$,则函数为奇函数(函数图像关于原点对称)
其他函数既不是奇函数也不是偶函数。
4. 函数的周期性
> 设函数$f(x)$的定义域为$D$,如果存在一个正数$l$,使得对于任意$x\in D$有$(x+l)\in D$,且:
> $$
> f(x \pm l)=f(x)
> $$
> 恒成立,则称$f(x)$为**周期函数**$l$称为$f(x)$的**周期**,通常我们说的周期函数的周期是指**最小正周期**。
通俗来说,周期性指函数在定义域内周期性变换的特性。
3. 反函数与复合函数
**反函数是逆映射的一种特例。**
通俗来说,如果对于函数中的每个$y$值有唯一的$x$使得$f(x)=y$,则存在反函数使得:
$$
f^{-1}(y)=x
$$
相对于反函数,原来的函数被称为**直接函数**
反函数和直接函数的图形关于直线$y=x$对称
**复合函数则是复合映射的一种特例。**
> 设函数$y=f(x)$的定义域为$D_f$,函数$u=g(x)$的定义域为$D_g$,且值域$R_g \in D_f$,则由下式确定的函数:
> $$
> y=f[g(x)],x\in D_g
> $$
> 称为函数$u=g(x)$与函数$y=f(x)$构成的复合函数,变量$u$称为中间变量。
两者以先g后f的次序复合的函数通常记作$f \circ g$。$(f \circ g)(x)=f[g(x)]$
构成复合函数$f \circ g$的条件是函数$g$的值域必须包含于函数$f$的定义域。
如果限制函数$g$的定义域,使得其值域包含于函数$f$的定义域,这之后两者可组成复合函数。
4. 函数的运算
> 设函数$f(x),g(x)$的定义域依次为$D_f,D_g D=D_f \cap D_g \neq \emptyset$
>
> 和/差:$(f\pm g)(x)=f(x)\pm g(x),x\in D$
>
> 积:$(f \cdot g)(x)=f(x)\cdot g(x),x\in D$
>
> 商:$(\frac f g)(x)=\frac{f(x)}{g(x)},x\in d / \{ x\mid g(x)=0,x\in D \}$
5. 初等函数
五类基本初等函数:
+ 幂函数
+ 指数函数
+ 对数函数
+ 三角函数
+ 反三角函数
由以上五类基本初等函数经过有限次四则运算和函数复合形成的函数都是初等函数。(课程讨论的基本都是初等函数)
#### 1.2 数列的极限
1. 数列极限的定义
> 如果按照某一法则,对每个$n \in N$,对应着一个确定的实数$x_n$,这些实数$x_n$按照下标$n$从小到达排列得到的一个数列:
> $$
> x_1,x_2,x_3,...,x_n,...
> $$
> 就叫做**数列**,简记为数列$\{x_n\}$
数列中每个数叫做数列的项,第$n$项$x_n$叫做数列的**一般项**(或**通项**
例如,数列:
$$
\frac 1 2,\frac 2 3,\frac 3 4,...,\frac {n}{n+1},...
$$
的一般项/通项为$\frac {n}{n+1}$
**数列极限**讨论的问题则是,当$n$无限增大时(即$n \rightarrow \infin$时),对应的$x_n$是否能无限接近某个确定的数值。如果能,这个数值为多少。
一般的,有如下数列极限的定义:
> 设$\{x_n\}$为一数列,如果存在常数$a$,对于任意给定的正数$\epsilon$(不论它多么小),总存在正整数$N$,使得当$n>N$时,不等式
> $$
> \mid x_n-a\mid<\epsilon
> $$
> 都成立,那么就称常数$a$是数列$\{x_n\}$的**极限**,或者称数列**收敛**于$a$。
通俗来讲,数列的极限指数列无限接近的值。
2. 收敛数列的性质
定理1 极限的唯一性:如果数列${x_n}$收敛,那么它的极限唯一
定理2 收敛数列的有界性:如果数列收敛,那么数列一定有界
定理3 收敛数列的保号性:如果$\lim_{x \to +\infty} x_n=a$且$a>0(或a<0)$,那么存在正整数$N$,当$n>N$时,都有$x_n>0$
定理4 收敛数列与其子数列间的关系 如果数列$\{x_n\}$收敛与$a$,那么它的任一字数列也收敛,且极限也是$a$
#### 1.3 函数的极限
##### 1.3.1 函数极限的定义
数列$\{x_n\}$可以看作自变量为$n$的函数,数列的极限$a$就是当函数的自变量$n$取正整数而无限增大时,对应的函数$f(n)$无限接近的数$a$。
通过数列的极限,可以引出函数极限的一般概念:
> 在自变量的某个变化过程中,如果对应的函数值无限接近于某个确定的数,那么这个确定的数就叫做在这一变化过程中**函数的极限**。
数列的极限看作函数$f(n)$当$n \to \infin$时的极限。
自变量的变化过程为其他情形时研究函数的极限,主要研究两种情形:
+ 自变量任意的接近于有限值$x_0$
+ 自变量$x$的绝对值无限增大即区域无穷大
1. 自变量趋于有限值时函数的极限
设函数$f(x)$在点$x_0$的某一去心邻域内有定义,如果存在常数$A$,对于任意给定的正数$\epsilon$,无论它多么小,总存在正数$\delta$,使得当$x$满足不等式$0<\mid x-x_0 \mid < \delta$时,对应的函数值$f(x)$都满足不等式:
$$
\mid f(x) - A \mid < \epsilon
$$
那么常数$A$就叫做函数$f(x)$当$x \to x_0$时的极限。记作
$$
\lim _{x \to x_0}f(x)=A
$$
$x \to x_0$时函数有没有极限,与函数在$x_0$有无定义并无关系。
当仅考虑$x$从$x_0$的左侧或右侧趋于$x_0$的情形时,得到的极限被叫做左极限/右极限。两者统称单侧极限。
函数的极限存在的充分必要条件是左极限和右极限各自存在并且相等。
2. 自变量区域无穷大时函数的极限
设函数$f(x)$当$\mid x \mid$大于某一正数时有定义如果存在常数A对于任意给定的正数$\epsilon$,无论它多小,总存在正数$X$,使得当$x$满足不等式$\mid x \mid >X$时,对应的函数值$f(x)$都满足不等式:
$$
\mid f(x)-A \mid < \epsilon
$$
那么常数$A$就叫做函数$f(x)$当$x \to \infty$时的极限,记作
$$
\lim _{x \to + \infin} = A
$$
##### 1.3.2 函数极限的性质
+ 定理1 函数极限的唯一性 如果$\lim _{x \to x_0} f(x)$存在,那么这极限唯一
+ 定理2 函数极限的局部有界性 通俗地讲,函数极限周围的值总在一个范围内
+ 定理3 函数极限的局部保号性 通俗地讲,函数极限周围一定范围内,符号不变
+ 定理4 函数极限与数列极限的关系 函数极限$\lim _{x \to x_0}f(x)$存在,如果数列为函数的定义域内任意收敛于$x_0$的数列,且$x_n \neq x_0$,那么相应的函数值数列$\mid f(x_n) \mid$必收敛
#### 1.4 无穷小与无穷大
##### 1.4.1 无穷小
> 如果函数$f(x)$当$x \to x_0(或\infin)$时极限为零,那么称$f(x)$为当$x \to x_0(或\infin)$时的无穷小。
##### 1.4.2 无穷大
通俗来说,如果函数在某一去心邻域内有定义,对于任意给定的正数,无论它多么大,总存在一个在去心邻域旁的定义域区间,其中的函数值都能大于给定的正数。这时称函数趋近于该中心的无穷大。
#### 1.5 极限运算法则
**定理1 两个无穷小的和是无穷小**
详细证明过程略。通俗来说如果a和b都是当$x \to x_0$的无穷小。任取一个大于0的数字对于a和b都能找到一个数字使得a和b与$x_0$的距离小于那个值时小于那个数字的1/2则a和b相加 小于那个数字,符合无穷小的定义,故定理成立。
有限个无穷小之和也是无穷小。
**定理2 有界函数与无穷小的乘积是无穷小**
严谨证明过程略。通俗来说由于有界函数在某一去心邻域内值域总在一个实数范围内而对于一个是无穷小的函数来说任取一个大于0的数字无论这个数字除以多么大的一个实数总能找到一个函数小于这个值的范围。因此这个函数与这个有界函数相乘也满足无穷小的定义故定理成立。
**推论1 常数与无穷小的乘积是无穷小**
**推论2 有限个无穷小的乘积是无穷小**
**定理3 如果$\lim f(x)=A, \lim g(x)=B$.那么:**
1. $\lim[f(x) \pm g(x)]=\lim f(x) \pm \lim g(x)=A \pm B$
2. $\lim[f(x) \cdot g(x)]=\lim f(x) \cdot \lim g(x)=A \cdot B$
3. 若又有$B \neq 0$:
$$
\lim \frac {f(x)}{g(x)}= \frac {\lim f(x)}{\lim g(x)}=\frac A B
$$
**推论1 如果$\lim f(x)$存在,而$c$为常数,那么$\lim (cf(x))=c \lim f(x)$**
**推论2 如果$\lim f(x)$存在,而$x$为正整数,那么$lim [f(x)]^n = [lim f(x)]^n$**
**定理4 设有数列$\mid x_n \mid$和$\mid y_n \mid$,极限为$A$和$B$**
1. $\lim _{n \to \infin} (x_n \pm y_n) =A \pm B$
2. $\lim _{n \to \infin} (x_n \cdot y_n) =A \cdot B$
3. $y_n \neq 0$且$B \neq 0$时,$\lim _{n \to \infin} \frac{x_n}{y_n}=\frac AB$
**定理5 如果$f(x)\ge g(x)$,那么$\lim f(x) \ge \lim g(x)$**
定理6 复合函数的极限运算法则:
设$\lim_{x \to x_0} g(x)=u_0$$\lim_{x \to u_0} f(x)=A$,则$\lim _ {x \to x0} f[g(x)]=\lim _ {u \to u0} f(u)=A$
#### 1.6 极限存在准则
**准则1 :如果数列$x_n,y_n,z_n$满足以下条件**
+ 从某项起,即$\exists n_0 \in N$,当$n>n_0$时,有$y_n \le x_n \le z_n$
+ $\lim_{n \to \infin} y_n =A,\lim_{n \to \infin} z_n =A$
那么数列$x_n$的极限存在,且$\lim_{n \to \infin} x_n=A$
准则推广到函数上同样成立,该准则称为夹逼准则。
**准则2单调有界数列必有极限**
当函数的左邻域内单调且有界,那么左极限必定存在。
柯西极限存在准则:数列极限的充要条件,任取一个正数,无论它多么小,存在一项,在这之后任意两项之间的距离都小于改正数。
#### 1.7 无穷小的比较
无穷小的和、差、积仍是无穷小但无穷小的商会出现不同的情况这反映了不同的无穷小趋于0的快慢。如
$$
\lim_{x \to 0} \frac{x^2}{3x}=0,\lim_{x \to 0} \frac{3x}{x^2}=\infin,\lim_{x \to 0} \frac{\sin 3x}{3x}=\frac 13
$$
**定义**
如果$\lim \frac{\beta}{\alpha}=0$,那么就说$\beta$是比$\alpha$高阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=\infin$,那么就说$\beta$是比$\alpha$低阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=c \ne 0$,那么就说$\beta$是$\alpha$同阶的无穷小。
如果$\lim \frac{\beta}{\alpha^k}=c \ne 0$,那么就说$\beta$是管局$\alpha$的k阶的无穷小。
如果$\lim \frac{\beta}{\alpha}=1$,那么就说$\beta$与$\alpha$等阶无穷小,记作$\alpha \sim \beta$。(是同阶无穷小的特殊情形)
**定理1 $\beta$与$\alpha$是等价无穷小的充分必要条件是$\beta=\alpha+o(\alpha)$**
**定理2 求两个等价无穷小之比的极限时,分子和分母都可以用等价无穷小代替。**
#### 1.8 函数的连续性与间断点
##### 1.8.1 函数的连续性
气温变动等连续性变化,反映到函数上,就被称为函数的连续性。
> 定义:设函数$y=f(x)$在点$x_0$的某一邻域内有定义,如果:
> $$
> \lim_{\Delta x \to 0} \Delta y=\lim_{\Delta x \to 0} [f(x_0+\Delta x)-f(x_0)]=0
> $$
> 或
> $$
> \lim_{x \to x_0}f(x)=f(x_0)
> $$
>
>
> 那么就称函数$y=f(x)$在$x$点连续。
连续性还分为左连续和右连续。
在区间上每一点都连续的函数,叫做该区间上的连续函数。
##### 1.8.2 函数的间断点
设函数$f(x)$在点$x_0$的某去心邻域内有定义,如果在下列三种情况之一:
1. 在$x=x_0$没有定义
2. 在$x=x_0$有定义,但$\lim_{x \to x_0}f(x)$不存在
3. 在$x=x_0$有定义,$\lim_{x \to x_0}f(x)$存在,但$\lim_{x \to x_0}f(x) \ne f(x_0)$
那么函数$f(x)$在$x_0$不连续,点$x_0$称为$f(x)$的不连续点或间断点。
常见类型:
+ 无穷间断点
+ 震荡间断点
+ 可去间断点
+ 跳跃间断点
如果间断点处左极限和右极限都存在,那么称之为第一类间断点,反之为第二类间断点。
#### 1.9 连续函数的运算与初等函数的连续性
##### 1.9.1 连续函数的和、差、积、商的连续性
**定理1 设函数$f(x)$和$g(x)$在点$x_0$处连续,则它们的和、差、积、商都在点$x_0$处连续。**
##### 1.9.2 反函数与复合函数的连续性
**定理2 如果函数在区间上单调递增(递减),那么它的反函数在对应的区间上也呈单调递增/递减**
**定理3 设函数$y=f[g(x)]$由函数$u=g(x)$与函数$y=f(u)$复合而成,$x_0$的去心邻域在函数的定义域内,若$\lim_{x \to x_0}g(x)=u_0$,而函数$y=f(u)$在$u=u_0$处连续,则:**
$$
\lim_{x \to x_0}f[g(x)]=\lim_{u \to u_0}f(u)=f(u_0)
$$
**定理4 复合函数$f \circ g$中,若$g$在$x_0$连续,且$g$在$x_0$的值对于$f$在这个位置也连续,则复合函数也连续。**
##### 1.9.3 初等函数的连续性
基本初等函数在它们的定义域内都是连续的。
由本章的定理又可得,初等函数在他们的定义区间内都是连续的。
#### 1.10 闭区间上连续函数的性质
**定理1 在闭区间上连续的函数在该区间上有界且一定能取得它的最大最小值**
**定理2零点定理 设$f(x)$在闭区间$[a,b]$上连续,且$f(a)$与$f(b)$异号则开区间内必有一点函数值为0**
**定理3介值定理设$f(x)$在闭区间$[a,b]$上连续,且$f(a)=A$$f(b)=B$则对于A和B之间的任意一个数c在开区间$(a,b)$内必有一点$c$使得$**f(c)=C$
#### 常见题型及思路
+ 函数和函数是否相同:定义域相同、表达关系相同
+ 求单调性:任取$x_1,x_2$,按定义找。或求导。
+ 奇偶性\偶函数:$f(-x)$。
### 第二章 导数与微分
#### 2.1 导数概念
> 导数表示函数在某一点上的变化率。
定义式:
$$
y{'}=\lim_{\Delta x \rarr 0} \frac {f(x+ \Delta x)-f(x)}{\Delta x}
$$
几何意义:切线方程的斜率
函数在点x初连续是函数在点x处可导的**必要条件**,但不是**充分条件**。
#### 2.2 导数运算法则
+ $[u(x) \pm v(x)]^{'}=u^{'}(x) \pm v^{'}(x)$
+ $[u(x)v(x)]^{'}=u^{'}(x)v(x)+u(x)v^{'}(x)$
+ $[\frac {u(x)}{v(x)}]^{'}=\frac {u^{'}(x)v(x)-u(x)v^{'}(x)}{v^2(x)} (v(x) \ne 0)$
证明方式:定义
根据法则2$(Cu)^{'}=Cu^{'}$
> 反函数的导数等于直接函数导数的倒数

@ -63,7 +63,7 @@
是电话交换机至今仍使用的交换方式。电话机通过交换机连接起来,以在控制电线数量的情况下保证电话机和每一台电话机相连。 是电话交换机至今仍使用的交换方式。电话机通过交换机连接起来,以在控制电线数量的情况下保证电话机和每一台电话机相连。
![image-20220102132003489](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102132003489.png) ![image-20220102132003489](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102132003489.png)
电话机经过多次更新换代,内部仍使用分组交换。**交换**(switching)就是按照某种方式动态地分配传输线路地资源。电路交换的方式会在端到端间建立连接,保证双方的通信资源,且在通信期间不会被占用。 电话机经过多次更新换代,内部仍使用分组交换。**交换**(switching)就是按照某种方式动态地分配传输线路地资源。电路交换的方式会在端到端间建立连接,保证双方的通信资源,且在通信期间不会被占用。
@ -86,7 +86,7 @@
| 迅速 | 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组 | | 迅速 | 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组 |
| 可靠 | 保证可靠性的网络协议,分布式多路由的分组交换网,使网络具有很好的生存性 | | 可靠 | 保证可靠性的网络协议,分布式多路由的分组交换网,使网络具有很好的生存性 |
![image-20220102133855544](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102133855544.png) ![image-20220102133855544](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102133855544.png)
#### 1.6 计算机网络的性能 #### 1.6 计算机网络的性能
@ -146,7 +146,7 @@
$$ $$
当网络利用率达到50%时,时延就要加倍。信道或网络利用率过高会产生非常大的时延。 当网络利用率达到50%时,时延就要加倍。信道或网络利用率过高会产生非常大的时延。
![image-20220102141930754](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102141930754.png) ![image-20220102141930754](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102141930754.png)
#### 1.7 计算机网络体系结构 #### 1.7 计算机网络体系结构
@ -166,7 +166,7 @@ OSI标准是法律上的国际标准将计算机分为七层协议的体系
TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网络接口层基本没有什么内容在学习计算机网络时往往将其与OSI协议结合形成五层协议的网络体系结构。 TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网络接口层基本没有什么内容在学习计算机网络时往往将其与OSI协议结合形成五层协议的网络体系结构。
![image-20220102143439652](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102143439652.png) ![image-20220102143439652](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102143439652.png)
+ 应用层:应用进程间交互和通信的规则 + 应用层:应用进程间交互和通信的规则
+ 运输层两台主机中进程间的通信提供通用的数据传输服务。主要使用传输控制协议TCP和用户数据报协议UDP。 + 运输层两台主机中进程间的通信提供通用的数据传输服务。主要使用传输控制协议TCP和用户数据报协议UDP。
@ -174,7 +174,7 @@ TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网
+ 数据链路层数据链路层将网络层交下来的IP数据报封装成帧(frame)。在两个相邻节点的链路上传送帧,每一帧包括数据和必要控制信息。 + 数据链路层数据链路层将网络层交下来的IP数据报封装成帧(frame)。在两个相邻节点的链路上传送帧,每一帧包括数据和必要控制信息。
+ 物理层关注如何表示1和0以及接收方如何识别发来的1和0。 + 物理层关注如何表示1和0以及接收方如何识别发来的1和0。
![image-20220102144255025](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102144255025.png) ![image-20220102144255025](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102144255025.png)
##### 1.7.4 实体、协议、服务和服务访问点 ##### 1.7.4 实体、协议、服务和服务访问点
@ -186,11 +186,11 @@ TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网
##### 1.7.5 TCP/IP的体系结构 ##### 1.7.5 TCP/IP的体系结构
![image-20220102144755214](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102144755214.png) ![image-20220102144755214](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102144755214.png)
技术的使用是灵活的互联网使用的协议有时也会发生演变分层次画出沙漏状的TCP/IP协议族如下图所示。TCP/IP协议可以为各式各样的应用提供服务也允许IP协议在格式各样的网络构成的互联网上运行。 技术的使用是灵活的互联网使用的协议有时也会发生演变分层次画出沙漏状的TCP/IP协议族如下图所示。TCP/IP协议可以为各式各样的应用提供服务也允许IP协议在格式各样的网络构成的互联网上运行。
![image-20220102145239179](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102145239179.png) ![image-20220102145239179](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102145239179.png)
### 第二章 物理层 ### 第二章 物理层
@ -221,7 +221,7 @@ TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网
常用编码方式: 常用编码方式:
![image-20220102151255099](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102151255099.png) ![image-20220102151255099](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102151255099.png)
+ 不归零制 + 不归零制
+ 归零制 + 归零制
@ -278,7 +278,7 @@ TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网
+ 频分复用FDM:最基本的复用之一。用户在分配到一定的频带后,自始至终都占用这个频带。频分复用的所有用户在同样的时间内占用不同的带宽资源。 + 频分复用FDM:最基本的复用之一。用户在分配到一定的频带后,自始至终都占用这个频带。频分复用的所有用户在同样的时间内占用不同的带宽资源。
+ 时分复用TDM:也是最基本的复用之一。将时间分为一段段等长的时分复用帧。每一个时分复用的用户占用固定序号的时间间隙。 + 时分复用TDM:也是最基本的复用之一。将时间分为一段段等长的时分复用帧。每一个时分复用的用户占用固定序号的时间间隙。
![image-20220102153631507](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102153631507.png) ![image-20220102153631507](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102153631507.png)
+ 统计时分复用STDM:解决互联网的突发性问题,改进时分复用,能明显提高信道的利用率。通过集中器集中用户的数据发往高速线路。每个时隙由于不固定分配,需要有用户的地址信息。 + 统计时分复用STDM:解决互联网的突发性问题,改进时分复用,能明显提高信道的利用率。通过集中器集中用户的数据发往高速线路。每个时隙由于不固定分配,需要有用户的地址信息。
@ -332,7 +332,7 @@ FTTH即为光纤到户为理想中的宽带接入方式。(Fiber To The Home)
点对点信道数据链路层的协议数据单元为帧。 点对点信道数据链路层的协议数据单元为帧。
![image-20220102162037404](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102162037404.png) ![image-20220102162037404](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102162037404.png)
##### 3.1.2 三个基本问题 ##### 3.1.2 三个基本问题
@ -340,7 +340,7 @@ FTTH即为光纤到户为理想中的宽带接入方式。(Fiber To The Home)
在数据前后分别添加首部和尾部(帧定界) 在数据前后分别添加首部和尾部(帧定界)
![image-20220102162200402](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102162200402.png) ![image-20220102162200402](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102162200402.png)
2. 透明传输 2. 透明传输
@ -368,7 +368,7 @@ PPP就是用户计算机和ISP通信时使用的数据链路层协议。
##### 3.2.2 PPP协议的帧格式 ##### 3.2.2 PPP协议的帧格式
![image-20220102164216215](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102164216215.png) ![image-20220102164216215](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102164216215.png)
零比特填充当使用同步传输时PPP使用0比特填充实现透明传输。当出现5个连续1的时候立即填入一个0。接收时相反发现5个连续1的时候就把这5个连续1后的0删除。 零比特填充当使用同步传输时PPP使用0比特填充实现透明传输。当出现5个连续1的时候立即填入一个0。接收时相反发现5个连续1的时候就把这5个连续1后的0删除。
@ -405,7 +405,7 @@ CSMA/CD协议要点
一旦检测到了碰撞就要立即停止发送。在碰撞后最迟经过2倍的端到端传播时延才能被检测到。 一旦检测到了碰撞就要立即停止发送。在碰撞后最迟经过2倍的端到端传播时延才能被检测到。
![image-20220102181925472](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102181925472.png) ![image-20220102181925472](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102181925472.png)
因此以太网的端到端往返时间2r称为争用期经过争用期还没有检测到碰撞才能肯定这次发送不会产生碰撞。 因此以太网的端到端往返时间2r称为争用期经过争用期还没有检测到碰撞才能肯定这次发送不会产生碰撞。
@ -423,7 +423,7 @@ CSMA/CD协议要点
以太网信道被占用的情况包括争用期发生碰撞的情况,如下图所示: 以太网信道被占用的情况包括争用期发生碰撞的情况,如下图所示:
![image-20220102183433665](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102183433665.png) ![image-20220102183433665](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102183433665.png)
因此要提升以太网的信道利用率就必须减小r与T0之比。这个比值越打表名争用期所占的比例越大每一次碰撞都浪费了不少信道资源。 因此要提升以太网的信道利用率就必须减小r与T0之比。这个比值越打表名争用期所占的比例越大每一次碰撞都浪费了不少信道资源。
@ -462,7 +462,7 @@ IEEE802标准为局域网规定了一种48位的全球地址是指局域网
1. 以太网交换机的特点 1. 以太网交换机的特点
实质上就是一个多口的网桥。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,一般都工作在全双工方式。相互通信的主机都是独占传输媒体,无碰撞地传输数据。 实质上就是一个多口的网桥。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,一般都工作在全双工方式。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
交换机能在输出接口繁忙时缓存要发送的帧,以后再发送出去。 交换机能在输出接口繁忙时缓存要发送的帧,以后再发送出去。
@ -500,7 +500,7 @@ IEEE802标准为局域网规定了一种48位的全球地址是指局域网
+ 网际控制报文协议ICMP(Internet Control Message Protocol) + 网际控制报文协议ICMP(Internet Control Message Protocol)
+ 网际组管理协议IGMP(Internet Group Management Protocol) + 网际组管理协议IGMP(Internet Group Management Protocol)
![image-20220102191757773](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102191757773.png) ![image-20220102191757773](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102191757773.png)
##### 4.2.1 虚拟互连网络 ##### 4.2.1 虚拟互连网络
@ -519,7 +519,7 @@ IEEE802标准为局域网规定了一种48位的全球地址是指局域网
**直接交付**指目的主机就在本网络中,而**间接交付**则指通过查找路由表,先把数据包间接交付给路由器,路由器再继续寻址。 **直接交付**指目的主机就在本网络中,而**间接交付**则指通过查找路由表,先把数据包间接交付给路由器,路由器再继续寻址。
![image-20220102192708579](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102192708579.png) ![image-20220102192708579](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102192708579.png)
##### 4.2.2 分类的IP地址 ##### 4.2.2 分类的IP地址
@ -535,17 +535,17 @@ IEEE802标准为局域网规定了一种48位的全球地址是指局域网
网络号在互联网范围内应当是唯一的主机号在网络号指明的网络范围内是唯一的因此整个IP地址在互联网范围内应当是唯一的。 网络号在互联网范围内应当是唯一的主机号在网络号指明的网络范围内是唯一的因此整个IP地址在互联网范围内应当是唯一的。
![image-20220102193517957](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102193517957.png) ![image-20220102193517957](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102193517957.png)
ABC3类地址较为常用 ABC3类地址较为常用
![image-20220102193628173](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102193628173.png) ![image-20220102193628173](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102193628173.png)
##### 4.2.3 IP地址与硬件地址 ##### 4.2.3 IP地址与硬件地址
物理地址是数据链路层和物理层使用的地址而IP地址是网络层和以上各层使用的地址。 物理地址是数据链路层和物理层使用的地址而IP地址是网络层和以上各层使用的地址。
![image-20220102194805436](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102194805436.png) ![image-20220102194805436](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102194805436.png)
##### 4.2.4 地址解析协议ARP ##### 4.2.4 地址解析协议ARP
@ -559,13 +559,13 @@ ARP的作用从网络层使用的IP地址解析出在数据链路层使用
+ 当主机A向B发送数据报时如果ARP缓存内有B的IP地址就查出对应硬件地址。如果没有就会广播一个ARP请求分组原理如下图。 + 当主机A向B发送数据报时如果ARP缓存内有B的IP地址就查出对应硬件地址。如果没有就会广播一个ARP请求分组原理如下图。
![image-20220102195450227](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102195450227.png) ![image-20220102195450227](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102195450227.png)
+ ARP缓存的内容都有一个生存时间以避免硬件的更改。 + ARP缓存的内容都有一个生存时间以避免硬件的更改。
##### 4.2.5 IP数据报的格式 ##### 4.2.5 IP数据报的格式
![image-20220102195641806](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102195641806.png) ![image-20220102195641806](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102195641806.png)
@ -587,7 +587,7 @@ IP数据报首部还有段可变部分用于增加功能但很少使用。
##### 4.2.6 转发分组流程 ##### 4.2.6 转发分组流程
![image-20220102200546016](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102200546016.png) ![image-20220102200546016](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102200546016.png)
**默认路由**:减少路由表所占空间和搜索路由表的时间。在一个网络只有很少的对外连接时很好用。 **默认路由**:减少路由表所占空间和搜索路由表的时间。在一个网络只有很少的对外连接时很好用。
@ -612,7 +612,7 @@ IP数据报首部还有段可变部分用于增加功能但很少使用。
##### 4.3.2 分组转发 ##### 4.3.2 分组转发
![image-20220102201328744](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102201328744.png) ![image-20220102201328744](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102201328744.png)
##### 4.3.3 无分类编址CIDR(构造超网) ##### 4.3.3 无分类编址CIDR(构造超网)
@ -633,7 +633,7 @@ ICMP(Internet Control Message Protocol)允许主机或路由器报告差错情
ICMP分为ICMP差错报告报文和ICMP询问报文 ICMP分为ICMP差错报告报文和ICMP询问报文
![image-20220102202328039](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102202328039.png) ![image-20220102202328039](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102202328039.png)
##### 4.4.2 ICMP的应用举例 ##### 4.4.2 ICMP的应用举例
@ -680,7 +680,7 @@ PING是应用层直接使用网络层的一个例子没有经过TCP或UDP。
2. 距离向量算法 2. 距离向量算法
![image-20220102203651355](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102203651355.png) ![image-20220102203651355](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102203651355.png)
实现简单、开销较小 实现简单、开销较小
@ -724,7 +724,7 @@ IPv6使用了更大的地址空间从32位扩充到128位在可预见的
三个专用地址,互联网中的路由器不会转发: 三个专用地址,互联网中的路由器不会转发:
![image-20220102205307827](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102205307827.png) ![image-20220102205307827](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102205307827.png)
利用公用的互联网作为本机构各个专用网间的通信载体,这样的专用网称之为虚拟专用网。 利用公用的互联网作为本机构各个专用网间的通信载体,这样的专用网称之为虚拟专用网。
@ -763,7 +763,7 @@ IPv6使用了更大的地址空间从32位扩充到128位在可预见的
1. 熟知端口号(0-1023),这些端口号指派给了一些最重要的应用程序,让所有的用户都知道。 1. 熟知端口号(0-1023),这些端口号指派给了一些最重要的应用程序,让所有的用户都知道。
![image-20220102215601577](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102215601577.png) ![image-20220102215601577](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102215601577.png)
2. 登记端口号(1024-49151),为没有熟知端口号的应用程序使用 2. 登记端口号(1024-49151),为没有熟知端口号的应用程序使用
@ -796,7 +796,7 @@ IPv6使用了更大的地址空间从32位扩充到128位在可预见的
+ 面向字节流TCP把应用程序交下来的数据仅仅堪称一串无意义的字节流 + 面向字节流TCP把应用程序交下来的数据仅仅堪称一串无意义的字节流
![image-20220102220250155](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102220250155.png) ![image-20220102220250155](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102220250155.png)
图中的连接是一条虚连接TCP报文传输到IP层进行处理而IP是无连接协议TCP如何实现可靠传输稍后讨论。 图中的连接是一条虚连接TCP报文传输到IP层进行处理而IP是无连接协议TCP如何实现可靠传输稍后讨论。
@ -822,7 +822,7 @@ TCP采取适当的措施使得两个运输层之间的通信变得可靠。
检测出了差错便丢弃或者传输错误B未收到A在超过一段时间没有收到确认便会自动重传 检测出了差错便丢弃或者传输错误B未收到A在超过一段时间没有收到确认便会自动重传
![image-20220102221229455](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102221229455.png) ![image-20220102221229455](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102221229455.png)
3. 确认丢失和确认迟到 3. 确认丢失和确认迟到
@ -848,7 +848,7 @@ TCP采取适当的措施使得两个运输层之间的通信变得可靠。
#### 5.5 TCP首部 #### 5.5 TCP首部
![image-20220102222137034](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102222137034.png) ![image-20220102222137034](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220102222137034.png)
字段: 字段:
@ -895,7 +895,7 @@ TCP采取适当的措施使得两个运输层之间的通信变得可靠。
- 发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。 - 发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。
- 接收窗口表示:只允许接收落入窗口内的数据。 - 接收窗口表示:只允许接收落入窗口内的数据。
![image-20220103084028901](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103084028901.png) ![image-20220103084028901](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103084028901.png)
A收到B的确认号落在发送窗口内A就可以使发送窗口向前滑动。 A收到B的确认号落在发送窗口内A就可以使发送窗口向前滑动。
@ -939,7 +939,7 @@ $$
拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。 拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
![image-20220103091439425](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103091439425.png) ![image-20220103091439425](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103091439425.png)
##### 5.8.2 TCP的拥塞控制方法 ##### 5.8.2 TCP的拥塞控制方法
@ -955,13 +955,13 @@ TCP有四种拥塞控制算法慢开始(slow-start)、拥塞避免(congestion
每经过一个传输轮次,拥塞窗口就加倍。 每经过一个传输轮次,拥塞窗口就加倍。
![image-20220103092211946](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103092211946.png) ![image-20220103092211946](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103092211946.png)
为了防止cwnd增长过快设置一个**慢开始门限**ssthresh当cwnd>ssthresh时停止使用慢开始算法转而使用拥塞避免算法。 为了防止cwnd增长过快设置一个**慢开始门限**ssthresh当cwnd>ssthresh时停止使用慢开始算法转而使用拥塞避免算法。
拥塞避免算法使得cwnd缓慢增大每经过一个cwnd+1在这个阶段有加法增大的特点。 拥塞避免算法使得cwnd缓慢增大每经过一个cwnd+1在这个阶段有加法增大的特点。
![image-20220103092723289](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103092723289.png) ![image-20220103092723289](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103092723289.png)
当cwnd=24时出现超时拥塞避免算法会把ssthresh置为当前cwnd的一半12同时设置cwnd=1重新进入慢开始阶段。 当cwnd=24时出现超时拥塞避免算法会把ssthresh置为当前cwnd的一半12同时设置cwnd=1重新进入慢开始阶段。
@ -987,13 +987,13 @@ TCP有四种拥塞控制算法慢开始(slow-start)、拥塞避免(congestion
TCP建立连接的过程叫做握手握手需要在客户和服务器之间交换3个TCP报文段。 TCP建立连接的过程叫做握手握手需要在客户和服务器之间交换3个TCP报文段。
![image-20220103093935713](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103093935713.png) ![image-20220103093935713](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103093935713.png)
三握手防止已失效的连接请求报文突然又传到B 三握手防止已失效的连接请求报文突然又传到B
##### 5.9.2 TCP的连接释放 ##### 5.9.2 TCP的连接释放
![image-20220103094236005](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103094236005.png) ![image-20220103094236005](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103094236005.png)
A发送关闭报文后B发送确认但此时连接仅处于半关闭状态B仍可向A发送数据。 A发送关闭报文后B发送确认但此时连接仅处于半关闭状态B仍可向A发送数据。
@ -1013,7 +1013,7 @@ B再向A发送释放报文段确认号和上次确认关闭的确认号相同
每一个域名都由一个**标号**(label)序列组成。而各标号之间用点隔开。 每一个域名都由一个**标号**(label)序列组成。而各标号之间用点隔开。
![image-20220103095512725](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103095512725.png) ![image-20220103095512725](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103095512725.png)
2012年5月的顶级域名已经有326个。 2012年5月的顶级域名已经有326个。
@ -1025,7 +1025,7 @@ B再向A发送释放报文段确认号和上次确认关闭的确认号相同
我国的二级域名分为类别域名和行政区域名。 我国的二级域名分为类别域名和行政区域名。
![image-20220103095805811](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103095805811.png) ![image-20220103095805811](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103095805811.png)
##### 6.1.3 域名服务器 ##### 6.1.3 域名服务器
@ -1046,7 +1046,7 @@ B再向A发送释放报文段确认号和上次确认关闭的确认号相同
> 万维网是一个大规模的联机式的信息储藏所。万维网通过链接的方式从一个站点访问到另一个站点 > 万维网是一个大规模的联机式的信息储藏所。万维网通过链接的方式从一个站点访问到另一个站点
![image-20220103100631887](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103100631887.png) ![image-20220103100631887](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103100631887.png)
万维网使用**统一资源定位符URL**(Uniform Resource Locator)来标识万维网上的各种文档交互遵循超文本传输协议HTTP(HyperText Transfer Protocol)它是应用层协议使用TCP连接进行可靠传送。同时万维网文档使用**超文本标记语言HTML**(HyperText Markup Language)。 万维网使用**统一资源定位符URL**(Uniform Resource Locator)来标识万维网上的各种文档交互遵循超文本传输协议HTTP(HyperText Transfer Protocol)它是应用层协议使用TCP连接进行可靠传送。同时万维网文档使用**超文本标记语言HTML**(HyperText Markup Language)。
@ -1084,7 +1084,7 @@ URL的一般形式<协议>://<主机>:<端口>/<路径>
> **电子邮件**(e-mail)是互联网上使用的最多和最受用户欢迎的一种应用。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中。收件人可在自己方便时上网到自己使用的邮件服务器进行读取。 > **电子邮件**(e-mail)是互联网上使用的最多和最受用户欢迎的一种应用。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中。收件人可在自己方便时上网到自己使用的邮件服务器进行读取。
![image-20220103102520392](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220103102520392.png) ![image-20220103102520392](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220103102520392.png)
邮件地址的格式: 邮件地址的格式:
@ -1167,7 +1167,7 @@ URL的一般形式<协议>://<主机>:<端口>/<路径>
**设路由器建立了以下路由表,下列五个分组的目的地址分别为:** **设路由器建立了以下路由表,下列五个分组的目的地址分别为:**
![image-20220109084247494](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109084247494.png) ![image-20220109084247494](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109084247494.png)
1. 128.96.39.10经过与子网掩码255.255.255.128与运算网络号为192.96.39.0下一跳接口m0 1. 128.96.39.10经过与子网掩码255.255.255.128与运算网络号为192.96.39.0下一跳接口m0
2. 128.96.40.12经过与子网掩码255.255.255.128与运算网络号为192.96.40.0下一跳R~2~ 2. 128.96.40.12经过与子网掩码255.255.255.128与运算网络号为192.96.40.0下一跳R~2~
@ -1262,7 +1262,7 @@ URL的一般形式<协议>://<主机>:<端口>/<路径>
#### 4.41 #### 4.41
![image-20220109101629041](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109101629041.png) ![image-20220109101629041](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109101629041.png)
首先把下一条路由器都置为C距离+1 首先把下一条路由器都置为C距离+1
@ -1290,13 +1290,13 @@ N~9~ 6 C——已有下一跳不为C路径更长无操作
替换后路由: 替换后路由:
![image-20220109102525581](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109102525581.png) ![image-20220109102525581](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109102525581.png)
#### 4.42 #### 4.42
![image-20220109102331764](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109102331764.png) ![image-20220109102331764](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109102331764.png)
![image-20220109102341776](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109102341776.png) ![image-20220109102341776](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109102341776.png)
每一条下一跳置为C距离+1 每一条下一跳置为C距离+1
@ -1318,7 +1318,7 @@ N~4~ 8 C
更长,无操作 更长,无操作
![image-20220109102702466](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109102702466.png) ![image-20220109102702466](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109102702466.png)
#### 4.54 #### 4.54
@ -1334,7 +1334,7 @@ N~4~ 8 C
最后一个需要10个地址主机号需要4位使用子网14.24.74.224/28 最后一个需要10个地址主机号需要4位使用子网14.24.74.224/28
第三个子网网段位14.24.74.224-12.24.74.239任取14.24.74.224-12.24.74.238中的10个地址分配即可 第三个子网网段为14.24.74.224-14.24.74.239任取14.24.74.224-14.24.74.238中的10个地址分配即可
#### 4.64 #### 4.64
@ -1391,9 +1391,9 @@ N~4~ 8 C
#### 5.39 #### 5.39
![image-20220109145434518](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109145434518.png) ![image-20220109145434518](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109145434518.png)
1. ![image-20220109145638570](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220109145638570.png) 1. ![image-20220109145638570](https://file.peteralbus.com/assets/blog/imgs/blogimg/image-20220109145638570.png)
2. 1-6慢开始23-26慢开始 2. 1-6慢开始23-26慢开始
3. 6-16和17-22皆为拥塞避免 3. 6-16和17-22皆为拥塞避免
4. 16为3ACK因为cwnd仅减半没有从1开始 4. 16为3ACK因为cwnd仅减半没有从1开始

@ -256,7 +256,7 @@ Spooling技术、窗口技术、虚拟存储器......
+ 执行(running)状态:进程占有处理器正在运行 + 执行(running)状态:进程占有处理器正在运行
+ 阻塞(blocked)状态:又称为等待(wait)态或者睡眠(sleep)态。正在执行的进程由于发生某事件而无法继续执行,便放弃处理机而处于暂停状态。 + 阻塞(blocked)状态:又称为等待(wait)态或者睡眠(sleep)态。正在执行的进程由于发生某事件而无法继续执行,便放弃处理机而处于暂停状态。
![三种基本状态的转化](http://47.117.160.245:8080/pictrue/private/os_01.png) ![三种基本状态的转化](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_01.png)
##### 2.挂起状态(被换出内存的状态) ##### 2.挂起状态(被换出内存的状态)
@ -267,7 +267,7 @@ Spooling技术、窗口技术、虚拟存储器......
+ 负荷调节需要 + 负荷调节需要
+ 操作系统需要 + 操作系统需要
![引入挂起的状态转换](http://47.117.160.245:8080/pictrue/private/os_02.png) ![引入挂起的状态转换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_02.png)
#### 3.2.2 进程控制块(PCB) #### 3.2.2 进程控制块(PCB)
@ -1024,7 +1024,7 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
作业的状态:后备、运行、完成。 作业的状态:后备、运行、完成。
![作业的状态转换](http://47.117.160.245:8080/pictrue/private/os_03.png) ![作业的状态转换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_03.png)
#### 4.1.1 高级调度 #### 4.1.1 高级调度
@ -1222,7 +1222,7 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
> + 第一个队列分配的时间片最短,之后依次加长 > + 第一个队列分配的时间片最短,之后依次加长
> + 第一个队列分配的时间片用完后,置入第二个队列,以此类推 > + 第一个队列分配的时间片用完后,置入第二个队列,以此类推
![调度过程](http://47.117.160.245:8080/pictrue/private/os_04.png) ![调度过程](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_04.png)
多级反馈队列调度算法具有较好的性能,能很好地满足各种类型用户的需要。 多级反馈队列调度算法具有较好的性能,能很好地满足各种类型用户的需要。
@ -1522,7 +1522,7 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
系统只设置一个页表寄存器,存放页表在内存的首地址和页表长度 系统只设置一个页表寄存器,存放页表在内存的首地址和页表长度
![地址变换机构](http://47.117.160.245:8080/pictrue/private/os_05.png) ![地址变换机构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_05.png)
分页系统存在的问题:页表的尺寸可能很大 分页系统存在的问题:页表的尺寸可能很大
@ -1549,7 +1549,7 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
具有快表的地址变换过程:先查询快表,若该页不在快表中,则再查询页表,并把该页的映射写入快表,快表若已满,则换出很久未查询的映射。 具有快表的地址变换过程:先查询快表,若该页不在快表中,则再查询页表,并把该页的映射写入快表,快表若已满,则换出很久未查询的映射。
![快表的地址变换](http://47.117.160.245:8080/pictrue/private/os_06.png) ![快表的地址变换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_06.png)
分页系统的缺陷: 分页系统的缺陷:
@ -1603,11 +1603,11 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
+ 将程序分为多个逻辑段 + 将程序分为多个逻辑段
+ 每个段里又进行分页 + 每个段里又进行分页
![段页式存储管理](http://47.117.160.245:8080/pictrue/private/os_07.png) ![段页式存储管理](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_07.png)
段页式地址管理的地址变换机构: 段页式地址管理的地址变换机构:
![引入挂起的状态转换](http://47.117.160.245:8080/pictrue/private/os_08.png) ![引入挂起的状态转换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_08.png)
### 5.5 虚拟存储器管理 ### 5.5 虚拟存储器管理
@ -1683,7 +1683,7 @@ Dijkstra在1965年提出了银行家算法源于银行家发放贷款时采
在程序运行过程中需要逐步将页面调入内存,在程序运行过程完成逻辑地址到物理地址的转换,是动态重定位装入。 在程序运行过程中需要逐步将页面调入内存,在程序运行过程完成逻辑地址到物理地址的转换,是动态重定位装入。
![地址变换机构](http://47.117.160.245:8080/pictrue/private/os_09.png) ![地址变换机构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_09.png)
虚拟存储器管理是以牺牲系统开销为代价,换取内存的逻辑补充。 虚拟存储器管理是以牺牲系统开销为代价,换取内存的逻辑补充。
@ -1962,7 +1962,7 @@ I/O软件普遍采用层次式结构
+ 每一层具有一个要执行的定义明确的功能和一个与近邻层次定义明确的接口 + 每一层具有一个要执行的定义明确的功能和一个与近邻层次定义明确的接口
+ 不同操作系统的分层是不同的 + 不同操作系统的分层是不同的
![层次式I/O软件](http://47.117.160.245:8080/pictrue/private/os_10.png) ![层次式I/O软件](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_10.png)
+ 中断处理过程大多I/O是中断驱动 + 中断处理过程大多I/O是中断驱动
+ 设备驱动程序 + 设备驱动程序
@ -1987,9 +1987,9 @@ I/O软件普遍采用层次式结构
+ 通道控制表CHCT + 通道控制表CHCT
+ 系统设备表SDT + 系统设备表SDT
![引入挂起的状态转换](http://47.117.160.245:8080/pictrue/private/os_11.png) ![引入挂起的状态转换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_11.png)
![引入挂起的状态转换](http://47.117.160.245:8080/pictrue/private/os_12.png) ![引入挂起的状态转换](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_12.png)
### 6.6 磁盘管理 ### 6.6 磁盘管理
@ -2081,7 +2081,7 @@ I/O软件普遍采用层次式结构
> + 信息如何保存 > + 信息如何保存
> + 磁盘实际上如何工作 > + 磁盘实际上如何工作
![文件系统](http://47.117.160.245:8080/pictrue/private/os_13.png)) ![文件系统](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/os_13.png))
+ 文件系统的特征: + 文件系统的特征:
+ 存储大量数据 + 存储大量数据

@ -67,7 +67,7 @@
#### 1.1.2 计算机的层次结构 #### 1.1.2 计算机的层次结构
![五级层次结构](http://47.117.160.245:8080/pictrue/private/co_01.png) ![五级层次结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_01.png)
### 1.2 计算机的基本组成 ### 1.2 计算机的基本组成
@ -84,7 +84,7 @@
+ 以**存储器**为中心 + 以**存储器**为中心
![存储器为中心](http://47.117.160.245:8080/pictrue/private/co_03.png) ![存储器为中心](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_03.png)
+ 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内 + 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
+ 存储器用来存放数据和程序 + 存储器用来存放数据和程序
@ -186,11 +186,11 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
+ 单总线结构框图 + 单总线结构框图
![单总线](http://47.117.160.245:8080/pictrue/private/co_04.png) ![单总线](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_04.png)
+ 存储器为中心的双总线 + 存储器为中心的双总线
![双总线](http://47.117.160.245:8080/pictrue/private/co_05.png) ![双总线](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_05.png)
### 3.2 总线的分类 ### 3.2 总线的分类
@ -215,7 +215,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
总线的物理实现:印制在电路板上 总线的物理实现:印制在电路板上
![总线物理实现](http://47.117.160.245:8080/pictrue/private/co_06.png) ![总线物理实现](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_06.png)
+ 机械特性:尺寸、形状、管脚数及排列顺序 + 机械特性:尺寸、形状、管脚数及排列顺序
+ 电气特性:传输方向和有效的电平范围 + 电气特性:传输方向和有效的电平范围
@ -258,19 +258,19 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
+ 双总线结构 + 双总线结构
![总线结构](http://47.117.160.245:8080/pictrue/private/co_07.png) ![总线结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_07.png)
+ 三总线结构 + 三总线结构
![总线结构](http://47.117.160.245:8080/pictrue/private/co_08.png) ![总线结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_08.png)
+ 三总线结构的又一形式 + 三总线结构的又一形式
![总线结构](http://47.117.160.245:8080/pictrue/private/co_09.png) ![总线结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_09.png)
+ 四总线结构 + 四总线结构
![总线结构](http://47.117.160.245:8080/pictrue/private/co_10.png) ![总线结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_10.png)
+ 总线结构举例(P55) + 总线结构举例(P55)
@ -308,7 +308,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
+ 使用2n根线确定总线控制权 + 使用2n根线确定总线控制权
+ 分布式 + 分布式
![总线判优控制](http://47.117.160.245:8080/pictrue/private/co_11.png) ![总线判优控制](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_11.png)
#### 3.5.2 总线通信控制 #### 3.5.2 总线通信控制
@ -395,7 +395,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
##### 1.存储器三个重要特性的关系 ##### 1.存储器三个重要特性的关系
![三个重要特性的关系](http://47.117.160.245:8080/pictrue/private/co_12.png) ![三个重要特性的关系](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_12.png)
##### 2.缓存-主存层次和主存-辅存层次 ##### 2.缓存-主存层次和主存-辅存层次
@ -409,11 +409,11 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
##### 1.主存的基本组成 ##### 1.主存的基本组成
![主存的基本组成](http://47.117.160.245:8080/pictrue/private/co_13.png) ![主存的基本组成](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_13.png)
##### 2.主存和CPU的联系 ##### 2.主存和CPU的联系
![主存和CPU的联系](http://47.117.160.245:8080/pictrue/private/co_14.png) ![主存和CPU的联系](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_14.png)
##### 3.主存中存储单元地址的分配 ##### 3.主存中存储单元地址的分配
@ -451,7 +451,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
##### 1.基本结构 ##### 1.基本结构
![半导体存储芯片](http://47.117.160.245:8080/pictrue/private/co_15.png) ![半导体存储芯片](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_15.png)
``` ```
芯片容量=2^地址线条数*数据线位数 芯片容量=2^地址线条数*数据线位数
@ -465,7 +465,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
+ 重合法: + 重合法:
![重合法](http://47.117.160.245:8080/pictrue/private/co_16.png) ![重合法](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_16.png)
#### 4.2.3 随机存取存储器(RAM) #### 4.2.3 随机存取存储器(RAM)
@ -475,21 +475,21 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
+ 基本电路 + 基本电路
![RAM1](http://47.117.160.245:8080/pictrue/private/co_17.png) ![RAM1](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_17.png)
+ 读操作 + 读操作
![RAM2](http://47.117.160.245:8080/pictrue/private/co_18.png) ![RAM2](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_18.png)
+ 写操作 + 写操作
![RAM3](http://47.117.160.245:8080/pictrue/private/co_19.png) ![RAM3](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_19.png)
+ 静态RAM读、写时序 + 静态RAM读、写时序
![RAM4](http://47.117.160.245:8080/pictrue/private/co_20.png) ![RAM4](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_20.png)
![RAM5](http://47.117.160.245:8080/pictrue/private/co_21.png) ![RAM5](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_21.png)
##### 2.动态RAM(DRAM) ##### 2.动态RAM(DRAM)
@ -497,7 +497,7 @@ Moore定律微芯片上集成的晶体管数目每三年翻两番
基本单元电路: 基本单元电路:
![RAM6](http://47.117.160.245:8080/pictrue/private/co_22.png) ![RAM6](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_22.png)
读出信息与原存信息相反 读出信息与原存信息相反
@ -641,7 +641,7 @@ $$
解决CPU和DRAM的速度差异 解决CPU和DRAM的速度差异
![CACHE](http://47.117.160.245:8080/pictrue/private/co_23.png) ![CACHE](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_23.png)
##### 2.Cache的工作原理 ##### 2.Cache的工作原理
@ -665,13 +665,13 @@ $$
##### 3.Cache的基本结构 ##### 3.Cache的基本结构
![Cache结构](http://47.117.160.245:8080/pictrue/private/co_24.png) ![Cache结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_24.png)
##### 4.Cache的读写操作 ##### 4.Cache的读写操作
+ 读: + 读:
![CACHE读](http://47.117.160.245:8080/pictrue/private/co_25.png) ![CACHE读](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_25.png)
+ 写保证CACHE和主存的一致性 + 写保证CACHE和主存的一致性
@ -791,7 +791,7 @@ $$
+ 不中断现有程序 + 不中断现有程序
+ 周期挪用 + 周期挪用
![三种方式的比较](http://47.117.160.245:8080/pictrue/private/co_26.png) ![三种方式的比较](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_26.png)
### 5.2 I/O设备 ### 5.2 I/O设备
@ -866,7 +866,7 @@ $$
+ 命令线 + 命令线
+ 状态线 + 状态线
![I/O接口电路](http://47.117.160.245:8080/pictrue/private/co_27.png) ![I/O接口电路](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_27.png)
##### 2.接口的功能和组成 ##### 2.接口的功能和组成
@ -903,15 +903,15 @@ $$
单个和多个设备的程序查询流程: 单个和多个设备的程序查询流程:
![程序查询流程](http://47.117.160.245:8080/pictrue/private/co_28.png) ![程序查询流程](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_28.png)
#### 5.4.2 程序流程 #### 5.4.2 程序流程
![程序流程](http://47.117.160.245:8080/pictrue/private/co_29.png) ![程序流程](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_29.png)
#### 5.4.3 接口电路 #### 5.4.3 接口电路
![接口电路](http://47.117.160.245:8080/pictrue/private/co_30.png) ![接口电路](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_30.png)
### 5.5 程序中断方式 ### 5.5 程序中断方式
@ -948,7 +948,7 @@ D: 完成触发器代表I/O准备完成
##### 4.程序中断方式接口电路的基本组成 ##### 4.程序中断方式接口电路的基本组成
![三种方式的比较](http://47.117.160.245:8080/pictrue/private/co_31.png) ![三种方式的比较](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_31.png)
#### 5.4.4 I/O中断处理过程 #### 5.4.4 I/O中断处理过程
@ -999,7 +999,7 @@ D: 完成触发器代表I/O准备完成
##### 2.DMA接口组成 ##### 2.DMA接口组成
![DMA](http://47.117.160.245:8080/pictrue/private/co_32.png) ![DMA](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_32.png)
#### 5.6.3 DMA的工作过程 #### 5.6.3 DMA的工作过程
@ -1558,7 +1558,7 @@ CISC(Complex Instruction Set Computer)
处理中断 中断系统 处理中断 中断系统
![CPU结构框图](http://47.117.160.245:8080/pictrue/private/co_33.png) ![CPU结构框图](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_33.png)
#### 8.1.3 CPU的寄存器 #### 8.1.3 CPU的寄存器
@ -1618,17 +1618,17 @@ CISC(Complex Instruction Set Computer)
+ 取指周期 + 取指周期
![](http://47.117.160.245:8080/pictrue/private/co_34.png) ![](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_34.png)
+ 间址周期 + 间址周期
![](http://47.117.160.245:8080/pictrue/private/co_35.png) ![](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_35.png)
+ 执行周期——不同指令数据流不同 + 执行周期——不同指令数据流不同
+ 中断周期 + 中断周期
![](http://47.117.160.245:8080/pictrue/private/co_36.png) ![](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_36.png)
### 8.3 指令流水 ### 8.3 指令流水
@ -1686,7 +1686,7 @@ CISC(Complex Instruction Set Computer)
##### 4.指令的六级流水 ##### 4.指令的六级流水
![db_01.png (1806×755)](http://47.117.160.245:8080/pictrue/private/co_37.png) ![db_01.png (1806×755)](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/co_37.png)
#### 8.3.4 影响指令流水线性能的因素 #### 8.3.4 影响指令流水线性能的因素

@ -26,7 +26,7 @@
+ 数据安全性 + 数据安全性
+ 增加了系统的灵活性 + 增加了系统的灵活性
![数据库系统的结构](http://47.117.160.245:8080/pictrue/private/db_01.png) ![数据库系统的结构](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_01.png)
> 数据库(Database, DB)。DB是长期储存在计算机内有组织的统一管理的**相关数据的集合**。DB能为各种用户共享具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。 > 数据库(Database, DB)。DB是长期储存在计算机内有组织的统一管理的**相关数据的集合**。DB能为各种用户共享具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。
@ -63,7 +63,7 @@ DBMS可分为
如零件可以由若干个子零件组成也可是其他零件的子零件因此自身对自身是M:N 如零件可以由若干个子零件组成也可是其他零件的子零件因此自身对自身是M:N
![一元联系、三元联系举例](http://47.117.160.245:8080/pictrue/private/db_02.png) ![一元联系、三元联系举例](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_02.png)
### 1.4 数据抽象的级别 ### 1.4 数据抽象的级别
@ -73,7 +73,7 @@ DBMS可分为
> 表达用户需求观点的数据全局逻辑的模型称为“概念模型”表达计算机实现观点的DB全局逻辑结构的模型称为“逻辑模型”表达用户使用观点的DB局部逻辑模型称为“外部模型”表达DB物理结构的模型称为"内部模型"。 > 表达用户需求观点的数据全局逻辑的模型称为“概念模型”表达计算机实现观点的DB全局逻辑结构的模型称为“逻辑模型”表达用户使用观点的DB局部逻辑模型称为“外部模型”表达DB物理结构的模型称为"内部模型"。
![4种模型之间的相互关系](http://47.117.160.245:8080/pictrue/private/db_03.png) ![4种模型之间的相互关系](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_03.png)
#### 1.4.2 概念模型 #### 1.4.2 概念模型
@ -199,7 +199,7 @@ DBMS可分为
数据库管理系统(DBMS)是指数据库系统中对数据进行管理的软件系统。 数据库管理系统(DBMS)是指数据库系统中对数据进行管理的软件系统。
![用户访问数据库的过程](http://47.117.160.245:8080/pictrue/private/db_04.png) ![用户访问数据库的过程](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_04.png)
#### 1.5.2 DBMS的主要功能 #### 1.5.2 DBMS的主要功能
@ -987,7 +987,7 @@ ER图中属性用椭圆形框表示加下划线的属性为标识符(即
一个事务一旦完成全部操作,所有更新应当永久地反映在数据库中,不会丢失。 一个事务一旦完成全部操作,所有更新应当永久地反映在数据库中,不会丢失。
![事务的状态变迁图](http://47.117.160.245:8080/pictrue/private/db_05.png) ![事务的状态变迁图](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_05.png)
### 7.2 数据库的恢复 ### 7.2 数据库的恢复
@ -1010,7 +1010,7 @@ ER图中属性用椭圆形框表示加下划线的属性为标识符(即
+ 系统故障 + 系统故障
+ 介质故障 + 介质故障
![与检查点相关的事务的可能状态](http://47.117.160.245:8080/pictrue/private/db_06.png) ![与检查点相关的事务的可能状态](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_06.png)
- T1不必恢复 - T1不必恢复
- T2/T4需要REDO - T2/T4需要REDO
@ -1094,7 +1094,7 @@ DBMS中有一个死锁测试程序隔一段时间检查是否发生死锁。
虽然理论上死锁时可能有许多事务相互等待但System R的实验表明绝大多数的死锁只涉及两个事务。 虽然理论上死锁时可能有许多事务相互等待但System R的实验表明绝大多数的死锁只涉及两个事务。
![事务的无环和有环依赖图](http://47.117.160.245:8080/pictrue/private/db_07.png) ![事务的无环和有环依赖图](https://file.peteralbus.com/assets/blog/imgs/blogimg/private/db_07.png)
#### 7.3.4 并发操作的调度 #### 7.3.4 并发操作的调度

File diff suppressed because it is too large Load Diff

@ -0,0 +1,17 @@
{
"name": "note-vuepres",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "vuepress dev docs",
"build": "vuepress build docs"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"vuepress": "^1.9.8"
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save