软考知识点总结
置顶 2019-10-15 12:24:19 Turing·
计算机体系结构
计算机体系结构由结构、组织、实现、性能四个基本方面组成。
- 结构指计算机系统各种硬件的互联。
- 组织指各种部件的动态联系与管理。
- 实现指各模块设计的组装完成。
- 性能指计算机系统的行为表现。
这个定义发展了Amdahl的功能特性思想,这里的计算机系统又称为体系结构的一个子集。
计算机体系结构、计算机组织和计算机实现三者的关系:
- 计算机体系结构是指计算机概念性结构和功能属性
- 计算机属性是指计算机体系结构的 逻辑实现、包括及其内的数据流和控制流的组成以及逻辑设计等(常称为计算机组成原理)
- 计算机实现是指计算机组织的物理实现
指令系统和计算机体系结构
程序的局限性表现在时间局部性和空间局部性
- 时间局部性是指:如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行
- 空间局部性是指一旦程序访问了某个存储单元,则不久的将来,其附近的存储单元也可能被访问
RISC和CISC
- RISC:寻址方式单一,多寄存器寻址,指令长度固定,种类少,增加寄存器数目以减少访问次数,用硬布线电路实现指令解码,快速完成指令译码
- CISC:指令系统复杂庞大,绝大多数为微程序控制
CPU相关寄存器:
- 指令寄存器IR:用来保存当前执行的指令,DR缓冲寄存器→IR
- 地址寄存器AR:用来保存当前CPU所访问的内存单元的地址。
- 程序计数器PC:程序的第一条指令所在的内存单元存入PC,PC加1,保持存的是要执行的下一条指令的地址
寻址方式:
- 立即寻址:操作数就包含在指令中
- 直接寻址操作数就存放在内存单元中,指令中直接给出操作数所在内存单元的地址
- 寄存器寻址:操作数放在某一寄存器中,指令中给出存放操作数的寄存器名
- 寄存器间接寻址:操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中
- 间接寻址:指令中给出操作数地址的地址
- 相对寻址:指令地址码给出的是一个偏移量,操作数地址等于本条指令指令的地址加上该偏移量
- 变址寻址:操作数地址等于变址寄存器的内容加偏移量。
Flynn主要根据指令流个数据流来分类:
- 单指令流单数据流(SISD)
- 单指令流多数据流机器(SIMD)
- 多指令流单数据流机器(MISD)没有实际应用
- 多指令流多数据流机器(MIMD)
对指令流水线性能的度量:
吞吐率,加速比,效率
- 吞吐率:单位时间内流水线所完成的任务数或输出结果的数量,最大吞吐率指的是流水线在达到稳定状态后的到的吞吐率,它取决于流水线中最慢的一端,所以该段位流水线的瓶颈
- 加速比:定义为等功能的非流水线执行执行时间与流水线执行时间之比,加速比与吞吐率成正比如果流水线断流,实际吞吐率会明显下降,加速比也会下降
- 流水线效率指的是流水线设备利用率。
汇编、编译、解释系统
- 不同高级语言可以产生同一种中间代码
- 使用中间代码有利于进行与机器无关额优化处理
- 使用中间代码有利于提高编译程序的可移植性
- 汇编:将汇编语言编写的源程序翻译成机器指令程序
- 编译程序:首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
- 解释程序:直接解释执行源程序,或者将源程序翻译成某种中间表示形式后加以执行
- 链接程序:将目标程序连接形成为可执行程序
语法分析:
- 自上而下:递归下降分析法,预测分析法
- 自下而上:移进-规约分析法
非对称加密体制模型
加密模型:明文经过B的公钥进行加密(A加密 ),密文传输,然后通过B的私钥进行解密成为明文
认证模型:明文通过A的私钥(A加密)形成密文,传输,经过A的公钥进行解密形成明文
非对称加密的保密性好,他消除了最终用户交换密钥的需求,但加密和解密时间长、速度慢、不适合对文件进行加密,只适合对少量数据进行加密
MD5
MD5算法的特点:
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的
- 容易计算:从源数据计算出MD5值很容易
- 抗修改性:对源数据进行任何改动,即使只修改一字节,得到的MD5数值有很大的区别
数字签名(一对多)
过程:
- 信息发送者使用一个单向散列函数(Hash函数)对信息输出消息摘要。
- 信息发送者使用自己的私钥签名信息摘要
- 信息发送者把信息本身和已签名的信息摘要一起发送出去
- 信息接收者通过使用与信息发生着使用的同一个单向散列函数(Hash函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确定信息发送者的身份和信息是否被修改过
数字加密(多对一)
过程:
- 当信息发送者需要发送信息时,首先生成一个对称密钥,用该对称密钥加密发送的报文
- 信息发生者用信息接收者的公钥加密上述对称密钥
- 信息发送者将第(1)步和第(2)步的结果结合在一起传给信息接收者,称为数字信封
- 信息接收者使用自己的私钥加密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,得到真正的原文
不同点:
数字加密和数字签名实现过程相反,使用的密钥也不同。
数字签名只采用了非对称密钥加密算法,他能保证发送信息的完整性、身份认证和不可否认性
数字加密采用了对称密钥加密算法和非对称加密算法相结合的算法,他能保证发送消息的保密性
SSL协议
Secure Sockets Layer 安全套接字,用于提高应用程序之间的数据安全系数
概念:一个保证任何安装了安全套接字的客户和服务器事务间事务安全的协议,它涉及所有TCP/IP应用程序。
提供三个服务
- 用户服务器合法性认证
- 加密数据以隐藏被传输数据
- 保护数据完整性
数字时间戳技术
数字时间戳是数字签名技术的一种变种应用,在电子商务交易中,时间是十分重要的信息,在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容。时间戳服务(DTS)是网上电子商务安全服务项之一,能提供电子文件的日期和时间信息的安全保护
时间戳是一个经过加密形成的凭证文档,包括三部分:
- 需加时间戳的文件的摘要(Digest)
- DTS收到文件的日期和时间
- DTS数字签名
产生过程:
用户首先将需要加时间戳的文件用Hash编码加密形成的摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名)然后返送回用户
程序语言分类
-
命令式和结构化程序设计语言:Fortran、PASCAL、C
- 面向对象的程序设计语言:C++、Java、Smalltalk
- 函数式程序设计语言:Haskell、Scala、Scheme、APL
- 逻辑型程序设计语言:PROLOG
程序设计语言基本成分
数据、运算、控制、传输
编译程序基本原理
- 词法分析:对源程序从前到后逐个字符的扫描,从中识别一个个单词符号。单词符号:关键字(保留字)、标识符、常数、运算符、分隔符(标点符号、左右括号)
- 语法分析:在词法分析基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”、“语句”、“程序”
- 语义分析:类型分析和检查,动态语义分析、静态语义分析
- 生成中间代码:含义明确的信号系统
- 代码优化:等价变换,公共子表达式提取,循环优化
- 生成目标代码:绝对指令代码、可重定位的指令代码、汇编指令代码
文法
- 0型文法:也称为短语文法,其功能相当于图灵机,如何0型语言都是递归可枚举的
- 1型文法:上下文有关文法,这种文法的意义在于对非终结符的替换必须考虑上下文
- 2型文法:上下文无关文法,非终结符替换无序考虑上下文
- 3型文法:等价于正规式,也被称为正规文法或线性文法
树
- 双亲、孩子、兄弟:结点的子树的根称为该结点的孩子;该结点称为其子节点的双亲;具有相同双亲的结点互为兄弟
- 结点的度:一个结点的子树的个数计为结点的度
- 叶子节点:叶子结点也成为终端结点,指度为0的结点
- 内部结点:度不为0的结点,也称为分支结点或非终端结点。除根结点以外,分支结点也称为内部结点
- 结点的层次:根为第一层,根的孩子为第二层
- 树的高度:一棵树的最大层次树记为树的高度或深度
- 有序(无序)树:若将树中结点的各个子树看成是从左到右具有次序的,即不能交换的,则该树为有序数,否则称为无序数
软件工程概述
- 在系统分析阶段的复审中,应指出软件的可移植性问题以及可能影响软件维护的系统界面
- 在系统设计阶段的复审间,应该从容易修改、模块化和功能独立的目的出发,评价软件结构和过程
- 在系统实施阶段的复审期间,代码复审应该强调编码风格和内部说明文档俩个影响可维护性的因素
软件周期模型
- 瀑布模型:将软件生存周期各个活动规定为线性顺序连接的若干个阶段模型,它为软件的开发和维护提供了一种有效的管理模式,适合于软件需求明确的软件项目(需求确定,对交付时间有严格需求)
- V模型:是瀑布模型的变种,它说明测试活动是如何与分析和设计相联系的
- 演化模型:在获取一组基本的需求后,通过快速分析构造出该软件的一个初始化可运行版本,然后逐步演化成最终软件产品
- 原型模型:快速构造软件的原型,在此基础上开发最终软件产品(获取用户的真正需求)
- 喷泉模型:以用户的需求为动力,以对象为驱动,适合于面向对象的开发方法
- 螺旋模型:增加了风险分析
软件需求分类
- 功能需求:所开发软件必须具备什么功能
- 非功能需求:产品必须具备的属性或品质,如可靠性、性能、响应时间和扩展性等等
- 设计约束:通常对解决方案的一些约束说明
软件工程是一种层次化的技术
自底向上分别为质量、过程、方法、工具
任何工程方法必须以有组织的质量承诺为基础
软件过程的基本要素为:过程、方法、工具
软件工程的基础是过程,过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理的和及时的开发,过程定义了一组关键过程区域,构成了软件项目管理控制的基础
方法提供了建造软件在技术上需要如何做,它覆盖了一系列任务。方法也依赖于一些基本原则,这些原则控制了每一个技术区域,而且包含了其他描述技术
工具对过程和方法提供了半自动或自动的支持,
极限编程XP
四大价值观:沟通,简单性,反馈和勇气
五个原则:快速反馈,简单性假设,逐步修改,提倡更改和优质工作
12个最佳实践:
- 计划游戏
- 小型发布
- 测试先行
- 隐喻(比喻传递)
- 简单设计
- 重构
- 结对编程
- 集体代码所有制
- 持续集成
- 每周工作40小时
- 现场客户
- 编码标准
统一过程
定义了四个技术阶段及其制品
- 起始阶段:专注于项目的初创活动,产生的主要工作产品有构想文档,初始用例模型,初始项目属于表,初始业务用例,初始风险评估,项目计划,业务模型以及一个或多个原型
- 精化阶段:理解了最初的领域范围之后进行需求分析和架构演进,产生了用例模型,补充需求,分析模型,软件体系结构描述,可执行的软件结构原型,初步的设计模型,修订的风险链表,项目计划,初始用户手册
- 构建阶段:关注系统的构件,产生实现模型,产品有设计模型,软件集成的软件增量,测试计划及步骤,测试用例以及支持文档
- 移交阶段:关注软件提交方面的工作,产生软件增量,产生的主要工作产品有提交增量,β测试报告和综合用户反馈
里程碑:
- 起始阶段:生命周期目标
- 精化阶段:生命周期架构
- 构建阶段:初始化运作功能
- 移交阶段:产品发布
连续式模型CMMI
- CL0(未完成的):过程域未被执行或未得到CL1中定义得目标
- CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标
- CL2(已管理的):其共性目标集中于已管理的过程的制度化。
- CL3(已定义级):其共性目标集中于已定义的过程的制度化,过程按照组织的剪辑指南从组织的标准过程记作剪裁得到的,还必须收集过程资产和过程度量,并采用于将来对过程的改进
- CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域
- CL5(优化的):使用量化手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效
软件质量管理
冗余附加技术是指实现结构、信息和时间冗余技术所需要的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等
在屏蔽硬件错误的容错技术中,冗余附加技术包括:关键程序和数据冗余及调用;检测、表决、切换、重构和复算的实现
在屏蔽软件错误的容错技术中,冗余附加技术包括:冗余备份程序的储存及调用;实现错误检测和错误恢复的程序;实现容错软件所需的固化程序
软件评审:设计质量评审,程序质量评审,运行环境接口的评审;主要目标是为了发现错误
在设计测试用例时,最好只从一个角度违反规则
软件质量特性
ISO/IEC 9126
功能性
- 适合性
- 准确性
- 互用性
- 依从性
- 安全性
可靠性
- 成熟性
- 易学性
- 易恢复性
易使用性
- 易理解
- 易学
- 易操作
效率
- 时间特性
- 资源特性
可维护性
- 易分析性
- 易改变性
- 稳定性
- 易测试性
可移植性
- 适应性
- 易安装性
- 一致性
- 易替换性
Mc Call
产品修正
- 可维护性
- 灵活性
- 可测试性
产品转移
- 可移植性
- 复用性
- 互用性
产品运行
- 正确性
- 可靠性
- 易使用性
- 效率
- 完整性
黑盒测试和白盒测试
黑盒测试:也称为功能测试,在完全比考虑软件的内部结构和特性的情况下来测试软件的外部特性,常用的黑盒测试技术包括等价类划分、边界值分析、错误猜测和因果图的报告
白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的执行路径和过程进行测试,检查是否满足设计需要。常用的白盒测试包括逻辑覆盖和基本路径测试
测试
- 应尽早并不断地进行测试
- 测试工作应避免由开发软件的人或小组承担
- 设计测试方案的时候,不仅要设计有效合理的输入条件,也要包含不合理、失效的输入条件
- 在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事
- 严格按照测试计划进行,避免测试的随意性。测试计划包括测试内容、人员安排、进度安排、测试环境、测试工具、测试资料
- 妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便
- 测试用例都是精心设计出来的,可以为重新测试或追加测试提供方便
测试阶段
- 单元测试:发现程序代码中的问题,针对详细设计和软件实现阶段的工作进行的
- 集成测试:验证系统模块是否能够根据系统和程序设计规格说明的描述进行工作,即模块与模块之间的接口测试
- 系统测试:验证系统是否执行需求规格说明中描述的功能和非功能需求,因此测试目标在需求分析阶段就已经定义
单元测试
1.模块接口:模块接口保证了测试模块的数据流可以正确地流入、流出,检查以下要点
- 测试模块地输入参数和形式参数在个数、数目、属性、单位u上是否一致
- 调用标准函数时所用的参数在属性、数目、顺序上是否正确
- 全局变量在各模块中的定义方法和用法是否一致
- 在使用文件之前是否已经打开文件或在用完文件之后是否已经关闭
2.局部数据结构
- 变量的说明是否合适
- 是否使用了尚未赋值或尚未初始化的变量
- 变量的初始值或默认值是否正确
- 变量名是否有错(如拼写错误)
3.重要的执行路径:由于不能穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误
- 计算方面的错误:算术运算优先次序不正确或理解错误;精度不够;运算对象的类型彼此不相容;算法错误;表达式符号表示不正确
- 比较和控制流的错误:本应相等的量由于精度不同不相等不同类型进行比较;逻辑运算符不正确或优先次序不正确;循环错误,分支循环出口错误
4.错误处理:好的设计应该能预测到出错的条件并且有对出错处理的路径。
5.边界条件:单元测试的最后工作
软件维护技术
- 改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应进行的诊断和改正错误的过程
- 适用性维护:由于信息技术的发展,软件运行的外部环境或数据环境可能发生变化,而修改软件的过程
- 完善性维护:为了使软件使用过程中,用户往往对软件提出新的功能或性能的要求,为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能改进加工效率、提高软件的可维护性而进行的维护活动
- 预防性维护:提高可维护性和可靠性,为进一步改进软件打下良好基础而进行的维护工作
软件开发项目管理
风险的特性:
- 不确定性:风险可能发生,也可能不发生
- 损失性:指当前风险确实发生时,会引起的不希望的后果和损失
风险的分类:
- 已知风险
- 未知风险
风险分析的基础知识:
- 风险识别:试图系统化地确定对项目计划(估算、进度、资源分配)的威胁
- 风险预测:又称风险估算。从风险发生的概率和后果评估
- 风险评估:预测是否影响参考水平值
- 风险控制:辅助项目组建立处理风险的策略,有效的策略应考虑风险避免、风险监控、风险管理及意外事件计划
成本估算模型
- Putnam:是一种动态多变量的模型,假设在软件开发的整个生存期中工作量有特定的分布
- COCOMO:结构型成本模型
- 基本COCOMO模型:是一个静态单变量模型,对整个软件系统进行估算
- 中级COCOMO模型:是一个静态多变量模型,将软件系统模型分为系统和部件俩个层次,系统由部件构成
- 详细COCOMO模型:将软件系统模型分为系统、子系统和模块三个层次,除了包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响
配置管理内容
- 软件配置标识
- 变更管理
- 版本控制
- 系统建立
- 配置审核
- 配置状态报告
软件开发工具
- 需求分析工具
- 设计工具
- 编码与排错工具
- 测试工具
软件维护工具
- 版本控制工具
- 文档分析工具
- 开发信息库工具
- 逆向工程工具
- 再工程工具
软件管理和软件支持工具
- 项目管理工具
- 配置管理工具
- 软件评价工具
进程管理
- PV操作利用信号量机制,是一种有效的进程同步与互斥的工具,可以实现资源的互斥使用
- Send原语是发送原语,如果系统采用信箱通信方式,那么当进程调用Send原语被设置成等信箱状态时,意味着指定的信箱存满了信件,无可用空间
- 在同一进程中的各个线程都可以共享该进程所拥有的资源,如访问进程地址空间中的每一个虚地址;访问进程所拥有的已经打开的文件,定时器,信号量机构,但是不能共享进程中某线程的栈指针
- 互斥信号量一般为1,因为俩个进程之间的缓冲区通常是1个
- 对于同步信号量,前一个进程的同步信号量的初值为n,后一个为0
物理地址=物理块号*页面大小+页内地址
页内地址=逻辑地址 MOD 页面大小
物理块号根据页号查找
页号=int[逻辑地址/页面大小]
HTML基本标签的使用
- alink用于设置正在被击中的链接的颜色
- vlink用于设置已使用的链接的颜色
- background用于设置背景图片的url
- bgcolor用于设置文档整体背景颜色
- title 文档标题
- i 斜体
- hr 水平线
- 在HTML文档的head标签内定义CSS样式
- 用@import引入样式表文件
- link标签链接网上可访问的CSS样式表文件
程序设计语言基本概念
程序运行时内存分为代码块,静态数据区,动态数据区(堆,栈)
静态数据区:全局变量
动态数据区:堆区,栈区
文法分析
语言中具有独立含义的最小语法单元是符号(单词),如标识符、无符号常数与界限符
词法分析的任务是把构成源程序的字符串转换成单词符号序列
有限自动机是一种识别装置的抽象概念,他能准确的识别正规集 确定DFA 不确定NFA 是进行词法分析的适当工具
程序设计语言的绝大部分语法规则可以采用上下文无关文法进行描述
语法分析方法有多种:
自底向上:算符优先分析法和LR(移进规约)分析法
自顶向下:递归下降分析法,预测分析法
校验方法
- 奇偶校验:增加一位校验位来使1的个数为奇数或者偶数,从而使码距变为2 有三种:水平奇偶校验码,垂直奇偶校验码,水平垂直校验码
- 海明码:利用奇偶性来进行纠错和检错的校验方法,在数据为位之间插入k个校验位,2^k-1>=n+k
- 循环冗余校验码广泛应用于数据通信领域和磁介质存储系统中,它利用用于生成多项式为k个数据位产生r个校验位来进行编码,求CRC端码时采用模2除法运算,不能纠错
32位微处理器与64位微处理器2背关系
通用寄存器的位数
数据总线的宽度
能同时进行运算的位数
计算机基本工作原理
- 指令寄存器(IR):用于暂存从内存取出的、正在运行的指令,这是由系统使用的寄存器,程序员不能访问
- 存储器数据寄存器(MDR)和存储器地址寄存器(MAR)用于堆内存单元访问时的数据和地址暂存,也是由系统使用的,程序员不能访问
- 程序计数器(PC):用于存储指令地址,CPU根据该寄存器的内容从内存读取待执行的指令,程序员可以访问该寄存器
- 通用寄存器:运行时暂存操作数和地址,提高运算速度
- 累加器:是一个数据寄存器,在运行时暂存操作数和中间运算结果,不能用于长时间保存一个数据
三总线结构的计算机总线系统由:数据总线、地址总线、控制总线
三总线结构:CPU总线、内存总线、IO总线
通用寄存器速度最快,cache(高速缓冲存储器)其次,内存
指令周期:指执行一条指令所需要的时间,CPU执行指令的过程中,根据时序部件发出的时钟信号按部就班进行操作。
冗余
- 结构冗余:按期工作方式可以分为静态,动态,混合
- 信息冗余:为了检测或纠正信息在运算或者或传输中的错误另外加的一部分信息
- 时间冗余:重复执行指令或程序来消除时错误带来的影响
- 冗余附件技术:是指实现上述技术所需的资源和技术
使用补码表示数据时,可以将符号位和其他位统一处理,减法也可按加法来处理,从而简化运算部件设计
浮点数所能表示的数值范围主要由阶码决定,所表示的数值精度由尾数表示
汇编、编译、解释系统
编译是将高级语言源程序翻译成机器语言程序(汇编形式或机器代码形式),反编译时编译的逆过程。反编译通常不能把可执行文件还原成高级语言源代码,只能转换为功能等价的汇编程序
词法:词汇检查
语法:结构检查,形式检查
语义:含义检查
伪指令:用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不背汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行
中间代码:是一种简单且含义明确的记号系统,可以有若干种形式,它们的共同特征是与具体的机器无关,最常用的一种中间代码是与汇编语言的指令非常相似的三地址吗,其实现方式采用四元式,后缀式,数等形式的中间代码
中间代码:后缀式,三地址码,树
存储器管理
常用的I/O编址方法有俩种:一是与内存单元统一编址,二是单独编址
与内存单元统一编址方式下:是将I/O接口中的有关的寄存器或者存储部件看作存储单元,与内存中的存储单元统一编址。这样内存地址和就扣地址统一在一个公共的地址空间里,对I/O接口的访问就如同对主存单元的访问一样,可以用访问内存单元的指令访问I/O接口
单独编址:通过设置单独的I/O地址空间,为接口中的有关寄存器或存储器比肩分配地址码,需要设置专门的I/O指令进行访问,这种编址方式的优点是不占用内存的地址空间,访问内存的指令和访问接口的指令不同,在程序中容易使用和辨认
存储系统
计算机系统的存储器按照所处的位置不同可分为内存和外存。
按构成计算机材料的不同可分为磁存储器,半导体存储器,光存储器
按存储器的工作方式可分为读写存储器和只读存储器
按寻址方式不同可分为随机存储器,顺序存储器和直接存储器
相联存储器是一种按内容访问的存储器
虚拟存储器是主存和辅存两级存储器组成,虚拟存储器的地址称为虚地址和逻辑地址
Cache地址映射的方法:
全相联:主存的任意一块都可以映像到Cache的一个特定的中,冲突率低,Cache利用率高,但相联目录表容量大导致成本高、查表速度慢
直接:指主存的每一块只能映像到Cache的一个特定的块中,整个Cache地址与主存地址的低位部分完全相同,其特点是硬件简单,不需要相联存储器,访问速度块(无需地址变换)但是Cache块冲突率高导致Cache空间利用率很低
组相联:折中处理,对Cache进行分组,实现组间直接映射,组内全相联,从而获得较低的块冲突概率,较高的块利用率,同时的到较快的速度和较低的成本
ISO/OSI网络体系结构
TCP和UDP均提供了端口寻址功能,UDP是一种不可靠的、无连接的协议,没有连接管理能力,不负责重新发送或者出错的数据信息,也没有流量控制的功能
总线系统
处理机主要由处理器,存储器和总线组成
总线包括:数据总线DB,地址总线AB,控制总线CB
ISA,EISA,PCI是总线,SCSI是一种用于计算机和智能设备指令系统级接口的独立处理器标准
总线分为:芯片内总线,元件级总线,内总线(系统总线),外总线(通信总线)
地址总线和数据总线的宽度为字长
若地址总线宽度为n位:可寻空间位2^n字节,
总线的特点
- 简化系统结构,便于系统设计制造
- 大大减少了连线数目,便于布线,减小体积,提高系统的可靠性
- 便于接口设计,所有与总线连接的设备均采用类似的接口
- 便于系统的扩充,更新与灵活配置,易于实现系统的模块化
- 便于设备的软件设计,所有接口的软件就是对不同的口地址进行操
- 便于故障诊断和维修,同时降低了成本
串行总线:速度慢,成本低
并行总线:速度快,成本高
单总线结构在一个总线上适应不同种类的设备,通用性强,但无法达到高的性能要求,而专用总线则可以与连接设备实现最佳匹配
面向对象程序设计
主要步骤:
- 面向对象分析:认定对象,组织对象,描述对象间相互作用,定义对象的操作,定义对象内部信息(分析第一步:确定问题域)
- 面向对象设计:设计分析模型和实现响应源代码
- 面向对象程序设计:采用合适的面向对象设计语言,将持续组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织
- 面向对象测试:尽可能早的开始进行系统测试,以发现系统中可能存在的错误并进行修复,从而保证系统质量
面向对象基本概念
类之间的关系可分为:(依赖关系依次增强)背指的在后边
- 依赖:俩个事务间的语义关系,其中一个事务(独立事务)发生变化会影响另一个事务(依赖事务)的语义
- 关联:关联是一种结构关系,它描述了一组链,链是对象之间的聚集,是一种特殊类型的关联,他描述了整体和部分间的结构关系
- 聚集:是一种关系,其中一个较大的整体类包含一个或多个较小的部分类
- 组合:是一种聚合关系,其中整体负责对部分的创建和销毁,与生命周期有关
- 泛化:特殊/一般关系,一个类与他的一个或多个细化类之间的关系
- 实现:类元之间的语义关系
类可分为三种:
- 实体类:表示现实生活中的实体,人,物等
- 接口类(边界类):接口类的对象为用户提供一种与系统合作交流的方式,分为人(显示屏,窗口,对话框,二维码或用户与系统交互的其他方法)和系统(把数据发送到其他系统或者从其他系统接受数据)俩大类
- 控制类:控制数据流,充当协调者
面向对象方法:Booch,Coad,Omt
jackson是一种面向数据结构的开发方法
好的面向对象语言:一般应该支持被封装的对象、类与实例的概念、支持继承和多态等面向对象技术的概念
一个类定义了一组大体上相似的对象,这些对象共享这些行为和属性
面向对象方法中支持多态的是:动态绑定
对象的状态:包括这个对象的所有属性(通常是静态的)以及每个属性当前的值(通常是动态的)
唯一ID:区分对象
行为:内部可见活动
操作:类提供给对象的服务
数据:属性
一个类的静态成员变量的描述:
- 类的静态方法只能访问该类的静态数据成员
- 静态数据成员可被该类的所有方法访问
- 该类的对象共享其静态数据成员的值
- 静态数据成员的值可以被修改
对象具有的特性:
- 清晰的边界
- 良好定义的行为
- 可扩展性
多态
- 参数多态:被称为最纯的多态
- 包含多态:子类型化,一个类型是另一个类型的子类型
- 过载多态:同一个名字在不同的上下文表示的含义不同
- 强制多态:编译程序通过语义操作,把操作对象的类型强行加以改变,以符合函数或操作符的要求
结构化分析和设计(数据流图DFD)
四要素:外部实体(读者),数据流(数据沿箭头方向流动,图书,借书证),加工(借阅),数据存储(数据库文件)
结构化设计方法是一种面向数据流的设计方法,与结构化分析方法衔接。在需求分析阶段,结构化分析方法产生了数据流图,而在设计阶段,结构化设计方法将数据流映射为软件系统的模块结构。
数据流图中从系统的输入数据流到系统的输出数据流的一连串变换形成了一条信息流,其中的信息流一般情况下包括变换流型和事务已流型,不同类型的数据流到程序模块的映射方法不同,一个软件系统往往不仅仅有一种数据流类型
结构化分析结果:一套分层的数据流图,一本数据字典,一组小说明(加工逻辑说明),补充材料
结构化方法就是采用自顶向下逐层分解的思想进行分析建模的。
随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解,从抽象到具体
划分模块的原则:作用范围应该在其控制范围之内
模块的作用范围:受该模块内一个判定影响的模块集合
模块的控制范围:模块本身以及所有直接或间接从属于该模块的模块集合
实体联系图
用于描述数据对象及数据对象之间的关系
三要素:
- 实体:目标系统所需要的复合信息表示,也成为数据对象
- 属性:定义数据对象特征
- 联系:不同数据对象之间的关系
设计模式
创建模式比较
用于创建的那些对象的类对系统下参数化有俩种常用的方法:生成创建对象的类的子类和对系统进行参数化的方法。
- 前者对应于工厂方法模式,其主要缺点是仅为了改变产品类就可能需要创建一个新的子类。这种改变可能级联发生,例如产品的创建者本身是一个工厂方法创建的,那么也需要重新定义它的创建者。
- 后者更多的依赖于对象的复合,定义一个对象负责明确产品对象的类,并将他作为产品对象的参数,这是抽象工厂和建造者,原型模型的关键特征,都涉及创建新的负责创建产品对象的工厂对象。
结构模式比较
- 适配器模式和桥接模式具有一些功能特征,都给另一个对象提供了一种程度上的间接性,因而有利于系统的灵活性,另外都涉及从自身以外的一个接口向这个对象转发请求。
- 适配器模式主要解决俩个已有接口之间不匹配的问题,不考虑这些接口是怎么实现的,也不考虑它们各自可能如何演化。这种方式不需要对任何类进行重新设计就能够使他们重新工作。
- 桥接模式则对抽象接口与它的可能是多个实现部分进行桥接。虽然这一模式运行使用者修改实现它的类,但是它仍可为用户提供一个稳定的接口,也会在系统演化时适应新的实现。
- 适配器模式和桥接模式通常用于软件生命周期的不同阶段,针对不同的问题。适配器模式在类已经设计好后实施,而桥接模式在设计类之前实施
- 组合模式和装饰模式具有类似的结构,说明它们都是基于递归组合来组织可变数目的对象,装饰模式旨在能够不需要生成子类即可给对象添加职责,这避免了静态实现所有功能组合而导致子类急剧增加。组合模式将对象组合成树型结构,以表示部分整体层次结构,旨在构造类,使多个相关对象能够以统一的方式处理,而多个对象可被当作一个对象来处理,重点在于表示。
- 组合模式和装饰模式通常协同使用。
- 装饰模式和代理模式都描述了怎样为对象提供一定程度上的间接引用。代理模式构成一个对象并且为用户提供一致的接口,于装饰模式不同的是,代理模式不能动态的添加或分离性质,也不是为递归组合而设计的他强调一种关系(代理与他实体之间的关系),这种关系可以静态的表达。其目的是,当直接访问一个实体不方便或者不符合要求时,为这和实体提供一个代替者,例如实体在远程设备上,访问受到限制或者实体是持久存储的。
- 在代理模式中,实体定义了关键功能,而代理提供或拒绝对他的访问。
- 在装饰模式中,组件仅提供了部分功能,而一个或多个装饰着模式负责完成其他功能。
- 装饰模式适用于编译时不能确定对象的全部功能的情况。
行为模式比较
很多行为模式注重封装变化。当一个程序的某个方面的特征经常发生改变时,这些模式就定义一个封装这个方面的对象。这样该程序的其他部分依赖于这个方面时,它们都可以与对象协作。这些模式通常定义一个抽象类来描述这些封装变化的对象,并且通常该模式依据这个对象来命名。
- 一个Strategy对象封装一个算法
- 一个State对象封装一个与状态相关的行为
- 一个Mediator对象封装对象间的协议
- 一个Iterator对象封装访问和遍历一个聚集对象中的各个组件的方法
- 这些模式描述了程序中很可能会改变的方面。大多模式有俩种对象:封装该方面特征得新对象和使用这些新对象得已有对象。但并非所有对象行为模式都有这样得分割功能,例如,责任链模式可以处理任意数目的对象,而所有这些对象可能已经存在于系统中了。这也说明了行为模式的另一个不同点:并非所有的行为模式都定义类之间的静态通信关系。
- 一些模式引入总是被作用参数的对象,例如访问者模式,一个访问者对象是一个多态的accept操作的参数,这个操作作用于该访问者对象访问的对象。其他你是定义一些可作为令牌进行传递的对象,这些对象将在稍后被调用
- 在命令模式中,令牌代表一个请求。
- 在备忘录模式中,令牌代表在一个对象在某个特定时刻的内部状态。
- 这俩种情况下,令牌都可以有一个复杂的表示,但客户并不会意识到这一点。
- 在命令模式中多态多态特别重要,这是因为执行命令对象是一个多操作。而备忘录模式接口特别小,以至于备忘录只能作为一个值传递,因此,它很可能根本不给它的客户提供任何多态操作
- 中介者Mediator模式和观察者OBserver模式时相互竞争的模式,它们之间的差别是:观察者模式通过引入观察者对象(多的那一方)和Subject对象来分布通信,而中介者对象则封装了其他对象间的通信。
- 观察者模式中不存在封装一个约束的单个对象,而必须是观察者和Subject对象相互协作来维护这个约束。通信模式由观察者和Subject连接的方式决定:一个subject通常有多个观察者,并且有时一个Subject的观察者是另一个观察者的目标。
- 观察者模式有利于观察者和subjec之间的分割和松耦合,易于产生更细粒度且更易于复用的类。
- 中介者模式的目的是集中而不是分布,他将维护一个约束的职责直接放在一个中间者中。
- 命令模式、观察者模式、中介者模式、责任链模式等都涉及发送者和接收者解耦,但各自有不同的权衡考虑
- 命令模式使用一个命令对象来定义一个发送者和一个接收者之间的绑定关系,从而支持解耦。命令对象提供了一个提交请求的简单接口(Execute操作),将发送者和接收者之间的连接定义在一个对象。使得该发送者可以与不同的接收者一起工作,达到发送者和接收者解耦,使发送者更易于复用。此外,可以复用命令对象,用不同的发送者参数化一个接收者。
- 观察者模式通过通过定义一个接口来通知目标中发生的改变,从而将发送者(目标)与接收者(观察者)解耦。观察者定义了一个比命令模式更轻松的发送者接收者绑定,这是因为一个目标有多个观察者,并且其数目可以运行时变化,此模式中的Subject和观察者接口是为了处理Subject的变化而设计的,因此当对象间有相互依赖时,最好用此模式对他们进行解耦。
- 中介者(Mediator)模式让对象通过一个Mediator对象间接相互吸引,从而对他们进行解耦。一个mediator对象为个Colleague对象间的请求提供路由,并收集它们的通信。因此,各Colleague对象仅能通过Mediator接口相互通信。Mediator接口是固定的,为了增加灵活性,mediato可能不得不实现它自己的分发策略。可以用一定的方式对请求代码打包参数,使得同事Colleague对象可以请求的操作数目不限。由于此模式将通信行为集中到一个类中而不是将其分布在各个子类中,所以他可以减少一个系统的子类生成。
- 责任链模式通过沿一个潜在接收者链传递请求而将发送者与接收者解耦因为发送者和接收者之间的接口是固定的,责任链可能也需要一个定制的分发策略。
算法分析与常用算法
- N皇后问题,该问题基于一些约束条件来求问题的可行解。该问题不易划分为子问题求解,因此分治法不适宜:由于不是求最优解,所以不适合用动态规划和贪心算法,而系统搜索法-回溯法可以有效的求解该问题。
- 分治法:往往用递归技术来实现,但并非必须。很多时候不能均匀划分。分治算法的代价在划分子问题和合并子问题的解上,问题不同代价不同,例如归并排序算法代价在合并解上,快速排序计算代价在划分子问题上。
- 时间复杂度:O记号给出一个函数的渐近上界。
- 优先队列是一种常用的数据结构,通常采用堆实现。对应于大顶堆,小顶堆,存在最大优先队列和最小优先队列。除获得最大元素的时间复杂度为O(1)之外,其他操作的时间复杂度均为二叉树的高度O(lgn)。
常用算法设计策略:
- 分治法:将大问题分解为一个或多个规模较小的子问题,通常采用自顶向下的递归方法来求解。
- 动态规划法:问题具有最优子结构和重叠子问题,求解时一般采用自底向上的方法来进行。
- 贪心法:具有最有子结构和贪心选择性,求解时可用自底向上和自顶向下来求解。
- 回溯法:系统搜索解空间,先定义解空间,以深度优先的方式搜索。
- 分支限界法:系统搜索解空间,先定义解空间,以广度优先的方式搜索。
数据库基础知识
- 结果集为几元关系:指定属性,元祖指的是行
Armstrong公理:
- 自反律:若属性集Y包含于属性集X,属性集X包含于属性集U,则X→Y在R上成立。
- 增广律:若X→Y在R上成立,且属性集Z包含于属性集U,则XZ→YZ在R上成立。
- 传递律:若X→Y和Y→Z在R上成立,则X→Z在R上成立。
三条推理规则:
- 合并规则:若X→Y,X→Z则X→YZ为F所蕴含。
- 伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含。
- 分解规则:若X→Y,Z属于Y,则X→Z为F所蕴含。
数据库设计步骤:
- 需求分析:对现实世界要处理的对象进行详细调查,了解现行系统的概况,确定新系统功能的过程中,确定系统边界,收集支持系统目标的基础数据及其处理方法。(需求说明文档,数据字典,数据流程图)
- 概念设计:对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。
- 逻辑设计:对关系模式进行进一步的规范化处理,作部分关系模式的处理,分解,合并或增加冗余属性,提高存储效率和处理效率。
- 物理设计:根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。
范式:
1NF
↓ 消除非主属性对主码的部分函数依赖
2NF
↓ 消除非主属性对主码的传递函数依赖
3NF (没有非主属性)
↓ 消除主属性对主码的部分和传递函数依赖
BCNF
↓ 消除非平凡且非函数依赖的多值依赖
4NF
- 1NF:主键为EM,EM→Q,E→N,E→L,得出N,L部分依赖于主码,所以为1NF
- 2NF:非主属性完全依赖于主属性,例如软考题经常出现的(时间,学生)
- 3NF:消除主属性对主码的传递依赖
- BCNF:消除主属性对主码的传递依赖
有损联接与函数依赖:
F={A1A3→A2,A2→A3}设U1={A1,A2},U2={A1,A3},那么可得出(U1∩U2)→(U1-U2)=A1→A2,(U1∩U2)→(U2-U1)=A1→A3,所以是有损联接。
F1,F2不等于空,F+不等于(F1并F2)+ 所以不保持函数依赖。
共享锁(S锁):又称读锁
排它锁(X锁):又称写锁,若有排它锁则不能再加任何锁,知道释放
分布式数据库的特性:
- 分布性:数据存储在多个不同的节点上
- 逻辑相关性:数据库系统内的数据在逻辑上具有相互关联的特性
- 场地透明性:使用分布数据库中的数据时,不需指明数据所在位置
- 场地自治性:每个单独结点能够执行局部的应用请求
分布式数据库透明性:
- 分片透明:指用户或应用程序不需要知道逻辑上访问的表具体怎样分块存储
- 复制透明:采用复制技术的分布方法,用户不需要知道数据是复制到哪些结点,如何复制
- 位置透明:用户无需知道数据存放的物理位置
- 逻辑透明,局部数据模型透明:是指用户或应用程序无需知道局部场地使用的是哪种数据类型
数据库恢复:当发生故障时,根据现场数据内容、日志文件的故障前映像和检查点文件来恢复系统状态。
E-R图之间的冲突
- 结构冲突:同一实体在不同E-R图有不同属性
- 属性冲突:同一属性可能存在不同的分E-R图中,由于设计人员的不同或出发点不同,对属性的类型,取值范围,数据单位等可能不一致
- 命名冲突:意义相同的属性在不同的分E-R图中代表着不同的意义
物理独立性:模式与内模式(存储)之间的映像
逻辑独立性:外模式(视图)与模式之间的映像
创建聚簇索引:修改了数据的物理顺序,
- Data Extraction:数据抽取。
- OLAP:也称为面向交易的处理过程,使用对象是决策者。
- OLTP:它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的,使用对象是操作人员或低层管理人员。
- ETL(数据仓库技术):用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
SQL语言:
- with grant option :将授予用户相关权限外,用户还被赋予了将相关权限赋予其他用户的权利
- with check option :表示对增删改操作的行,满足视图定义中的谓词条件(子查询中的条件表达式)
创建函数:
- create function 名(参数 varchar(20))
- returns integer 返回值
- declare 变量 integer 定义变量
- select *** into 变量名 where ***
- return 变量名
- end
系统性能评测与可靠性基础
- 软件可靠性:指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。(MTTF平均无故障时间)
- 软件可用性:指在给定时间点上,一个软件系统能够按照规格说明正确运行的概率。(MTBF平均失效间隔时间)
- 软件可维护性:给定使用条件下,规定时间间隔内,使用规定过程和资源,完成维护活动的概率。(MTTR平均修复时间)
网络安全
数字签名技术(Digital Signature)技术是不对称加密算法的典型应用(私钥加密,公钥解密),是对真实性的保护。
服务:
- 验证来源
- 来源不能否认
- 接收者不能编造,改变信息
- 在IE浏览器中,安全级别由低到高:internet→本地internate→可信站点→受限站点·
- 网络的可用性:用户可利用网络时间的百分比
帧中继:
- FR是为克服X.25交换网的缺陷、提高传输性能而发展起来的高速分组交换技术。
- 帧中继网络不进行差错控制和流量控制,并且通过流水方式进行交换,所以比X.25网络的通信开销更小少,传输速度更块。
- 帧中继提供面向连接的虚电路服务,因而比DDN专线更提高通信线路利用率,使用户负担的通信费用更少。
- 在帧中继网络中,用户的信息速率可以在一定的范围内变化,从而可以适应流式业务,又可以适应突发式业务,这使帧中继成为远程传输的理想形式。
ISO/OSI硬件设备:
传输层 | 网关 |
网络层 | 路由器 |
数据链路层 | 网桥,交换机(多端口网桥) |
物理层 | 中继器,集线器 |
- 集线器:物理层设备,作用是从一个端口接受信息,并向其他端口广播出去。集线器不解释所传送信息的含义,也不识别任何协议数据单元。集线器的各个端口形成一个冲突域,即只能有一个端口发送数据,如果有俩个以上端口同时发送,就冲突了。
- 网桥:数据链路层设备,能识别数据链路层协议数据单元,并根据数据链路层地址进行数据转发。
- 交换机的各个端口构成一个广播域,但不是冲突域,即可以有多个端口发送消息,也不会冲突。
- 以太网交换机根据数据链路层MAC地址进行帧交换。
- 中继网和ATM网都是面向连接的通信网,交换机根据预先建立的虚电路表识进行交换。
- 帧中继的虚电路是DLCI,进行交换的协议数据单元为“帧”。而ATM网的虚电路号为VPI和VCI,进行交换的协议数据单元为“信源”,
- 三层交换机是指因特网中使用的高档交换机,这种设备把MAC交换的高带宽和低延迟与网络层分组路由技术结合起来,其工作原理可概括为:一次路由,多次交换。(当三层交换机第一次收到一个数据包时必须通过路由功能寻找转发端口,同时记住目标MAC地址,以及其他相关消息,当再次收到目标地址和源地址相同的帧时,就直接进行交换了,不再调用路由功能。)所以三层交换机不但具有路由功能,而且比通常的路由器转发的更快。
DHCP工作原理:DHCP客户端可从DHCP服务器获得:本机IP地址、DNS服务器地址、DHCP服务器地址、默认网关地址。·没有Web服务器,邮件服务器地址。
VLAN(虚拟局域网)优点:
- 把局域网划分成多个不同的VLAN,使得网络接入不再限于物理位置的约束,这样就简化了网络中增加、移除和移动主机的操作,特别是动态配置的VLAN,无论主机在哪里,他都处于自己的VLAN中。
- VLAN内部可以相互通信,必须通过特殊设置的路由器才可以联通。这样做的结果是通过较大局域网中创建不同的VLAN,可以抵御广播风暴的影响,也可以通过设置防火墙来提高网络的安全性。
- VLAN并不能直接增强网络的安全性。
- 主机子网的路由是255.255.255.255
- 网络路由指明一个子网,不能全为1
- 默认路由是访问默认网关,而默认网关与本地主机属于同一个子网。,其子网掩码与网络路由相同,静态路由也一样
层次化局域网模型:
- 核心层:将分组从一个区域高速的转发到另一个区域,核心层是因特网络的高速骨干,由于其重要性,因此在设计中应该增加冗余组件设计,使其具备高可靠性,能快速适应变化。在设计核心层设备功能时,要尽量避免适应数据包过滤、策略路由等降低数据包转发处理的特性,以优化核心层获得低延迟和良好的可管理性。
- 汇聚层:是核心层和接入层的分界点,因尽量将资源访问控制,核心流量控制等都在汇聚层实施。
- 接入层:为用户提供了在本地网段访问应用系统的能力,接入层要解决相邻用户间的互访需要,并且为这些访问提供足够的带宽。负责地址认证,用户认证,计费管理等内容。还负责用户收集工作,例如用户的IP地址、MAC地址,访问日志等信息。
网络协议
地址分配方案:
A类地址 | 0 | 8 |
B类地址 | 10 | 16 |
C类地址 | 110 | 24 |
D类地址 | 1110 | |
E类地址 | 1111 |
路由类型:Windows服务器收到一个IP数据报时,先查找主机路由,在查找网络路由(直接网络,远程网络),这些路由查找失败后,最后查找默认路由
路由类型 | 说明 |
直接网络ID | 用于直接连接的网络,Interface可以为空 |
远程网络ID | 用于不直接连接的网络,可通过其他路由器到达这种网络Interface字段是本地路由器IP地址 |
主机路由 | 到达特定主机的路由,子网掩码为255.255.255.255 |
默认路由 | 无法找到确定路由时使用的路由,目标网络和子网掩码都是0.0.0.0 |
持久路由 | 利用route add -p命令添加的表项,每次初始化时,这种路由都会加入Windows的注册表中,同时加入路由表 |
- HTTP协议中,用于读取一个网页的操作方法为:get
- head读取网页头信息
- POST命令用于把消息加到指定的网页上
- ARP属于网络层协议,它的作用为实现IP地址(逻辑地址)与MAC地址(物理地址)之间的变换。
- 三网合一:电信网,广播电视网,互联网
- PPP认证:1.口令验证协议PAP:一种简单的俩次握手认证方法。2.质询握手认证协议CHAP:三次握手,周期性的验证对方身份。
- TCP流量控制协议:采用了可变大小的滑动窗口协议,长距离通信过程中线路延迟不确定的情况
- HDLC:固定大小适合链路俩端点之间进行通信延迟固定的情况
- 传输结果SSL加密的网页采用的是HTTPS协议
路由策略:
- 静态路由:是固定路由,从不更新,除拓扑结构发生变化
- 洪泛式:将路由信息发送到连接的所有路由器,不利于网络信息
- 随机路由:是洪泛式路由的简化
- 自适应路由:依据网络信息进行代价计算,根据最小代价实时更新路由
ADSL Modem上网拨号有三种方式:静态IP(专线方式),PPPOA,PPPOE
- PPPOE:以太网上点对点协议,是将点对点协议(PPP)封装在以太网Ethernet框架中的一种网络隧道协议
- PPTP点对点隧道协议,在PPP协议上开发的一种新的增强型的安全协议,支持多协议虚拟专用网(VPN),通过密码验证协议PAP,可扩展认证协议EAP等方法增强安全性。
- SLIP:串行线路网际协议
Internet应用
Windows命令:
- ipconfig 显示信息
- ipconfig/all 显示详细信息,可查看DHCP服务已启用
- ipconfig/renew 更新所有适配器
- ipconfig/release 释放所有匹配连接
Outlook Express作为邮件代理的优点:
- 可以脱机处理邮件,有效利用联机时间,降低上网费用
- 可以管理多个邮件账号,在同一窗口中使用多个邮件账号
- 可以使用通讯簿存储和检索电子邮件地址
- 在邮件中添加个人签名或信纸
- 发生和接受安全邮件
- 使用4个连续的C类网络汇聚成一个超网,则子网掩码为255.255.252.0
- 刷新和重置缓存命令是ipconfig/flushdns
- SMTP协议传输的邮件报文需要采用ASCII进行编码
- response可以修改cookie的值,request只读
- 工作在UDP协议上的应用是VoIP
- Windows的DNS服务器通过(启用循环,添加每个web服务器的主机记录)来确保域名解析并实现负载均衡
- 如果使得俩个IPV6结点可以通过现有的IPV4网络进行通信,则应该使用隧道技术
- 如果要使得纯IPV6结点可以与纯Ipv4结点进行通信,则需要使用翻译技术
- POP3协议使用Client/Server模式进行通信,,客户端软件与POP3服务器建立TCP连接
- Ping命令:127.0.0.1 ,本地IP,默认网关,远程主机
- 默认网关与本地IP应该属于同一网段
- 本地主机DNS域名查询:本地Hosts文件,本地DNS缓存,本地DNS服务器,根域名服务器
- 客户机提出请求:本地域名服务器,本地缓存,根域名服务器
- netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。显示IP,TCP,UDP,ICMP协议相关的统计数据,一般用于检测各端口的网络连接情况
- nslookup是一个监控网络中DNS服务器是否能正确实现域名的命令工具
- ping命令常用于测试连通性
- Arp命令与ARP有关
信息安全和病毒防护
- 应用级防火墙是内部网络和外部网络的隔离点,它可对应用层的通信数据流进行监控和过滤
- MIME是一个互联网标准,扩展了电子邮件的标准,使其能够支持,与安全无关。与安全有关的是S/MIME安全多用途互联网邮件扩展协议
- SSL和HTTPS设计到邮件传输过程的安全,PGP(Pretty Good Privacy)优良保密协议,是一套用于信息加密,验证的应用程序,可以用于加密电子邮件内容
- 与TSL最接近地协议试SSL,他是建立在SSL3.0协议规范之上的
- 0-1023是公用端口
- 443是HTTPS的端口,建立安全连接
防火墙技术:防火墙按照保护级别程度由高到低(内网,DMZ(把WEB服务器置于DMZ),外网)
- 包过滤:(网络层,数据链路层)直接转发报文,他对用户透明,速度较快。防火墙对每条传入和传出网络的包实行低水平控制。不能处理新的安全威胁(过滤源IP地址,过滤源端口号,过滤目的IP地址,目标端口号,不过滤MAC地址)
- 应用代理网关:(应用层,传输层,网络层)对数据包的检测能力比较强。缺点是难以配置,处理速度满
- 状态检测:屏蔽了包过滤防火墙,只考察数据包的IP地址等几个参数,而不关心数据包的连接状态变化
IDS和IPS入侵检测技术
- 入侵检测系统:弥补了防火墙系统对网络上的入侵行为无法识别和检测的不足,缺点:漏报,误报率高,灵活性差,入侵响应能力较弱
- 入侵防御系统:响应方式多样。
- 专家系统,模型检测,简单匹配
数据加密
- 加密 C=E(K,P)
- 解密 P=D(K,C)
- 保密通信:公钥加密,私钥解密
- 数字签名:私钥加密,公钥解密(公钥是机构的)
属于共享密钥加密算法的是:DES(数据加密标准)
属于公开密钥加密算法的是:ECC,DSA,RSA
算法:
- 数据签名算法:RSA(基于大数定律,非对称加密算法)
- IDEA和RC4,RC5适宜用于数据传输加密
- MD5为摘要算法(128位,4个32位分组组成,将4个32位分组级联后将形成一个128位的散列值)
- SHA-1安全散列算法,常用于对收到的明文输入产生固定长度的输出,确保明文传输过程中不被篡改
- 非对称加密算法(公开密钥加密):ECC,DSA,RSA
- 对称加密算法(共享密钥加密):DES,三重DES,RC-5,IDEA,AES
计算机系统安全保护等级
- C1 用户自主保护级
- C2 系统审计保护级
- B1 安全标记保护级
- B2 结构化保护级
- B3 访问验证保护级
信息安全的五个基本要素:
- 机密性:确保信息不暴露给未授权的实体或进程
- 完整性:只有得到允许的人才可已修改数据,并且可以判断出数据是否已经被篡改
- 可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍授权者的工作
- 可控性:可以控制授权范围内的信息流向及行为方式
- 可审查性:对出现的信息安全问题提供调查的依据和手段
病毒:
- 蠕虫病毒:利用漏洞攻击系统(震网Stuxnet)(欢乐时光,熊猫烧香)(红色代码,爱虫病毒,Nimda病毒,爱丽兹病毒)
- 引导区病毒:破坏的是引导盘扇区,文件目录等
- 宏病毒:破坏的是与office(办公)有关的文件,Macro.Melissa,数据库,电子表格
- 木马:控制操作,特洛伊木马(有未知程序试图建立网络连接)(X卧底,目标为智能手机)(冰河,远程监控)
- 文件型计算机病毒:感染可执行文件EXE,COM文件
- 目录型计算机病毒:修改硬盘上存储的所有文件的地址
- 系统病毒:CIH
网络攻击:
- 口令入侵:使用某些合法用户的账号和口令登陆到目的主机,然后实施攻击活动
- 放置特洛伊木马程序:执行程序后,会向黑客通知用户的IP地址及被预先设定的端口号
- 拒绝服务(DoS)攻击:使用大量的连接请求计算机,使得所有可用资源都被消耗殆尽,最终计算机无法再处理合法用户的请求(FYN Flooding)
- 端口扫描:利用Socket编程与目标主机的某些端口建立TCP连接,进行传输协议的验证等,从而侦知目标主机的扫描端口是否激活,主机提供了哪些服务,提供的服务中是否包含有某些缺陷
- 网络监听:是主机的一种工作模式,主机可以接收到本网段在同一条物理通道上传输的所有信息。使用网络监听工具可以轻而易举的截获包括口令和账号在内的信息资料
- 欺骗攻击:攻击者创造一个易于误解的上下文环境,以诱使受攻击者进入并且做出缺乏安全考虑的决策。IP欺骗使欺骗攻击的一种,使得被信任地1主机丧失工作能力,同样采用目标主机发出地TCP序列号,伪装成被信任地主机,与目标主机建立连接,放置一个系统后门,以进行非授权操作
- 电子邮件攻击
主动攻击:主动向被攻击对象实施破坏(重放攻击,IP地址欺骗,拒绝服务,信息篡改,资源使用,伪装)
被动攻击:被攻击着发现不了(流量分析攻击,嗅探,消息收集)
Windows用户权限:
- administrators
- power users
- users
- everyone
Windows IIS服务中身份认证
- 集成Windows身份验证
- 摘要试身份验证
- .NET Passport身份验证
- 基本身份验证
系统设计知识
模块内聚:
- 偶然内聚,巧合内聚:指一个模块内的各处理元素之间没有任何联系
- 逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定执行哪一个功能
- 时间内聚:把需要同时执行的动作组合在一起形成的模块
- 过程内聚(不同功能):指一个模块完成多个任务,这些任务必须按照指定顺序执行
- 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据
- 顺序内聚(同一功能):指一个模块中的各个处理元素都密切相关于同一功能而且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入
- 功能内聚:指模块内所有元素共同作用完成一个功能,缺一不可
模块耦合:
- 数据耦合(简单参数):一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数,公共数据结构或外部变量)来交换输入输出消息
- 公共耦合(全局数据结构):若同一模块都访问同一公共数据环境(全局数据结构,共享通信区,内存的公共覆盖区)
- 外部耦合(全局简单变量):一组模块都访问同一全局简单变量,而不是同一全局数据结构
- 标记耦合(数据结构):一组模块通过参数传递记录消息,是数据结构的子结构而不是简单变量
- 控制耦合:指一个模块调用另一个模块时,传递的是控制变量。
- 内容耦合:一个模块直接使用另一个模块的内部数据是,或通过非正常入口转入另一模块内部时
end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架