刷题总结

URL是地址,用于寻找服务器
SMTP是简单邮件传输协议,是用于发送邮件的
HTML是网页的编辑语言,描述了网页的内容和显示方式
http用于www传输控制

分时系统,应该是分时复用,大部分进程处于就绪状态

#进程的五种状态
https://blog.csdn.net/qq_16234613/article/details/52452888
这里写图片描述
##进程打印完,状态由等待到就绪

##事务概述
事务是数据库并发控制的最小单位,他具有如下的性质:
1.原子性
指事务包含的所有操作,要么同时成功,要么回滚到原来状态
2.保持性
事务一旦执行完毕,就永久改变了
3.隔离性
并发事务之间不能相互影响,(个人理解:相互影响的事务得分先后,不能并发)
4.一致性
必须从一个一致性的状态转为另一种一致性状态。(比如A账户100,B账户400,必须变为A账户+B账户=500)
#数据库并发产生的问题
1.脏读
脏读是指读取了没有提交的数据(正在处理的数据)
2.不可重复读
不可重复读是指多次读取某个数据,发现读取的结果不一样,读取了提交的数据
3.幻读
幻读是指一个事务在读取数据中,另一个事务插入新的数据,使得读取数据都是错的。
4.更新丢失
更新丢失是指两个事务同时更新一个记录,之前修改的就会被之后修改的覆盖掉
#锁相关
锁模式 描述
共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。
架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。
大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。
##二段锁协议
1.要想对某个数据进行操作,必须获得该数据的封锁
2.释放封锁之后,无法申请和获得其他任何锁
#进程读取磁盘数据的方式
1.程序直接控制
io口控制读取磁盘,cpu循环检测标识busy,busy==0,读取完毕,读取下一个字节
2.中断控制
比1先进一些,cpu和io并行,只有在io开始和结束的时候,cpu才工作,但还是只能一个一个字节的读
3.DMA
可以一块一块数据的读
4.通道
可以多块一起读取
#最高码元传输速率
最高码元传输速率为6000Baud,指的是最高传输6000码元/s
#io调用
用户在申请io设备是,调用的是逻辑地址,这样方便拓展和使用,系统再去对应找物理地址
#地址

int* pint = 0; //pint为0x00
pint += 6;   //int型占4个字节,则向后移动24个字节
cout << pint << endl;//所以pint为0x18=24

#char

char a='\';   //错误 \ 不是字符
char b='\xaa';//正确16进制的字符
char c='\O55';//正确8进制的字符

#什么时候适合改变进程的优先级
进程的时间片用完的时候适合降低优先级
进程完成io时,适合提升优先级
#数据库发明的初衷
共享数据
#复制活动窗口信息
alt+prtint screen
#虚函数
##哪些函数不可以定义为虚函数
1.构造函数
构造函数初始化一个对象,不能定义为虚函数
2.静态成员函数
静态成员函数只能有一个拷贝,不同对象调用时,对结果不影响,无法实现多态,定义成虚函数没有意义
3.类外普通函数
4.友元函数
友元函数不属于类,也不能继承
##哪些函数可以为虚函数,但是没有意义
1.内联函数
内联函数是编译时直接展开,虚函数是执行时动态绑定,两者矛盾
2.复制函数
复制函数参数都是本类型,没有多态的意义
#fread是c库函数,read是unix的系统函数
read的头文件<unistd.h>
read()会把参数fd所指的文件传送nbyte个字节到buf指针所指的内存中
#转移字符
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\ 反斜杠 092
’ 单引号字符 039
" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制
#SQL权限
with grant option可以将权限转移到第三方

Grant Seltect On Tech To Liu with grant option//将查询Tech表的权限给Liu,也允许Liu将权限转移到第三方 

#kill
kill pid //正常退出程序
kill %job number //直接杀死程序
#数据库恢复
数据库恢复的基础是利用冗余数据的转存,冗余数据指的是数据库后备文件和日志
#传输协议
FTP(File Transfer Protocol)文件传输协议
SMTP 简单邮件传输协议 (simple mail transfer protocol)
SNMP简单网络管理协议 (simple network Management Protocol )
TELNET TCP/IP协议族的一员
#SQL基本术语
记录、元组和行是一个概念
字段、属性和列是一个概念
主键:标识一个行(记录)的字段
外键:表与表连接的约束
#虚拟局域网vlan
VLAN是由一些局域网网段构成的与物理位置无关的逻辑组。
利用以太网交换机可以很方便地实现VLAN。
每一个VLAN的工作站可处在不同的局域网中。

#对ip数据报分片的原因
为了满足物理网络不同的MTU(最大可传输单元)
#实体模型和关系模型
##实体模型

##联系模型

#邻接表
是一种顺序结构和链表结合的数据结构
这里写图片描述
#通过文件名如何读取数据
有些数据块不是连续的,需要通过目录找寻数据块对应的i节点,再通过i节点找寻数据
#主机组成

#select * into book2 from book
如果已经存在book2,报错
如果不存在book2,则会选择book的所有数据存储到book2,并设book的主键为主键
#固态硬盘和机械硬盘的对比
1.固态硬盘更快
2.固态硬盘功耗更低
3.固态硬盘更防震
4.固态硬盘寿命短一些
#完成路径选择的在运输层
#初始化
类成员变量,不初始化的话,会默认初始化为0;
普通函数局部变量不初始化,不会默认初始化。
#ip地址和硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址。
硬件地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的。
IP地址不能直接用来进行通信,在实际网络的链路上传送数据帧必须使用硬件地址。
反向地址转换协议 就是将局域网 中某个主机 的物理地址 转换为IP地址
#校园网和局域网
校园网是多个星形网络(局域网)组成的网络,因此是网状结构
#静态成员函数
静态成员函数,作用是用来处理静态成员变量,没有this指针
#重载运算符没有形参可能是:
1.单目运算
2.类成员函数(包含this指针)
静态成员函数不行,因为没有this指针
#邻接矩阵
用一个一维数组存放图中所有顶点的数据;
用一个二维数组存放顶点的关系。这个二维数组叫做图的邻接矩阵
这里写图片描述
这里写图片描述
#STL容器
C++11 STL中的容器

一、顺序容器:
vector:可变大小数组;
deque:双端队列;
list:双向链表;
forward_list:单向链表;
array:固定大小数组;
string:与vector相似的容器,但专门用于保存字符。

二、关联容器:
按关键字有序保存元素:(底层实现为红黑树)
map:关联数组;保存关键字-值对;
set:关键字即值,即只保存关键字的容器;
multimap:关键字可重复的map;
multiset:关键字可重复的set;

无序集合:
unordered_map:用哈希函数组织的map;
unordered_set:用哈希函数组织的set;
unordered_multimap:哈希组织的map;关键字可以重复出现;
unordered_multiset:哈希组织的set;关键字可以重复出现。

三、其他项:
stack、queue、valarray、bitset
#引用
1.引用实际也是指针(受限指针),也占用内存,分配在堆上,但是返回的地址永远是指向对象的地址
2.必须初始化,且不容再改对象,没有const(本身就不能改)
3.在使用中把引用当成引用对象的别名
#vector越界和容量

int main(){
	vector<int> ve(1);	//创建一个vector,初始化一个 0
	ve[1];				//不会报错,因为vector下边不做越界检查 
	ve.at(1);			//报错,越界 
	cout<<ve.capacity(); //1 
	ve.push_back(2);	 
	cout<<ve.capacity();//2 
	ve.push_back(2);
	cout<<ve.capacity();//4,扩容*2 
	vector<int> ve1(ve);
	cout<<ve1.capacity();//3 不会是4 
}

#只读挂载

mount -o -ro /目录

#union共享内存

union X{
	int x;
	char y[4];
};
int main(){
	X a;
	a.x=0x11223344;//x86都是小端存储,即,低位在低的地址(靠前的地址)
	a.y[0];//0x44
	a.y[1];//0x33
	a.y[2];//0x22
	a.y[3];//0x11
}

#printf("%6.9s\n",s);

char *s="hello world";
printf("%6.9s\n",s);//输出9个字符和float不大一样

#友元函数的定义

class A{
public:
	void fun1();
	friend void fun2();
}
A::void fun1(){}
void fun2(){}//不是任何类的成员函数

#函数指针

int add(int a,int b){}
int (*p)(int,int);
p=add;
p(100,100);
//也可以
(*p)(100,100);

猜你喜欢

转载自blog.csdn.net/weixin_41127779/article/details/82349419