软件设计师(王勇老师课程)笔记

2年前 (2022) 程序员胖胖胖虎阿
354 0 0

系列文章目录

这里写目录标题

  • 系列文章目录
  • 前言
  • 一、计算机组成与体系结构
    • 1.数据表示
    • 2.体系结构
    • 3.层次化存储
    • 4.Cache
    • 5.校验码
      • 1.循环校验码(CRC)
      • 2.海明校验码(重点)
  • 二、操作系统原理
    • 1.进程的状态
    • 2.前趋图
    • 3.进程同步与互斥
    • 4.PV操作
    • 5.死锁问题
    • 6.解决死锁-银行家算法
    • 7.分区存储组织
    • 8.页面置换算法
    • 9.位示图
    • 10.微内核操作系统
  • 三、数据库系统
    • 1.关系代数
    • 2.范式
    • 3.并发控制
    • 4.数据备份
    • 5.数据仓库和数据挖掘
  • 四、计算机网络
    • 1.DNS协议
    • 2.计算机网络的分类-拓扑结构
    • 3.网络规划与设计
    • 4.子网划分
    • 5.特殊含义的IP地址(选择题)
    • 6.HTML(出现在选择题)
    • 7.IPv6
    • 8.信息系统安全属性
    • 9.网络安全-各个网络层次的安全保障
  • 五、数据结构与算法基础
    • 1.数组存储地址计算
    • 2.稀疏矩阵
    • 3.线性表
    • 4.数与二叉树
      • 1.二叉树的各种性质
      • 2.二叉树遍历
      • 3.树转二叉树
      • 3.查找(排序)二叉树
      • 4.最优二叉树(哈夫曼树)
      • 5.构造哈夫曼树
      • 6.线索二叉树
      • 7.平衡二叉树
    • 8.图
      • 1.图的存储-邻接矩阵
      • 2.图的存储-邻接表
      • 3.图-图的遍历
      • 4.图-拓扑排序
      • 5.图的最小生成树-普利姆算法
      • 5.图的最小生成树-克鲁斯卡尔算法
    • 9.算法的特性
    • 10.算法的复杂度
    • 11.查找-顺序查找
    • 12.查找-二分查找
    • 13.排序
      • 1.直接插入排序
      • 2.希尔排序![在这里插入图片描述](https://pic.hicxy.com/2022/08/30399d6678f8779ab2bb17005b5a2d0256.png)
      • 3.直接选择排序
      • 4.堆排序
      • 5.冒泡排序
      • 6.归并排序
      • 7.快速排序
      • 8.基数排序
    • 14.时间复杂度和空间复杂度
  • 8.程序设计与语言处理程序
      • 1.文法
      • **2.有限自动机与正规式
        • 1.有限自动机
        • 2.正规式
        • 3.例题
      • 3.表达式
      • 4.传值传址
    • 9.法律法规(3分左右)
      • 1.保护权限
      • 2.知识产权人确定
      • 3.侵权判定(重点)
      • 4.标准化基础知识-标准的编号
    • 10.多媒体基础(1-3分)
      • 1.音频相关概念
      • 2.图像相关概念
      • 3.媒体的种类
      • 4.多媒体的相关计算
        • 1.例题
      • 5.数据压缩
    • 10.软件开发模型
      • 1.瀑布模型
      • 2.螺旋模型
      • 3.V型
      • 4.喷泉模型和RAD
      • 5.构建组装模型CBSD
      • 6.敏捷开发模型
      • 7.结构化设计
      • 8.软件测试
      • 9.Macabe复杂度(必考)
      • 9.CMMI
      • 10.项目管理
    • 12.面向对象设计
      • 1.设计原则![在这里插入图片描述](https://pic.hicxy.com/2022/08/30f1bcccfeaa066d3239fbf2baa7b9a31a.png)
      • 2.UML
      • 3.设计模式的分类
        • 1.创建型模式
        • 2.结构型模式
        • 2.行为型模式
    • 13.数据流图(重点,分值15分)
      • 1.数字字典
      • 2.数据流图平衡原则
    • 14.数据库设计(15分)
    • 15.UML
      • 1.用例图
      • 2.类图
      • 3.顺序图
      • 4.活动图
    • 16.数据结构与算法应用(下午题,较难)
      • 1.分治法
      • 2.回溯法
      • 3.贪心法
      • 4.动态规划法
      • 1.文法
      • 7.归并排序
      • 7.归并排序
    • 13.排序
    • 9.位示图
    • 9.位示图
    • 9.位示图
    • 9.位示图

前言

一、计算机组成与体系结构

1.数据表示

R进制转化成十进制:例二进制10100.01=1x24+1x22+1x2^-2
十进制转化R进制:短除法求余,除数为R
二进制转八进制与十六进制:每三个二进制为一组计算八进制,每四个二进制为一组计算十进制

原码:-(2(n-1)-1)~2(n-1)-1
反码:-(2(n-1)-1)~2(n-1)-1
补码:-(2(n-1))~2(n-1)-1
正数:符号位为0;负数:符号位为1;
转换方法:原码->反码:符号位不变,其他为取反;
反码->补码:在反码基础上加1;
补码->移码:正负数都在移码符号位取反;
软件设计师(王勇老师课程)笔记

2.体系结构

(1)CISC(复杂)和RISC(精简)
考察方式:选择题
软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

(2)流水线
流水线计算公式:1条指令执行时间+(指令条数-1)*流水线周期)
实践公式:(k+n-1)*△t k:指令分为几个部分(阶段) △t=流水线周期
图例:(3+100-1)*2=204
流水线吞吐率TP=指令条数/执行时间
流水线最大吞吐量TP(max)=1/△t
加速比=不使用流水线时间/使用流水线时间=500/203
效率E=n个任务占用的时空区/K个流水段总时空区=t/KT
软件设计师(王勇老师课程)笔记

3.层次化存储

速度:CPU>Cache>内存>外存
内存:CPU<Cache<内存<外存
软件设计师(王勇老师课程)笔记

4.Cache

Cache+主存储器平均周期=hxt1+(1-h)xt2(h:cache访问命中率,t1:cache周期时间,t2:主存器周期时间,1-h:未命中率)
软件设计师(王勇老师课程)笔记

5.校验码

1.循环校验码(CRC)

只可验错不能纠正
余数为0为正确
软件设计师(王勇老师课程)笔记

2.海明校验码(重点)

**利用多组数位的奇偶性来检错和纠错

  • List item

**
(1)确认校验码位数:2^r>=k+r+1(k:信息数位数,r:校验码位数)
(2)确认校验码位置:2^n
(3)求出校验码:下面例图
软件设计师(王勇老师课程)笔记
(4)校验码纠正:按上面步骤重新计算校验码并与收到的校验码进行异或运算;
出现1的位置为校验码错误位;
软件设计师(王勇老师课程)笔记

二、操作系统原理

1.进程的状态

软件设计师(王勇老师课程)笔记

2.前趋图

3.进程同步与互斥

4.PV操作

(1)临界资源:诸进程间需要互斥方式对其进行共享资源,如打印机,磁带机
(2)临界区:每个进程中访问临界资源的那段代码
(3)信号量:是一种特殊的变量
软件设计师(王勇老师课程)笔记
练习:
答案:C,A,A
软件设计师(王勇老师课程)笔记

5.死锁问题

一个进程在等待一件不可能发生的事,则进程就死锁了;一个或多个进程产生死锁,就会造成系统死锁;

6.解决死锁-银行家算法

软件设计师(王勇老师课程)笔记

7.分区存储组织

(1)首次适应算法。对可变分区方式可采用首次适应算法,每次分配时,总是顺序查找未分配表,找到第一个能满足长度要求的空闲区为止。
(2)最佳适应算法。可变分区方式的另一种分配算法是最佳适应算法,它是从空闲区中挑选一个能满足作业要求的最小分区,这样可保证不去分割一个更大的区域,使装入大作业时比较容易得到满足。
( 3)最坏适应算法。最坏适应算法 是挑选一个最大的空闲区分割给作业使用,这样可使剩下的空闲区不至于太小,这种算法对中、小作业是有利的。
(4)循环首次适应算法:每次为进程分配空间的时候,从上一次刚分配过的空闲区的下一块开始寻找
软件设计师(王勇老师课程)笔记

8.页面置换算法

1.最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
2.先进先出置换算法(FIFO):是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。 会出现抖动
3.最近最久未使用(LRU)算法:这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。不 会出现抖动
4. 时钟(CLOCK)置换算法
算法执行如下操作步骤:
1从指针的当前位置开始,扫描帧缓冲区。在这次扫描过程中,对使用位不做任何修改。选择遇到的第一个帧(u=0, m=0)用于替换。
2如果第1)步失败,则重新扫描,查找(u=0, m=1)的帧。选择遇到的第一个这样的帧用于替换。在这个扫描过程中,对每个跳过的帧,把它的使用位设置成0。
3如果第2)步失败,指针将回到它的最初位置,并且集合中所有帧的使用位均为0。重复第1步,并且如果有必要,重复第2步。这样将可以找到供替换的帧。
参考链接

9.位示图

10.微内核操作系统

了解优缺点,用户态和核心态;
软件设计师(王勇老师课程)笔记

三、数据库系统

1.关系代数

软件设计师(王勇老师课程)笔记
(1)笛卡尔积:前面是S1,后面S2.S1映射S2。不会把相同的列去掉;S2放在S1后面
(2)投影:选出投影的列
(3)选择:选出行
(4)连接:默认选出相同的字段作等值,会把相同的列去掉一个;
(5)
软件设计师(王勇老师课程)笔记

2.范式

候选键:
1.将关系模式的函数依赖关系用“有向图”的方式表示
2.找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍
历图中所有结点,则该属性集即为关系模式的候选键
3.若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
软件设计师(王勇老师课程)笔记
函数依赖
(1)部分函数依赖:(A,B)->C
(2)传递函数依赖:A->C,B->C且B不能确定A
软件设计师(王勇老师课程)笔记
范式
软件设计师(王勇老师课程)笔记

3.并发控制

事务:原子性,一致性,隔离性,持续性

4.数据备份

(1)完全备份:备份所有数据
(2)差量备份:仅备份上一次完全备份之后变化的数据
(3)增量备份:备份上一次备份之后的数据

5.数据仓库和数据挖掘

(1)数据仓库和数据挖掘:面向主题,集成的,相对稳定的(非易失的),反映历史的
(2)数据挖掘方法:决策树,神经网络,遗传算法,关联规则挖掘算法
(3)数据挖掘分类:关联分析,序列模式分析,分类分析,聚类分析

四、计算机网络

1.DNS协议

(1)递归查询:服务器必须回答目标IP与域名的映射关系。(一层一层查询)
(2)迭代查询:服务器收到一次迭代查询回复一次结果,这结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址。(告诉你去哪查询,自己不参与)
方法一:常见形式
软件设计师(王勇老师课程)笔记
方法二:效率低
软件设计师(王勇老师课程)笔记

2.计算机网络的分类-拓扑结构

(1)按分布范围:局域网(LAN),城域网(MAN),广域网(WAN),因特网
(2)按拓扑结构:总线型,星型,环形
软件设计师(王勇老师课程)笔记

3.网络规划与设计

(1)逻辑网络设计:
软件设计师(王勇老师课程)笔记
(2)物理设计:
软件设计师(王勇老师课程)笔记
分层设计(考各层职能较多):
核心层:容易出现数据冗余
软件设计师(王勇老师课程)笔记

4.子网划分

A,B,C类地址
软件设计师(王勇老师课程)笔记

5.特殊含义的IP地址(选择题)

软件设计师(王勇老师课程)笔记
子网掩码:化成二进制情况下1对应为网络号,0表示主机号

6.HTML(出现在选择题)

软件设计师(王勇老师课程)笔记

7.IPv6

软件设计师(王勇老师课程)笔记

8.信息系统安全属性

(1)保密性:最小授权原则、防暴露、信息加密、物理保密
(2)完整性:安全协议、校验码、密码校验、数字签名、公证
(3)可用性:综合保障(IP过滤、业务流控制、路由选择控制、审计跟踪)
不可抵赖性:数字签名
加密技术
(1)·对称加密技术
软件设计师(王勇老师课程)笔记
(2)非对称加密技术软件设计师(王勇老师课程)笔记

9.网络安全-各个网络层次的安全保障

软件设计师(王勇老师课程)笔记

五、数据结构与算法基础

1.数组存储地址计算

(1)一维数组a[n]:a[i]的存储地址:a+ilen
(2)二位数组a[m][n]:a[i][j]存储地址(按行存储):a+(i
n+j)len;a[i][j]按列存储:a+(jm+i)*len

2.稀疏矩阵

计算公式:
软件设计师(王勇老师课程)笔记

3.线性表

(1)线性表可分:顺序表和链表
(2)链表又分:单链表,循环链表以及双向链表
顺序存储与链式存储对比
软件设计师(王勇老师课程)笔记
单链表的删除,插入结点操作:
软件设计师(王勇老师课程)笔记

4.数与二叉树

1.二叉树的各种性质

(1)叶子结点数:结点个数n,总结点数=n+各度的结 点数相加
(2)数的性质:数的结点数为树中所有结点的度数之和再加1
(3)二叉树性质:度为0的结点数总是比度为2的结点数多1
(4)二叉树基本性质:深度为k的二叉树,最多有2^k-1个结点
(5)完全二叉树:度为1的结点个数为0或1
(6)满二叉树:深度为k的二叉树,最多有2^k-1
个结点,第k层的结点数2^(k-1)
(7)完全二叉树:具有2n个结点的完全二叉树中,叶子节点数为n
软件设计师(王勇老师课程)笔记

2.二叉树遍历

前序遍历:左右根
中序遍历:左根右
后序遍历:左右根

3.树转二叉树

孩子结点-左子树结点
兄弟结点-右孩子结点

软件设计师(王勇老师课程)笔记

3.查找(排序)二叉树

软件设计师(王勇老师课程)笔记

4.最优二叉树(哈夫曼树)

概念:数的路径长度:每根路经之和
权:叶子节点具有的权值
带权路径长度:叶子节点权值*路径长度
树的带权路径长度(树的代价):所有带权路径长度之和
软件设计师(王勇老师课程)笔记

5.构造哈夫曼树

方法:选择两个最小权值构成一颗小的子树
软件设计师(王勇老师课程)笔记

6.线索二叉树

左子树指向前(中,后)遍历的前驱节点,右子树指向前(中,后)遍历的后继节点
软件设计师(王勇老师课程)笔记

7.平衡二叉树

软件设计师(王勇老师课程)笔记

8.图

软件设计师(王勇老师课程)笔记

1.图的存储-邻接矩阵

无向图邻接矩阵特点:上三角与下三角对称,可以只存储半边节省空间;
软件设计师(王勇老师课程)笔记

2.图的存储-邻接表

软件设计师(王勇老师课程)笔记

3.图-图的遍历

深度遍历与广度遍历的区别:
软件设计师(王勇老师课程)笔记
例子
深度遍历:V0,V4,V6,V7,V3,V1,V2,V5
广度遍历:V0,V4,V3,V1,V6,V2,V5,V7
软件设计师(王勇老师课程)笔记

4.图-拓扑排序

软件设计师(王勇老师课程)笔记

5.图的最小生成树-普利姆算法

方法:选出红点集到蓝点集权值最小且不能形成环路的路;红点与红点直接不能连接;
例子:1.选出A为红点集,A到其他蓝点集的权值中100最小且不形成环路则连接B;
2.A,B都为红点集,A,B到其他蓝点集权值最小且不形成环路的是E,则连接E;A,B,E都为红点集;
3.以此类推,直到无论连接哪条都形成环路为止;
软件设计师(王勇老师课程)笔记

5.图的最小生成树-克鲁斯卡尔算法

方法:直接选出5条权值最小且不能形成环路的路经;

软件设计师(王勇老师课程)笔记

9.算法的特性

软件设计师(王勇老师课程)笔记

10.算法的复杂度

时间复杂度与空间复杂度的定义
O(1):当只有一个语句时或者有限语句时;例:i=0;或者i=1;k=0;
O(n):例:一个for循环;当算法有几个复杂度是取值最高的复杂度;
O(n²):一个嵌套for循环;
O(log2(n)):在排序二叉树查询指定值,n为结点数,2是底数;
软件设计师(王勇老师课程)笔记

11.查找-顺序查找

软件设计师(王勇老师课程)笔记
时间复杂度
最好情况:执行一次;
最坏情况:执行n次;
平均查找长度:(1+n)/2
时间复杂度:O(n)

12.查找-二分查找

条件:排序数值是大到小或小到大的顺序
步骤:(1+12)/2取整=6,关键字与18比较确定查找范围【1,5】;
2.(1+5)/2取整=3,关键字与10比较确定查找范围【4,5】;
以此类推…

软件设计师(王勇老师课程)笔记
时间复杂度
比较最多次数:(log2(n))+1;2位底数,n位指数
时间复杂度:O(log2(n))

13.排序

1.直接插入排序

软件设计师(王勇老师课程)笔记

2.希尔排序软件设计师(王勇老师课程)笔记

3.直接选择排序

软件设计师(王勇老师课程)笔记

4.堆排序

1.大顶堆和小顶堆的定义
软件设计师(王勇老师课程)笔记

2.堆排序步骤
(1)建立堆
软件设计师(王勇老师课程)笔记
(2)取元素进行排序
软件设计师(王勇老师课程)笔记

5.冒泡排序

软件设计师(王勇老师课程)笔记

6.归并排序

软件设计师(王勇老师课程)笔记

7.快速排序

步骤:57为基准,与末端指针19进行比较,小于基准交换位置否则不变;
2.因57与19交换位置,基准变成最后一个元素,则将它与19的后一个元素比较;
以此类推。。
3.最后基准出现在中间,再将基准两边数进行排列;
软件设计师(王勇老师课程)笔记

8.基数排序

软件设计师(王勇老师课程)笔记

14.时间复杂度和空间复杂度

软件设计师(王勇老师课程)笔记

8.程序设计与语言处理程序

1.文法

文法类型
软件设计师(王勇老师课程)笔记

软件设计师(王勇老师课程)笔记
语法推导树
a,b:终结符(一般小写字母)
S,A:非终结符
S:起始符
P:产生式

软件设计师(王勇老师课程)笔记

**2.有限自动机与正规式

1.有限自动机

有限自动机可以形象地用状态转换图表示
软件设计师(王勇老师课程)笔记

2.正规式

软件设计师(王勇老师课程)笔记

3.例题

软件设计师(王勇老师课程)笔记
代数法解题
软件设计师(王勇老师课程)笔记

3.表达式

例题软件设计师(王勇老师课程)笔记

4.传值传址

软件设计师(王勇老师课程)笔记
例题
软件设计师(王勇老师课程)笔记

9.法律法规(3分左右)

1.保护权限

软件设计师(王勇老师课程)笔记

2.知识产权人确定

软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

3.侵权判定(重点)

软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

4.标准化基础知识-标准的编号

软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

10.多媒体基础(1-3分)

1.音频相关概念

软件设计师(王勇老师课程)笔记

2.图像相关概念

3.媒体的种类

软件设计师(王勇老师课程)笔记

4.多媒体的相关计算

软件设计师(王勇老师课程)笔记

1.例题

软件设计师(王勇老师课程)笔记

5.数据压缩

jpg为有损压缩
软件设计师(王勇老师课程)笔记

10.软件开发模型

1.瀑布模型

只适用于需求较明确的项目
软件设计师(王勇老师课程)笔记

2.螺旋模型

结合原型和瀑布模型
原型:适合需求不明确的项目
软件设计师(王勇老师课程)笔记

3.V型

提早进行测试
软件设计师(王勇老师课程)笔记

4.喷泉模型和RAD

特点:面向对象模型
软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

5.构建组装模型CBSD

特点:提高复用性,缩短时间,成本变低, 提高可靠靠性

6.敏捷开发模型

缺点:不适用大型项目
软件设计师(王勇老师课程)笔记

7.结构化设计

软件设计师(王勇老师课程)笔记

8.软件测试

软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

9.Macabe复杂度(必考)

软件设计师(王勇老师课程)笔记

9.CMMI

主要是选择题,属于CMMI哪个阶段,哪个阶段具有什么特点
软件设计师(王勇老师课程)笔记

10.项目管理

需重看一边视频

12.面向对象设计

1.设计原则软件设计师(王勇老师课程)笔记

2.UML

软件设计师(王勇老师课程)笔记

3.设计模式的分类

软件设计师(王勇老师课程)笔记

1.创建型模式

软件设计师(王勇老师课程)笔记

2.结构型模式

软件设计师(王勇老师课程)笔记

2.行为型模式

软件设计师(王勇老师课程)笔记

13.数据流图(重点,分值15分)

1.数字字典

软件设计师(王勇老师课程)笔记

2.数据流图平衡原则

补全0层图或顶层图
软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

14.数据库设计(15分)

需求分析(数据流图、数据字典、需求说明书)->概念结构设计(E-R模型)->逻辑结构设计(关系模式(通过E-R转换))->物理设计

15.UML

1.用例图

软件设计师(王勇老师课程)笔记

2.类图

主要考察方式:写类名,填多重关系,填关系
多重关系填写
软件设计师(王勇老师课程)笔记
填关系: 泛化,依赖,关联,实现
软件设计师(王勇老师课程)笔记

3.顺序图

考察方式:填消息,填对象名

4.活动图

16.数据结构与算法应用(下午题,较难)

1.分治法

利用递归解决问题
应用二分查找

2.回溯法

软件设计师(王勇老师课程)笔记
软件设计师(王勇老师课程)笔记

3.贪心法

软件设计师(王勇老师课程)笔记
![在这里插入图片描述](https://img-blog.csdnimg.cn/ebbb97ae6fbd48728a6366716041c08e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiN5Y-X5Luj56CB5o6n5Yi2,size_20,color_FFFFFF,t_70,g_se,x_16
软件设计师(王勇老师课程)笔记

4.动态规划法

与分治法区别:动态规划需查表解决问题
软件设计师(王勇老师课程)笔记

1.文法

7.归并排序

7.归并排序

13.排序

9.位示图

9.位示图

9.位示图

9.位示图

版权声明:程序员胖胖胖虎阿 发表于 2022年10月25日 下午8:16。
转载请注明:软件设计师(王勇老师课程)笔记 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...