Java后端
·2025-04-16复习第八天
进程的调度算法你知道吗?
先来先服务:优点:公平,缺点:长作业影响后面的短作业运行
短作业优先:优点:可以得到最小等待事件 缺点:长作业可能饥饿
优先级调度:优点:根据任务轻重来执行 缺点:优先级低的可能饥饿
时间片轮转算法:优点:客户端的响应性比较好 缺点:时间片不好确定
最高响应比优先:优点:解决短作业优先中的长作业饥饿问题 缺点:需要实时计算响应比
多级反馈队列调度算法:优点:适合多种场景 缺点:实现复杂
进程之间的通信方式有哪些?
管道:本质是一个文件,单方向通信,先进先出,不限制传输的数据格式
匿名管道:用于父子进程间的通信
有名管道:只要有进程使用管道就不会被销毁
消息队列:多个进程可以往一个消息队列中写入和读取数据
共享内存:多个进程往一片共享的内存区域中写入和读取数据,需要实现同步
信号量:可以用于实现同步和互斥操作,初始值1互斥,0同步
信号:当有事件发生的时候通知线程
套接字:用于不同网络之间的进程间的通信
线程和进程有什么区别?
线程:CPU调度的基本单位,多个线程共享进程的内存区域,但也有自己独立的栈和寄存器,线程创建和切换速度相对较快,但需要注意线程安全问题
进程:资源分配机基本单位,每个进程有自己独立的内存区域,进程创建和切换开销大,通信复杂
MySQL 中如果发生死锁应该如何解决?
1、死锁检测机制,回滚占有资源少的事务
2、等待时间过长也会自动回滚
3、手动kill
有以下几个方式可以减少死锁的发生?
1、减少长事务
2、降低事务的隔离级别为读已提交
3、开启死锁检测
4、合理创建索引,避免锁住过多的范围
5、合理安排锁的申请顺序,先获取大的锁
为了保证binlog 和 undo log 的一致性
MySQL 事务的二阶段提交是什么?
事务提交的时,先写redo log并设置为prepara状态
再写binlog
最后再将redolog设置为comiit状态
什么时binlog redolog?
binlog:二进制日志,记录的是实际操作过程中的sql语句
redolog:重做日志,记录的是具体物理页的修改,系统崩溃的时候如果发现物理页和redolog记录的不一样,则需要重新修改保持一致。
为什么需要二阶段提交?
如果没有二阶段提交,无论是先提交redo log 还是binlog 如果提交一个成功后崩溃了,那会导致数据不一致的问题
虽然可以通过补写的方式完成,但还是不如二阶段提交
MySQL 中有哪些锁类型?
行锁:
表锁:
读锁:
写锁:
间隙锁:锁住记录前后的一片间隙
临建锁:锁住记录和记录前后的间隙
6
0
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
