- 博客(12)
- 收藏
- 关注
原创 同步器AQS
2.tryAcquire 中判断是否有“先来者”(即队列头结点的下一个接口是否为空):在 tryAcquire 中,如果 state == 0,先调用 hasQueuedPredecessors(),检查 AQS 等待队列中是否有线程比当前线程等得更久。1.直接抢占:线程调用 lock() 时,首先直接尝试 CAS 将 state 从 0 改为 1,不管等待队列里有没有线程在排队。1.不直接抢占,先检查队列:线程调用 lock() 时,不会先 CAS,而是直接进入 acquire(1) 流程。
2026-09-15 23:04:27
110
原创 线程并发关键字:synchronized、volatile、final
理解 Java 并发的内存语义,绕不开 happens-before 与 JMM(Java Memory Model)。本文围绕volatilefinal三个关键字,从「happens-before → 各关键字的语义与底层实现 → 三者对比」的脉络展开。
2026-09-14 11:27:03
105
原创 海量手机号凯苏查询判断方案
用「两层布隆(本机 + Redis)」快速挡掉不存在的号码,用「Redis 精确缓存」接住高频命中,再把漏网的少数请求交给「分库分表的数据库」做最终精确判定。
2026-09-07 11:04:11
167
原创 MYSQL基础语法与聚合函数
聚合函数对一组值进行计算,返回一个单一的值。默认最大长度为 1024 字节,可通过。条件会删除全表数据!自动忽略 NULL 值。过滤的是行(分组前),过滤的是组(分组后)。条件会更新全表数据!
2026-09-06 20:20:49
146
原创 SQL 语句优化
在WHEREORDER BYGROUP BYSELECTJOIN等子句中涉及的字段没有建立索引。<>NOT IN:在"性别""状态"等低区分度字段上建索引,优化器可能选择不走索引。SELECT *返回过多列,或没有LIMIT的大结果集,尤其大字段多时更慢。需要扫描并丢弃前 100000 条数据,偏移量越大越慢。:关联字段类型不一致、缺少关联条件、子查询嵌套过深、视图套视图等。
2026-09-06 20:19:31
226
原创 死锁的基本了解
死锁的本质是:多个事务互相持有对方所需要的资源,形成循环等待,导致所有事务都无法继续执行。只有以下四个条件同时满足,才会发生死锁:在输出中找到 LATEST DETECTED DEADLOCK 部分,其中会显示:然后查看 MySQL 错误日志(如 ),搜索 关键字,可看到所有死锁记录(而不仅是最近一次)。方法四:专业工具Percona Toolkit 的 :实时监控并记录死锁详情到日志云数据库管理服务(如天翼云 DMS):支持 MDL 锁、行锁及死锁的自动化分析与源头定位解决方法1.
2026-08-21 17:29:18
200
原创 锁的基本学习
锁是计算机协调多个进程或线程某一资源的机制。在数据库中,锁用于实现事务的并发控制,保证多个事务并发操作同一份数据时的一致性与隔离性。
2026-08-21 17:28:14
170
原创 Spring WebClient简单使用
WebClient 是 Spring 5 引入的一个非阻塞、响应式的 HTTP 客户端,属于 Spring WebFlux 框架的一部分,是官方推荐的 RestTemplate 现代化替代方案。查天气必须先拿到经纬度:Open-Meteo 只认经纬度,不认地名或 IP地名 -> 经纬度:用 geocoding API;IP -> 经纬度:用 ip-api.com用flatMap串联「先定位、再查天气」两步异步操作用UriBuilder拼接 URL,自动处理中文编码。
2026-08-14 16:32:59
226
原创 tomcat的初步学习使用
对于 StandardContext,启动过程是 Web 应用初始化的核心:- WebappLoader.start():启动 Web 应用的类加载器- Manager.start():启动 Session 管理器- filterStart():初始化所有 Filter(调用 Filter.init())- loadOnStartup():收集 web.xml 中 load-on-startup >= 0 的 Servlet,按数值从小到大排序后 依次调用 wrapper.load()。
2026-08-13 19:45:08
271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅