自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 不是在构造方法「之前」修饰 Bean、注入;是构造方法跑完之后,才做属性注入,再跑 @PostConstruct。

java运行👉是才注入的,所以必须放到里面去 new template;然后回答你的后半句:然后构造方法后调用事务方法的时候使用?✅ 这点是对的: 等整个 Bean 初始化完成,后续业务方法(比如你那个清理 delete 的方法)被调用时,直接拿已经初始化好的去执行编程式事务。

2026-10-29 15:43:06 138

原创 ‌Swagger 库的渲染核心流程是:加载静态资源 → 请求获取 OpenAPI 规范 JSON → 解析规范 → 动态生成交互式 HTML 界面‌。它本质是一个前端项目,把后端生成的接口描述数据

‌‌。它本质是一个前端项目,把后端生成的接口描述数据“翻译”成可浏览、可调试的文档页面。‌‌。

2026-10-23 16:42:09 181

原创 EXISTS 是遍历左边,左边每一行,都去右边做一次匹配判断

逻辑流程:上面是SQL 语义逻辑。 OceanBase 优化器,在很多场景下会自动改写,把 EXISTS 转成【半连接 semi join】,底层实际执行计划不一定真的循环多次查表,性能会优化。 但是你写的这条 SQL 的业务逻辑含义,仍然是上面说的逻辑。

2026-10-14 13:50:08 169

原创 浏览器版本兼容异常处理方案(前端常见问题,Java 后端项目配套管理后台场景居多)常见场景:旧 IE、低版本 Chrome、360 兼容模式、旧 Edge 打开页面:样式错乱、JS 报错、功能点点击

User-Agent例子:IE11、Chrome 78、360 浏览器(兼容内核是 IE,极速是 Chromium)

2026-10-09 15:21:27 168

原创 MQ 三大核心目标:消息不丢失、解决消息堆积、消费不重复

不丢消息:生产者确认 + Broker 持久化 + 消费成功后手动 ACK不重复:业务幂等,用单据 wjId 做唯一判断不堆积:优化消费速度、限制重试、死信隔离,堆积时扩容消费端。

2026-10-09 14:16:39 203

原创 重置本地git

你要确认:本地的代码改动是否还需要保留?如果还有要保留的代码,,执行前确认本地改动不需要保留!,本地和远程 dev 完全一样。含义:把 HEAD 重置到。

2026-10-08 09:46:28 211

原创 Java Excel 导出

Excel 导出有三种方案:第一种 POI 的 SXSSF 流式,适合复杂样式;第二种阿里 EasyExcel,封装好、低内存,业务最常用;第三种 MQ 异步架构方案,用来处理百万级超大报表,避免同步接口超时、OOM。

2026-09-24 11:28:59 256

原创 芋道ruoyi

芋道不是 AOP、不是拦截器。它扩展 / 重写了 SpringMVC 的路由扫描器(RequestMappingHandlerMapping),启动的时候,自动去读取实现类所实现接口上的等 Web 注解,自动注册 MVC 路由。于是一份接口契约,可以同时给 Feign 调用方、MVC 服务提供方两边共用。如果你想,我可以写一份极简的 SpringBoot 小 demo,自己实现这个「读取接口上 PostMapping 自动注册路由」的核心代码(几十行),看明白底层原理。

2026-09-22 13:46:49 147

原创 new Gson() 和 GsonBuilder().registerTypeAdapter(...).create() 得到的都是 Gson 对象,都可以调用 toJson ()。区别不是 “有参

new Gson()完全够用。RPC 报文里面包含ClassClass[]字段,必须用 GsonBuilder 注册自定义适配器,生成装配好规则的 Gson 实例。不是 toJson 调用的时候传参数,是构建 Gson 工具对象的时候,提前装好特殊类型的处理逻辑。

2026-08-10 17:18:32 198

原创 Tomcat线程池

2026-08-10 13:41:14 191

原创 idea常用搭配

接口实现类查看p126‘n’

2026-08-09 23:52:29 266

原创 ChannelInboundHandler

等着网络主动推送消息、连接状态通知,被动接收;里面可以手动调用 write 主动发起发包;不负责 “触发发送”,而是所有往外发的数据、连接、关闭动作必经的拦截加工节点,做编码、协议封装、监控、拦截控制,是 Netty 分层架构必不可少的一环。

2026-08-08 17:41:19 217

原创 懒汉式单例

懒汉式单例;并发:完全没有线程安全问题,JVM 原生保证;定位:日常开发首选、教科书级别的经典优质单例方案。

2026-08-02 17:25:39 206

原创 阿姆达尔定律(Amdahl‘s Law)

程序里串行跑不掉的代码,是性能的天花板;不要盲目堆线程、堆 CPU 核心,优先优化串行瓶颈(锁、同步阻塞、单线程繁重计算)收益最大;并行部分占比越高,多核优化收益越明显;串行占比越高,多核基本白费。

2026-08-01 19:17:16 307

原创 单纯 casTabAt(tab,i,null,new Node()) 是单步原子操作没问题,但没法保护中间一段多步逻辑computeIfAbsent

单纯 CAS 只能原子替换数组引用,但拦不住多线程同时执行你传入的创建对象 lambda;先用 CAS 塞入 ReservationNode 占位 + 同步锁,才能保证创建逻辑全局只执行一次,避免重复创建无用对象。

2026-07-28 00:32:36 196

原创 为什么 JIT / CPU 要把「赋值」提前到「构造初始化」前面?

构造初始化是耗时操作,引用赋值是极快的简单写指令;JIT/CPU 为填满流水线、减少阻塞,优先执行轻量存储指令;单线程不会出现提前访问引用,符合 as-if-serial 语义,优化合法;多线程无锁读取路径暴露了这个重排序漏洞,因此 DCL 必须加 volatile。

2026-07-15 01:32:20 160

原创 二叉树 & 多叉树 完整总结 + 举例用法

普通二叉树满二叉树完全二叉树二叉搜索树 BSTAVL 平衡二叉树红黑树哈夫曼树B 树B+ 树B* 树Trie 字典树N 叉树。

2026-05-13 17:28:21 355

原创 奖池渲染以及中奖逻辑

│ 主奖池ID: "3" │。│ 后端: 返回中奖结果 │。│ 后端: 将可用奖品ID缓存到Redis │。│ 后端: 确定用户所属的主奖池 │。│ 后端: 遍历主奖池的每个奖品 │。│ 后端: 从Redis获取缓存的奖品ID列表 │。│ ⚠️ 注意: 这里不再查询备用奖池!

2026-05-13 10:49:14 293

原创 线程池创建模版

Override5,20,60L,

2026-05-07 16:32:50 267

原创 Collection单列集合、Map(Key - Value)双列集合,多继承实现。

Collection→ 单列:单个元素Map→ 双列:key-value 键值对Map 和 Collection 完全平级,没有任何继承关系entrySet()就是把每一组键值对封装成Map.Entry。

2026-04-28 10:42:22 90

原创 一、核心答案isEmpty() 是 Java 中 集合、字符串、队列、栈、Map 等容器类的公共成员方法作用:判断当前对象是否为空1. 你刷题常用的(栈 / 队列)java运行// Deq

Collection 体系List / Set / Queue / Deque / 栈实现类 → 都有Map 体系HashMap、Map 所有实现类 → 都有String单独自带 isEmpty ()数组 ❌ 没有 isEmpty ()数组只能手写判断。

2026-04-25 16:24:15 59

原创 LinkedHashMap 底层天生自带 LRU 能力,几十行就是标准 LRU,不用自己写链表、HashMap。

底层自带HashMap + 双向链表构造器第三个参数 accessOrder=true开启 LRU 访问排序重写,判断容量超限自动删最久未使用所以代码极简,是 Java 最快写出来的标准 LRU。

2026-04-24 14:50:20 210

原创 redis命令集合

适合存对象(比如用户信息、商品信息),一个 key 下多个字段。带权重的集合,适合做排行榜、延时队列,按分数排序。最常用的缓存类型,存普通文本、JSON、数字。适合做队列、消息推送、消息列表,有序可重复。无序、不重复,适合做标签、去重、好友关系。

2026-04-23 15:33:29 91

原创 环境资源配置路径自定义设置dev、prod

- 确保此配置存在且未被覆盖 -->根据不同的环境,把对应文件夹里的配置文件打包-->--打包时先排除掉两个文件夹-->-- 开发环境 -->-- 生产环境 -->

2026-04-21 09:47:56 49

原创 生命周期 = Vue 实例从创建 → 挂载 → 更新 → 销毁的全过程钩子函数computed = 基于依赖缓存的计算属性

computed 不属于生命周期钩子,只是和生命周期一起执行依赖缓存、用到才计算、必须 return生命周期核心:created(拿数据)、mounted(操作 DOM)、beforeDestroy(清理)

2026-04-11 12:52:06 302

原创 :: 既可以引用静态方法,也可以引用普通成员方法(对象方法),只是规则不一样。

静态方法:类名::方法对象方法:对象::方法任意对象调用:类名::成员方法不是必须静态,只是你现在用的 reduce 场景刚好适合静态方法而已。

2026-04-06 15:35:52 40

原创 Java 的 reduce 和 Vue/JS 里的 reduce 功能思想一模一样,只是语法、位置、用途场景不一样。

求和、求最大、求最小、拼接、统计数量…… 全都一样。

2026-04-06 15:28:10 65

原创 Python 三大符号

]= 数组(列表)( )= 元组{ }= 字典 / 集合。

2026-04-05 19:39:50 63

原创 原生 JS:数据和视图「分离」,必须手动同步原生 JS 里,数据是数据,视图是视图,两者完全没关系

原生 JS:数据改了,视图不会自己变,必须手动写代码把数据「写」进视图里。Vue:数据改了,视图自动跟着变,因为 Vue 在数据和视图之间搭了一座「自动同步的桥」。

2026-04-05 19:25:39 105

原创 用 String.intern() 做细粒度锁,在生产高并发场景下,100% 会产生字符串常量池内存泄漏 / 内存溢出(OOM)这正是大厂绝对禁止用 intern() 做业务 ID

intern()常量池只增不减 → 内存泄漏 → 服务宕机intern()会让常量池只增不减,造成内存泄漏,生产绝对不能用!替代方案是标准细粒度锁实现核心保证锁住对应 ID(和intern()效果一致)空闲锁自动清理(无内存泄漏)排序防死锁状态机 / 转账场景完美适配。

2026-03-28 21:52:50 250

原创 Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。

表格维度Collection 单列集合Map 双列集合存储格式单个元素E键值对K-V结构一条线两条线绑定根接口CollectionMap遍历方式直接遍历元素遍历 key 或 entry元素规则可重复(List)/ 不可重复(Set)key 不可重复方法体系。

2026-03-28 12:58:43 247

原创 虚引用(PhantomReference):堆外内存的“送葬者”,弱引用(WeakReference):随时可丢弃的“临时工”,

(虚引用)和(弱引用)。彻底把这两个概念钉在脑子里,做一个。

2026-03-25 22:01:37 64

原创 “等的时候用虚拟(线程),算的时候用池(线程池)。”

计算型的时候还是池化技术通过空间换时间更好”,这里的“空间换时间”用得非常精妙。我们可以把这个逻辑再深化一下,看看为什么在计算场景下,传统的线程池(空间限制)反而能换来更好的执行效率(时间)。

2026-03-25 00:29:09 262

原创 请求来了再执行,没请求就 idle,这才是正常逻辑!

你 2 核 → 2 个死循环跑满 →。

2026-03-24 22:32:05 52

原创 [特殊字符] 正常部署 AI + 流式输出(Stream)[特殊字符] 为什么会 CPU 炸了?

只要加 2 个 JVM 参数 + 一行 limitRate (1),就绝对不会爆 CPU!→ 必然占资源你只用。,CPU 立刻正常!

2026-03-24 22:28:24 85

原创 CSV 是什么?

可以用 Excel、WPS、记事本直接打开。用 Excel 打开就自动变成表格。

2026-03-23 17:45:14 190

原创 GOF 的全拼是 Gang of Four,中文常译为四人组或四人帮。

GOF =,一共。

2026-03-22 21:21:27 305

原创 GOF 的全拼是 Gang of Four,中文常译为四人组或四人帮

Gang of Four 指四位合著经典著作《Design Patterns: Elements of Reusable Object-Oriented Software》(《设计模式:可复用面向对象软件的基础》)的作者:他们在书中系统总结了23 种经典设计模式,成为面向对象设计的里程碑,因此这 23 种模式被称为 GOF 设计模式。GOF =,一共。

2026-03-22 21:18:40 430

原创 观察者模式

观察者模式 = 状态一变,自动广播通知,所有订阅者自动执行!你现在彻底懂了吧!我可以再给你写一个SpringBoot 版观察者模式,更贴近你项目!

2026-03-22 21:13:41 67

原创 Redisson 大量用了 Lua

Redis + Lua = 原子操作基础Redisson = 分布式锁完整实现 + 生产级可靠性简陋小作坊标准化工厂。

2026-03-14 20:34:16 94

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除