02 2023 档案
摘要:1.元数据锁MDL() https://www.yht7.com/news/208573 DML:select、insert、update、delete等数据操作 DDL:create、drop、alter等定义和修改数据结构的操作 元数据锁是表锁。DDL加写锁,DML加读锁。 所以DML和DDL操
阅读全文
摘要:算法: 组合问题的剪纸优化. 上次的组合问题,我们是对层数的每个元素遍历一遍,在某些情况下是没有必要的,例如,4个数取4个组合。那么我们的起始位置必须要满足个数的条件,那么从2开始取,最多取2,3,4三个数,不满足条件可以舍去。 接下来看一下优化过程如下: 已经选择的元素个数:path.size()
阅读全文
摘要:MyIsam和InnoDB的区别 1. InnoDB支持事务!MyIsam不支持事务。 InnoDB对于语句的执行会默认封装成事务执行,最好把多条语句封装一起再提交,高频率提交事务也不是很好。 2.InnoDB支持外键,MyIsam不支持 3.数据结构不同,虽然索引的结构都是B+树,但是InnoDB
阅读全文
摘要:聚簇索引和非聚簇索引:聚簇和非聚簇的含义是:是否索引和数据进行绑定,即是否需要二次查找才能找到对应的数据值。 由于聚簇索引的绑定关系,要求聚簇索引是唯一值,否则不能明确通过索引确定数据。一般来说主键索引做聚簇索引,非主键索引是非聚簇索引(辅助索引),如果不是主键会选一个非空唯一字段。 由图可以看出,
阅读全文
摘要:Mysql为什么会产生死锁? 事务A、B分别拿到1,4的独占行锁,然后再去拿4,1的行锁,都会由于另一个事务不释放锁等待,造成了循环等待的局面。 (1)同一时刻只能有一个事务持有这把锁; (2)其他的事务需要在这个事务释放锁之后才能获取锁,而不可以强行剥夺; (3)当多个事务形成等待环路的时候,即发
阅读全文
摘要:算法: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],] 回溯算法的基本写法: 组合是有序的,1,2 和2,1算作一个结果。 所以如果判断n个数取k
阅读全文
摘要:算法部分: 复习一下二叉树的题目: 简单的前中后序遍历: 解二叉树的题目的逻辑:1.确定入参和返参 2.确定终止条件 3.确认每层的逻辑 例如简单的后续遍历。 后续遍历是左右中。 那么入参和返参根据题目来做。 终止条件是: 遍历下去,遍历到的根节点为null 每层的逻辑是:左右中 代码如下,前中序列
阅读全文
摘要:volatile的问题: volatile只能保证读/写操作的原子性,没有办法保证变量的其他操作的原子性,例如 ++ 等非单独读/写操作。 相对于Synchronized的悲观锁方式,还有一种方式来保证并发的同步,那就是乐观锁,乐观锁其中的一种实现方式就是CAS。 CAS:(compare and
阅读全文
摘要:volatile: 背景: CPU和主存读写速度不一致,出现了高速缓存。把一些经常读的数据存入高速缓存,交互计算和高速缓存进行,修改完毕后再从高速缓存刷回主存中。 但是问题来了! CPU是多核,不同的cpu都有自己的高速缓存,那么一份数据可能就被缓存在不同的cache中。 并发操作就会造成数据的不准
阅读全文
摘要:1.参数配置调优。 先pass 2.索引调优 如果使用联合索引,要遵循最左匹配原则。 index(a,b,c) 如果想使用这个索引,那么必须遵循这个顺序使用。 模糊查询也是要遵循最左前缀匹配原则。 不能%在索引前 例如 %abc和%a%都是无效索引。 索引长度尽量端,长列可以建前缀索引 索引数据不宜
阅读全文
摘要:对于上次提到的mmap+write做一个总结 mmap用到的特性是虚拟内存。 操作: 1.DMA把磁盘内容copy到内核缓冲区。 2.通过虚拟空间映射的方式,用户缓冲区和内核缓冲区共享,减少了一次内核缓冲区到用户缓冲区的cpu拷贝。直接把内核缓冲区数据拷贝到socket缓冲区中,这个过程发生在内核态
阅读全文
摘要:首先弄懂传统的I/O操作的过程: 首先,期间共发生了 4 次用户态与内核态的上下文切换,因为发生了两次系统调用,一次是 read() ,一次是 write(),每次系统调用都得先从用户态切换到内核态,等内核完成任务后,再从内核态切换回用户态。 上下文切换到成本并不小,一次切换需要耗时几十纳秒到几微秒
阅读全文
摘要:概念上 kafka和RocketMQ的结构很类似。除了Broker、Producer、Consumer、Topic。多了一个分区的概念 Partition。对于NameServer的概念,kafka用的是zookeeper来保存信息。包括Broker和Topic的元数据信息。 分区:topic to
阅读全文
摘要:RocketMQ 分布式事务 相对于本地事务,分布式事务是为了满足跨数据源或跨服务的事务场景。上图展示了RocketMQ在分布式事务中的应用,满足CAP定理中的AP,保证最终一致性。主要工作流程就是:本地服务先发一个半消息,这个消息是不能被其他服务进行消费的,然后执行本地事务,根据本地事务执行的成功
阅读全文
摘要:回顾上次的内容: NameServer、Broker、Producer、Consumer 生产者向Broker发送消息,放在消息队列,消费者通过消息推过来/自己拉取的方式消费消息。 NameServer和Broker保持心跳。他们之间建立长连接进行通信。 Producer想发消息,就要问NameSe
阅读全文
摘要:MQ消息队列。 目前市面上流行的MQ有:RocketMQ、kafka、RabbitMQ、ActiveMQ 比较一下这几个消息队列 一般消息队列的作用和使用场景是:1.解耦。(本来A要调很多接口,现在A直接把数据放入MQ,下游服务需要自取) 2.最终一致性 3.广播 4.错峰与流控 吞吐量方面,Act
阅读全文
摘要:Zookeeper、Nacos、Eureka的比较 CAP原则; Consistency:数据一致性(主要在乎数据的安全和一致,用户体验放在第二) Availability:可用性 (收到请求要进行反馈,用户体验第一) Partition tolerance:分区容错性。 (遇到故障时,仍能够提供C
阅读全文