@@ -230,6 +230,21 @@ $a[] = &$a;
230230 * HTTP1.0需要keep-alive参数来告知服务器建立一个长连接,HTTP1.1默认使用长连接.
231231 * HTTP2.0使用了多路复用技术,做到同一个链接并发处理多个请求.
232232 * HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样体积小了,在网络传输上也就更快.
233+ 5 . 进程和线程的区别:
234+ * 进程是操作系统资源分配的基本单位.线程是任务调度和执行的基本单位.
235+ * 在开销方面: 每个进程有自己独立的代码和数据空间,进程之间切换会有较大的开销;线程之间切换的开销较小.
236+ * 内存分配: 系统在运行时会为每个进程分配不同的内存空间;线程所使用的的资源来自其所属进程的资源.
237+ 6 . 进程的各种状态:
238+ * 三态模型:
239+ * 运行态(running): 进程占有处理器正在运行.
240+ * 就绪态(ready): 进程具备运行条件,等待系统分配处理器以便运行.
241+ * 等待态(wait): 又称为阻塞态或睡眠态.指进程不具备运行的条件,正在等待某个事件的完成.
242+ * 五态模型:
243+ * 新建态: 创建一个子进程.
244+ * 就绪态
245+ * 运行态
246+ * 终止态
247+ * 等待态
233248#### 0X03 自如一面
2342491 . 二叉树遍历:
235250 * 前序遍历: 对于树中的任意节点来说,先打印这个节点,然后在打印它的左子树,最后打印它的右子树.
@@ -240,4 +255,31 @@ $a[] = &$a;
240255 * 范围解析操作符: ::,可以用于访问静态成员,类常量.
241256 * 在类内部可以使用new self,new static,new parent创建新对象.
242257 * static::只能用于静态属性.
243-
258+ 3 . MySQL锁机制:
259+ * MySQL里面的锁大致可以分为全局锁,表级锁和行级锁三类.
260+ * 全局锁:
261+ * 全局锁就是对整个数据库实例加锁.
262+ * MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock,如果需要让整个库处于只读状态时可以使用这个命令.
263+ * 全局锁的典型使用场景是,做全库的逻辑备份.
264+ * 表级锁:
265+ * MySQL里的表级锁有两种,一种是表锁,一种是元数据锁.
266+ * 表锁的语法是: lock tables ... read/write.
267+ * lock tables除了会限制别的线程的读写外,也限定了本线程接下来的操作对象.
268+ * 读锁会阻塞写,但是不会阻塞读;写锁会阻塞读和写.
269+ * MDL锁不需要显示的使用,在访问一个表的时候会自动加上.
270+ * 在MySQL5.5的版本中引入了MDL,当对一个表做增删改查操作的时候,加MDL读锁;当对表结构做变更操作的时候,加MDL写锁.
271+ * 读锁之间是不互斥的,因此可以多个线程同时对一张表增删改查.
272+ * 读写锁之间,写锁之间是互斥的,用来保证表结构变更操作的安全性.
273+ * 事务中的MDL锁,在语句执行开始时申请,但是语句结束后并不会马上释放,二会等到整个事务提交后释放.
274+ * 应用场景: 给小表加个字段,导致真个库挂了.
275+ * 行级锁:
276+ * MySQL的行锁是在引擎层由各个引擎自己实现的.
277+ * 在InnoDB中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放.
278+ 4 . MySQL事务的特性:
279+ * 原子性: Atomicity
280+ * 一致性: Consistency
281+ * 隔离性: Isolation
282+ * 持久性: Durability
283+
284+
285+
0 commit comments