ANSIC和UNICODE
char 类型的字符串以'\0'结尾,wchar_t类型的字符串以'\0\0'结尾
变量的生命周期
全局变量:整个程序运行期
static变量:程序的整个运行期
局部变量:在定义它们的函数返回时系统收回变量所占内存。
变量存储位置
全局变量、static修饰的局部变量:静态存储区
局部变量:栈
寄存器变量:寄存器
Static修饰变量
static修饰全局变量时,表示该变量的作用域只存在于本文件,其他文件就不能引用。
UML类图
UML类图中的基本概念及术语
可见性:
'+':public
'-':private
'#':protected
参数方向:
'in':用于输入的参数
'out':用于输出的参数
'inout':即可作为输入又可作为输出
类成员(变量或者函数)的类型
静态成员:下划线表示
纯虚函数:斜体
class Circle
{
private:
double radius_;
Point center_;
public:
void setRadius(double _radius);
void setCenter(Point _center);
double getArea() const;
double getCircumfrence() const;
}
circle |
- radius_:double - center_:Point |
+ setCenter(Point):void + setRadius(double):void + getArea(void):double + getCircumfrence(void):double |
什么是系统死锁,如何预防系统死锁
系统死锁:是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面(多个进程在运行过程中因争夺资源而造成的一种相互等待的现象)。很显然,如果没有外力的作用,那么死锁涉及到的各个进程都将永远处于封锁状态。
系统死锁的必要条件
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
死锁的恢复
1.系统重启;2.撤销进程,剥夺资源
解除死锁
1、预防死锁:通过设置某些限制条件去破坏产生死锁的四个必要条件中的一个或者几个来预防死锁。
2、避免死锁:该方法同样属于事先预防的策略,但他并不需事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中用某种方法去防止系统进入不安全状态,从而避免发生死锁。
3、检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,此方法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。
4、解除死锁:这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施,有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。
正则表达式
用正则表达式表示邮箱