2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
mysql****隔离级别:
读未提交:这种隔离级别下,事务间完全不隔离,会产生脏读,可以读取未提交的记录,实际情况下不会使用。
不可重复读(读提交):本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)
可重复读:在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同一个事务同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象
串行化:读操作会隐式获取共享锁,可以保证不同事务间的互斥
TCP/UDP
有状态连接和无状态连接
进程之间的通信方式
TCP报文中的字段
操作系统内核态与用户态
用户态--->内核态:唯一途径是通过中断、异常、陷入机制(访管指令)
内核态--->用户态:设置程序状态字PSW
特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机
非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)
处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的 ;
而处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的。
这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。
HTTP和TCP的关系
TCP是传输层,而http是应用层今天学习了下,知道了 http是要基于TCP连接基础上的,简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。http是用来收发数据,即实际应用上来的。
进程间通信和线程间通信的区别
进程在unix上,使用的是管道和信号灯来传递信息。
线程通过共享的全局数据去来进行通讯就可以了。
乐观锁和悲观锁
滑动窗口
TCP server最多可以建立多少个TCP连接
TCP流量控制和拥塞控制
PYTHON 可变类型和不可变类型
Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。
对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。
linux查看内存
sudo atop
ps
socket编程
一个进程,有十个线程,其中一个线程fork后,子进程有几个线程
在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本
链表翻转
TCP序列号的作用
保证传输的顺序,你要传输的所有数据的每一个字节都要编号。这个序号称为字节序号
建堆的时间复杂度
为什么要对网络分层
协议如何封装 报文头部字段
快速排序和时间复杂度
二叉树的层次遍历
int 1234变成4321如何实现
数据库ACID代表什么
数据库分页如何实现
哈希表由哪些数据结构实现
get****和post