距离软考还有两天,我也是根据我个人情况还有历年试题,总结出来这些所有的遗漏点,建议根据我的提纲查漏补全,话不多说,直接看内容吧吧吧吧😁
数据结构与算法
排序算法
插入排序:
- 插入排序:O(N^2),稳定
- 希尔排序:O(N^1.3),不稳定
选择排序:
- 简单排序:O(N^2),不稳定 找无序列表最小的数与无序列表第一个互换位置
- 堆排序:O(NlogN),不稳定 每一次排序都可以确定一个元素的最终位置
交换排序:
- 冒泡排序:O(N^2),稳定
- 快速排序:O(NlogN),不稳定(O(logN) )
归并排序:O(NlogN),稳定(空间复杂度是O(n) )先分大组,再分小组进行排序
空间复杂度:
只有快速排序是O(logn)、归并排序O(n),其他都是O(1)。
稳定性:
只有插入排序、冒泡排序、归并排序是稳定的。
常见算法
各种算法典型问题:
-
分治法:归并排序、快速排序、二分查找
-
贪心算法:部分背包问题、多级调度问题、找零钱问题
-
动态规划:矩阵乘法、01背包、最长公共子序列
-
回溯算法:N皇后、迷宫、背包问题
加密技术
公加验、私解签
加密算法
对称密钥算法/共享密钥加密算法:
-
各种ES
-
各种RC
-
IDEA
非对称密钥算法
-
各种SA
-
ECC
MD5是摘要算法、SHA-1是安全散列算法
知识产权
永久保护的著作权权利有:署名权、修改权、保护作品完整权
发表权:作者终生+死后50年
计算机软件著作权的保护期是50年,保护期满,除开发者身份权意外,其他权利终止。
职务作品
职务作品只具有署名权。开发的著作权应由公司享有。
委托开发
没有签订合同:归受委托方所有
专利申请
专利权授给最先申请人。
商标权
商标自注册之日起10年内有效,但可以无限延续权利。
商标注册
- 谁先申请谁先拥有
- 同时申请,则根据谁先使用先拥有
- 无法提供依据,协商归属,无效时使用抽签
信息安全
信息安全的五个基本要素
-
**机密性:**确保信息不暴露给未授权的实体或进程。
-
**完整性:**只有得到允许的人才能修改数据,并且能够判别出数据是否已被篡改。
-
**可用性:**得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍授权者的工作。
-
可控性:可以控制授权范围内的信息流向及行为方式。
-
**可审查性:**对出现的信息安全问题提供调查的依据和手段。
防火墙
防火墙不具备查毒杀毒功能,不提供漏洞扫描功能。
防火墙工作层次越高,工作效率越低,安全性越好。
包过滤防火墙
包过滤型的防火墙通常直接转发报文,它对用户完全透明,速度较快。
过滤依据:源地址、目的地址协议和端口
应用代理防火墙
应用代理网关防火墙彻底隔断内网与外网的直接通信。
计算机病毒
病毒名称 | 典型例子 | 注意事项 |
---|---|---|
蠕虫病毒 | 欢乐时光、熊猫烧香、红色代码、震网 | |
特洛伊木马 | 冰河 | 木马的典型现象是:有未知程序建立网络连接 木马程序的目的是使计算机网络无法提供正常的服务 |
后门病毒 | ||
宏病毒 | 感染的对象主要是文本文档、电子表格等 | |
网络攻击
拒绝服务攻击(Dos攻击):
-
- 目的是使计算机或网络无法提供正常的服务
- 拒绝服务攻击是不断向计算机发起请求来实现的
- 目的是使计算机或网络无法提供正常的服务
重放攻击:
-
- 攻击者发送一个目的主机已经接受过的报文来达到攻击目的
- 攻击者利用网络监听或者其他方式盗取认证凭据,之后再重新发送给认证服务器。
- 主要用于身份认证过程,目的是破坏认证的正确性。
- 攻击者发送一个目的主机已经接受过的报文来达到攻击目的
口令入侵攻击:
-
- 使用某些合法用户的账号和口令登录到目的主机,然后再实施攻击活动
特洛伊木马:
-
- 被伪装成程序或游戏,当用户下载了带有木马的软件或附件时,这个程序就会向黑客发起连接请求,建立连接后黑客就实施攻击活动。
端口欺骗攻击:
-
- 采用端口扫描找到系统漏洞从而实施攻击
网络监听:
-
- 攻击者可以接收某一网段在同一条物理通道上传输的所有信息,使用网络监听可以轻松截取包括账号和口令在内的信息资料
IP欺骗攻击:
-
- 产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。
Sql注入攻击:
-
- 是黑客对数据库进行攻击的常用手段之一。
- 没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。
- 攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,首先获取数据库的权限,就可获取用户账号和口令信息,以及对某些数据修改等。
- 是黑客对数据库进行攻击的常用手段之一。
ARP欺骗:
-
- 通过伪造IP地址和MAC地址,能够在网络中产生大量的ARP通信量使网络阻塞
入侵检测技术
- 专家系统
- 模型检测
- 简单匹配
网络安全
协议 | 作用 | 备注 |
---|---|---|
SSL(安全套接层) | 安全协议 | 传输层安全协议,端口号:443 |
TLS(传输层安全协议) | 安全协议 | 建立在SSL后续版本 |
SSH(安全连接协议) | 安全连接 | 应用层和传输层,专门为远程登录会话的安全协议 |
HTTPS | HTTP+SSL | |
MIME(邮件扩展类型) | 邮件扩展 | |
PGP(优良保密协议) | 邮件保密 | 用于对邮件保密以防止非授权者阅读 |
数据库容灾属于:系统安全和应用安全
计算机网络
网络设备
层次 | 设备 |
---|---|
物理层 | 中继器、集线器 |
数据链路层 | 网桥、交换机 |
网络层 | 路由器 |
冲突域:
- 集线器和网桥都可以检测发射冲突。
- 集线器是一种多端口的中继器,集线器的所有端口形成了一个冲突域。
广播域:
- 网桥只有两个端口。
- 交换机是一种多端口的网桥,交换机的各个端口形成一个广播域。
层次 | 广播域 | 冲突域 |
---|---|---|
物理层 | 不可 | 不可 |
数据层 | 不可 | 可 |
网络层 | 可 | 可 |
协议簇
- 网络层
- IP:网际互联协议
- ICMP:控制报文协议
- ARP:ip解析成物理地址
- RARP:物理地址解析成ip地址
- 传输层
- TCP:
- UDP
- 应用层
- FTP:文件传输协议
- 端口号20(上传文件端口)
- 端口号21(传输命令端口)
- HTTP:超文本传输协议(80)
- POP3:接收邮件协议(端口110)(采用C/S通信)
- SMTP:发送邮件协议(端口号25)(采用C/S通信)
- Telnet:远程登录协议(端口号23)
- NFS:网络文件服务协议
- TFTP:简单文件传输协议(端口号69)
- SNMP:简单网络管理协议(端口号161)
- DNS:域名解析协议(端口号53)
- DHCP:(端口号:67)
- FTP:文件传输协议
POP3和带T的除了TFTP(简单文件传输)其他都是TCP
TCP与UDP
TCP和UDP的区别:
- TCP:可靠传输、面向连接
(连接管理、差错校验和重传、流量控制) - UDP:不可靠传输、无直接连接,开销小
ARP与RARP
请求广播,响应单播
DHCP
DHCP协议的功能:
- 集中的管理、分配IP地址
- 使网络环境种的主机动态的获得IP地址
- DNS服务器地址(提升服务器的使用性)
DHCP客户端可以从DHCP服务器获得
- 本机的IP地址
- DNS服务器地址
- DHCP服务器地址
- 默认网关地址
路由
当Windows服务器收到一个IP数据包时,先查找主机路由,再查找网络路由(直连网络和远程网络),这些路由查找失败时,最后才查找默认路由。
如果路由器收到了由多个路由协议转发的、关于某个目标的多条路由,则比较各个路由的管理距离,并采用管理距离小的路由来源提供的路由信息。
URL
协议名://主机名.域名.域名后缀.域名分类/目录/…
ipconfig命令
- ipconfig:显示所有网络适配器的IP地址、子网掩码和缺省网关值
- ipconfig/release:DHCP客户端手工释放IP地址
- ipconfig/flushdns:清除/刷新本地DNS缓存内容
- ipconfig/displaydns:显示本地DNS内容
- ipconfig/registerdns:DNS客户端手工向服务器进行注册
- ipconfig/all:显示所有网络适配器的完整TCP/IP配置信息,包括DHCP服务是否已启动
- ipconfig/renew:DHCP客户端手工向服务器刷新请求(重新申请IP地址)
计算机组成原理
计算容量:大-小+1
数据表示
定点整数和定点小数的范围
原码、反码:-(2n-1 -1) ~ (2n-1 -1)、-(1-2n-1) ~ (1-2n-1 )
补码、移码:-(2n-1) ~ ( 2n-1 -1) 、 -1 ~ ( 1-2n-1 )
浮点数
浮点数计算:小阶往大阶对齐,尾数右移n位。
流水线公式
- 最大吞吐率取决于流水线中最慢一段所需的时间
公式:一条完整流水线指令时间 *(n-1)*最大耗费时间
吞吐率就是最长流水线操作时间的倒数
程序设计语言
编译器和解释器
- 解释器:翻译源程序时不生成独立的目标程序,解释程序和源程序要参与到程序的运行过程中
- 编译器:翻译时将源程序翻译生成独立保存的目标程序,机器上运行的是与源程序等价的目标程序源程序和编译程序都不再参与目标程序的运行过程
- 编译器和解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换即词法分析、语法分析、语义分析是必须的。
操作系统
双缓冲和单缓冲
T是读入缓冲区时间
M是送至缓冲区时间
C是磁盘块数据的处理时间
单缓冲公式:(T+M)*n+C | 双缓冲公式:T*N+M+C |
---|
软件工程
能力成熟度模型CMM
- 初始级:几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄核心人物的作用。
- 可重复级:建立在基本的项目管理过程和时间来跟踪项目的费用、精度和功能特性,有必要的过冲准备来重复以前在同类项目中的成功。【”基本的项目管理过程“】
- 已定义级:**管理和工程两方面的软件工程过程已经文档化、标准化。**并综合成整个软件开发组织的标准软件过程。所有的项目都采用根据实际情况修改得到的标准过程来开发和维护软件。【“标准”】
- 已管理级:**只开了软件过程和产品质量的详细度量标准。**软件工程的产品质量都被开发组织的成员所理解和控制。【“软件过程”“产品质量”“控制”】
- 优化级:加强了定量分析,通过来职过程质量反馈和来自新概念、新技术的反馈使过程能不断地持续地改进。【“新技术”“改进”】
能力成熟度模型继承CMMI
阶段式模型:关注组织成熟度
- 初始的:过程不可预测且缺乏控制
- 已管理的:过程为项目服务
- 已定义的:过程为组织服务
- 定量管理的:过程已度量和控制
- 优化的:集中于过程的改进
连续性模型:关注每个过程域的能力
软件过程模型
喷泉模型
-
喷泉模型是以对象作为驱动模型,适合面向对象的开发方法。
-
克服了瀑布模型不支持软件重用和多项开发活动继承的局限性。
-
喷泉模型使开发过程具有迭代性和无间隙性,各部分之间不存在明显间隙。
优点:
- 提高软件项目开发效率,节省开发时间
缺点:
- 不利于项目管理(由于开发过程中需要大量的开发人员)
- 这种模型要求严格管理文档,使得审核难度加大
统一过程UP模型
用例和风险驱动,以架构为中心,迭代并且增量的开发过程。
四个阶段:
- 初始阶段:专注于项目的初创活动
- 精华阶段:专注于需求分析和架构演进
- 构件阶段:专注于系统的构件,产生实现模型
- 移交阶段:专注于软件提交方面的工作
四个技术阶段终止里程碑:
- 初始阶段:生命周期目标
- 精华阶段:生命周期架构
- 构件阶段:初始运作功能
- 移交阶段:产品发布
敏捷方法
目标是尽可能早的、持续的对有价值的软件的交付。
水晶法
水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论。
并列争求法
使用迭代的方法,其中,把每30天一次的迭代称为一个“冲刺”。
极限编程XP
极限编程:4价值观,5原则,12最佳实践
四个价值观:沟通、简单性、反馈和勇气
五个原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作
十二个最佳实践:
- 计划游戏(快速制定计划、随着细节的不断变化而完善)
- 小型发布(系统的设计要能够尽可能早地交付)
- 隐喻(找到合适的比喻传达信息)
- 简单设计(只处理当前的需求,使设计保持简单)
- 测试先行(先写测试代码,然后再编写程序)
- 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)
- 结对编程
- 集体代码所有制
- 持续集成(可以按日甚至按小时为客户提供可运行的版本)
- 每周工作40个小时
- 现场客户(系统最终用户代表应该全程配合XP团队)
- 编码标准
系统设计
概要设计
-
设计软件系统总体结构
-
其基本任务是采用某种设计方法,将一个复杂的系统按功能划分成模块;
-
确定每个模块的功能;
-
确定模块之间的调用关系:即模块之间传递的信息;
-
评价模块结构的质量。
-
数据结构及数据库设计
-
便编写概要设计文档
-
概要设计说明书
-
数据库设计说明书
-
用户手册
-
修订测试计划
-
评审
详细设计
- 对每个模块进行详细的算法设计
- 对模块内的****数据结构进行设计
- 对数据库进行物理结构设计
- 其他设计
- 编写详细设计说明书
- 评审(对处理过程的算法和数据库的物理结构进行评审)
接口设计是概要设计
系统测试
单元测试
集成测试
编写驱动模块 | 编写桩模块 | |
---|---|---|
自顶向下 | 不用 | 需要 |
自底向上 | 需要 | 不用 |
黑盒测试
黑盒测试技术有等价类划分、边界值分析、错误推测和因果图等
白盒测试
**1.语句覆盖:**每条语句至少执行一次
**2.判定(分支)覆盖:**每个判定表达式“真”值和“假”值起码通过一次
**3.条件覆盖:**使得每一判定语句每个逻辑条件的各种可能的值都是至少满足一次
**4.判断条件覆盖:**判定中每个条件的所有可能的值至少出现一次,并且每个判定本身的判定结果也要至少出现一次
**5.条件组合覆盖:**每个判定中条件的各种可能值的组合都至少出现一次
**6.路径覆盖:**覆盖被测试程序中所有可能的路径
结构化设计
耦合
- 无直接耦合
- 数据耦合:两个模块之间由调用关系,传递的是简单的数据
- 标记耦合:指两个模块之间传递的是数据结构
- 控制耦合:传递的是控制变量
- 外部耦合:模块间通过软件之外的环境联结
- 公共耦合:一个公共数据环境相互作用的那些模块间的耦合
- 内容耦合:当一个模块直接使用另一个模块内部的数据,或者通过非正常入口转入另一个模块内部时
内聚
- 偶然内聚:指一个模块内的各处理元素之间没有任何联系
- 逻辑内聚:指模块内执行若干个逻辑上相似的功能
- 时间内聚:把需要同时执行短动作组合在一起形成的模块
- 过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行
- 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据
- 顺序内聚:指一个模块种的各个处理元素都密切相关于同一功能且必须顺序执行,前一共能的输出就是下一个功能元素的输入
- 功能内聚:模块内的所有元素共同作用完成的一个功能
目前只总结了这一些内容,剩下的内容尽量在明天写出来,最后祝大家都过过过过,同时我也有过!哈哈哈哈