摘要:
一. Mybatis框架式如何实现分页的? 逻辑分页:将所有数据查询出来,在内存中进行分页处理。 物理分页:直接在数据库中进行分页。 具体实现: 自己写sql进行物理分页。 使用拦截器进行物理分页。 使用PageHelper进行物理分页。 RowBounds进行逻辑分页。 二. MyBatis中的缓 阅读全文
posted @ 2025-07-08 15:50
Charlie-Pang
阅读(11)
评论(0)
推荐(0)
摘要:
1、线程池的基本描述 /** * corePoolSize: 线程池中的核心线程数,默认情况下,只有核心线程会执行任务。 * new之后,线程池并不会立即创建该核心线程,而是会等待任务加入队列,当任务加入队列后,才会创建核心线程。 * * maximumPoolSize: 线程池中的最大线程数,默认 阅读全文
posted @ 2025-07-08 12:20
Charlie-Pang
阅读(5)
评论(0)
推荐(0)
摘要:
ApplicationContext就是IOC容器 @Bean是通过工厂方法或构造器创建的,和IOC容器不同,IOC容器是通过反射创建的。 SpringIOC容器初始化过程 1、Spring容器中的Bean默认都是单例的,但是并不是线程安全的,所有线程都共享一个单例Bean,因此存在资源竞争的关系。 阅读全文
posted @ 2025-07-08 10:01
Charlie-Pang
阅读(10)
评论(0)
推荐(0)
摘要:
1、redis的淘汰策略:默认是noeviction。 2、redis中String的类型能大的的数据 3、如何保证数据库与redis的数据一致性? a、延迟双删 缺点:写操作过于频繁,还是会存在脏数据 假设只删一次缓存: A 线程先查 Redis 缓存,未命中; B 线程更新 MySQL 数据并删 阅读全文
posted @ 2025-07-08 09:23
Charlie-Pang
阅读(7)
评论(0)
推荐(0)
摘要:
描述:大量的key过期。或者缓存系统崩溃,导致所有的请求打到数据库上。 解决方案: 1、redis要高可用(使用redis cluster集群)。 2、给不同的key设置不同的过期时间; 3、本地缓存(二级缓存)+限流&降级,避免数据库被压垮; 阅读全文
posted @ 2025-07-08 08:57
Charlie-Pang
阅读(9)
评论(0)
推荐(0)
摘要:
当redis数据失效或者项目刚启动redis还没有对热点数据进行缓存,导致所有数据都会查询数据库。数据库有可能会被压垮。 解决办法: 1、全局锁 当查询redis时,如果redis没有数据,则获取全局锁,如果获取到锁,查询数据库,如果没有获取到锁,则尝试再次获取锁,假如拿到锁之后,先检查redis是 阅读全文
posted @ 2025-07-08 08:56
Charlie-Pang
阅读(14)
评论(0)
推荐(0)
摘要:
请求一个不存在的数据 请求-》redis-》数据库:redis查询不到,请求数据库,数据库也不存在,返回给前端 后果:有可能被恶意用不存在的值查询数据库,导致数据库的压力过大。 解决办法: 1、将数据库不存在的数据缓存在数据库中,可以有效的解决这种问题。 2、布隆过滤器有一定的误判概率,判断某个元素 阅读全文
posted @ 2025-07-08 08:36
Charlie-Pang
阅读(10)
评论(0)
推荐(0)
摘要:
redisson的分布式锁是可重入的 redis锁的问题: 1、不是原子操作 设置获取锁和设置锁超时不是原子操作,有可能导致获取锁成功,但是设置锁过期时间失败,这样任务执行会出现不可控的情况。 获取锁 setnx key value 设置锁过期时间 expire key 30 执行业务代码 释放锁 阅读全文
posted @ 2025-07-08 08:07
Charlie-Pang
阅读(36)
评论(0)
推荐(0)

浙公网安备 33010602011771号