mysql学习:范式,存储引擎和索引 三大范式是什么第一范式,表中的所有字段都得是原子的不可再分的,比如不能有一个人的“特征”,必须细分为“爱好”,“性格”这样 第二范式,要求非主属性必须完全依赖于候选关键字,比如我现在有一个表:学号,课程号,姓名,学分 学号→姓名,学分→课程号,不符合第二范式,应该拆成三张表【学生:姓名,学号】,【课程:课程号,学分】【选课关系:学号,课程号】 第三范式,要求不存在依赖传递关系,比如我有一个表a,b 2025-04-18 技术栈学习 #mysql
mysql学习:日志 日志 三大日志 undo log,用于回滚数据 redo log,用于保证持久性 binlog,数据备份和主从复制,在server层实现 redo log和bin log在恢复数据库上的区别 binlog是追加写,写满一个文件,就新创建一个文件,可以恢复所有情况下的数据 redo log是循环写,日志大小固定,保存的是innodb做的修改操作,用来恢复中途断电丢失的数据 redo log是引擎 2025-04-13 技术栈学习 #mysql #日志
双指针学习 移除元素123456789101112131415//快慢指针法//重点:什么时候进行交换//当fast位置的值等于val的时候,把fast的值赋值给后面的指针slow//因为continue的存在,fast和slow正好会差出值恰好为val的偏差func removeElement(nums []int, val int) int { slow:=0 for fast:=0 2024-04-19 算法 #双指针
二分查找学习 二分查找适用于有序数组,题目条件可以转化为一个恒不等式 【最小化最大值】也是二分查找的标志 排序用sort.Ints 二分查找都是实现找一个≥目标值的数 大于⇒大于等于target+1 小于⇒大于等于target-1 小于等于⇒大于target-1 go里sort.SearchInts(nums,target)返回的就是大于等于target的数的位置 使用的时候需要考虑整除和不整除的问题 1234 2024-04-17 算法 #二分查找
mysql学习:锁 锁 有哪些锁 全局锁,就是整个mysql停住 表级锁,对表的结构修改的时候加锁 行级锁,innodb实现的,每行数据修改都会加的锁 记录锁,每条记录加锁 间隙锁,范围修改查找加锁 临键锁,闭区间 插入意向锁,间隙锁和临键锁期间阻止插入 乐观锁和悲观锁 乐观锁认为不用阻塞操作也能保证数据一致 加一个版本号字段 悲观锁认为自己必须阻塞操作才能执行 加锁的情况有哪些 可重复读的情况 2024-04-11 技术栈学习 #mysql #锁
mysql学习:事务 事务 mysql的事务有什么特性 A:原子性,由undo log实现 C:一致性,由MVCC和锁实现 I:隔离性 D:持久性,由redo log实现 原子性具体是怎么实现的 事务还没提交之前,历史数据会记录在undo log里,如果半中间出错就可以用rollback语句回滚数据 持久性是怎么实现的 redo log会把对数据页的修改记录下来,如果刷盘的时候出现重启,因为redo log已经 2024-04-10 技术栈学习 #mysql