
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文总结了MySQL索引优化与SQL查询优化的关键点:1)联合索引范围查询首字段不走索引;2)覆盖索引可减少回表;3)大数据量时IN/OR走索引,小数据量全表扫描;4)like 'KK%'使用索引下推优化。Order by/Group by优化需遵循最左前缀原则,优先利用索引排序。分页查询建议先查主键再关联,避免大量数据偏移。关联查询应遵循小表驱动大表原则,确保关联字段有索引。前缀索引适用于长字符
穿透是查不存在的数据,击穿是一个热点 key 失效,雪崩是一大片 key 同时失效,Big Key 是一个 key 太胖,热点 Key 是一个 key 太火。大量缓存 key 在同一时间失效,或者 Redis 整体宕机,导致大量请求瞬间打到数据库。查询的数据在 Redis 中不存在,在数据库中也不存在,导致每次请求都会打到数据库。1. 互斥锁:缓存失效后,只允许一个线程去查数据库并重建缓存,其他线
RocketMQ 的价值并不仅仅是“把消息发送出去”,而是围绕可靠性、一致性、吞吐量和业务治理提供了一套完整机制。普通消息解决异步解耦问题。广播消息用于每个实例都需要执行的通知类场景。Tag 与 SQL 过滤帮助消费者只处理关心的消息。顺序消息保证同一业务实体的状态流转顺序。延迟消息适用于订单超时、定时提醒等场景。批量消息提高大量小消息的发送效率。事务消息用于解决本地事务与消息发送的一致性问题。A

类加载指的是 JVM 把 .class 字节码文件加载到内存中,并对其进行校验、转换、初始化,使其最终成为 JVM 可以直接使用的 Java 类型。类加载的完整生命周期如下:加载 -> 验证 -> 准备 -> 解析 -> 初始化其中,验证、准备、解析统称为连接 Linking。
不要大量使用:CompletableFuture.supplyAsync(() -> queryData());因为默认使用的是:ForkJoinPool.commonPool()这是公共线程池,不适合承载大量业务任务。推荐:
ReentrantLock 底层通过 AQS 的 state 变量记录锁的重入次数。当 state 为 0 时表示锁没有被持有,线程通过 CAS 把 state 从 0 改成 1 后获取锁成功。如果同一个线程再次获取锁,会判断当前线程是否是锁持有者,如果是,就把 state 加 1。释放锁时 state 减 1,只有当 state 减到 0 时,锁才真正释放。ReentrantLock 底层通过
注解配合 AOP 拦截,在方法执行前把数据源标识放入 ThreadLocal,执行 SQL 时由动态路由数据源根据当前线程上下文选择真实 DataSource,方法执行完成后再清理上下文。它支持主从读写分离、数据源分组、动态增删数据源、敏感配置加密、Hikari/Druid 等连接池集成,也可以结合 Seata 处理分布式事务。实际项目中我一般会把。因为一次请求通常由一个线程处理,这个线程中执行
在微服务架构中,一个系统往往会被拆分成多个服务。用户服务 user-service订单服务 order-service商品服务 product-service库存服务 stock-service支付服务 pay-service当用户下单时,订单服务可能需要调用用户服务查询用户信息,调用商品服务查询商品详情,调用库存服务扣减库存,调用支付服务发起支付。微服务之间如何进行远程调用?最原始的方式是使用或
一、Nacos 是什么?Nacos 全称是用来管理微服务实例,比如订单服务、用户服务、商品服务启动后注册到 Nacos,其他服务可以通过 Nacos 找到它们。用来统一管理配置,比如数据库地址、Redis 地址、开关配置、限流参数等,并且支持动态刷新。官方对 Nacos 的定位也是:帮助开发者发现、配置和管理微服务,支持服务发现、服务配置、服务元数据和流量管理等能力。现在新版 Nacos 还在往等
不要大量使用:CompletableFuture.supplyAsync(() -> queryData());因为默认使用的是:ForkJoinPool.commonPool()这是公共线程池,不适合承载大量业务任务。推荐:







