- 博客(10)
- 收藏
- 关注
原创 Explain
扫描全索引就能拿到结果,一般是扫描某个二级索引,这种扫描不会从索引树根节点开始快速查找,而是直接对二级索引的叶子节点遍历和扫描,速度还是比较慢的,这种查询一般为使用覆盖索引,二级索引一般比较小,所以这种通常比ALL快一些。2.关联表查询,idx_film_actor_id是film_id和actor_id的联合索引,这里使用到了film_actor的左边前缀film_id部分。id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。
2025-01-22 23:44:44
745
原创 mysql索引底层数据结构与算法
索引是帮助MySQL高效获取数据的排好序的数据结构索引数据结构: 二叉树 ,红黑树, Hash表, B-Tree,B+树假设现在有这样一张表。
2025-01-22 02:52:02
2105
原创 ThreadLocal
是 Java 中的一个类,用于在多线程环境中为每个线程提供独立的变量副本,确保线程间的数据隔离。每个线程都可以独立操作自己的副本,而不会影响其他线程的数据。
2025-01-21 21:37:34
1412
原创 Spring事务
代理对象作为Bean,代理对象在执行某个方法时,最终就会进入到TransactionInterceptor的。所以,这就要求Spring事务能支持上面各种场景,这就是Spring事务传播机制的由来。配,匹配逻辑为判断该Bean的类上是否存在@Transactional注解,或者类中的某个方法上是否存在。i. 代理对象执行b()方法前,判断出来了当前线程中已经存在一个数据库连接a了,表示当前线。在开发过程中,经常会出现一个方法调用另外一个方法,那么这里就涉及到了多种场景,比如a()调用。
2025-01-21 19:43:51
1662
原创 并发编程-阻塞队列
在 getDelay 方法中,我们可以计算订单的剩余延迟时间,而在 compareTo 方法中,我们可以根据订单的延迟时间进行比较。同样地,插入新的元素时,我们可以直接将新元素插入到 putIndex 所指向的位置,而不需要将其后面的元素全部向后移动。的也可以是无界的(Integer.MAX_VALUE),对于后者而言,当添加速度大于移除速度时,在无界的情况下,可能会造成内存溢出等问题。在实现一个延迟订单的场景中,我们可以定义一个 Order 类,其中包含订单的基本信息,例如订单编。
2025-01-21 00:44:02
608
原创 Redis主从与哨兵架构
接着,主节点会将之前缓存在内存中的命令发送给从节点。如果主节点同时收到多个从节点的连接请求,它只会生成一次 RDB 文件,然后将这份数据发送给所有连接的从节点,而不是为每个从节点单独生成一次。如果主节点的进程 ID 变化了,或者从节点的偏移量已经不在主节点的缓存队列中(比如数据太旧,偏移量在主节点的缓存队列(repl backlog buffer)中找不到了),则会触发一次。如果主节点的进程 ID 没有变化,并且从节点的偏移量仍然在主节点的缓存队列范围内,主节点会只发送从节点缺失的那部分数据(部分复制)。
2025-01-20 21:25:01
927
原创 Redis持久化
Redis需要持久化主要是为了确保数据在服务器重启或崩溃后不会丢失。Redis持久化方案有三种在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。(在某个时刻达到某个条件一次性把缓存中的数据写入到rdb文件中)。你可以对redis.conf进行设置,让它在“N秒内数据集至少有M个改动”这一条件被满足时,自动保存一次数据集。
2025-01-19 02:58:42
903
原创 Spring整合mybatis
11.MapperFactoryBean的AutowireMode为byType,所以Spring会自动调用set方法,有两个set方法,一个setSqlSessionFactory,一个setSqlSessionTemplate,而这两个方法执行的前提是根据方法参数类型能找到对应的bean,所以Spring容器中要存在SqlSessionFactory类型的bean或者SqlSessionTemplate类型的bean。1.通过@MapperScan导入了MapperScannerRegistrar类。
2025-01-18 00:26:02
795
原创 连接池(cas+blockingQueue)
③启动清理任务,定期回收空闲连接(先peek查看阻塞队列中第一个连接检查该连接是否空闲时间超过了回收时间间隔,并且当前连接数是否大于最小空闲连接数,如果都符合那就使用cas+自旋修改连接数,cas成功就将连接从阻塞队列中取出)②判断当前连接数是否小于最大连接数,如果小于那就使用cas+自旋修改连接数,cas成功则创建新连接,如果大于等于则使用poll超时等待连接池中空闲连接。1.首先我创建了一个类用于获取数据库连接,并且代理了连接的close方法,执行回调函数(用于归还连接)执行获取连接方法并取到了连接。
2025-01-15 11:33:59
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人