软考基础知识笔记

【1.计算机组成与结构】

【计算机中数据的表示】:

  • 定点数:所有数据的小数点位置是固定的,小数点位置在数据最高位是定点小数,在最低位是定点整数,会有溢出的情况发生
  • 浮点数:阶符,阶码,数符,尾数 组成, 尾数决定精度,阶码决定数据范围,最适合浮点数阶码的数字编码是移码
  • 数的机器码表示:
    • 原码:符号位表示该数的符号,0正1负 。原码中分+0和-0
    • 反码:符号位表示法和原码一样,正数不变,负数要取反(除掉符号位)
    • 补码:正数和原码相同,负数=反码加一,最适合加减运算的数字编码
    • 移码:在数X上增加一个偏移量来定义的,常用于表示浮点数的阶码部分,如果机器字长n,规定偏移量是2的n-1次方,
      移码定义:[X移]=2(n-1次方)+X(-2(n-1)<=X<2(n-1))
  • 校验码
    • 奇偶检验码:通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)偶数(偶校验)
    • 海明码:在数据位中插入k个校验码,通过扩大码距来实现检错和纠错。数据位n 校验位k 2(k次方)-1>=n+k
    • 循环冗余校验码(CRC):利用生成多项式的k个数据位和产生的r个校验码来进行编码,编码长度是k+r

【CPU】:

  • 运算器:执行所有算术运算,执行所有逻辑运算并进行逻辑测试(与或非,值比较,零值测试)

  • 指令寄存器(IR):CPU执行指令的时候,先把它从内存中加载到缓冲寄存器中,再送入IR暂存,指令译码器根据IR的内容来产生各种微操作指令

  • 程序计数器(PC):PC具有寄存信息和计数两种功能,又称为指令计数器。程序执行分为:顺序执行,转移执行。

    • 程序开始执行之前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址,
      执行指令时CPU会自动修改PC内容,确保永远是将要执行的下一条指令地址,顺序执行的话,只是简单的加一,
      转移指令时,指令地址根据当前地址加上一个向前或向后的偏移量得到,或者根据转移指令给出的直接转移地址得到
  • 地址寄存器(AR):AR保存当前CPU所访问的内存单元的地址。是为了解决内存和CPU速度不匹配的问题

  • 指令译码器(ID):指令分为操作码和地址码两部分,由该部分进行解析,协调硬件的运行

    • 时序控制逻辑:控制指令的执行时间顺序
    • 总线逻辑:为多个功能部件服务的信息通路的控制电路
    • 中断逻辑:控制各种中断请求,根据优先级来对中断请求排队。逐个交给CPU执行
  • 寄存器组
    专用寄存器,通用寄存器。上面的都是专用的,通用的可以给程序猿控制(提高速度)

【存储系统】:

  • 分类

    • 读写存储器(RAM):
    • 只读存储器(ROM):
      • 固定只读储存器(ROM)
      • 可编程的只读存储器(PROM)
      • 可擦除的可编程只读存储器(EPROM)
      • 闪速存储器(Flash Memory)
  • 相联存储器 CAM 按内容寻址的存储器

  • Cache:高速缓冲存储器:为了解决内存和CPU速度不匹配的问题而存在

    • 地址映像
      • 直接映像:主存按Cache的大小分成区,每个区的块数和Cache总块数相同,块号相同的映像到Cache中同一个块号那里(多个区中的同号块映像到Cache同号块上)
      • 全相联映像:主存的块调入Cache不受限制(任意位置)
      • 组相联映像:介于全相联和组相联之间
    • 替换算法
      • 随机替换算法 RAND:随机的
      • 先进先出 FIFO : 总是把最先调用的Cache替换出去
      • 最近最少使用 LRU:把当前近期Cache使用次数最少的那块替换出去(先看访问,再看修改状态)
      • 优化替换算法:先执行一次程序统计Cache使用情况,第二次执行程序再选择最优的算法来替换
  • 磁盘

    • 磁盘存储器:由盘片,驱动器,控制器和接口组成。其存储容量有两种指标:格式化容量和非格式化容量。
      • 非格式化容量 = 面数*(磁道数/面)内圆周长最大位密度
      • 格式化容量 = 面数 (磁道数/面)(扇区数/道)*(字节数/扇区)
    • 光盘存储器:。。。

【例题】

内存按字节编址从 A5000H 到 DCFFFH的区域,其存储容量为224KB 若用16K * 4bit 的存储器芯片构成该内存,需要( 28) 片
(因为位数来计算的4bit的话,前面的单位是减半的,所以最好是使用bit来计算)
解析:DCFFFH - A5000H = 38000H (16进制) 转换成二进制 0011 1000 0000 0000 0000b
去掉十个0 单位就成了kb,然后就是2的5,6,7次方求和 得到224KB

【输入输出系统】:

DMA方式:
无需CPU介入,流程:向CPU申请DMA传送,获取CPU允许后,DMA控制器接管系统总线的控制权;过程中不需要CPU结束回到CPU控制

【总线系统】:

  • 内部总线: 用于芯片一级的互联,分为芯片内总线和元件级总线。芯片内总线用在集成多芯片,元件级总线用于一块电路板内元器件的连接
  • 系统总线:插件板一级的互联,用于构成计算机各组成部分(CPU,内存,接口)
  • 外部总线:又称通信总线,用于设备一级的互联,通过该总线与其他设备进行信息与

【加密算法】:

  • 非对称加密的算法中使用了 私钥和公钥,私钥用于解密和数字签名,公钥用于加密和认证证书的真实性
  • 数字证书:CA组织会给用户颁发数字证书, 由CA的私钥进行创建数字证书,数字签名,然后接收方使用CA的公钥来检查其真实性和数字签名
    (检查文件内容是否被篡改)

【补码】:

一般用于浮点数的阶码,简化计算机运算部分设计,因为 符号位可以运算,减作加处理

【访问方式】:

寻址方式访问: 直接 , 顺序 , 随机
内容方式访问:相联存储器

【2.程序设计语言】

【基本概念】:

编译和解释:

  • 编译:词法分析,语法分析,语义分析,中间代码生成,代码优化,生成目标代码(汇编语言/机器语言)
  • 解释:分析部分:词法分析,语法分析,语义分析,然后把源程序翻译成中间代码(常用逆波兰表现形式,树,后缀式,四元,三元式)
    解释部分:对中间代码进行解释运行

KMP模式匹配算法:

	求解模式串 p 中的next 函数值
	next={ 
		0  , j=1;
		max{k|1 和 <-p3 有几个相同k就是几个再加1,没有就是1
		当j=n 比较p1-> 和 <-p n-1 假设有m个相同 那么k=m+1,没有则k=1

参数传递(值传递和引用传递):

高级程序设计语言翻译流程:

词法分析,语法分析,词义分析,中间代码重构,目标代码生成(汇编语言,机器语言)
高级程序设计语言使用的语法一般是 上下文无关法

文法分析:

是编译的一个理论支持
推导和直接推导————规约和直接规约 相对应的
文法G的开始符号推导出一串字符串,直到终结符,称为句型。只含终结符的句型是一个句子
由开始符号,推导出的所有句子的全体是语言

【考点】:正规式和DFA或NFA的转换

DFA:有限自动机
NFA:无限自动机
自动机是用来读取输入的字符串并做对应的操作
自动机 有初态和终态,初态到终态的任意一条路径就是一个完整的字符串


【3.操作系统】

####定义

  • 分类

    • 批处理
    • 实时
    • 嵌入式
    • 个人
    • 网络
    • 分布式
  • 特性

    • 并发
    • 共享
    • 虚拟性
    • 确定性
  • 资源管理

    • 文件管理
    • 存储管理
    • 处理机管理
    • 设备管理
    • 作业管理

进程管理

  • 同步是进程间的直接制约—:进程合作的等待问题

  • 互斥是进程间的间接制约—:进程竞争一个资源(进程独占)

  • PV操作:

    • 实现进程同步,互斥的常用方法
    • P操作,S:=S-1 如果S>=0,执行P操作的线程继续执行,否则阻塞
    • V操作,S:=S+1 如果S>0,执行S操作的线程就会继续,否则从阻塞队列中唤醒一个线程
  • 进程资源图(分辨死锁,线程竞争)灵活辨别是否是安全序列

    • 临界资源值 = 线程数 × ( 最大需求-1) + 1
    • 不发生死锁的临界:即有一个不是阻塞,其他的线程都是只差一个资源(阻塞等待中)

存储管理

  • 分页
  • 分段
  • 页段混合

处理机

  • 图灵机里:有限和无限的区别就是后继码是否唯一,唯一就是有限
  • 要特别注意表达式的写法,一般这种题目看读取字符结尾就可以快速选择答案

设备管理

  • 磁盘读取
    • SCAN 扫描算法 磁头按当前运动方向,至最大/最小再逆序折回读取(一来一返)
    • CSCAN 单向扫描算法 磁头按当前运动方向,至最大/小,立马到最小/大又按初始的运动方向进行读取(两个单向)
    • 注意:当柱面是一样的时候,比较扇区的顺序

文件管理

  • 位视图存储

    • 概括:用某号物理块除以字长得到第几个字,容量就要再除以物理块的大小再除字长
    • 系统字长x,物理块大小y,那么第z号物理块需要第z/x个字来描述(注意是字长的区间)。容量为w(G) 需要 w×1024/y/x个字来表示
  • 文件索引

    • 分直接索引项,一级间接索引项,二级间接索引项
    • 公式
      • a位直接,b位一级,c位二级,数据块和索引块大小是dk,每个地址项是e字节,求逻辑块号X区间:
        • 直接 地址索引:0 <= X < a(0开始计数)
        • 一级 地址索引:a <= X < d×1024/e×b+a
        • 二级 地址索引:d×1024/e×b+a <= X < (d×1024/e)^2×c+d×1024/e×b+a
    • 指向的内存大小:
      • 直接:直接数×数据块大小 a×d
      • 一级:一级数×索引块大小/地址项大小×数据块大小 b×d/e×d
      • 二级:二级数×(索引块大小/地址项大小)^2 ×数据块大小 c×(d/e)^2×d
  • 路径问题

    • 全文件名,从根目录开始加上文件名 eg: \d\d\f.txt
    • 相对路径从当前路径(当前工作目录)开始的路径 eg:d\
    • 绝对路径从根目录开始的路径不含文件名 eg: \d\d\

作业管理

  • 调度级别:高级调度(作业调度),中级调度(交换调度),低级调度(进程调度)
  • 优先级调度算法:将给出的图看成树,左上为根。同层就是并发,父子关系就体现了优先级

【4.软件工程基础知识】

  • 软件生存周期

    • 可行性分析
    • 需求分析:功能,性能,数据,界面
    • 概要设计:分模块,定功能和关系,详细的数据库设计,数据结构设计
    • 详细设计:模块的详细算法设计,数据库的物理设计
    • 程序编码:
    • 软件测试
    • 维护:纠错维护,改错维护
  • 软件生存周期模型

    • 瀑布模型:线性顺序模型,适用于对需求有完善了解,开发周期快
    • 原型/演化模型:通过原型来不断演化
    • 螺旋模型:综合了瀑布和原型的优点,增加了风险分析
    • 增量模型:先发布核心产品,然后根据需求不断增量,调试,直到完善
    • 喷泉模型:面向对象开发过程,以用户需求为动力,以对象为驱动的模型,使开发具有迭代性和无间隙性
    • V模型:瀑布模型演化而来,强调了软件开发过程中若干个测试级别。
  • 项目管理

    • 启动
    • 度量
    • 估算
    • 风险分析
    • 进度安排
    • 追踪控制

成本估算

  • 估算策略
    • 自顶向下 先确定整体时间,再按模块,分配时间
    • 自底向上 按模块分析需求时间,再向上累积得出全部时间
    • 差别估算 和类似项目比较
  • 估算方法
    • 专家估算 :专家一人确定
    • 类推估算 :自顶向下是类似项目总体参数对比,自底向上是两个相似的功能单元对比
    • 算式估算 :上面两种带有主观性,这个是为了消除主观性
  • 成本估算模型
    • IBM 基于60项目的静态模型
    • Putnam(普特南)模型:动态多变量模型
    • COCOMO模型:
      • 基本COCOMO模型 静态单变量模型
      • 中级COCOMO模型 静态多变量模型
      • 详细COCOMO模型 将系统分为系统,子系统,模块三层次,
        包含了中级并考虑了软件开发流程中每一步的成本驱动影响

  • 风险分析

    • 风险识别 :
    • 风险评估 :成本,进度,性能是三种典型的风险参考水准
    • 风险控制 :
    • 风险策略管理
      • 避免风险
      • 控制风险
      • 分散和中和风险
      • 转移风险
  • 进度管理

    • Gantt 甘特图:描述了任务的开始和结束,并行关系,但是不能体现依赖关系
    • PERT技术:
      • 关键路径是耗时最长的路径
      • 任务松弛时间 = 最迟开始时间 - 任务最早开始时间

      最迟开始时间 = 从终点往回推,用最长时间(关键路径耗时)减去终点到该任务的时间

      • 任务的延时,推迟问题。应当计算由于各种原因引起的推迟路径,计算出总时间,减去原时间,不能只看一段。
  • 文档管理

    • 高质量文档
      • 针对性 分清阅读对象,来适应他们需求
      • 精确性 确切的语句,不能有二义性
      • 清晰性 简明,加以图表
      • 灵活性 各个软件项目,规模复杂性有很多差别,但是能一律看待
  • 人员管理

    • 主程序员组 :住程序员,后备,资料员,若干程序员
    • 无主程序员组 :相互平等,调动积极性,但是权责问题不明确
    • 层次式程序员组 :组长,高级程序员,普通程序员。适合大型项目
  • 软件过程管理

    • UP的结构
      • 初始阶段: 建立商业案例,确定项目边界
      • 精化阶段: 分析问题领域,建立体系结构基础
      • 构建阶段: 剩余的构建和功能开发,集成为产品,此时是beta版
      • 移交阶段: 测试,基于反馈调整,交付系统

敏捷开发方法

  • 极限编程
    • 将项目细分小模块,迭代编写,
    • 先测试再编程
    • 结对编程
  • 水晶法 : 每一个项目都要有一套不同的策略和方法
  • 并列争求法 :该方法使用迭代的方法,将30天一次的迭代,称为冲刺
  • 自适应软件开发方法
    • 1.一个使命作为指导
    • 2.特征视为客户的关键点
    • 3.过程中的等待很重要
    • 4.变化视为实际的调整,不看做改正
    • 5.确定的交付时间,迫使开发人员考虑每一个版本的关键需求
    • 6.风险也在考虑范围内

  • CMM 能力成熟度模型
    • 五个级别:
      • 初始级
      • 可重复级
      • 已定义级
      • 定量管理级
      • 优化级
    • CMMI 的任务是将已有的CMM模型结合在一起,构造为集成模型
  • 程序流程图
    • 简单路径:个人看法,看到选择结构就加一,初始是一个路径(输入到输出)
    • McCabe度量法:V(G)=m-n+2p
      • V(G):路径复杂度
      • m:所有流程线
      • n:所有节点数
      • p:该有向图的强联通分量(图是有几块组成)

  • ISO/IEC软件质量模型中
    • 可靠性:
      • 成熟性,容错性,易恢复性,兼容性
    • 可维护性:
      • 易分析性:为 判定软件修改所需的努力
      • 易改变性:进行修改,适应环境变化所需的努力
      • 稳定性:与修改造成的风险后果相关
      • 易测试性:与确认修改所需的努力。

【5.系统开发与运行】

  • 软件体系结构风格分类

    • (1)数据流风格:批处理序列;管道/过滤器
    • (2)调用/返回风格:主程序/子程序;面向对象风格;层次结构
    • (3)独立构件风格:进程通讯;事件系统
    • (4)虚拟机风格:解释器;基于规则的系统
    • (5)仓库风格:数据库系统;超文本系统;黑板系统
  • 结构化分析和设计

    • 结构化分析方法: 是基于数据流的方法
    • 数据流图 DFD
      • 数据流:箭头表示,数据的流向
      • 加工:圆或圆框,对数据进行处理的单元接受输入数据,产生输出
      • 数据存储:信息的静态存储
      • 实体:矩形,分数据源(源头),数据潭(终点)
    • 数据字典
      • 是以准确的方式定义所有数据流和数据存储,含三类:数据流条目,数据存储条目,数据项条目
    • 加工逻辑描述
      • 也称 小说明,用来描述加工的,加工逻辑即 做什么
  • 数据流图的设计原则

    • 数据守恒原则:任何一个加工,其所有输出的数据都是从输入数据流中获得
    • 守恒加工原则:对同一个加工来说,输入输出的名字必须不同,即使组成成分是一样的
    • 每一个加工必须有输入流和输出流
    • 外部实体和数据存储之间,自身也是,!不能有数据流!
    • 父图与子图平衡原则:父图子图的输入输出流,必须一致,该原则不存在于一张图
    • 数据流必须和加工有关,必须经过加工
  • 数据流图的顶层数据流图,描述了系统的输入和输出,只有一个加工表示系统

【模块】

  • 模块独立

    • 耦合:模块之间的紧密程度
    • 聚合:模块内部各元素之间联系的紧密程度
  • 内聚类型(由高到低)

    • 功能内聚:完成一个单一的功能,各个部分缺一不可
    • 顺序内聚:处理元素相同,而且必须顺序执行
    • 通信内聚:所有处理元素集中在一个数据结构的区域上
    • 过程内聚:与处理元素相关,而且必须按待定的次序执行
    • 瞬时内聚:所包含的任务必须在同一时间间隔内执行(初始化模块)
    • 逻辑内聚:完成逻辑上相关的一组任务
    • 偶然内聚:完成一组没有关系或松散的任务
  • 耦合类型(由低到高)

    • 无直接耦合:两个模块没有任何关系
    • 数据耦合:两个模块间只是参数传递简单数据
    • 标记耦合:两个模块都只和一个数据结构有关
    • 控制耦合:两个模块间传递的信息中有控制信息
    • 公共耦合:两个或多个模块,通过引用一个公共区的数据(数据结构和变量)而发生作用
    • 内容耦合:最高的耦合度
      • 当一个模块使用另一个模块内部的控制和控制信息等数据;
      • 一个模块直接转移到另一个模块;

【测试方法】

  • 白盒测试:由低到高

    • 语句覆盖
      • 冒泡排序只要一个用例就可以达到语句覆盖
    • 判定覆盖
    • 条件覆盖
    • 判定/条件覆盖
    • 条件组合覆盖
    • 路径覆盖: 使用 McCabe度量法 计算路径复杂度,一个路径一个测试用例。
      • 但是折半查找最少两个,和流程图无关,因为结果是互斥的
  • 黑盒测试

    • 等价类划分:将所有可能输入的数据划分为若干子集,然后从每一个子集中选取少数具有代表性的数据作为测试用例
    • 边界值分析
    • 错误猜测
    • 因果图
  • 回归测试:修改了旧代码后,重新测试,确认修改没有引入其他错误或导致原有代码错误

  • 软件测试步骤:。。。。。。

  • 单元测试,集成测试,确认测试,系统测试


  • 软件维护
    • 改正性维护:修复错误 约占20%
    • 适应性维护:适应环境 约占25%
    • 完善性维护:增加功能,提高性能 约占50%
    • 预防性维护:为以后增加功能准备

【6.网络与多媒体基础知识】近几年没有考题

  • SO/OSI七层网络体系结构 1979年建立

    • 应用层
    • 表示层
    • 会话层
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  • TCP/IP协议

    • 应用层
    • 传输层
    • IP层
    • 网络接口层:包含了OSI模型中的数据链路层,物理层
  • 【网络协议】:

    • LAN模型:IEEE802局域网标准,定义了物理层和数据链路层,数据链路层又分两个子层

    • 1. 物理层

    • LLC : 提供两种控制类型,面向连接,非连接

    • MAC : 控制对传输介 * TCP/IP协议簇质的访问

    • 2. 网络接口层协议:负责管理为物理网络准备数据

    • IP(网络层):网络之间互联的协议

    • ARP/RARP(网络层):硬件MAC到IP/IP到硬件MAC的转换协议

    • ICMP(网络层):网际控制报文协议

    • TCP(传输层):传输控制协议 ,可靠的面向连接的服务

    • UDP(传输层):用户数据包协议 ,不可靠的面向无连接的

    • 应用层协议:NFS,Telnet,SMTP,DNS,SNMP,FTP


【硬件设备】

  • 物理层互联设备

    • 中继器 Repeater : 常用于两个网络节点之间物理信号的双向转发工作
    • 集线器 Hub :对接收到的信号进行再生整形放大,以扩大网络传输距离(是相当于将各个主机直接联通,在逻辑上构成了一个共享的总线,所以就构成了一个广播域,一个冲突域)
  • 数据链路层互联设备

    • 网桥 Bridge :扩展网络的距离和范围,提高网络性能,可靠性,安全性
    • 交换机 Switch :基于mac地址的识别,有记录mac地址的地址表(为通信的两台主机建立专用的通道,所以是交换机的没一个接口都是自己的一个冲突域,所有接口和主机构成了一个广播域)
  • 网络层互联设备

    • 路由器 Router :连接多个逻辑上分开的网络()
  • 应用层互联设备

    • 网关 GateWay :当连接不同类型,并且协议差别大的网络时,要选用网关设备 功能:协议转换,数据分组。

  • DHCP 客户端可以从DHCP服务器,获得DHCP服务器的IP地址,DNS服务器的IP地址,默认网关的IP地址,但是不能获得WEB服务器的IP地址。
  • NAT桥接:内网主机发送数据时,NAT将源IP从内网转换成外网址。接受数据时将目的IP(外网)转换成内网网址

  • 安全认证
    • PPP的NCP可以承载多种协议的三层数据包
    • PPP使用LCP控制多种链路的参数(建立,认证,压缩)
  • PPP中的安全认证类型
    • pap认证 是通过二次握手建立认证(明文不加密)
    • chap认证 是挑战握手认证,三次握手建立认证(密文采用MDS加密)
    • PPP的双向认证 采用的是chap的主验证风格
    • PPP的加固认证 采用的是两种 (pap chap)同时使用
  • 无线接口标准 :国际电信联盟,在2000年5月 确定W-CDMA,CDMA2000,TDS-CDMA三大主流无线接口标准
    • 中国独自制定的3G标准是 TD-SCDMA

  • IP地址
  • IP地址全0是指任意网络,全1是指当前子网的广播地址

【网络安全】

  • 防火墙技术分类
    • 包过滤型防火墙
    • 代理服务器型防火墙
    • 监测型防火墙
  • 防火墙体系结构
    • 包过滤路由器结构
    • 双穴主机结构
    • 屏蔽主机网关结构
    • 被屏蔽子网结构
  • 防火墙的工作模式
    • 透明模式
    • NAT模式
    • 路由模式
  • 防火墙的安全策略
    • 禁止外部网络ping内部网络
    • 禁止外部网络非法用户访问内部网络和DMZ区应用服务器
    • 禁止外部网络用户对内部网络HTTP、FTP、TELNET、TRACEROUTE、RLOGIN等端口访问
    • 禁止DMZ区的应用服务器访问内部网络
    • 允许外部网络用户使用DMZ区的应用服务:HTTP,HTTPS,POP3
    • 允许DMZ区内的工作站与应用服务器访问Internet
    • 允许内部企业用户访问DMZ区的应用服务:DNS,POP3,SMTP,HTTP,HTTPS,FTP等
    • 允许内部企业网络访问或通过代理访问外部网络

  • 模拟和数字信号的转换:A/D是模拟到数字和D/A 数字到模拟

  • 声音数字化

    • 采样:把时间连续的模拟信号 转换成时间离散幅度连续的信号
    • 量化:把幅度上连续取值的每一个样本,转换成离散值表示,量化也称A/D转换
    • 编码:数据压缩和编码
  • 图形和图像

    • 色彩三要素:亮度,色调,饱和度
    • 三基色原理:红 绿 蓝
    • 彩色空间
      • RGB彩色空间:
      • CMY彩色空间:
      • YUV彩色空间:
    • 图形数据的表示
      • 矢量:用指令描述构成一幅图像
      • 位图:使用像素点来描述
    • 图像的属性
      • 分辨率:像素数目
      • 图像深度(值域):确定了图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。 它决定了彩色图像中的可能出现的最多颜色数,或者灰度图像中的最大灰度等级
      • 真彩色和伪彩色:真彩色是像素值中存有RGB三个分量值,伪彩色是将像素值作为地址索引,在彩色查找表中查找这个像素实际的RGB值
      • 图像的压缩编码:有损(JPEG)和无损压缩
  • 图像文件格式

    • BMP:windows采用的图像文件格式,采用位映射存储格式,不压缩
    • GIF:无损压缩算法,可以显示简单动画
    • TIFF:
    • PCX:
    • PNG:作为GIF的替代品而开发的,压缩采用的是LZ77无损压缩算法
    • JEPG:有损压缩算法,压缩比例大
    • Targe:
    • WMF:只在windows中使用,保存的是函数调用信息
    • EPS:
    • DIF:AutoCAD中常采用
  • 图像的存储

    • 例题:使用150 DPI扫描一幅3×4英寸的图,原始24位的图像占用多少字节
      • 150DPI 表示每英寸150像素点 所以 150×150×3×4×24/8 得到占用字节数

动画与视频

  • 彩色电视的制式:NTCS和PAL,前者用于日美加拿大,墨西哥等,后者用于中国,欧洲,中东
  • 视频文件格式:GIF,FLC/FLI,AVI,.MOV/QT
  • 视频压缩标准:H.261,JEPG,MPEG,DVI

媒体类型:

  • 感觉媒体:使人感觉得到的媒体,音乐,图像等
  • 表示媒体:为加工处理传输感觉媒体而来的一种媒体,例如文本编码,图像编码,声音编码
  • 表现媒体:进行信息的输入输出的媒体:键盘,鼠标,扫描仪,话筒
  • 存储媒体:存储表示媒体的物理介质,硬盘,光盘
  • 传输媒体:电缆,光缆等
  • 通常没有特殊说明的情况下,信息媒体就是指感觉媒体

【7.数据库技术,基础】

关系模式(不是指表,但是是包含了表,在表的层次以上)

  • 一个关系模式应该是五元组 R(U,D,DOM,F)
    • R 符号化的元组语义
    • U 一组属性
    • D 是属性组U中的属性所来自的域
    • DOM 为属性到域的映射
    • F 为属性组U上的一组数据依赖
  • 一般使用三元组 R
  • 当且仅当 U 上的一个关系r满足F时,r称为关系模式R的一个关系。

【数据依赖】

  • 数据依赖是一个关系内部属性与属性之间的一种约束关系
  • 1.函数依赖 FD
    • 若U的子集X,Y,X和Y形成唯一标识,X函数确定Y,Y函数依赖于X。记X -> Y
    • 非平凡的函数依赖:X->Y 但是Y不属于X
    • 平凡的函数依赖:X->Y Y属于X
    • X 称为该函数依赖的决定属性,决定因素
    • X->Y 并 Y->X 则 X<–>Y
  • 2.多值依赖 MVD
  • 1.1 完全函数依赖:X->Y 并且X的真子集D 都存在子集 D不能->Y。
  • 1.2 部分函数依赖:X->Y 但是Y不完全函数依赖于X 。
  • 1.3 传递函数依赖:X->Y(Y不属于X),Y不能->X, Y->Z(Z不属于Y)则称Z对X传递函数依赖

【码】

  • 设 K是R中的属性或属性组,K能完全函数依赖推出U,则K是R的候选码。
  • 如果上面的K是部分函数依赖,则称K是超码,候选码是最小的超码
  • 主属性:被包含在任一候选码中的属性
  • 非主属性:主属性的补集
  • 全码:所有属性一起构成了码
  • 外码:关系模式R中属性或属性组 X 不是R的码,但是X是另一个关系模式的码,则X是外码

【范式】 应用于关系模式R

  • 1NF:每一个分量都是不可分的数据项
  • 2NF:R满足1NF,且每一个非主属性完全函数依赖任何一个候选码
  • 3NF:R满足1NF,R中不存在码X,属性组Y以及非主属性Z(Z不属于Y) 使得X->Y Y->Z Y不->X 则称R是满足3NF(取消了传递函数依赖)
  • BCNF:满足1NF,若X->Y且Y不属于X时,X必含有码,则R是满足BCNF
    • 所有非主属性对每一个码都是完全函数依赖
    • 所有主属性对每一个不包含它的码也是完全函数依赖
    • 没有任何属性完全依赖于非码的任何一组属性

闭包

  • 在关系模式R中为F所逻辑蕴含的函数依赖的全体叫做F的闭包
  • 设F是属性集U上的一组函数依赖,X,Y属于U,={A|X->A} 称为属性集X关于函数依赖集F的闭包

模式分解

  • 具有无损连接性(粗略概述:不减少字段和改变元组)
  • 要保持函数依赖(子模式里满足依赖关系)
  • 既要保持函数依赖性,又要具有无损连接性
  • 通过使用模式分解能提高关系模式能满足的范式等级

【8.算法与数据结构】

  • 考点:
    • 排序算法,查找算法,常用算法,二叉树,图,模式匹配,线性结构,栈,队列,时间复杂度

  • 串的模式匹配:

    • Brute-Force算法
    • KMP算法
  • 堆串的问题

    • 字符串分串名,串值
      • 串名使用符号表存储
      • 串值使用堆串存储方法
  • 循环队列求下标记得减去总长再对总长取余

  • 二叉树的转换:


【9.面向对象技术】

  • 面向对象 = 对象+分类+继承+用消息通信
  • 对象:对象名,属性,操作
    • 特性:清晰的边界,良好定义的行为,可扩展性
  • :对象的抽象
  • 消息:对象之间通信的一种构造(对象调用方法)

三大特性

  • 继承:可分单重继承,多重继承
  • 多态
    • 参数多态:指同一个对象,函数,过程能以一致的形式用于不同类型
    • 包含多态:子类型化,即一个类型是另一个类型的子类型
    • 过载多态:同一变量被用来表示不同的功能
    • 强制多态:通过语义操作,把一个变元的类型加以变换,以符合函数要求,不强转就会使得函数错误
  • 封装:目的是将定义和数据分离,保护数据不被对象使用者直接存取

  • 重置(覆盖):指在子类中改变父类中既有函数行为的操作,通过一种动态绑定是的子类继承父类的前提下,用适合自己要求的实现去覆盖父类的实现
  • 重载:子类保留父类的函数名,但使用不同类型的参数
  • 动态绑定:以函数调用和函数本体的关联为基础,绑定动作在运行期才根据对象类型运行。也称后期绑定(应该就是根据参数来判断实例化什么对象或执行对应的方法)
  • 静态绑定:编译过程中,将函数调用与响应调用所需的代码结合的过程

关联关系:

  • 泛化 : 类和类之间的继承关系,接口之间的继承关系,类和接口的实现关系,泛化关系是从子类指向父类
  • 关联 : 当一个对象的实例和另一个对象的实例存在固定的对应关系时,关联体现的是两个类或者类和接口之间语义级别的一种强依赖关系,可以单或双向。
  • 聚合 : 体现的是整体与部分的关系,整体与部分之间是可分离的,他们各自有各自的声明周期,部分可以属于多个整体对象,也可以为多个整体对象共享
  • 组合 : 也称强聚合,整体和部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束

面向对象分析(OOA):

  • 1.分析问题域,建立用例模型。
  • 2.发现和定义对象和类
  • 3.识别对象的内部特征
  • 4.识别对象的外部联系
  • 5.识别对象之间的交互

  • OOA模型(面向对象分析):

    • 5个层次
      • 主体层
      • 对象类层
      • 结构层
      • 属性层
      • 服务层
    • 5个活动
      • 标识对象类
      • 标识结构
      • 定义主题
      • 定义属性
      • 定义服务
  • OOD模型(对象建模技术):

    • OOA的五个层次和五个活动贯穿在OOD中
    • 四个活动构成:
      • 设计问题域部件:OOA的结果就是OOD的问题域部件
      • 设计人机交互部件
      • 设计任务管理部件:识别事件驱动任务
      • 设计数据管理部件:目的是隔离数据管理方案对其他部件的影响
  • 【OMT】

    • OMT模型
      • 对象模型
      • 动态模型
      • 功能模型
      • 模型关系
    • OMT步骤
      • 分析
      • 系统设计
        • 将系统分解成子系统
        • 标识问题中固有的并发性
        • 将子系统分配到处理器和任务
        • 选择数据存储管理的手段
        • 处理对全局资源的访问
        • 选择软件中控制的实现
        • 处理边界条件
        • 设置折中的优先级
      • 对象设计:设计者必须履行一下步骤:
        • 综合考虑三个模型以获得类上的操作
        • 设计实现操作的算法
        • 优化数据访问路径
        • 实现与外部交互的控制
        • 调整类结构以增加继承
        • 设计关联
        • 确定对象表示
        • 将类和关联包装到模块中
      • 实现

  • 【UML】
    • 事物
      • 结构事物:模型的静态部分,描述概念或物理元素,例如:类,接口,协作,用例,主动类,构件,节点
      • 行为事物:UML模型的动态部分。例如:交互(消息,有向线段),状态机(对象或交互的状态,圆角矩形)
      • 分组事物:模型分解组成的“盒子”,例如:包(概念性,仅存在开发阶段,文件夹图形)
      • 注释事物:UML的解释部分,例如:注解
    • 视图
      • 分为三个视图域:结构分类动态行为模型管理
      • 类图(Class Diagram):展现了一组对象,接口,协作以及之间的关系,作为静态视图,还可以包含依赖,关联,泛化,实现,注解,约束关系等
      • 用例图(Use Case Diagram):展现了一组用例,参与者以及两者的关系。对系统的静态用例视图建模时,可以分两种方法:对系统的语境建模,对系统的需求建模
      • 构件图(Component Diagram):展现了一组构建之间的组织和依赖,通常将构建映射一个或多个类、接口或协作
      • 部署图(Deployment Diagram):体系结构的静态实施视图,与构件图相关,通常一个节点包含一个或多个构件,类似包图
      • 状态图(statechart Diagram):展现了一个状态机,它由状态,转换,事件和活动组成,一般是分析一个对象,强调对象行为的事件顺序。
        • 状态图中的状态包括状态名、内部活动、内部转换、入口和出口动作等部分
      • 活动图(activity Diagram):特殊的状态图,展现了系统从一个活动到另一个活动的流程
      • 交互图 :顺序图和协作图均被称为交互图
        • 顺序图强调消息时间序列
        • 系统的动态方面建模
      • 对象图 (Object Diagram):静态的实例,一组对象以及它们之间的关系 一般包括对象和链

设计模式【主要分三类】

1.创建型设计模式
  • 抽象了实例化过程,它们帮助一个系统独立于如何创建,组合和表示它的那些对象。
  • 一个类创建型模型使用继承改变被实例化的类,而一个对象创建型模型将实例化委托给另一个对象
  • 将一组固定行为的硬编码转移为定义一个较小的基本行为集,这些行为可以被组合成任意数目的更复杂性的行为。这样创建有特定行为的对象要求的不仅仅是实例化一个类
    - 生成器 Builder,是一种对象构建模式,模式通常包含Builder,ConcreteBuilder。Director 和 Product四部分
    - 
2.结构型设计模式

适配器(Adapter)模式,桥接(Bridge)模式,组合(Compontent)模式,代理(Proxy)模式,享元(Flyweight)模式,Facade模式,装饰(Decorator)模式,命令(Command)模式,状态(State)模式

  • 结构型设计模式涉及如何组合类和对象以获得更大的结构
  • 结构型模式采用继承机制来组合接口或实现。
  • 结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能

  • Composite模式
    它将对象组合成树形结构以表示“部分-整体”
  • Flyweight模式
    该模式为共享对象定义了一个结构,强调对象的空间效率,自由共享
  • Facade模式(外观模式)
    描述了如何用单个对象表示整个子系统(外部与其内部通信必须通过一个统一的对象进行交互),模式中的facade用来表示一组对象,
    外观设计模式提供一个高层次的接口是的子系统易于使用。
    适用情况:

1.为复杂的子系统提供一个简单的接口
2.客户程序与抽象类的实现部分有很大依赖性
3.构建一个层次结构的子系统时,适用外观模式定义子系统每层的入口

  • Bridge模式 将对象的抽象和实现分离,从而可以独立的改变他们。
  • Decorator模式
    描述如何动态地为对象添加职责,模式采用递归方式组合对象,从而允许添加任意多的对象职责。
3.行为设计模式
  • 行为设计模式涉及算法和对象间职责的分配,行为模式描述对象和类的模式以及其通信模式
  • 行为模式使用继承机制在类间派发行为

【常见设计模式】:

  • 适配器 模式(Adapter):适配器是的一个接口与其他接口兼容,从而给出了多个不同接口的同一抽象。一般分类结构和对象结构两种:
  • 类适配器:适配器类继承被适配类,实现某个接口,在客户端类中可以根据需求来建立子类
  • 对象适配器:适配器不是继承,是使用直接关联,或称委托方式
  • 中介者 模式:包装了一系列对象相互作用的方式,使得对象间的相互作用是独立变化,但是与中介者紧密联系
  • 观察者 模式 Observer:一个目标物件管理相依于它的管理物件,并且在它本身的状态发生改变时发出通知,这种模式常用来实现事件处理系统。(也称发布-订阅,模型-视图,源-收听者模式)
    • 观察者(接口):更新信息,展示信息,给 被观察者(形参) 注册上观察者
    • 被观察者(接口):发出更新通知(遍历观察者集合并注册),当自身发生改动时发出通知消息

  • 单例模式 Singleton 一个类只有一个实例易于外界访问
  • 装饰器模式 创建一个新类为某一个类动态添加新功能或增强原有的功能,避免代码重复或具体子类的数量增加

  • 策略模式 优点:灵活添加同一问题的不同解决方案
  • 状态模式 允许对象在内部状态时变更其行为,并且修改其类:
    • 环境类(Context):定义客户感兴趣的接口,维护一个子类的实例,这个实例就是当前状态
    • 抽象状态类(State):定义一个接口以封装与Context的一个特定状态相关的行为
    • 具体状态类(concreteState):每一子类实现与Context的一个状态相关的行为
    • 例题:纸巾售卖机:有四个状态!
      • 【状态图】
      • 【类图】
    • 例题:TCP连接状态:
  • 命令模式 command
    • 行为请求者 与 请求实现者 之间 紧耦合 的关系
    • 将一个请求封装成一个对象,从而可用不同的请求对客户进行参数化,支持可撤销的操作
    • 下例:使用了接口来实现多态,子类是多个的,方法同名并功能多样的
      • 代码复用好,代码结构清晰【参数类表最好不要出现标志变量,最好分离出另一个方法】

  • 桥接模式 : 便于扩展,实现与抽象分离(解耦)对一个模块修改不影响别的模块

  • 抽象工厂模式 : 提供一个创建一系列相关实例相互依赖的对象。
    • 当一个系统要独立于它的产品的创建,组合和表示时
    • 当一个系统要由多个产品系列中的一个来配置时
    • 当需强调一系列相关的产品对象的设计以便进行联合使用时
    • 想提供一组对象而不显示他们的实现过程,只显示他们的接口

  • 原型模式 : 对象创建模型: 允许一个对象创建另一个可定制的对象,封装实例化细节。
    • 实现Cloneable接口(Java自带接口),重写clone方法(在这里实例化对象,new或反射,按需求来修改)
    • 该例,组合关系,在对方使用clone来代替构造器来实例化对象,并做好了绑定操作,大量减少代码量

  • 生成器模式



【10.标准化与知识产权】

标准化

  • 标准分类
    • 按适用范围:国际标准,国家标准,行业标准,企业标准,项目标准
    • 按性质分类:技术标准,管理标准,工作标准
    • 对象和作用:基础标准,产品标准,方法标准,安全标准,卫生标准,环境保护标准,服务标准
    • 法律约束力:强制性标准和推荐标准(一般是加上T)
  • 知识产权:分两类
    • 工业产权
      • 专利,商标,厂商名称,服务标记,实用新型,工业品外观设计,原产地名称,制止不正当竞争等内容
    • 著作权:指作者对其创作的作品享有的人身权和财产权。人身权包括发表权,署名权,修改权和保护作品完整权等;财产权包括作品的使用权和获得报酬权
    • 知识产权的特点:
      • 无形性,双重性,确认性,独占性,地域性,时间性
  • 计算机软件著作权
    • 主体和客体:主体是指享有著作权的人,客体是计算机程序及其相关文档
    • 受保护的条件
      • 独立创作:开发者独立开发完成,复制和抄袭的作品不得获得著作权
      • 可被感知:作品应当是作者的创作思想在固定载体上的一种实际表达
      • 逻辑合理
    • 著作权的权利:
      • 计算机软件著作人身权:发表权和开发者身份权
      • 财产权:使用权,复制权,修改权,发行权,翻译权,注释权,信息网络传播权,出租权,使用许可权和获得报酬权,转让权
      • 软件合法持有人的权利:
        • 根据需要把软件装入计算机等储存设备中;根据需要进行必要的复制;为了防止复制品损坏,制作备份复制品;为了把该软件安装于计算机做的必要的修改
    • 计算机软件著作权的保护期:自开发完成之日计算 50年

【11.专业英语】


【12.数据流图】

  • 主要 看细心,业务逻辑不能分析错误
  • 要看清楚所有出现的业务名词或 对存储的读写 不能有一个遗漏
  • 确定数据流的起点和终点,一般存储都是叫做**表 子图里 存储必须要有读和写 缺一不可
  • 注意实体是不能写错的,一般是人(某职位)

【13.UML设计与分析】

  • 题目套路:

    • 第一题:读懂题目,搞定逻辑和业务流程,填补类图,填多重度等(类模型看参数及关联推断类名和关系(特殊的:聚合,泛化),切记不能随便填类名)
    • 第二题:填流程图,用例图(突破口:特殊关系:泛化,组合),等
    • 第三题:优化,分析,模式优化,添加功能,模式等(概念题
  • 注意 书写规范,看清题意

  • 候选类的选择 使用了良性原则:

    • 不会在实际中造成危害的依赖关系,都是良性依赖
  • 候选类的删除 使用了接口隔离原则(ISP):

    • 不应该强迫类实现依赖于他们不同的方法(不需要的方法不实现)

图形元素讲解

  • 用例图:
    • 消息传递:实线箭头
  • 关系(类图)
    • 依赖:虚线箭头 (线上方可能注明:include-包含,extend-扩展,bind-绑定,friend-友元)
    • 关联:实线(双向)实线箭头(单向) 看成数据通道
      • 聚合:空心菱形实线: 对象做另一个对象的成员 菱形是整体方
      • 组合:实心菱形实线:
    • 泛化:实线空心箭头(可理解为继承)
    • 实现:虚线空心箭头
  • 多重度:考虑时要从对方的角度考虑自己的数量应该是什么范围
    • 【0…1】 : 0或1
    • 【 1 】 :只有一个
    • 【0…*】 : 0或更多
    • 【 * 】 : 0或更多
    • 【1…*】 :1个或更多


元素说明
关系图
关联图
示例图
顺序图
顺序图和用例图
状态图
活动图
活动图关系
构件图
部署图
部署图关系


外链博客:

  • 一.用例图_1 || 用例图_2
  • 二.类图_1 || 类图_2
  • 三.序列图
  • 四.状态图
  • 理解九种图

状态图:

UML概念图

  • 有点像ER图,也是描述了实体之间关系(有一对多等关系),有面向对象特有的关系

【14.数据库设计】

  • 考试套路:
    • 1.补全ER图
    • 2.补全关系模式指明主外键
    • 3.添加一个实体,或修改关系模式。或者优化
  • 考点:
    • ER图的补充,主外键的确定,业务关系的正确具体分析,模式优化(模式分解)
    • 注意:给出的ER图是不全的,可能还会少实体,关系
    • 一定要仔细检查大段的说明文字,不能遗漏关系,字段等
      ER图

【15.数据结构与算法】


【16.Java程序设计】

  • 一般考的是设计模式直接应用于代码上,一年一个模式:要注意根据对应的设计模式的精神,来考虑代码的安排
  • 特别注意abstract的使用,在方法,类的修饰上
  • 写属性不要忘记数据类型,权限修饰符最好写上
  • 子类实现类来推断出,上层类/接口的方法和具体实现

你可能感兴趣的:(软考,编程规范,设计模式)