logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Java 高并发场景下 Redis 分布式锁(UUID+Lua)最佳实践

文章摘要:在分布式系统开发中,高并发场景下的数据一致性问题始终是核心痛点。无论是设备序号递增、巡检任务创建,还是库存扣减、订单生成,若缺乏有效的并发控制,极易出现数据重复、覆盖、跳号等异常。Redis 凭借其高性能、原子操作特性,成为实现分布式锁的首选方案,而结合 UUID 唯一标识与 Lua 原子脚本,可构建安全、可靠的分布式锁体系。本文将从原理到实战,完整讲解该方案的实现与最佳实践。

#java#redis#分布式
使用 Arthas 排查 MQTT 接口分布式锁 “自我阻塞”

这次排查不仅修复了一个性能 bug,更重要的是建立了 “分布式锁耗时异常” 的标准化排查思路 —— 用 Arthas 穿透链路,用 “锁 Key + 加锁顺序” 定位根因,比盲目优化更高效。排查核心思路是 **“先定位慢方法→再深挖子调用→最后核对锁逻辑”**,全程用 Arthas 工具层层剥茧,避开 “方法名迷惑性” 和 “锁逻辑隐藏” 两大陷阱。到这里,看似是 “单 Key 锁竞争”,但进一步

#分布式
一次OOM 排查与修复实战:从 MAT 报告到代码优化

文章摘要:最近测试环境出现了一起频繁的 OOM(OutOfMemoryError)异常,导致服务频繁重启,影响了业务正常运行。经过一系列排查、分析与优化,最终解决了问题。今天就把整个过程梳理下来,分享给大家,希望能给遇到类似问题的同学提供一些参考。

#python#开发语言
ReentrantLock 与 synchronized 底层实现对比图解

在日常开发中,常规的同步场景优先使用 synchronized,它使用简单、无手动释放锁的风险,JVM 会自动做优化,也是 Java 官方推荐的首选同步方案。只有当业务场景需要 synchronized 不支持的高级特性时,才选择 ReentrantLock,比如需要公平锁、可中断等待、超时获取锁、多条件精准唤醒的复杂并发场景,比如自定义同步组件、生产者消费者模型、限流熔断等场景。

#c##开发语言
Redis 与 MySQL 数据最终一致性方案

┌─────────────────────────────────────────────────────────────────┐│                        高并发读场景            

#redis#mysql#数据库
【实战源码】生产级通用缓存安全工具类:彻底解决缓存穿透、击穿、雪崩(附完整流程图 + 源码解析)

缓存穿透:查询不存在的数据,绕过缓存直接打数据库;缓存击穿:热点 Key 过期瞬间,大量并发请求直连 DB;缓存雪崩:大量 Key 同时过期,数据库压力骤增。普通缓存get -> 判断 -> 查库简易写法,完全无法应对线上高并发流量。本文基于 12306 开源项目生产级safeGet安全缓存查询方法,完整拆解「布隆过滤器 + 分布式锁 + 双重检查 + 自动回填」的万能缓存方案,附带执行流程图、核

#缓存#流程图
ReentrantLock 与 synchronized 底层实现对比图解

在日常开发中,常规的同步场景优先使用 synchronized,它使用简单、无手动释放锁的风险,JVM 会自动做优化,也是 Java 官方推荐的首选同步方案。只有当业务场景需要 synchronized 不支持的高级特性时,才选择 ReentrantLock,比如需要公平锁、可中断等待、超时获取锁、多条件精准唤醒的复杂并发场景,比如自定义同步组件、生产者消费者模型、限流熔断等场景。

#c##开发语言
【JVM】什么是运行时数据区?

运行时数据区指的是JVM所管理的内存区域,其中分成两大类:线程共享 –方法区、堆方法区:存放每一个加载的类的元信息、运行时常量池、字符串常量池。堆:存放创建出来的对象。线程不共享 –本地方法栈、虚拟机栈、程序计数器本地方法栈和虚拟机栈都存放了线程中执行方法时需要使用的基础数据。程序计数器存放了当前线程执行的字节码指令在内存中的地址。直接内存主要是NIO使用,由操作系统直接管理,不属于JVM内存。

文章图片
#jvm
到底了