摘要: 共享锁 又称读锁,简称S锁。当一个事务添加共享锁时,其他事务都可以去读,但无法上写锁进行数据的修改。 排他锁 又称写锁,简称X锁。当一个事务添加排他锁时,其他事务都不可以去读或者写。 阅读全文
posted @ 2022-01-21 11:59 Kisen 阅读(28) 评论(0) 推荐(0)
摘要: 聚簇索引:数据和索引存储在一起。 非聚簇索引:数据和索引分别进行存储。 阅读全文
posted @ 2022-01-21 11:47 Kisen 阅读(58) 评论(0) 推荐(0)
摘要: READ UNCOMMITED 读取未提交内容 READ COMMITED 读取已提交内容 REPEATABLE READ 可重复读 SERIALIZABLE 可串行化 阅读全文
posted @ 2022-01-21 11:33 Kisen 阅读(23) 评论(0) 推荐(0)
摘要: 懒得手打了直接去看Java设计模式:23种设计模式全面解析(超级详细) (biancheng.net) 但是有几个点要注意: 面向对象设计原则虽然被分成了7条,但本质上可以分为5组: 开闭原则:需求改变时,无需推倒重来,直接进行扩展;对扩展开放,对修改关闭 里氏替换+合成复用:尽量使用组合聚合代替继 阅读全文
posted @ 2022-01-21 10:44 Kisen 阅读(33) 评论(0) 推荐(0)
摘要: B+树特征 1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。 2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 3.所有的中间节点元素都同时存在于子节点,在子 阅读全文
posted @ 2022-01-20 11:28 Kisen 阅读(1033) 评论(0) 推荐(0)
摘要: 一个B树首先是一个多叉平衡树。 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 相比普通的二叉平衡树,特点是更加“矮胖”,提高了搜索效 阅读全文
posted @ 2022-01-20 11:10 Kisen 阅读(331) 评论(0) 推荐(0)
摘要: 啥是索引? 把数据比作字典的话,索引就是字典的目录。 索引的底层实现一般使用B+tree和hash(默认只是Btree)。 啥事B+树? B树是有一种中序排序树。 B+树是B树的优化。 每个右节点存储了大于等于父节点的数据。 每个左节点存储了小于等于父节点的数据。 特点是所有叶子节点分别存储了所有数 阅读全文
posted @ 2022-01-20 11:05 Kisen 阅读(34) 评论(0) 推荐(0)
摘要: 题目 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己 阅读全文
posted @ 2022-01-19 23:29 Kisen 阅读(97) 评论(0) 推荐(0)
摘要: 原子性 即一个或多个操作要么不执行,要么就全部执行完毕,不会被其他因素打断。类似于数据库的事务。 因此可以通过锁、synchronized来确保。volatile是无法保证复合操作的原子性。 可见性 当多个线程共享一个变量时,若其中一个线程改变变量的值,其他线程立即就能够看到,即为可见性。 Java 阅读全文
posted @ 2022-01-19 20:13 Kisen 阅读(177) 评论(0) 推荐(0)
摘要: 问:有何区别? 标答:第一种方法会产生大量中间值(脏数据),原子性完全被破坏,可能导致引用不正确。 第二种方法虽然也会产生中间值,但是只有0一个初始值(脏数据),因此虽然不具有原子性,但是第二种方法仍然比第一种好得多。 阅读全文
posted @ 2022-01-19 19:55 Kisen 阅读(36) 评论(0) 推荐(0)