- 博客(51)
- 问答 (1)
- 收藏
- 关注
原创 JUC并发编程day2
Java 的锁是 “自适应升级” 的:偏向锁 / 轻量级锁开销低,适用于低竞争场景;当多线程竞争加剧时,锁膨胀为重量级锁(依赖操作系统的 Monitor),虽开销更高,但能可靠处理高并发下的线程同步,避免轻量级锁的自旋消耗 CPU 资源。—— 偏向锁的核心优化是:若后续该线程再次进入同步块,无需重复执行 CAS,仅需判断对象头的锁记录地址是否对应自身线程栈的 Lock Record 即可。你的描述中 “轻量级锁变成偏向锁” 是不正确的,顺序反了。此时,Thread-0 成功获取该对象的。
2026-01-05 15:42:10
713
原创 JUC并发编程day1
类别方法签名所属类 / 接口核心作用生命周期start()Thread启动新线程run()Thread线程执行体join()Thread等待线程终止yield()Thread(static)主动让出 CPU中断Thread中断线程(设置标记)Thread检查中断状态(不清除)Thread(static)检查当前线程中断状态(清除)协作 (Object)wait()Object等待,释放锁notify()Object唤醒单个等待线程Object唤醒所有等待线程协作 (Lock)
2025-12-30 19:15:17
784
原创 项目1-通过RocketMQ 将短链接统计
的分布式系统设计典范。它巧妙地运用了 RocketMQ 实现异步解耦和削峰填谷,通过 Redis 实现了分布式锁和幂等性保证,最终达到了 “用户访问快、统计数据准、系统运行稳” 的目标。,整合了我们之前讨论的所有核心知识点、代码逻辑、设计思想和技术细节,方便你系统复习和查阅。这是一份关于 “短链接访问统计系统”(基于 RocketMQ)的。)命令实现,保证分布式环境下的原子性。这套短链接统计系统是一个。基于 Redis 的。
2025-12-28 16:58:53
957
原创 消息队列真仙:我的道念支持最终一致性
沈清歌飞升失败那日,在第九重雷劫中觉醒了前世记忆。她原是阿里云RocketMQ首席架构师。看着修真界低效的传音玉符和容易丢失的神念波动,她叹了口气:“连个死信队列都没有。”当魔尊携亿万心魔冲击瑶池圣地时,沈清歌抬手展开「顺序消息分区」:“你们的心魔,连我的消费组都冲不垮。”仙庭使者质问为何私自重构飞升通道,她身后浮现万亿级削峰填谷流图:“旧通道TPS太低,我做了异步化改造。”玉帝震怒降下天罚,却见她开启事务消息回查:“陛下,您的雷霆已被持久化,要回滚吗?”
2025-12-15 15:05:04
592
原创 RocketMQ 详细攻略
RocketMQ 的使用核心是理解核心概念 + 掌握基础用法 + 关注高可用与性能。入门阶段需搭建单机环境,熟悉生产 / 消费流程;进阶阶段需掌握事务、顺序、延时等高级特性;生产环境需重点关注集群部署、监控告警、问题排查,同时做好幂等性、限流、容灾等设计,确保消息中间件稳定可靠。
2025-12-15 14:52:20
729
原创 微服务网关(Spring Cloud Gateway)实战攻略
java运行@Component// 白名单(无需鉴权的接口)@Override// 1. 白名单接口直接放行// 2. 提取Token// 3. 校验Tokentry {// 4. 解析用户信息,透传给微服务(写入请求头).build();// Token过期/无效// 构建401响应// 返回自定义错误信息。
2025-12-10 16:03:25
1248
原创 微服务-远程调用
微服务架构中,远程调用是不同服务间通信的核心手段,用于实现服务解耦后的协作,常见的实现方式包括(如 HTTP/gRPC)和(如消息队列),需兼顾性能、可靠性与易用性。
2025-12-10 09:56:32
860
原创 容器修仙:我的道果可以无限复刻
天衍宗万载以来最年轻的真传陆渊,身怀「ORM圣体」与「容器灵根」。他眼中的世界,尽是数据表与镜像层。宗门大殿上,掌门震怒:「你竟将藏经阁功法都映射成了Mapper接口?」陆渊垂眸:「还有自动生成的Service层,师尊。」当上古魔灾冲破封印,十二峰主结阵死守,陆渊抬手祭出Docker Compose:「诸峰大阵已容器化,支持一键扩缩容与滚动更新。」仙界使者下凡问责,见他身后三千镜像分身,颤声问:「你…你把飞升流程也做成了CI/CD?!」陆渊微微一笑:「正是,K8s编排的。」
2025-12-06 21:22:11
928
原创 Docker
如果官方镜像满足不了需求(比如要装个带特定插件的 nginx),就自己写 Dockerfile 构建镜像。Dockerfile和index.html(自己写个简单的 HTML 页面);Dockerfile 内容:dockerfileFROM nginx:1.23 # 基础镜像WORKDIR /usr/share/nginx/html # 切换到nginx的默认页面目录COPY index.html ./ # 把本地index.html复制过来。
2025-12-06 21:16:46
734
原创 MyBatis-Plus 使用指南
本文全面介绍MyBatis-Plus(MP)的使用指南,包含环境配置、核心功能和高级特性。首先讲解SpringBoot项目中MP的Maven依赖配置和YAML文件设置,包括逻辑删除、驼峰映射等全局配置。其次详细说明实体类注解、Mapper接口继承、Service层封装等基础CRUD操作。重点解析MP的高级功能:分页插件配置、乐观锁实现、自动填充处理器、Lambda条件构造器使用、自定义SQL编写方法。此外还涵盖多数据源切换和代码自动生成器的配置与使用。最后总结常见问题解决方案,如主键自增、分页查询、逻辑删除
2025-12-04 20:12:14
1456
原创 微服务圣体:我的依赖注定被万人调用
楚澜生下来就身怀「微服务圣体」。他能看见万物间流动的「依赖链」与「调用关系」。剑宗圣女与他论道三日,道心不稳:「为何我的无情剑意总被你拆解成松耦合模块?」魔门妖女布下九重情劫大阵,却见他抬手展开「服务网格」:「你的劫数,连我的边车代理都绕不过。」直到飞升雷劫那日,漫天仙神看着他身后的十万虚影:「此子……竟将自身道果拆成了分布式集群?」楚澜笑指天道:「要渡劫?先过我的API网关。」
2025-12-03 14:42:40
762
原创 我,Redis真君,掌管万界缓存
陆川穿成修仙界废柴,却觉醒Redis灵根。师尊骂他:“连筑基都缓存的废物!”直到魔道举宗来袭,护山大阵崩碎在即。陆川抬手祭出AOF持久化日志:“你们的攻击,连我的RDB快照都覆盖不了。”当上古血祭大阵吞没三千里山河,他反手展开Cluster分片集群:“要我崩?先问过16384个哈希槽同意吗?”九天仙帝降下焚世雷劫时,陆川笑着点开内存碎片整理:“陛下,您的雷海……我收进缓存了
2025-12-03 14:37:20
824
原创 Redis 缓存预热
本方案基于 OpenResty + Canal + Redis 实现了“全量预热 + 增量预热” 的混合缓存预热策略冷启动优化:系统启动时全量加载热点数据,避免缓存穿透;实时同步:运行时通过 Canal 监听数据变更,增量更新缓存,保证数据一致性;高性能:非阻塞 I/O + 连接池 + Pipeline 优化,支持大表分批预热;可运维:提供预热状态查询、手动触发 / 清理接口,便于监控和故障处理。
2025-12-02 21:01:58
837
原创 监听 Canal
在 OpenResty 中监听 Canal(数据库 binlog 同步工具),核心是(TCP 原生协议或 HTTP 协议),接收数据库变更事件(增删改),再通过 Lua 脚本实现后续业务逻辑(如缓存更新、消息推送、数据校验等)。
2025-12-02 20:35:28
648
原创 OpenResty
OpenResty 不是 “替代 Nginx”,而是 “增强 Nginx”—— 它保留了 Nginx 的高性能,同时通过 Lua 脚本赋予了 Nginx 强大的动态扩展能力,尤其适合高并发、低延迟的场景(如 API 网关、高性能接口)。需要 API 网关(路由、鉴权、限流);想要开发高性能 Web 应用(并发 > 1 万,延迟 < 10ms);希望用简单的脚本扩展 Nginx 功能(无需写 C 模块);那么 OpenResty 是最优选择之一。
2025-12-02 20:30:05
1163
原创 Lua核心认知
核心场景:Redis 缓存一致性、分布式锁、接口限流(解决并发问题);集成方式:Spring Boot + StringRedisTemplate,支持硬编码脚本或外部文件加载;优势:原子性、低网络开销、简化复杂逻辑,配合 Caffeine+Redis 架构,提升系统稳定性和性能。
2025-12-02 13:46:52
749
原创 Caffeine
如果需要多缓存策略(如不同接口用不同过期时间),可通过配置类扩展:java运行@EnableCaching // 启用Spring缓存注解(@Cacheable、@CacheEvict等)// 定义多个缓存策略(按需扩展)@Bean// 缓存1:用户信息缓存(最大500条,5分钟过期)"userCache", // 缓存名称(@Cacheable中指定).build()));// 缓存2:商品列表缓存(最大1000条,1分钟过期).build()));
2025-12-02 13:41:25
903
原创 Redis 多级缓存:架构设计、核心问题与落地实践
其本质是利用不同缓存介质的特性(本地缓存快、Redis 分布式共享、数据库持久化),形成 “层层递进” 的缓存体系。通过合理设计,多级缓存可将系统响应时间从 “毫秒级(仅 Redis)” 降至 “微秒级(本地缓存)”,同时支撑更高并发,是高可用、高性能系统的核心架构之一。(3)缓存雪崩(大量 Key 同时过期 / Redis 集群宕机,数据库被压垮)(2)缓存击穿(热点 Key 过期,大量请求穿透到数据库)(大多数业务优先最终一致性,牺牲少量延迟换高并发)。(1)缓存穿透(查询不存在的数据,穿透到数据库)
2025-12-01 20:22:07
928
原创 Redis 持久化 主从 哨兵 分片集群
Redis 是内存数据库,默认不开启持久化时,数据仅存于内存,进程终止后数据全部丢失。持久化通过 “磁盘备份”+“重启恢复” 实现数据可靠性,两种机制各有侧重,可单独使用或组合配置。RDB 是 Redis 的默认持久化方式,在指定时间点拍摄内存数据的全量快照,并保存为二进制文件(默认dump.rdb重启时,Redis 直接加载该文件到内存,恢复速度极快。AOF 是 “增量日志” 机制,记录所有写操作命令(如 SET、HSET),以文本格式追加到文件(默认。
2025-12-01 19:23:24
1724
原创 UV 统计(独立访客统计)
GEO 实现附近商品核心在于精准定位高效存储和快速查询。根据业务规模选择合适的技术方案,Redis 适合轻量级应用,PostgreSQL+PostGIS 适合大规模复杂场景。无论哪种方案,空间索引和距离计算优化都是提升性能的关键。下一步可考虑结合用户偏好和商品热度,实现更精准的附近商品推荐。87 篇资料UV统计:独立访客,指在一定时间周期内(通常为 1 天),访问网站 / 应用的唯一用户。同一用户多次访问,仅统计 1 次,关键在于「识别唯一用户」,避免重复计数。
2025-11-30 19:53:27
1228
原创 GEO 实现附近商品
GEO 实现附近商品核心在于精准定位高效存储和快速查询。根据业务规模选择合适的技术方案,Redis 适合轻量级应用,PostgreSQL+PostGIS 适合大规模复杂场景。无论哪种方案,空间索引和距离计算优化都是提升性能的关键。下一步可考虑结合用户偏好和商品热度,实现更精准的附近商品推荐。
2025-11-30 19:50:51
780
原创 邪王真眼の絶対領域:我的JVM你無法解析
「爆裂吧現實!粉碎吧精神!放逐這個世界!」我高舉纏滿繃帶的右手對天空嘶吼時,腦海中突然浮現JVM內存結構圖。當學生會長用風紀鐵拳制裁我時,我下意識構築了Spring Cloud熔斷器:「你的攻擊,連我的服務網關都無法穿透。」班花小鳥遊六花驚訝地望著我:「你...你也能看見不可視境界線嗎?」我推了推不存在的眼鏡:「不,我只是在排查Full GC問題。」
2025-11-29 19:01:27
459
原创 日志修仙:我在鬼杀队写监控
炼狱杏寿郎战死时,我穿成了他身边的路人队员。看着猗窝座的无惨领域,我脱口而出:"这不就是个没日志的分布式系统?"当上弦之叁的杀招袭来,我反手布下Spring Boot Actuator监控:"你的每一拳,都在给我的Metrics接口喂数据。"产屋敷耀哉问我师承何处,我望着识海里的ELK栈轻声道:"我在SRE岗位卷了八年。"
2025-11-29 18:57:56
674
原创 Feed 流
Feed 流(信息流)是「按特定规则排序的动态内容列表」,核心是实时性、个性化、高并发,本质是对用户 / 商家产生的内容(点评、动态、活动)进行 “收集 - 排序 - 分发” 的全流程。Feed 流的核心是「排序 + 分发」,Redis 的 ZSet/Hash/List 数据结构完美适配需求,结合 Spring Boot 可快速落地推 / 拉 / 混合模式。在 hm-dianping 项目中,建议优先采用「混合模式」,既保证商家动态的实时性,又能支撑用户关注多商家的高并发场景。
2025-11-28 12:21:55
676
原创 呼吸法:我的系统日志里没有恐惧
炭治郎在最终决战时被拖入了无惨的“无限城领域”。看着不断重构的空间,他忽然低语:“这不过是递归死循环,栈溢出了就好。”当上弦之壹的万剑斩击扑面而来,炭治郎反手打出JVM堆内存转储:“你的攻击,连我的老年代都填不满。”无惨颤抖着问他到底是什么人,炭治郎擦着日轮刀低声道:“我在生产环境杀过十年Bug。”
2025-11-26 19:42:30
429
原创 系统架构师异界纵横:我的分库分表你破不了防
林风醒来时发现自己成了青云门最废柴的外门弟子。看着宗门用玉简记录弟子信息,他忍不住吐槽:"这连个索引都没有,查个数据要全表扫描?"当魔教用十万血煞大阵围攻宗门时,林风反手建起Redis缓存集群:"你们的攻击连我的缓存层都打不穿。"宗门长老颤抖着问他师承何处,林风看着识海里的《Spring Boot实战》轻声道:"我来自阿里架构组。"
2025-11-26 19:39:45
412
原创 java堵塞队列和消息队列
Java 阻塞队列是JVM 内部的并发工具类,位于包下,是一种支持阻塞入队 / 出队的线程安全队列。当队列满时,put()方法会阻塞生产者线程,直到队列有空闲空间;当队列空时,take()方法会阻塞消费者线程,直到队列有元素;无需手动处理线程唤醒 / 阻塞,底层通过锁(Lock)+ 条件变量(Condition)或 CAS 实现线程安全。消息队列是独立于应用的分布式中间件(如 RabbitMQ、Kafka),用于跨进程、跨服务器、跨系统的异步通信。
2025-11-25 20:29:58
558
原创 “乐光锁“ 解决超卖问题方案分析
"乐光锁" 解决超卖问题的核心在于结合乐观锁的高性能与分布式锁的强一致性分布式锁解决跨服务实例的并发控制Redis 缓存提供高性能库存校验和预扣减数据库乐观锁保证最终数据一致性流量控制与安全机制防止恶意攻击和系统过载若要实现企业级 "乐光锁",建议基于 Redis RedLock 实现分布式锁,配合数据库乐观锁和本地缓存,构建一套完整的超卖防护体系,可在保证数据一致性的同时,支撑每秒数万甚至数十万的秒杀并发量。
2025-11-24 19:12:07
496
原创 优惠卷秒杀
中文概念核心说明全局唯一 ID雪花算法号段模式时钟回拨原子自增通过以上方案,可满足不同并发量级的优惠券秒杀场景需求,兼顾性能、可用性和安全性。生产环境建议优先选择雪花算法或美团 Leaf,结合业务特点灵活调整 ID 结构和配置。
2025-11-24 19:09:04
922
原创 MyBatisPlus
是 MyBatis 的增强工具,在 MyBatis 基础上只做增强不做改变,为简化开发、提高效率而生无侵入:引入不影响现有 MyBatis 架构,保留原生特性零 XML:内置 CRUD 接口,无需编写 XML 和 Mapper 方法性能损耗小:直接面向对象操作,无额外性能开销强大 CRUD:内置通用 Mapper 和 Service,少量配置实现单表大部分操作实现方式继承抽象类,实现方法注册自定义方法到的中示例代码java运行@Override// 自定义SQL逻辑// 配置类。
2025-11-23 20:36:00
923
原创 代码修仙:我的JVM崩了你的丹炉
陈凡在垃圾堆里捡到个生锈的扳指,里面竟藏着上古JVM残魂。“小友,想学真本事吗?先背会类加载双亲委派模型。”当宗门天才用灵力锁死他经脉时,陈凡抬手祭出“GC垃圾回收算法”,漫天灵气瞬间被标记压缩。剑阁首席用万剑诀轰击他的识海,却被他识海里的“synchronized锁升级”崩碎了本命飞剑。直到渡劫飞升那日,九霄云外传来道音:“下界修士,可知Spring循环依赖如何破解?”陈凡拱手一笑:“三级缓存,仙君可要试试?”
2025-11-23 20:04:33
474
原创 我的缓存九考,引爆神界数据库
林七夜穿成斗罗大陆最弱辅助魂师,先天魂力只有半级。所有人都嘲笑他的废武魂“缓存系统”毫无攻击力。直到猎魂森林遇险,他随手给队友加了道“Redis加速”,速度瞬间暴涨十倍。众人震惊时,他却收到神界提示:“通过缓存第一考:防御缓存穿透,奖励布隆过滤器魂骨。”当邪魂师用百万怨灵冲击七宝琉璃宗大阵时,林七夜脚踏“分布式缓存领域”,头悬“缓存击穿屏障”,对着漫天怨灵轻笑:“你们连我的空值缓存都破不了。”千仞雪燃烧神位引爆天使神殿的数据洪流,却见林七夜举起右手:“第九考,缓存永固——”“给我把整个神
2025-11-21 15:11:34
655
1
原创 缓存穿透 缓存雪崩 缓存击穿
问题类型核心防护策略缓存穿透布隆过滤器拦截 + 缓存空值 + 参数校验缓存击穿互斥锁串行化 + 逻辑过期异步更新 + 热点 key 永不过期缓存雪崩过期时间随机化 + 缓存集群高可用 + 服务熔断降级 + 缓存预热 + 降级开关实际开发建议优先使用 “简单有效” 的方案(如缓存空值、过期时间随机化),再根据业务复杂度升级(如布隆过滤器、分布式锁);结合监控工具(如 Prometheus+Grafana、Sentinel)实时监控缓存命中率、数据库压力,提前预警;
2025-11-21 15:06:33
1060
原创 Redis-缓存
缓存(英文为 Cache),是数据交换的缓冲区,用于临时存储数据,核心特点是读写性能较高,目的是通过缩短数据访问路径,提升系统整体效率。
2025-11-20 14:46:30
1386
原创 废柴锁神:我的MVCC你挡不住
曾经被誉为锁神转世的他,却因事务阻塞沦为全宗门笑柄;被贬去扫藏书阁时,竟在残卷中发现远古大能留下的MVCC无锁秘籍;当他再度出山,面对嘲讽天才的九重锁阵只轻笑结印:“表锁?行锁?太落后了”;下一刻,整个修仙界的数据库开始颤抖——“我的多版本并发控制,你们连读都读不懂!”
2025-11-19 18:41:50
644
原创 Me And Redis
双十一” 当天,流量是平时的 10 倍,但服务稳如泰山。每件衣服有 “休闲”“秋季”“纯棉” 等标签,要找同时有 “休闲” 和 “纯棉” 标签的商品,张哥让我用 Set 类型:“给每个标签建个 Set,比如tag:休闲里存所有带休闲标签的商品 ID,tag:纯棉同理。” 我想起第一次用 SET 命令时的紧张,第一次解决缓存击穿时的兴奋,突然觉得 Redis 不只是个工具,更像个陪我成长的伙伴 —— 它帮我渡过一次又一次技术难关,也让我从只会写 CRUD 的新人,慢慢学会了用更高效的方式解决问题。
2025-11-19 14:56:12
541
1
原创 SpringBoot-原理篇
这类注解是 Spring“组件扫描” 机制的核心,用于将自定义类纳入 IoC 容器管理。注解说明@Component:通用的 “组件注解”,标记一个类为 Spring 管理的 bean。:衍生注解,专门用于MVC 控制层(处理请求、返回响应)。@Service:衍生注解,专门用于业务服务层(封装业务逻辑)。:衍生注解,专门用于数据访问层(与数据库交互)。代码示例解析java运行@Service@Service标记。
2025-11-17 14:36:53
1387
原创 SpringBoot和数据库
Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,基于Apache Lucene构建。它专为处理大规模数据设计,支持实时搜索、全文检索、结构化查询及复杂数据分析,常用于日志分析、企业搜索、监控等场景。
2025-11-17 10:09:40
292
原创 LeetCode
给定一个整数数组,找出所有不重复的三元组,使得三个数的和等于目标值(通常为0)。该问题需要避免重复解并高效地找到所有可能的组合。接雨水问题(Trapping Rain Water)是一个经典的算法问题,通常描述为:给定一个非负整数数组表示的高度图,计算这个高度图能够接住多少雨水。例如,数组对应的雨水容量为6。
2025-11-16 22:33:45
757
空空如也
函数DMA_GetITConfig()作用是
2022-10-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅