软考笔记

发布于 2019-04-14  160 次阅读


数据库三级模式:外模式--模式--内模式

外模式—视图

模式—基本表

内模式—存储文件

CISC和RISC

CISC:复杂指令集成系统计算机

RISC:精简指令集成系统计算机

算法

动态规划算法:将问题细分为多个小问题(按顺序),之间有联系;

贪心法:局部最优解

回溯法:(穷举法)

分支限界法:广度优先搜索;

分治法:类似于动态规划法;

快速排序算法:最好情况下的时间复杂度O(nlgn);最差情况下的时间复杂度为O(n^2);空间复杂度为O(1)

Flynn分类法,根据计算机中指令和数据并行情况可把计算机分为以下几类:

SISD(单指令流单数据流)---传统的计算机包含单个cpu,它从存储在内存中的程序那里获得指令,并作用于单一的数据流 。

SIMD(单指令流多数据流)---单个指令流作用于一个数据流上。

MISD(多指令流单数据流)---用多个指令运用于单个数据流的情况实际上很少见,因为这种冗余多余容错系统。

MIMD(多指令流多数据流)---这种系统类似于SISD系统。

开发过程模型

螺旋模型(瀑布+快速):强调风险分析;

特点: ①螺旋模型是将瀑布模型与快速原型模型结合起来。

         ②强调了其他模型所忽视的风险分析。

         ③每一次螺旋包括4个步骤:制定计划、风险分析、实施工程、客户评估。

    缺点:①强调风险分析,但要求许多客户接受并相信这种分析,是不容易的。

原型模型:适用于用户不知道需求情况下;

特征: ①实现客户与系统的交互。

                  ② 进一步细化待开发软件需求。

     ③开发人员可以确定客户的真正需求是什么。

瀑布模型:适用大项目,有相关经验,开发风险大,需求明确;

  特点:①软件开发的各项活动严格按照线性方式进行。

          ②当前活动接受上一项活动的工作结果。

             ③当前活动的工作结果需要进行验证。

       缺点:①由于开发模型是线性的,增加了开发的风险。

             ②早期的错误可能要等到开发后期的阶段才能发现。

V模式:瀑布模式的演变模式;

将测试和分析与设计关联起来,加强分析与设计的验证;

敏捷开发模式:

 特点: ①短周期开发。

       ②增量开发。

       ③ 由程序员和测试人员编写的自动化测试来监控开发进度。

       ④通过口头沟通、测试和源代码来交流系统的结构和意图。

       ⑤编写代码之前先写测试代码。也叫做测试先行。

     缺点: ①团队的组建较难,人员素质要求较高。

         ②对测试员要求完全掌握各种脚本语言编程,会单元测试。

敏捷开发方法xp是一种轻量级、高效、低风险、柔性、可预测的、科学的软件开发方法,其特性包含在12个最佳实践中。

1、计划游戏:快速制定计划、随着细节的不断变化而完善;

2、小型发布:系统的设计要能够尽可能早的交付;

3、隐喻:找到合适的比喻传达消息;

4、简单设计:只处理当前需求,使设计保持简单;

5、测试先行:先写测试代码再编写程序;

6、重构:重新审视需求和设计,重新明确地描述它们,以符合新的和现有的需求

7、结队编程;

8、集体代码所有制;

9、持续集成:可以按日甚至按小时为客户提供可运行的版本;

10、每周工作40个小时;

11、现场客户;

12、编码表示;

特性与子特性

功能性

1、适合性 2、准确性 3、互操作性 4、依从性 5、安全性

可靠性

1、成熟性2、容错性 3、可恢复性

可用性

1、可理解性2、易学性。3、可操作性

效率性

1、时间效率 2、资源效率

可维护性

1、可分析性 2、可改变性3、稳定性4、可测试性

可移植性

1、适应性2、可安装性3、遵循性4、可替换性

UML的23种常用设计模式

1、工厂模式(静态工厂模式)Factory模式

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

2、单例模式:Singleton模式

类只能有一个实例;

必须自行创建这个实例;

必须自行向外界提供这个实例;

3、建造者模式:Builder模式

4、原型模式:Prototype模式

5、适配器模式:Adapter模式

系统需要使用现在的类,而此类接口不符合系统的需求;

需要改变多个已有子类的接口;

想要建立一个可以重复使用的类,用于与一些彼此没有太大联系的类一起工作;

6、组合模式:Composite模式

将部分与整体用树的结构表示出来;

7、装饰模式:Decorator模式

需要扩展一个类的功能,或者给一个类增加附加责任;

需要动态地给一个对象增加功能,这些功能可以再动态撤销 ;

需要增加一些基本功能的排列组合个数功能,从而 使继承关系变得不现实;

8、代理模式:Proxy模式

给某一个对象提供代理对象,并由代理对象控制对原对象的引用;

9、享原模式:Flyweight模式

减少创建大量对象,共享技术支持细粒度的对象;

10、外观模式:Facade模式(为子系统提供一个一致的界面)

为一个复杂的子系统提供一个简单的接口;

子系统的独立性;

层次化结构;

11、桥接模式:Bridge模式

将抽象化与现实解耦,使二者可以独立的变化;

12、解释器模式:Interpreter模式
给定一个语言,定义它的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

13、模板方法:Template Method
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

14、职责链模式:Chain of Responsibility

使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

15、命令模式:Command
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

16、迭代模式:Iterator
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。

17、中介模式:Mediator

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

18、备忘录模式: Memento

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

19、观察者模式:Observer

定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。

20、状态模式:State

允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

21、策略模式:Strategy

定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。本模式使得算法可独立于使用它的客户而变化。

22、访问者模式:Visitor

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的前提下定义作用于这些元素的新操作。

23、抽象工厂模式:

与工厂模式的差别是工厂模式针对的是一个产品的等级结构;而抽象工厂则需要面对多个产品的等级结构

创建型:工厂模式,抽象工厂,生成器模式,原型模式,单例模式

结构型:适配器模式,桥接模式,组合模式,装饰模式,外观模式,代理模式

行为型:解释器模式,模板方法,职责链模式,命令模式,迭代模式,中介模式,备忘录模式,观察者模式,状态模式,策略模式,访问者模式

密钥算法:

常见对称加密:DES(共享密钥),PC-5,IDEA,AES

ECC:椭圆曲线密码编码学;

DSA:数字签名算法;

DSS:数字签名标准;

DES:数据加密标准,速度快,适用于大量数据的场合。是秘密密钥加密算法;

MD5:摘要算法;

RSA:是一个支持变长密钥的公共密钥算法,需要加密的文件块长度也是可变的;

常见中间代码:语法树、后缀式、三地址代码这三种表示;

FTP端口号:

数据端口:20

命令端口(控制端口):21

注:数据端口并不是总保持20,在主动模式(PORT)下为20,被动模式(PASV)则在1025-65535之间随机;

常见题型

时间复杂度题型解题技巧:

内存按字节编址,从A1000H到B13FFH的区域存储容量为()KB。

A.32 B.34 C.65 D.67

做法解析:B13FFH-A1000H+1=10400H

将10400H转为十进制为66560,再将66560/1024=65KB,故选C

定义风险参照水准是()活动常用技术。

A.风险识别 B.风险预测 C.风险评估 D.风险控制

选C;