上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: 一. 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)
摘要: 特性: 可见性:多线程下,一个线程对变量的修改,能立即被其他线程看到. 禁止指令重排序:编译器和CPU在变量前后的指令不能被乱序执行,本质是JMM会加入内存屏障保证,顺序不会乱序。 volatile在Java里面的运算操作符并非原子操作,这导致volatile变量的运算在并发下一样是不安全的. 案例 阅读全文
posted @ 2025-07-04 14:23 Charlie-Pang 阅读(7) 评论(0) 推荐(0)
摘要: 在《Java 并发编程实战》的3.13章节是这样描述的:内置锁可以用于确保某个线程以一种可预测的方式来查看另一个线程的执行结果。意思是:当两个线程之间通过“内置锁”(即 synchronized)进行同步时,线程 B 可以看到线程 A 之前对共享变量的修改结果,而且这些修改是按照预期的顺序可见的。 阅读全文
posted @ 2025-07-04 10:49 Charlie-Pang 阅读(13) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 下一页