自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【项目一DORM|架构分析】

分层清晰中间件强大安全机制完善: 密码加密、令牌管理、权限控制、限流防护性能优化到位: 缓存、异步、批量操作、索引优化代码质量高: 依赖注入、设计模式、函数式编程Java 21虚拟线程: 高并发IoT场景的理想选择。

2026-03-11 11:01:10 415 1

原创 Spring Boot 核心注解完全手册

本文按企业级开发流程逻辑重构,覆盖11大核心场景,每个注解均包含「核心功能+底层原理+可运行示例+高频痛点&解决方案」,既是开发手册也是排错指南(基于Spring Boot 3.2+)。Spring Boot应用唯一入口注解,三合一组合注解,标记主启动类,触发自动配置和组件扫描。使用痛点&解决方案痛点解决方案跨包的Bean扫描不到(如com.example.api下的Controller)1. 用指定所有需要扫描的包;2. 将主类包名提升为根包(如com.example)自动

2026-03-10 15:38:28 698

原创 Spring Boot 3 核心实战指南

简化配置:自动配置减少手动配置提升性能:虚拟线程、AOT 编译、ZGC现代化 API:Jakarta EE 10、JDK 21 特性简化开发:起步依赖、DevTools、Actuator易于部署:内嵌容器、Docker 支持。

2026-03-09 22:18:34 503

原创 《Java并发编程:JUC核心解析与实战》

JUC (Java Util Concurrent) 是 Java 并发工具包,位于包下,提供了丰富的并发编程工具。它是在 Java 5 中引入的,旨在简化并发编程,提高代码质量和性能。JUC 的核心价值简化并发编程:提供高级并发工具,避免手动管理线程提高性能:充分利用多核CPU资源,实现高效的并发处理保证线程安全:内置线程安全机制,避免常见的并发问题提供丰富的并发工具:包括线程池、并发集合、原子类、锁机制等JUC 的设计理念无锁优先:优先使用无锁数据结构和算法细粒度锁:减少锁的粒度,提高并发性能异步编程。

2026-03-06 17:16:58 395

原创 从“大师杰作”到“并发基石”:JUC(java.util.concurrent)发展历程与核心知识点详解(超详细·最终补全版)

核心组成:表示同步状态(如锁的占有次数、剩余许可数)CLH队列变体:FIFO等待队列,存储等待获取同步状态的线程独占/共享模式:支持独占(如)和共享(如Semaphore)两种模式工作机制子类通过重写tryAcquiretryRelease等方法实现自定义同步逻辑AQS提供了acquirerelease模板方法,包含线程排队、阻塞唤醒等通用逻辑基于AQS的同步器同步器使用模式作用独占可重入互斥锁,state表示锁的重入次数Semaphore共享信号量,state表示剩余许可数共享。

2026-02-18 17:10:00 403

原创 从“混沌初开”到“有序统一”:Java集合框架发展历程与核心知识点详解

fail-fastfail-safe从JDK 1.2的初生牛犊,到如今JDK 21的成熟稳健,Java集合框架已经走过了近三十年的辉煌历程。它始于对混乱的“特设类”的统一,在社区探索中汲取养分,在泛型中涅槃重生,在并发浪潮中开疆拓土,在函数式编程中焕发新颜,在JDK 21中实现了有序集合的统一。它不仅是Java标准库中使用频率最高的API,更是一本生动的教科书,向我们展示了何为优秀的API设计:清晰、一致、可扩展、高性能。

2026-02-18 16:37:39 393

原创 从“模型接入”到“智能体编排”:Spring AI发展历程与核心知识点详解

从2023年萌芽到2026年成熟,Spring AI走过了一条令人惊叹的演进之路。2023年:项目启动,奠定设计理念2024年:快速迭代,核心能力成型,生态初现2025年:1.0 GA发布,生态全面扩展,多路线分化2026年:智能体时代,Graph框架与Agentic路线并行发展Spring AI的成功,不仅仅在于它提供了多模型接入、RAG、工具调用等功能,更在于它将Spring的设计哲学引入了AI工程领域——让Java开发者可以用熟悉的方式、在熟悉的生态中,构建生产就绪的AI应用。

2026-02-18 01:45:07 696

原创 从伦敦地铁到云原生:Spring Cloud 发展史与核心知识点详解

难度:⭐参考答案是一套基于 Spring Boot 的微服务解决方案,它提供了服务发现、配置管理、负载均衡、熔断器等分布式系统所需的常见功能。关系说明是构建单个微服务的框架,它简化了 Spring 应用的配置和部署是基于 Spring Boot 的,用于协调和管理多个微服务可以类比为:Spring Boot 是建造“房子”(单个服务),Spring Cloud 是规划“小区”(服务集群)一句话总结:Spring Boot 让你快速开发微服务,Spring Cloud 让你有效管理微服务集群。难度。

2026-02-18 01:42:24 526

原创 从“Oak”到“虚拟线程”:JDK 1.0到25演进全记录与核心知识点详解a

难度:⭐⭐⭐⭐参考答案虚拟线程是JDK 21正式发布的轻量级线程,由JVM管理而非操作系统。核心区别维度平台线程虚拟线程管理方操作系统内核JVM内存占用~1MB/线程几KB/线程最大数量数千数百万创建开销高极低上下文切换系统调度JVM调度阻塞影响占用操作系统线程仅挂起自身工作原理虚拟线程运行在载体线程(平台线程)上阻塞操作时自动卸载,载体线程可执行其他虚拟线程阻塞结束后重新调度适用场景:I/O密集型任务(Web服务器、数据库访问、RPC调用)优势明显;CPU密集型任务仍使用平台线程。

2026-02-18 00:40:45 472

原创 从“Servlet汪洋”到“响应式时代”:Spring MVC 1.x到5.x演进全记录与核心知识点详解

虽然本文主要讲Spring MVC,但了解WebFlux有助于理解5.x的全貌。WebFlux的两种编程模型基于注解的模型:与Spring MVC非常相似,但返回值是Mono/Fluxjava函数式端点模型:基于RouterFunction和HandlerFunctionjava@Bean.build();@Component版本发布时间核心主题代表特性1.x2004前端控制器模式奠基。

2026-02-18 00:38:46 580

原创 从“XML汪洋”到“智能原生”:Spring Framework 1.x 到 7.x 演进全记录与核心知识点详解(超详细版)

xml-- 最简单的Bean定义 -->-- 带依赖注入的Bean定义 --></bean>-- 带构造器参数和属性的Bean --></bean></beans>java@Aspect@Component// 前置通知// 后置通知(正常返回)// 异常通知// 最终通知// 环绕通知try {throw e;响应式编程是一种基于数据流和变化传播的编程范式。当数据发生变化时,依赖这些数据的地方会自动更新。核心特点异步非阻塞。

2026-02-18 00:26:32 658

原创 从“配置地狱“到“云原生时代“:Spring Boot 1.x到4.x演进全记录与核心知识点详解

从2014年到2026年,Spring Boot走过了四个大版本的演进之路。从1.x的"告别XML配置"到2.x的"响应式编程",从3.x的"拥抱Java 17和GraalVM"到4.x的"虚拟线程与模块化",每一次迭代都紧跟Java生态的发展脉搏,回应着开发者的真实需求。理解这些演进历程,不仅有助于我们在面试中展现技术深度,更重要的是能在实际项目中做出正确的技术选型,写出更优雅、更高效的代码。无论你正在使用哪个版本,希望本文能为你提供有价值的参考。

2026-02-18 00:11:39 780

原创 【Hot100|26-LeetCode 21. 合并两个有序链表 - 完整解法详解】

将两个有序链表合并成一个有序链表,不创建新节点。两种主流解法:迭代法:使用 dummy 节点,时间复杂度 O(n+m),空间 O(1)。递归法:代码简洁,但空间复杂度 O(n+m)。比较节点值,将较小者接到结果链表末尾,移动指针。

2026-02-15 00:15:04 341

原创 【Hot100|25-LeetCode 142. 环形链表 II - 完整解法详解】

a 是从头节点到环入口节点所需的步数(移动次数),b 是从入口节点到相遇点所需的步数。这些定义在数学推导中是自洽的,不影响结果。找到链表中环的入口节点。快慢指针 + 数学推导,时间复杂度 O(n),空间复杂度 O(1)。用快慢指针找到相遇点。将慢指针移回头部,然后与快指针同步移动,再次相遇即为入口。

2026-02-15 00:10:33 643

原创 【Hot100|24-LeetCode 141. 环形链表 - 完整解法详解】

判断是否再次访问到已遍历过的节点。快慢指针(Floyd 判圈算法),时间复杂度 O(n),空间复杂度 O(1)。使用两个速度不同的指针,利用“相遇”条件判断环的存在。

2026-02-15 00:00:45 638

原创 【Hot100|23-LeetCode 234. 回文链表 - 完整解法详解】

虽然将值复制到数组的方法简单易懂,但它需要 O(n) 的额外空间。题目要求能否用 O(1) 空间解决,这迫使我们必须在不使用额外线性空间的情况下操作链表,考察了对链表指针的熟练运用。判断链表是否中心对称。快慢指针找中点 + 反转后半部分 + 双指针比较。该方法时间复杂度 O(n),空间复杂度 O(1)。将回文比较问题转化为两个顺序链表的比较问题,利用链表反转改变遍历方向。

2026-02-14 23:57:59 592

原创 重走我的Java Day12:那个让公司损失百万的“小文件”:我是如何用递归和IO流拯救一个濒临崩溃的日志系统

是否检查了符号链接?是否验证了文件路径在允许的目录内?是否处理了权限不足的情况?递归时是否限制了最大深度?是否防止了路径遍历攻击?文件操作不是"简单"的:每个文件操作都可能成为安全漏洞或性能瓶颈递归是双刃剑:简洁但危险,必须设置明确的终止条件和边界检查编码是隐形杀手:乱码问题往往在部署到不同环境后才暴露资源泄漏是慢性毒药:不关闭流,系统会慢慢死亡现在,每次写文件操作代码,我都会问自己:如果这个路径是符号链接怎么办?如果磁盘满了怎么办?如果文件被其他进程锁定了怎么办?

2026-02-01 22:44:51 607

原创 【Hot100|22-LeetCode 206. 反转链表 - 完整解法详解】

操作JavaPython节点类需要预定义需要预定义创建节点递归调用会使用系统栈空间对于长度为 n 的链表,递归深度为 n空间复杂度为 O(n)指针操作:反转链表的核心是改变节点的next指针指向三指针法:使用prevcurrnext三个指针可以高效地反转链表边界处理:注意处理空链表和单个节点的情况。

2026-02-01 12:05:47 773

原创 【Hot100|21-LeetCode 160. 相交链表】

操作JavaPython节点类需要预定义需要预定义创建节点每个指针最多遍历两个链表各一次总遍历次数:m + n时间复杂度:O(m+n)只使用了两个指针变量没有使用额外的数据结构空间复杂度:O(1)双指针法:利用路径长度相等的原理,让两个指针走过相同的总路径交换遍历:当一个指针到达链表末尾时,重定向到另一个链表的头节点时间复杂度优化:O(m+n)的时间复杂度和O(1)的空间复杂度。

2026-02-01 11:58:34 680

原创 我的15天Java重生之旅:从HelloWorld到能造轮子的蜕变实录

第一,理解“为什么”比记住“是什么”更重要。每次学习一个新特性,问问自己:设计者为什么这样设计?它解决了什么问题?在什么场景下最有用?第二,编程是手艺,需要刻意练习。看懂了不代表会了,会写了不代表精通了。我建议为每个知识点创建“微项目”——不超过200行代码,但完整演示该特性的使用场景。初学者:官方教程 + 《Head First Java》(建立直觉)进阶者:《Effective Java》 + Stack Overflow(学习最佳实践)深入者:JDK源码 + 《深入理解Java虚拟机》(理解原理)

2026-01-30 19:20:15 602

原创 聊天项目复盘:我的第一个聊天室,在演示现场崩溃了

演示失败的那个下午,我感到无比沮丧。但教授课后对我说的话,我现在都记得:“每个优秀的程序员都写过糟糕的代码。重要的是,你能否从失败中学到什么。今天你学到了线程管理的教训,这比成功演示更有价值。现在,当我看到那些“简单”的技术方案时,总会多问自己几个问题:它能扩展到多少用户?失败情况下会怎么样?我该如何监控它的状态?网络编程教会我的,不仅是技术,更是对复杂性的敬畏。每一个简单的accept()背后,都可能藏着连接管理、资源限制、并发安全等一系列问题。

2026-01-30 13:08:36 575

原创 【Hot100|20-LeetCode 240. 搜索二维矩阵 II 】

利用有序特性:矩阵的行和列都有序,可以用于快速排除选择合适的起点:右上角或左下角具有特殊的比较意义排除法:每次比较可以排除一整行或一整列。

2026-01-29 22:54:18 566

原创 【Hot100|19-LeetCode 48. 旋转图像 】

数学原理:旋转90度 = 转置 + 水平翻转原地操作:通过交换元素实现,不使用额外空间边界处理:注意遍历范围和交换条件。

2026-01-29 22:35:56 557

原创 【Hot100|18-LeetCode 54. 螺旋矩阵】

操作JavaPython定义二维数组访问元素方向控制:使用方向数组简化方向切换逻辑边界处理:通过标记或边界收缩避免重复访问循环控制:固定循环次数确保访问所有元素。

2026-01-29 22:12:19 664

原创 【Hot100|17-LeetCode 73. 矩阵置零 - 完整解法详解】

问题分解:将矩阵置零问题分解为标记和置零两个阶段空间优化:使用矩阵的第一行和第一列作为标记空间,实现 O(1) 空间复杂度原地修改:所有操作都在原矩阵上进行,不创建新矩阵。

2026-01-29 22:01:07 830

原创 【Hot100|16-LeetCode 41. 缺失的第一个正数】

操作JavaPython函数定义函数调用原地哈希是关键:通过原地重新排列数组,使每个正整数出现在正确的位置索引映射:数值k应该放在索引k-1的位置循环处理:使用 while 循环确保每个元素都被正确处理。

2026-01-29 21:49:48 653

原创 重塑你的Java知识树:从“会用”到“精通”的认知升级路线图

摘要:本文提出Java工程师的三层能力模型:核心根基(JVM、新特性)、必备武库(数据库、框架)和高阶视野(系统设计、工具链)。强调从"会用"到"精通"需要构建知识地图而非零散知识点,建议通过项目实践和源码阅读实现认知升级。核心观点是技术学习应形成解决问题的直觉,而非单纯知识堆砌。

2026-01-28 22:56:55 987 1

原创 【Hot100|15-LeetCode 238. 除自身以外数组的乘积】

分解问题:将每个位置的乘积分解为前缀积和后缀积的乘积避免重复计算:通过预处理前缀积和后缀积,避免重复计算优化空间:可以使用输出数组存储前缀积,然后用一个变量计算后缀积。

2026-01-28 22:25:46 571

原创 重走Java Day08:从“语法学究”到“架构叛徒”:我是如何用函数式编程重构千行垃圾代码的

初学 Java 函数式编程时,我看不懂 Lambda 表达式的简化规则、方法引用的适用场景,面试时面对综合案例题无从下手 —— 函数式编程是 JDK8+ 的核心特性,常用 API(String、ArrayList)是开发必备,综合案例则是检验 OOP 掌握程度的关键。这篇内容把函数式编程、常用 API、GUI 编程和 15 道难度递增的面试题拆解清楚,所有代码极简可运行,帮新手从理论落地到实践,应对面试和开发场景。函数式编程核心:Lambda 基于函数式接口,方法引用是 Lambda 的简化,让代码更简洁。

2026-01-28 11:21:42 470

原创 重走Java Day07:抽象、接口与内部类——从“语法理解”到“架构思维”的觉醒

初学 Java 抽象类和接口时,我分不清 “什么时候用抽象类、什么时候用接口”,被代码块的执行顺序、内部类的创建方式绕得晕头转向,面试时对抽象类与接口的核心区别答不到点上 —— 抽象类是 “不完整的模板”,接口是 “行为的规范”,代码块和内部类是类的特殊成分,掌握这些才能真正灵活设计 Java 程序。这篇内容把抽象类、接口、代码块、内部类的核心概念、语法要素和高频面试题拆解清楚,所有代码极简可运行,帮新手吃透这些 OOP 核心知识点。

2026-01-28 11:21:39 349

原创 【Hot100|14-LeetCode 189. 轮转数组】

三次反转是关键:通过三次反转实现数组的原地旋转取模操作很重要:处理 k 大于数组长度的情况原地修改要求:不能使用额外数组空间。

2026-01-28 10:51:45 529

原创 【Hot100|13-LeetCode 56. 合并区间】

4 3 -3 队尾2(-1) > -3,直接加入3 [1(3), 2(-1), 3(-3)] 1 是 (1>=1) ans[1]=3。5 4 5 依次移除3(-3), 2(-1), 1(3),加入4 [4(5)] 2 是 (4>=2) ans[2]=5。3 2 -1 队尾1(3) > -1,直接加入2 [1(3), 2(-1)] 0 是 (1>=0) ans[0]=3。

2026-01-26 22:27:26 1010 1

原创 【手写Easy-Spring|1】

本文详细介绍了Spring框架中Bean工厂的核心原理与类关系。主要内容包括:1) Bean核心概念(Bean、Bean工厂、Bean定义);2) 核心接口与类(BeanFactory、BeanDefinition、BeansException);3) 关键实现类(DefaultSingletonBeanRegistry、AbstractBeanFactory等);4) Bean生命周期、作用域和依赖注入机制;5) 工作原理及典型应用示例;6) 扩展点和最佳实践。文章系统阐述了Spring如何通过Bean工

2026-01-26 22:11:02 767

原创 【前端|2 ES6 + 核心语法全解析】

《ES6+核心语法全解析》摘要:本文针对ES6+高频语法痛点,通过极简可运行代码示例,解析10大核心语法:1. let/const块级作用域替代var;2. 箭头函数固定this指向;3. 模板字符串简化拼接;4. 解构赋值快速提取数据;5. 扩展运算符合并/复制数据;6. 对象属性/方法简写;7. Promise/Async解决回调地狱;8. Set/Map优化数据结构;9. Class简化继承;10. 模块化隔离作用域。特别总结常见踩坑点(如const引用不可变、箭头函数无arguments等)并提供解

2026-01-26 19:28:48 1141

原创 【Hot100|13-LeetCode53. 最大子数组和】

前缀和是关键:将子数组和问题转化为前缀和之差问题最小前缀和追踪:对于每个位置,最大子数组和 = 当前前缀和 - 之前的最小前缀和时间复杂度优化:从暴力解法的 O(n²) 优化到 O(n)

2026-01-24 15:57:19 749

原创 【Hot100|13-LeetCode76最小覆盖子串】

摘要:本文介绍了使用滑动窗口算法解决"最小覆盖子串"问题的方法。给定字符串s和t,需要在s中找到包含t所有字符的最短子串。核心思路是通过双指针维护滑动窗口,利用哈希表统计字符出现次数。当窗口满足条件时收缩左边界寻找最小窗口,否则扩展右边界。文章详细解析了Python实现代码,包括字符计数、窗口维护和边界处理,并提供了优化版本(使用数组代替哈希表)。时间复杂度为O(n),空间复杂度O(1)。最后列举了相关的滑动窗口题目(如字符串排列、字母异位词等)并总结了算法要点和优化技巧。

2026-01-24 15:02:44 861

原创 【工具配置|docker】

(然后是修改docker的config文件 eof 或vi里改上面的配置 指令问ai 我记不得了 还需要注意路径)+1。如过镜像源配置没错的话 一般是网络问题 换热点 或者开梯子(校园网一般封443端口别用 很多网站有网络问题也是sb校园网)(然后是修改docker的config文件 eof 或vi里改上面的配置 指令问ai 我记不得了 还需要注意路径)版本问题 下载特定版本或最新的 避坑:豆包会给你捏造不存在的版本。二、命令行下载(具体的步骤问ai)一、最简单方法(MAC)

2026-01-17 19:59:25 288

原创 原生 JDBC + DbUtils + MyBatis 同场景 Demo(C3P0 数据源 XML 配置版)

解耦配置与代码:数据库连接信息、连接池参数通过 XML 配置,无需硬编码,便于维护和多环境切换;连接复用提升性能:C3P0 连接池复用物理连接,避免原生 JDBC 频繁创建 / 关闭连接的性能损耗;资源管控更安全:连接池限制最大连接数、空闲时间等参数,避免数据库连接数超限导致的服务不可用;框架适配性强:DbUtils 可直接复用 C3P0 数据源,MyBatis 通过自定义适配后,也能无缝使用 C3P0 的连接池能力。

2025-12-17 19:13:46 797

原创 原生 JDBC 深度问答:强逻辑拆解 + 引导式思考

JDBC是Java访问数据库的标准接口规范,而非具体实现类库。其核心价值在于解耦Java代码与具体数据库,通过接口与实现分离的设计,使代码只需面向JDBC接口编程,更换数据库时仅需替换驱动Jar包。JDBC驱动作为接口的具体实现,负责与数据库建立物理连接和执行SQL指令。JDBC4.0后通过SPI机制自动加载驱动,简化了开发流程。在SQL执行层面,PreparedStatement通过预编译和参数分离机制有效防止SQL注入。事务管理以Connection为载体,遵循"一个连接一个事务"的

2025-12-17 12:29:35 925

原创 Apache Commons DbUtils

引导思考:回忆原生 JDBC 写增删改查的流程 ——要创建连接、PreparedStatement、处理结果集,还要在 finally 中层层关闭资源,容易出现什么问题?核心解答:原生 JDBC 痛点:① 资源关闭代码冗余(try-catch 嵌套);② 结果集遍历繁琐(手动映射到 JavaBean/Map);③ 事务控制与连接管理耦合;④ 容易因空值 / 异常导致资源泄漏。封装关闭逻辑,自动判空 + 屏蔽关闭异常,一行替代多层 try-catch;执行层面。

2025-12-17 11:56:10 1012 3

空空如也

空空如也

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

TA关注的人

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