操作系统+MySQL期末笔记小整理

操作系统:
存储类专题:www.cnblogs.com/nolca/p/17398949.html
零散补充:www.cnblogs.com/nolca/p/17372745.html
内存分配可按位、按字节、按字编址,比如物理地址0b0001,可代表1bit内存块,1Byte内存块,或4KB内存块

页类似物理地址,段类似逻辑地址


死锁定理:
若有p个进程,都需要同一个资源n个,则当资源总数≥1+p*(n-1)时不会发生死锁
解除死锁:
第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞(“不阻塞”即:系统有足够的空闲资源分配给它)的
第二步:把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来
第三步:看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。
第四步:最后,所有的资源和进程都变成孤立的点。这样的图就叫做“可完全简化”。blog.csdn.net/qq_45812180/article/details/118024236

先分配,再额外申请,p1共需要被分配2个资源
缺页访问2号页,进程P若要继续访问,必须往下clock置换掉60H页框
1 类(A=0,M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。
2 类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。
3 类(A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能再被访问。
4 类(A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访问。
https://zhuanlan.zhihu.com/p/533159124
MySQL:
各种 join: zhuanlan.zhihu.com/p/59656673
烂尾但还行:www.cnblogs.com/nolca/p/17350659.html
静态语句create table之类,不能使用curdate(), now(),只能用时间戳timestamp
动态语句insert/updaste...则可以
列改名:新建add→复制update→删除drop
alter table 表名 change 旧列名 新列名 类型
drop table 删表结构(主键)+数据
delete table where... 删表数据
建索引:查询/连接/聚集/聚簇(order/group by.../distinct) primary key
'admin'@'%'
'admin'@'主机名'
仅仅提交更新部分的数据而不是全部数据违反了数据库的(原子性)规则
若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上数据未受影响,这种情况称为 系统故障
TCSEC(TDI)将系统划分为 4组 7个等级
第一范式:列不能再分
第二范式:建立在第一范式基础上,消除部分依赖
第三范式:建立在第二范式基础上,消除传递依赖。
函数依赖:
拆右消消左并左
依赖集闭包:与函数依赖相反,所有子关 系都包含在内
函数依赖≠分解
最好的分解:
无损分解:A∩B→A-B(或B-A)存在于函数依赖F中;看视频
保持函数依赖FuncDependency:所有 函数依赖 都能够投影到 分解 上
{A→B,B→C}投影到分解{AB,BC}√ {ABC,...}√ {AC}×
两段封锁协议→充分条件→可串行化调度
可能死锁
①二级封锁:写排他锁,读共享锁;(扩展)
②释放锁后(收缩,只减少锁,不再加锁)
读写分离
并发访问、并发查询
lock tables account write;
unlock tables;
where...lock in share mode;共享锁
where...for update; 排他锁
select from where group by having order by asc
on:on先过滤,执行查询生成临时表
where:作用于表和视图
having:作用于组,在分组和聚集之后选取分组的行,可以筛选成组后的数据
Π()投影select *→σ()选择where/on→x乘积CROSS JOIN→∞连接(left) join/除→交INTERSECT→并UNION/差EXCEPT,if null,A where not exists B, where f(A) not in f(B)
执行效率:if null>not exists>not in
full: from A where not exists (B) /from A where f(仅一列) not in (select f() from B)
select distinct
unique主键
更名AS,去重distinct
关系运算
除法:选全部课程——f,g(A) ÷g(A),g()为课程列
关系除法A÷B——Πf(A)-Πf( Πf(A)xB-A ),原理:zhuanlan.zhihu.com/p/269104362
实现:blog.csdn.net/weixin_42217030/article/details/83317634
f()表一个列名
create temporary table Tfg(A) (select distinct f(),g() from A);
create temporary table 笛卡尔积 (select * from Tfg(A),B);
select distinct f(),g() from 笛卡尔积 where not exists (select * from A where 笛卡尔积.f() = f() and 笛卡尔积.g()= g());
简记:create temp T(A) (d f(A),g(A)) ,T积 (T(A),B); select distinct f(T积),g(T积) - A{ f(A)=f(T积),g(A)=g(T积) } ;
set @local_var
prepare tmp from @local_var
execute tmp
deallocate prepare tmp
delimiter $$
drop function if exitsts nolc_add$$
create function nolc_add(a int, b int)
returns int
begin
return a+b;
end$$
delimiter ;
abc: LOOP
;
if exp1 then
iterate abc;
else
leave abc;
end if;
end LOOP;
代码经验写法
建议直接去博客看文字代码,这里只贴图
