[toc]

2023/5/24

动态规划

动态规划可以是自底向上(填表),也可以是自顶向下(递归)

下午试题六

abstract

抽象类和抽象方法都必须用abstract修饰

1
2
3
4
5
6
// 比如两个子类的方法都含有以下的run
public void run(){
}
// 并且这两个子类都继承一个抽象类,则这个抽象类中的run为
public abstract void run(){
}

注意抽象类要填完整,abstract class MenuComponent{},不要漏掉class,以及abstract的a是小写

super

在子类中通过调用super.method();可以调用父类的方法(method是方法名)

当子类的构造方法内第一行没有出现“super()”时,系统会默认给它加上无参数的"super()"方法,会执行父类的无参构造方法

ArrayList和List

List是一个接口,ArrayList是一个实现类

1
2
private List<Menu>menuList;
menuList = new ArrayList<Menu>;

注意定义的时候是List

Iterator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

public class Demo1 {
public static void main(String[] args) {
Collection coll = new ArrayList();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
System.out.println(coll);
Iterator it = coll.iterator();
while (it.hasNext()) {
it.next();
it.remove();
}
System.out.println(coll);
}

remove()从迭代器指向的集合中移除迭代器返回的最后一个元素

题目分析

这道题不知道第4空填什么,首先CondimentDecorator是一个抽象类,继承于Beverage这个抽象类。这里只能填变量或者方法。

通过两个子类Mocha、Whip可以发现,都包含getDescription()和cost()。

但仔细一看,两个子类的构造方法,出现了this.beverage,但两个子类中并没有定义beverage,而且其父类的父类Beverage也没有定义,所以只可能在CondimentDecorator中定义了。

组合模式

组合模式的抽象类变量一般是protected,这可以从类图中看出。如下图所示,

符号 含义
+ public
- private
# protected
~ package

Interface

里面的方法不用加public(接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract

接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

类图的符号

泛化——子类指向父类

圆圈表示接口,所以下图是填implements

注意点

  • 对象等于对象,相当于把对象的引用地址赋值给另一个对象。这两个对象指向同一个。

  • 注意在对象的创建的时候,要注意它们之间的类型差别,比如上图中存在类型差别,Object类型,所以需要强转。

2023/5/25

下午试题一

第四小问

去说明中找这些数据流的组成

下午试题二

填写关系模式

1.先找需求分析结果中与关系模式对应的缺少的属性,填入

2.再看一对一、一对多、多对多的联系的转换

要求补充完整性约束关系

第一种:

在关系模式中画线

下划线表示主键

下滑虚线表示外键

第二种:

或用文字表示

小问四

  • 数据冗余
  • 修改异常
  • 插入异常
  • 删除异常

上午题

pv操作中判断信号量,可以通过题目中给出的伪代码来进行判断。如果题目中没有给出伪代码,使用如下的方法:

P1->P2:数字是12

P1->P3:数字是13

...

按数字大小依次赋值,比如12是信号量S1,13是信号量S2

白盒测试,错误发现能力由弱到强:

语句覆盖——判定覆盖——条件覆盖——判定/条件覆盖——条件组合覆盖——路径覆盖

判定覆盖——每条语句的真

条件覆盖——判定表达式所有条件都至少满足一次

  • 比如(A and B),就是在测试用例中,A取真、假,B也取真、假。(则两个测试用例就可以了)

判定/条件覆盖——判定表达式最少一真一假,判定表达式的所有条件也最少一真一假

条件组合覆盖(一定满足判定覆盖、条件覆盖、判定/条件覆盖):条件全搭配,比如两个条件,一个取值可能为2种,另一个取值可能为3种,则测试用例有6种。

单一责任——修改某个类的原因有且只有一个,即一个类只做一种类型的功能

开放-封闭——对扩展开放,对修改封闭

接口分离——依赖于抽象,不依赖于具体

依赖倒置——抽象不应依赖于细节,细节应依赖于抽象

python切片

a[start, stop, step]

包左不包右(-1表示倒数第一个元素)

step为负数表示往前

设计模式

记忆创建型和结构性的设计模式即可,剩余的就是行为型了。

然后记忆每个类型中的类模式,剩下的就是对象模式了。

口诀:

抽原生单——创建型

适桥组装外享代——结构性

解释器模板方法——行为型

2023/5/26

基本硬件系统:

  • 运算器
    • 算术逻辑单元
    • 累加寄存器
    • 数据缓冲寄存器
    • 状态条件寄存器
  • 控制器
    • 指令寄存器
    • 程序计数器
    • 地址寄存器
    • 指令译码器
  • 存储器
  • 输入设备
  • 输出设备

CPU:运算器、控制器、寄存器、内部总线

运算器:算术逻辑单元、累加寄存器、数据缓冲寄存器、状态条件寄存器

寻址

立即寻址>寄存器寻址>直接寻址>寄存器间接寻址>间接寻址

访问寄存器是要比访问内存更快

校验码

奇偶校验码:有检错无纠错

海明码:有检错也有纠错

循环冗余校验码:有检错无纠错

CISC和RISC

RISC CISC
指令种类 少、精简 多、丰富
指令复杂度
指令长度 固定 变化
寻址方式 复杂多样
实现(译码)方式 硬布线控制逻辑(组合逻辑控制器) 微程序控制技术
通用寄存器数量 多、大量 一般
流水线技术 支持(采用) 支持(采用)

SRAM和DRAM

SRAM DRAM
原理 触发器 电容
读出 非破坏性 破坏性
刷新 不用
送地址 一起送 行列分开送
速度
集成度
功耗
成本
用途 Cache 内存

Static Dynamic

流水线

吞吐率:最长时间段的倒数(比如操作周期是0.2,则吞吐率是5)

执行n条指令的吞吐率:(\(\frac{n}{采用流水线的时间}\))

存储器

按所处位置:

  • 内存(主存)
  • 外存(辅存)

按工作方式:

  • 读/写存储器(RAM)
  • 只读存储器
    • 固定只读存储器(ROM)
    • 可编程的只读存储器(PROM)
    • 可擦除可编程的只读存储器(EPROM)
    • 电擦除可编程的只读存储器(EEPROM)
    • 闪速存储器(Flash Memory, 闪存)

按访问方式:

  • 按地址
  • 按内容:比如相联存储器

按寻址方式:

  • 随机存储器(RAM)
  • 顺序存储器(SAM)
  • 直接存储器(DAM)

高速缓存中的地址映像方法

高速缓存位于CPU和主存之间

  • 直接映像
  • 全相联映像
  • 组相联映像

中断

  • 中断向量提供中断服务程序的入口地址
  • 中断响应时间:发出中断请求开始到进入中断服务程序

输入输出(I/O)控制方式

  • 程序查询方式
  • 中断驱动方式
  • 直接存储器方式(DMA)

总线

分类(数地控)

  • 数据总线
  • 地址总线
  • 控制总线

常见总线:

  • PCI:并行内总线
  • SCSI:并行外总线

其他总线差不多都是串行外总线

加密与认证技术

对称加密(私钥加密)

  • DES、3DES、RC-5、IDEA、AES、RC4

非对称加密(公钥加密)

  • RSA、DSA、ECC

报文摘要算法:

  • MD5:128位
  • SHA-1:160位

认证防止主动攻击,加密防止被动攻击

  • 被动攻击:典型的是监听,最难被检测,重点是预防,主要手段是加密
  • 主动攻击:假冒、重放、欺骗、消息篡改和拒绝服务,重点是检测而不是预防,手段有防火墙、IDS、ZPS、IPS等技术

IGMP

网络的组播协议

包过滤防火墙

工作在网络层,通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型来确定是否允许该数据包通过。

安全级别

内网>DMZ>外网

数据库三级模式

对一个表创建索引,改变的是内模式

存储过程

数据库的安全机制中,通过提供存储过程供第三方开发人员调用进行数据更新,从而保证数据库的关系模式不会被第三方所获取。

循环队列

采用循环队列的优点是入队和出队操作都不需要移动队列中的其他元素

归并排序

归并排序没有所谓的最好和最坏情况,都是O(nlgn)

支付网关

用户在电子商务网站上使用网上银行支付时,必须通过支付网关在Internet与银行专用网之间进行数据交换。

运行、就绪、等待

面向对象分析的5个活动

  • 认定对象
  • 组织对象
  • 描述对象间的相互作用
  • 确定对象的操作
  • 定义对象的内部信息

面向对象设计的5个活动

  • 识别类及对象
  • 定义属性
  • 定义服务
  • 识别关系
  • 识别包

面向对象测试分为4个层次进行

  • 算法层
  • 类层
  • 模板层
  • 系统层

依赖、关联、泛化、实现

依赖:

关联:

  • 聚合:部分可以脱离整体存在
  • 组合:部分不可以脱离整体存在

泛化:

子类指向父类

实现

拓扑排序

知识产权

SQL注入攻击

SQL注入攻击,就是通过把SQL命令插入到 Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。其首要目的是获取数据库访问权限。

IPSec

IPSec工作在网络层,为IP数据报文进行加密

模块的作用域和控制范围

模块的作用域应该在控制范围之内

Java特点

  • 采用即时编译
  • 对象在堆空间分配

页式存储

优先淘汰未访问的,再淘汰未修改的

耦合性

邮件协议

SMTP(25,TCP):简单邮件传输协议

MIME:多用途Internet邮件扩充协议

PEM是加密邮件的协议

POP3(110, TCP,采用C/S模式):保存用户未能及时取走的邮件

UML状态图

通常是反应型对象建模

转换(迁移)由事件触发

某个特定事件发生而且某个特定的监护条件满足时进入目标状态

树的遍历

MTTR,软件维护指标

I/O软件

I/O软件隐藏了I/O操作实现的细节,方便用户使用I/O设备

UML图

类图:

对象图:

有冒号

用例图:

有小人,关系是<<include>>

序列图

通信图:

有箭头,箭头上有消息

状态图:

活动图:

构件图:

部署图:

长方体

构造哈夫曼树

小的放左边,大的放右边

压缩比计算:

原来的要3,哈夫曼之后分别是1,3,3,3,3

1*0.4+0.6*3=2.2

(3-2.2)/3-27%

栈、堆、静态数据区、代码区

栈是局部变量以及每次函数调用时所需保存的信息的存储区域,其空间的分配和释放由操作系统进行管理。每次函数调用时,其返回地址以及调用者的环境信息(例如某些寄存器)都存放在栈中。然后,在栈中为新被调用的函数的自动和临时变量分配存储空间。栈空间向低地址方向增长。 堆是一块动态存储区域,由程序员在程序中进行分配和释放,若程序语句没有释放, 则程序结束时由操作系统回收。堆空间地址的增长方向是从低地址向高地址

磁盘调度管理

磁盘调度管理中,先进行移臂调度寻找磁道,再进行旋转调度寻找扇区