软件设计师
2022-01-07 22:58:48 217 举报
AI智能生成
软件设计师是负责开发和维护计算机软件的专业人员。他们需要具备扎实的编程技能和广泛的计算机知识,以便能够设计出高效、可靠、易用的软件系统。软件设计师的工作内容包括需求分析、系统设计、编码实现、测试和文档编写等。他们需要与客户沟通,了解客户的需求,并根据需求设计出满足客户需求的软件系统。此外,软件设计师还需要不断学习新技术,以便能够跟上技术的发展步伐。总之,软件设计师是一项充满挑战和机遇的职业,对于喜欢编程和解决问题的人来说,这是一个很好的选择。
作者其他创作
大纲/内容
数据结构与算法
二叉树
二叉树的性质
二叉树的第 i 层最多有 2^(i-1) 个结点
高度为 k 的二叉树最多有 2^k-1 个结点(k>=1)
对于任何一课二叉树,其叶子节点数为 n0 ,度为 2 的结点数为 n1 ,则 n0=n1+1
具有 n 个结点的完全二叉树的深度为 log2n - 1
满二叉树:深度为 k 的二叉树有 2^k -1 个结点
完全二叉树:对满二叉树的结点从上至下,从左至右依次编号。对于深度为 k ,有 n 个结点的二叉树,当且仅当每一个节点都与深度为 k 的满二叉树一一对应时,称之为完全二叉树
分类
平衡二叉树(AVL树)
左右子数高度之差绝对值不超过1
左右子树都是平衡二叉树
二叉排序树(排序树)
若他左子树不为空,则他左子树所有节点的值小于根节点的值
若他右子树不为空,则他右子数所有节点的值大于根节点的值
左右子树本身也是二叉排序树
线索二叉树
对一个非线性结构进行线性化的过程,将其左右空指针指向直接前驱和后继,ltag,rtag为 1 表示前驱或后继,为 0 表示左右孩子
哈夫曼树(最有二叉树)
左子树的值小于右子树的值
左子树对应0,右子树对应1
哈希表
哈希表通过计算一个以记录的关键字为自变量的函数(哈希函数)来得到该记录的存储地址
将一组关键字映射到一个连续的有限地址集(区间)上
图
连通图:如果无向图中任意两个顶点都是连通的,则称其为连通图
邻接矩阵:表示图中顶点之间的关系
邻接表:为图的每一个顶点建立一个单链表
关键路径:从起点到终点,长度最长的路径
排序
冒泡排序
逐个比较交换
n2
选择排序
选择最小的换到前面去
n2
插入排序
插入第i个数据时,前年数据已经排好序了
n2
快速排序
选定基准值,分为左右两部分,递归对子序列排序
nlogn
归并排序
切分序列,逐个比较序列的值
nlogn
堆排序
利用堆排序
nlogn
希尔排序
切分序列,进行直接插入排序
n1.3
算法
分治法:分而治之,分解、解决、合并
把一个问题拆分成多个小规模相同子问题,一般可用递归解决
回溯法:试探
系统的搜索一个问题的所有解或任意解
贪心法:局部最优
每步有明确的,既定的策略
动态规划法:全局最优
重叠子问题,划分子问题,并把结果用数组存储,寻找最优解
计算机系统
计算机系统基础知识
字节(Byte):计算机数据处理的基本单位,每8个位组成一个字节
字:在计算机中被作为一个整体被存取、传送、处理的二进制数字字符串被称为一个字或单元,每个字由若干字节组成
字长:计算机中每个字中二进制位数的长度
操作系统位数:等于其所依赖的指令集(CPU给软件提供的API)位数,小于等于CPU位数
CPU位数:等于CPU中寄存器的位数,等于CPU能够一次并行处理的数据宽度,等于数据总线(BUS)的宽度
机器字长:CPU一次运算处理的二进制位数,通常与CPU寄存器位数有关
存储字长:存储器中一个存储单元(存储地址)所存储的二进制代码位数,即存储器中MDR(数据寄存器)的位数
指令字长:计算机指令字的位数,取决于操作码的长度、操作数地址的长度与个数
数据字长:计算机数据存储所占用的位数
数据表示
原码:最高位是符号位,其余n-1位表示数据的绝对值,正数反码与原码、补码相同
反码:负数的反码是符号位不变其余按位取反
补码:负数的补码是其反码末位加1
移码:符号位用1表示正数0表示负数,数值部分与补码相同,也就是将n位二进制数平移到0-2^n范围,常用于表示浮点数中的阶码
校验码
奇偶校验码
奇校验:奇数个数据为位出错能检测出错误
海明码
计算机体系结构
CPU
运算器
算术逻辑单元(ALU):负责进行算数和逻辑运算
累加寄存器(AC):为ALU提供一个工作区,暂时存放ALU运算结果
数据缓冲寄存器(DR):作为CPU、内存、外设之间的数据中转站,补偿其速度上的差距
状态条件寄存器(PSW):保存各种状态条件标志,如:运算结果进位,运算结果溢出等
控制器
指令寄存器(IR):存储指令
程序计数器(PC):存放下一跳指令所在单元的地址
地址寄存器(AR):保存CPU所访问的内存单元的地址
指令译码器(ID):对指令进行分析
计算机安全
加密技术
对称加密:加密解密使用同一个密钥
非对称加密:加密使用密钥和解密使用密钥是不相同的
数字签名
防冒充、可鉴别身份、防篡改、防重放、防抵赖、机密性
加密算法
对称加密
DES、IDEA、AES、RC2、RC4,RC-5
非对称加密
RSA、ECC
摘要算法
MD5、SHA
操作系统
进程
概念:程序在一个数据集合上运行的过程,它是操作系统进行资源分配和调度的独立单位
状态管理:三台模型,运行,阻塞,就绪
同步:直接制约关系
互斥:间接制约关系
临界区:进程中访问临界资源的代码
PV操作:申请,释放操作
死锁的四个必要条件:互斥、环路等待、不剥夺、保持和等待
处理死锁:鸵鸟策略、预防策略、避免策略、检测与解除
银行家算法
存储管理
分区存储管理
分页存储管理
页:将一个进程的地址空间划分为若干大小相等的区域
分段存储管理
段页式存储
先分段,再分页
虚拟存储管理
页面置换算法
主动/被动攻击
被动攻击
概念:网络窃听,针对路上的东西下手
措施:网络监听,系统干涩
主动攻击
概念:包括窃取、篡改、假冒和破坏,针对计算机下手
措施:ARP、DDOS、会话拦截、数据修改
入侵检测技术
概念:主动保护自己免受攻击的网络安全技术
功能
检测并分析用户行为
检查系统配置和漏洞
识别已知攻击行为
统计分析异常行为
漏洞扫描并不是入侵检测技术
编译过程
词法分析
对源程序单词逐个扫描
语法分析
对源程序语句结构进行检查
语义分析
检测源程序是否存在静态语义错误
中间代码生成
三地址码、四元式,机器无关
代码优化
机器无关
目标代码生成
机器密切相关
软件工程
软件过程模型
统一过程
起始阶段
生命周期目标
精化阶段
生命周期架构
构建阶段
初始运作功能
移交阶段
产品发布
瀑布模型
软件生命周期中各个活动规定为依线性顺序连接的若干阶段的模型
增量模型
融合了瀑布模型的基本成份和原型实现的迭代特征
演化模型
原型模型
适用于开发初期很难得到一个完整的需求规格说明的情况
螺旋模型
对于复杂大型软件,开发一个原型往往达不到要求,螺旋模型加入了风险分析,弥补瀑布模型和演化模型的不足
喷泉模型
以用户需求为动力,对象作为驱动的模型,适合面向对象开发
敏捷方法
极限编程
沟通、简单、反馈、勇气
水晶法
每个项目需要一套不同的策略
并列争求法
30天一个迭代冲刺
自适应软件开发
有一个使命作为指导,重做与做同样关键
敏捷统一过程
大型上连续,小型上迭代
系统测试
集成测试
a测试
最终用户在开发者的场所进行,受控环境
b测试
在一个或多个最终用户场所执行,不受控环境
测试方法
黑盒测试
不考虑软件内部结构和特性的情况下
白盒测试
根据程序的内部结构和逻辑来设计测试用例
逻辑覆盖
语句覆盖
弱逻辑覆盖
判定覆盖(分支覆盖)
每个判定表达式至少获得一次真和假
条件覆盖
每一判定语句中每个逻辑条件的各种可能的值至少满足一次
判定/条件覆盖
判定覆盖且条件覆盖
条件组合覆盖
各种可能的组合
路径覆盖
覆盖所有可能的路径
循环覆盖
基本路径测试
结构化开发方法
耦合(模块之间的相对独立性)
无直接耦合:两个模块之间没有直接关系
数据耦合:两个模块之间有调用关系,传递的是简单的数据值
标记耦合:两个模块之间传递的是数据结构
控制耦合:一个模块调用另一个模块时,传递的是控制变量
外部耦合:模块之间通过软件之外的环境连接
公共耦合:通过一个公共数据环境相互作用的那些模块的耦合
内容耦合:当一个模块直接使用另一个模块的内部数据
内聚(模块之间的紧密程度)
偶然内聚:一个模块内各处理元素之间没有任何联系
逻辑内聚:模块内执行若干逻辑相似的功能
时间内聚:把需要同时执行的动作组合在一起
过程内聚:一个模块完成多个任务,这些任务必须按指定的过程执行
通信内聚:模块内所有处理元素都在同一个数据结构上操作
顺序内聚:一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行
功能内聚:模块中所有元素共同作用完成一个功能,缺一不可
数据流图平衡
数据守恒
一个加工的所有输出数据流所需数据必须能从该加工的输入数据流直接获得
父图与子图的平衡
父图与子图的某加工在数据流的数量和方向保持一致
数据流图的完整性
每个加工至少有一个输入数据流和一个输出数据流
数据库
关系代数
交
并
差
笛卡尔积
投影
选择
连接
三级模式
外模式(用户模式)
概念模式
内模式(存储模式)
数据库设计过程
需求分析
数据流图、数据字典、需求说明书
概念结构设计
E-R图
逻辑结构设计
关系模式
物理设计
硬件
关系型数据库的规范化
函数依赖
非平凡函数依赖
若属性或属性组X确定,必定能确定Y的值,则称X函数决定Y,或Y函数依赖于X,X -> Y
完全函数依赖
若X -> Y,存在X的任意真子集X`,X`不能函数决定Y,则Y完全函数依赖于X
部分函数依赖
若X -> Y,且Y不完全函数依赖于X,则Y部分函数依赖于X
传递函数依赖
若X -> Y,X不包含于Y,Y -> Z,则Z传递函数依赖于X
候选码
唯一标识元组,且无冗余
主属性
包含任意一个候选码的属性称为主属性,否则称为非主属性
全码
关系模式的所有属性组都是这个关系模式的候选键
无损分解
关系模式分解后,通过自然连接和投影运算仍能还原
规范化理论
第一范式:所有属性不可再分
第二范式:消除非主属性对码的部分函数依赖
第三范式:消除非主属性对码的传递依赖
数据库控制功能
事务管理
原子性
事务是原子的
隔离性
事务间相互隔离
一致性
从一个一致性状态到另一个一致性状态
持久性
一旦提交成功,数据将持久保存
并发控制
问题
丢失修改
前一事务读取数据,还未将修改写入时,数据被另一事务修改并提交
不可重复读
同一事务多次读取相同数据,其间数据被另一事务修改
脏读
另一个事务读取到前一个事务回滚之前的修改
幻读
一个事务读取两次,读取的数据条数不一样
锁
排它锁(X)写锁
共享锁(S)读锁
一级封锁协议
改数据R之前先对其加X锁,直到事务结束释放,解决丢失更新问题
二级封锁协议
在一级封锁协议的基础上,加上事务T在读数据之前必须对数据加S锁,读完后释放S锁,解决了脏读的问题
三级封锁协议
在一级封锁协议的基础上,加上事务T在读数据之前必须对数据加S锁,事务结束释放S锁,解决了不可重复读问题
计算机网络
分类
局域网
城域网
广域网
OSI七层模型
应用层
表示层
会话层
FTP、Telnet、SMTP、NFS、SNMP
传输层
报文
TCP、UDP
网络层
数据包
路由器(特殊)
IP、ICMP、ARP、RARP
数据链路层
无差错发送数据帧,流量控制
网桥、交换机
物理层
中继器、集线器
子网划分
A类地址
000-127
B类地址
128-191
C类地址
192-223
全0为网络地址、全1位广播地址
命令
netstat
监控tcp/ip网络,显示路由表,用于检验本机个端口网络情况
ping
检验网络连通情况
面向对象
基础
对象:属性+方法
类:实体类/控制类/边界类
继承与泛化:复用机制
封装:隐藏对象的属性和实现细节
多态:不同对象收到同样的消息产生不同的结果
接口:一种特殊的类,他只有方法定义没有实现
重载:一个类可以有多个同名而参数类型不同的方法
面向对象设计七大原则
单一职责:设计目的单一的类
开放封闭原则:对扩展开放,对修改封闭
里氏替换原则:子类可以替换父类
依赖倒置原则:要依赖于抽象,而不是具体实现
接口隔离原则:使用多个专门的接口比使用单一的总接口好
组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
迪米特原则:最少知识原则,一个对象应当对其他对象尽可能少的了解
UML
事物
结构事物
通常是UML模型的静态部分,描述概念或物理元素
行为事物
通常是UML模型的动态部分,描述了跨越时间和空间的行为
分组事物
是UML模型的组织部分,是由一些模型分解成的盒子
注释事物
是UML模型的解释部分,用来描述、说明和标注模型的任何元素
关系
泛化
是一种继承关系、一种特殊/一般关系
实线空心三角
实现
是一种类与接口之间的关系
虚线空心三角
关联
是一种拥有关系,一个类知道另一个类的属性和方法,通常为知道、了解的含义
实线箭头
依赖
是一种使用关系、一个类的实现需要另一个类的协助
虚线箭头
聚合
是整体与部分的关系,且部分可以离开整体单独存在
实线空心菱形(指向整体)
组合
是整体与部分的关系,且部分不可以离开整体单独存在
实线实心菱形(指向整体)
图
类图
展现了一组对象、接口、协作和他们之间的关系
依赖
泛化
关联
聚合
组合
实现
对象图
展现了某一时刻一组对象以及他们之间的关系
用例图
展现了一组用例、参与者以及它们之间的关系
包含
可以提取公共行为
扩展
多个不同场景(做课程测试时不需要每次充学习币,偶尔充)
泛化
继承
交互图
对于系统动态方面的建模
序列图(顺序图)
以时间顺序组织的对象之间的交互活动
通信图(协作图)
强调收发消息的对象的结构组织
交互概览图
描述业务过程中的控制流概览,软件过程中的详细逻辑概览
计时图
描述对象状态随着时间改变的情况
状态图
强调对象行为的时间顺序
活动图
强调对象间的控制流程
构件图
展现了一组构建之间的组织和依赖
组合结构图
展示一组相互协作的实例如何完成特定的任务
部署图
面向对象系统的物理方面建模的方法
包图
把模型本身组织成层次结构的通用机制
面向对象分析
认定对象
组织对象
对象间的相互作用
基于对象的操作
设计模式
创建型设计模式
抽象工厂
提供一个创建一系列相关或相互依赖对象的接口
生成器
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示
工厂方法
一个用于创建对象的接口,让子类决定实例化哪一个类
原型
用原型实例指定创建对象的种类
单例
保证一个类仅有一个实例
结构型设计模式
适配器
将一个类的接口转换成客户希望的另一个接口
兼容,多继承
桥接
将抽象部分与其实现部分分离,使他们都可以独立的变化
抽象,接口
组合
将对象组合成树型结构以表示“部分-整体”的层次结构
部分与整体
装饰
动态地给一个对象添加一些额外的职责
大量独立扩展
外观
为子系统中的一组接口提供一个一致的界面
高层接口
享元
运用共享技术有效地支持大量细粒度的对象
大量对象
代理
为其他对象提供一种代理以控制对这个对象的访问
代理
行为设计模式
责任链
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系
命令
将一个请求封装为一个对象
解释器
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
迭代器
提供一种方法顺序访问一个聚合对象中的各个元素
中介者
用一个中介对象来封装一系列的对象交互
备忘录
在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态
观察者
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
状态
允许一个对象在其内部状态改变时改变它的行为
策略
定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换
模板方法
定义一个操作中的算法骨架,而将一些步骤延迟到子类中
访问者
表示一个作用于某对象结构中的各元素的操作
知识产权
作品发表权
作者终身及其死后50年
商标权
10年内有效,可无限续期
软件著作权
保护期50年
文学作品,软件著作权
完成即权力产生
0 条评论
下一页