PV操作
解:1、实现进程互斥。(共享打印机,初始值为1。P资源减操作,V资源增操作。value<=0 唤醒等待进程)
2、实现前驱关系。(先走S1,再走S2。信号量初值为0。有几条有向边,就有几个信号量。S1----->S2。先V 操作后P操作)
- 实现同步。
进程死锁
产生死锁的必要条件
- 互斥条件
- 请求和保持条件
- 不剥夺条件
- 环路等待条件
银行家算法是避免死锁
存储管理
内碎片(已经分配但是无用),外碎片(太小了没有办法再次分配)
内存的二种分配方式
- 连续分配方式
单一连续分配
固定分区分配
动态分区分配
可重定位分区分配(进行碎片整理,耗资源。需要动态重定位)
- 离散分配方式
分页存储(逻辑地址分页大小和内存分块大小相同,通过页表一一对应)
分段存储(逻辑上完整意义的逻辑体为一个段。段表(段号,段内存中的逻辑地址,段长)
段页式存储(用户程序分为若干段,把段分成若干页。段号,段内页号,页内地址。需访问3次内存)
程序语言基础
编译过程---词法分析
描述词法规则常用的:正规式、有限自动机
语法分析
语句是否正确的逻辑关系(循环体大括号是匹配)
语义分析
左右端类型不匹配,除数为0
中间代码
与具体的机器无关
高内聚低耦合具体
无直接耦合:互相不依赖
数据耦合:数据值
标记耦合:数据结构
控制耦合:开关标志
外部耦合:I/O
公共耦合:全局数据区
内容耦合:直接内部数据
功能内聚:单一功能,各个合作
顺序内部:顺序执行
通信内聚:集中一个数据结构上
过程内聚:特定次序执行
时间内聚:同一时间
逻辑内聚:逻辑上相关
偶然内聚:没有关系的任务
数据库外模式、内模式、模式
模式又称概念模式或逻辑模式,对应于概念级。数据表
外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图
内模式又称存储模式,对应于物理级
设计模式
命令模式:司令发命令,命令选择士兵
策略模式:算法
访问者模式:老板和会计看公司的账单,账单功能固定(收入,支出),老板会计看的结果不同。
桥接模式:抽象实现分离我们可以认为在蜡笔中颜色和型号之间存在较强的耦合性,而毛笔很好地将二者解耦
命令(Command)。将一个请求封装为一个对象,从而使我们可用不同的请求对象进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作;命令模式将调用操作的请求对象与知道如何实现该操作的接收对象解耦
3.适配器(Adapter)。将一个类的接口转换成客户希望的另外一个接口。adapter 模式使得原本由于接口不兼容而不能
一起工作的那些类可以一起工作。
4.桥接(Bridge)。将抽象部分与它的实现部分分离,使它们都可以独立地变化。对实现部分的修改不会影响到使用它
们的程序。
5.建造者(Builder)。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
6.责任链(Chain of Responsibility)。为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它
8.组合(Composite)。将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
9.装饰(Decorator)。动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。
10.外观模式(Facade)。为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
11.享元(Flyweight)。运用共享技术有效地支持大量细粒度的对象。
12.解释器(Interpreter)。给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
13.迭代(Iterator)。提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
14.中介者(Mediator)。用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
15.备忘录(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
16.观察者(Observer)。又名发布/订阅消息模式,定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
17.原型(Prototype)。用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
18.代理(Proxy)。为其他对象提供一个代理以控制对这个对象的访问。
19.单例(Singleton)。保证一个类仅有一个实例,并提供一个访问它的全局访问点。
20.状态(State)。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
21.策略(Strategy)。定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
22.模板方法(Template Method)。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
23.访问者(Visitor)。表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操
下午题
数据流图
第一题:填写实体
实体有哪些: 人 ,物 ,其他系统
第二题:填写数据存储名称
数据存储:文件,数据表
第三题:缺失数据流、起点、终点
父子图平衡、加工必须要输入有输出、保持数据守恒
第四个子问题
建模图1-1和图1-2 如何保持数据流的平衡
父图中某个加工的输入输出数据流必须与其子图的输入输出数据流在数量上
和内容上保持一致即数据不会凭空产生,也不能凭空消失。
父图中一个输入数据流应对应子图中几个输入数据流,而子图中
组成这些数据流的数据项全体正好是父图中的这个数据流
使用单车加工,分为哪些子加工
扫码开锁,骑行单车,锁车结账
根据说明中的术语,给出图1-1中数据流“客户信息”,“房源信息”的组成
解:正文中说明,哪些组成字段
数据库设计
第一题:完整ER图
弱实体,用2个框
第二题:补充剩余表字段
注:往往一个空,有几个字段,会考包含外键
第三题:假设新关系,补充ER图,补充ER图转关系模式
新增维修关系,租客保修,维修工维修公寓,关系模式为维修情况
维修情况(故障编号,员工编号,租客编号,楼编号,公寓号,维修日期,维修内容)
UML分析与设计
第一题:类名
第二题:系统中图中,采用什么设计模式
第三题:实现新的需求,进行图的修改
C语言算法填空
日积月累
Java or C++ 设计模式填空
基础知识