logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Redis 如何实现分布式锁,以及redis的适应场景分析

Redis分布式锁摘要(150字) Redis通过SET key value NX EX实现原子加锁,利用唯一随机值避免锁冲突,配合Lua脚本保证释放锁的原子性。需注意锁过期问题,可通过"看门狗"机制自动续期。Redisson客户端封装了完整逻辑,支持开箱即用。典型场景包括接口幂等控制、分布式任务调度、秒杀库存防超卖等,适用于中等并发、高性能要求的业务。但不适用于金融级强一致性

文章图片
#redis#分布式#数据库
Java线程状态转换的详细过程

Java线程的6种状态及其转换关系: NEW:新建状态,线程对象创建后未调用start() RUNNABLE:可运行状态(包含就绪和运行中) BLOCKED:阻塞状态(仅因synchronized锁竞争) WAITING:无限等待状态(需显式唤醒) TIMED_WAITING:计时等待状态(自动或提前唤醒) TERMINATED:终止状态 关键转换: 启动:NEW→RUNNABLE(start()

文章图片
#java#开发语言
使用 notify/notifyAll 唤醒等待线程的区别?

notify()和notifyAll()都是用于唤醒因wait()而阻塞的线程,主要区别在于:notify()随机唤醒一个线程,适合只需单个线程处理的情况;notifyAll()唤醒所有线程,适合需要所有线程重新检查条件的场景。使用时必须在同步块内调用,避免信号丢失问题。notifyAll()更安全但可能引发性能损耗,应优先使用,除非能确保notify()的安全性。典型场景如生产者-消费者模式用n

文章图片
#java#开发语言
mysql 索引下推的入门了解

摘要: 索引下推(ICP)是MySQL优化非聚簇索引查询的关键机制,通过将过滤条件下推到存储引擎层,减少无效回表操作。其核心价值在于:存储引擎在遍历索引时直接判断非索引列条件,仅对符合条件的记录回表,显著降低IO开销。触发条件为:使用非聚簇索引、WHERE含非索引列条件且为SELECT查询。通过EXPLAIN的"Using index condition"可确认是否生效。该特性

文章图片
#mysql#数据库
Thread.sleep(0)的意义在哪?

Thread.sleep(0)在Java中并非真正休眠,而是主动触发线程重新调度。其核心原理是让当前线程放弃剩余CPU时间片,使其他线程有机会执行。主要适用于避免单线程长期占用CPU的场景,以及辅助调试线程调度问题。注意它不保证一定切换线程,且性能开销极低。Java 9+提供了Thread.onSpinWait()作为更轻量的替代方案。该方法的本质是一种线程资源让渡机制,在特定场景下具有实用价值。

#java
到底了