自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【若依 | day35 1-基础应用】

摘要:本文系统介绍了若依(RuoYi)框架的开发实践指南,包含版本选择、环境搭建、核心功能使用及二次开发方法。主要内容包括:1)框架概述及版本差异;2)开发环境配置步骤;3)代码生成器使用流程;4)RBAC权限系统工作原理;5)项目模块结构解析;6)常见问题解决方案。特别针对前后端分离版本(RuoYi-Vue)提供了详细的操作指引,涵盖数据库配置、权限控制、定时任务等企业级开发常见需求,并给出模块定制、样式修改等二次开发建议。

2025-11-24 23:45:54 556

原创 【苍穹外卖|day30 -1】

通过前三天的学习,我们已经掌握了苍穹外卖项目的核心技术栈。理解原理:不仅要会使用框架,更要理解其背后的设计思想动手实践:所有代码都要亲手敲一遍,遇到问题先思考再求助举一反三:将学到的技术应用到其他项目中,形成自己的技术体系关注性能:在功能实现的基础上,思考如何优化性能和提高系统稳定性希望这份总结能够帮助你更好地掌握苍穹外卖项目的核心技术,为后续的学习和工作打下坚实的基础!延伸阅读[Spring Security实战指南][分布式系统设计模式][MySQL性能优化实践]

2025-11-24 23:11:44 346 1

原创 【 Java编程思想 | 16—数组】

本章深入探讨了数组的特性及其与Java泛型的矛盾。数组作为高效的线性序列存储结构,具有O(1)访问速度,但长度固定且存在类型安全问题。与容器相比,数组牺牲了灵活性,特别是与泛型结合时会出现协变性问题。文章详细分析了为什么不能创建泛型数组,并提供了使用Object[]转型的替代方案。最后总结了使用场景:数组适用于性能敏感、固定长度的基本类型存储,而容器更适合需要动态扩容和类型安全的场景。理解这种权衡对Java开发至关重要。

2025-11-24 22:50:16 598

原创 【Java编程思想|15-泛型】

迁移兼容性优先:通过擦除保证与旧代码的二进制兼容编译期安全:在编译时捕获类型错误,而不是运行时运行期简单:JVM不需要理解复杂的泛型类型系统灵活性补偿:通过通配符、辅助方法等模式弥补擦除的局限理解这些深层机制,才能真正驾驭Java泛型,写出既类型安全又灵活优雅的代码。这不仅仅是语法规则,更是一种类型系统设计的思维方式。

2025-11-23 22:08:26 366

原创 【Java编程思想 | 14-类型信息】

本文探讨Java运行时类型信息(RTTI)和反射机制,分析其如何实现静态类型语言的动态能力。RTTI通过类型转换、instanceof和Class对象在编译时已知类型框架内工作,而反射则完全突破这一限制,允许运行时探查和操作未知类型。文章详细解析了Class对象的获取方式及其初始化差异,并阐述了反射API体系及其在框架开发中的重要作用。同时指出反射的性能开销和安全风险,建议将其作为最后手段。最后介绍了基于反射的动态代理机制,说明其作为AOP实现核心的价值。全文构建了从基础类型安全到高级系统设计的完整知识体系

2025-11-23 16:13:14 513

原创 【MyBatis-Plus | Wrapper 条件构造器 】

链式编程:通过泛型设计实现流畅的API组合模式:通过 Segment 组合复杂SQL条件模板方法:AbstractWrapper 定义算法骨架,子类实现具体逻辑类型安全:LambdaWrapper 在编译期检查字段名正确性深入理解 Wrapper 不仅有助于更好地使用 MyBatis-Plus,也能学习到优秀框架的设计思想和编程模式。

2025-11-23 16:13:04 482

原创 【MyBatis-Plus | 自定义 SQL 深度讲解 】

java@Mapper// 1. 简单查询// 2. 带条件参数// 3. 更新操作// 4. 插入操作java// 使用 <script> 标签实现动态 SQL"</if>" +这是 MyBatis-Plus 最强大的特性之一,可以在自定义 SQL 中复用 Wrapper 的条件构造能力。方式一:使用java// Mapper 接口方法// 使用示例方式二:XML 中使用 Wrapperxml-- 在 XML 中使用 -->

2025-11-23 16:12:54 507

原创 【MyBatis-Plus | 常见问题与面试重点】

类别核心要点常见坑点注解映射、主键策略、条件构造器判空、模糊查询、全表操作、分页配置、逻辑删除冲突面试重点原理(Wrapper、分页插件)、设计(多租户、数据权限)、优化(N+1、缓存)、源码(代码生成器)要学好 MyBatis-Plus,不仅要会用其便捷的 API,更要理解其背后的 MyBatis 原理、插件机制,并时刻关注性能和安全问题。在面试中,结合具体业务场景来阐述你的理解和解决方案,会大大加分。

2025-11-22 21:37:46 37

原创 【MyBatis-Plus | 核心知识点完整指南 】

java// 自定义查询方法// 自定义更新方法// 调用存储过程// 复杂统计查询java// 数据源配置// 全局配置// 开启swagger注解// 生成BaseResultMap// 生成BaseColumnList// 包配置// 策略配置// 生成的表// 表前缀// 自定义实体类配置// 自定义Controller配置// 自定义Service配置。

2025-11-22 21:26:52 424

原创 【SSM框架 |day29-springboot整合SSM框架】

依赖管理:使用Spring Boot Starter简化依赖配置自动配置:利用Spring Boot的自动配置特性配置分离:使用YAML文件,支持多环境配置组件扫描:合理使用注解进行组件扫描事务管理:使用声明式事务管理。

2025-11-22 20:50:52 564

原创 【Java 编程思想 |2 一切都是对象】

经过字节码、内存布局、工具实操的三重穿透,本章的核心不再是 “是否一切都是对象”,而是 Java 如何通过分层抽象抽象层:开发者面对 “对象”,通过引用操作实体,屏蔽内存细节;底层支撑层:JVM 通过对象头、堆 / 栈分离、GC、类加载机制,为对象提供内存管理和安全保障;权衡层:基本类型、static、四种引用类型,是为了弥补纯对象模型的性能 / 复用短板。所有细节(如对象头的 64 位字段、字节码的。

2025-11-22 15:30:46 312

原创 【瑞吉外卖模块-权限认证】

下面我将深入讲解的权限认证模块,其核心设计围绕用户登录状态和权限的验证与控制。

2025-11-21 16:32:32 710

原创 【瑞吉外卖模块-CRUD】

您可以根据实际业务需求进行调整和扩展。

2025-11-20 23:41:21 230 1

原创 【Java 编程思想|1-对象导论 】

本文深入解析面向对象编程(OOP)的核心思想与Java实现。首先对比面向过程与面向对象的差异,指出OOP通过封装数据和行为解决了代码耦合问题。随后详细拆解OOP四大特性:封装(隐藏细节、暴露接口)、继承(代码复用与扩展)、多态(动态绑定实现接口统一)、抽象(提取共性忽略细节)。文章还剖析了Java的OOP设计哲学,包括简单性、可移植性和安全性等特点,并揭示了对象作为"服务提供者"的核心隐喻。最后,通过内存模型和JVM机制展示了OOP的底层实现原理,为理解后续Java技术奠定基础。

2025-11-20 22:58:27 656

原创 【MyBatis Plus | 1-完整使用指南】

/ 使用注解方式// 使用 XML 方式(推荐复杂 SQL)> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!</> <!> <!> <!> <!</> <!> <!> <!> <!</> <!</> <!</> <!</> <!注解作用示例@TableName指定表名@TableId主键注解字段注解逻辑删除@Version乐观锁@Version@EnumValue枚举值@EnumValue。

2025-11-20 12:32:06 313

原创 【Hot100|12-最大子数组和(LeetCode 53)】

将子数组和问题转化为前缀和差值问题通过维护最小前缀和来优化计算在遍历过程中动态更新最大值这种方法体现了"将复杂问题转化为已知问题"的算法设计思想,是解决子数组和类问题的经典范式。

2025-11-18 21:51:05 586

原创 【Hot100|11-LeetCode 239. 滑动窗口最大值 】

该解法的核心是 **“单调队列动态维护窗口内的潜在最大值”:通过入队时的单调性筛选(移除不可能成为最大值的元素)和出队时的边界检查(移除窗口外的元素),确保队首始终是当前窗口的最大值,从而在 O (n) 时间内高效求解。这种 “单调队列” 思路是解决滑动窗口极值问题 ** 的经典范式,可迁移到 “滑动窗口最小值”“滑动窗口内的次大值” 等类似问题中。

2025-11-11 10:50:16 414

原创 【Hot100|10-LeetCode 560. 和为 K 的子数组】

该解法的核心是 **“前缀和转化问题 + 哈希表记录频率”:通过前缀和将 “子数组和为 k” 转化为 “两个前缀和的差值为 k”,再用哈希表高效统计符合条件的前缀和出现次数,最终在 O (n) 时间内解决问题。这种 “前缀和 + 哈希表” 的思路是解决子数组和问题 ** 的经典范式,可迁移到 “和为 0 的子数组”“子数组和的范围” 等类似问题中。

2025-11-10 11:21:56 942

原创 【SSM 框架 | day28 MyBatis 和 MyBatis-Plus】

MyBatis-Plus是一个基于MyBatis的增强工具,通过简化开发、提高效率来优化单表操作。它提供无侵入性的增强功能,包括通用Mapper、Lambda表达式、主键自动生成和分页插件等。核心功能涵盖标准数据层CRUD操作、条件查询(Wrapper)、分页查询、逻辑删除、乐观锁等。MP支持Lombok简化实体类,提供代码生成器自动生成基础代码。在分布式系统中,推荐使用雪花算法(ASSIGN_ID)生成主键。MP通过版本号机制实现乐观锁,适合读多写少场景。条件构造器支持Lambda方式避免字段名错误,分页

2025-11-08 17:52:02 996

原创 【Hot100|9-LeetCode 438. 找到字符串中所有字母异位词】

该解法的核心是 **“固定滑动窗口 + 字符频率统计”**,精准利用字母异位词的频率特征,通过高效的数组计数和窗口维护,实现线性时间求解。这种思路不仅适用于本题,还可迁移到类似的字符串匹配问题(如判断子串是否包含目标字符集、统计符合字符频率要求的子串数量等),是处理字符串频率类问题的经典范式。

2025-11-08 17:26:36 884

原创 【Hot100|8-LeetCode 3. 无重复字符的最长子串】

该解法的核心是 **“滑动窗口动态维护无重复子串 + 数组高效计数”**:通过right扩展窗口,left收缩窗口确保无重复,用数组计数替代哈希表提升效率,最终在 O (n) 时间和 O (1) 空间内解决问题。这种 “滑动窗口 + 哈希计数” 的思路是解决字符串子串问题的经典范式,可迁移到 “最小覆盖子串”“至多包含两个不同字符的最长子串” 等类似问题中。

2025-11-08 16:09:06 535

原创 【Hot100|先导篇 Java算法常用API的调用&易错语法点】

说明:通过Comparator自定义排序规则。示例java运行// 按字符串长度排序。

2025-11-08 01:01:00 624

原创 【Hot100 |7 - LeetCode 42. 接雨水】

摘要:本文详细讲解LeetCode 42题"接雨水"的双指针解法。该算法通过维护左右两侧最大值(preMax和sufMax),在单次遍历中动态计算每个位置的积水量:当preMax较小时,左指针位置的积水量由preMax决定;反之右指针位置的积水量由sufMax决定。这种贪心策略实现了O(n)时间复杂度和O(1)空间复杂度的优化,无需额外存储数组。文章从问题分析、思路讲解、代码实现到实例演示,系统性地展示了该经典解法的原理和实现细节,是处理区间积水问题的高效解决方案。

2025-11-08 00:50:30 489

原创 【Hot100 | 6 LeetCode 15. 三数之和】

该解法的核心是 **“排序 + 双指针 + 分层去重”**:通过排序简化查找和去重,双指针将内层查找从 O (n²) 优化为 O (n),分层去重确保结果无重复。这种思路不仅适用于三数之和,还可迁移到 “四数之和” 等类似的 “n 数之和” 问题,是面试中高频考察的经典算法思想。

2025-11-07 23:49:17 927

原创 【Hot100 |5-LeetCode 11. 盛最多水的容器】

本文介绍了LeetCode 11题"盛最多水的容器"的双指针解法。该方法通过初始化左右指针(数组头尾),计算当前容量后移动较矮的柱子,在O(n)时间内找到最大容量。相比暴力法的O(n²),双指针法利用贪心策略缩小范围,仅需常数空间。关键点在于理解移动较矮柱子的合理性:宽度减小时,唯有提升高度才可能增大容量。实例演示展示了指针移动和容量计算的完整过程,验证了算法正确性。

2025-11-07 23:28:57 899

原创 【Hot100|4-LeetCode 283. 移动零 】

该解法的核心是双指针分区思想,通过left划分非零区域,i寻找非零元素,用交换实现原地移动。这种思路不仅适用于 “移动零”,还可迁移到类似的「数组分区问题」(如将数组分为奇数和偶数、正数和负数等),是面试中高频考察的基础算法思路。

2025-11-07 23:02:43 868

原创 【Hot100|3 LeetCode 128. 最长连续序列】

摘要:本文详细解析了LeetCode 128题「最长连续序列」的高效解法。该方案利用HashSet实现O(1)快速查找,通过「判断序列起点+向后延伸」的策略,在O(n)时间复杂度内解决问题。核心思路是:通过判断x-1是否存在来确定序列起点,避免重复计算;从起点开始向后延伸查找连续序列;用Math.max动态更新最长长度。文章通过代码逐行解析和实例演示(如数组[100,4,200,1,3,2]的最长序列1-4)验证了算法正确性,并分析了O(n)时间复杂度和O(n)空间复杂度。

2025-11-06 23:59:45 890

原创 【HOT100|1 LeetCode 1. 两数之和】

该解法的核心是利用哈希表的快速查找特性,将 “查找互补元素” 的时间从暴力解法的O(n)优化到O(1),整体效率大幅提升。这种 “以空间换时间” 的思路是哈希表的典型应用,也是大厂面试中高频考察的基础算法思想。

2025-11-06 23:47:36 926

原创 【Hot100 | 2 LeetCode49 字母异位词分组问题】

add(s)这段代码的核心是利用 “异位词排序后相同” 的特性,通过哈希表快速分组,逻辑清晰且效率较高。其中方法的使用简化了代码,是哈希表操作的高频技巧,也是面试中的常见考点。优化方向?

2025-11-06 23:36:10 1052

原创 【SSM 框架 | day27 spring MVC 和 SSM 整合】

SSM 框架的企业级开发,核心在于吃透底层机制、规范代码编写、提前规避坑点。本文通过补充完整代码示例、拆解底层逻辑、复现高频错误,从 SSM 整合、统一结果 / 异常处理、拦截器拓展到前后端联调,形成一套完整的实战体系。开发中需重点关注容器协同、事务一致性、序列化规范、接口安全等核心问题,同时养成日志分级、异常捕获、配置规范的习惯,才能构建出高可用、易维护的 Web 应用。

2025-11-06 23:01:44 1002 1

原创 【SSM框架 | day26 spring AOP与事务管理】

AOP(面向切面编程)是一种将横切逻辑(如日志、事务)与业务逻辑分离的编程范式。其核心概念包括连接点、切入点、通知和切面,通过动态代理实现方法增强。Spring AOP提供5种通知类型,支持XML和注解配置,常用功能包括统一日志、性能监控和声明式事务管理。声明式事务通过@Transactional注解实现,可配置传播行为和隔离级别。开发中需注意AOP失效问题,如自调用、异常捕获等。相比AspectJ,Spring AOP更轻量但功能有限。最佳实践包括精确切入点表达式、保持切面轻量和合理事务配置。掌握AOP能

2025-11-04 15:29:53 769 1

原创 【SSM框架 | day25 spring IOC 与 DI 注解开发】

IOC 容器的初始化流程(Bean 实例化、依赖注入、初始化)。@Autowired自动装配的底层逻辑(类型匹配→名称匹配)。Spring 整合 MyBatis 的核心组件(SqlSessionFactoryBean、MapperScannerConfigurer)。BeanFactory 与 ApplicationContext 的差异(加载时机、功能扩展)。以上 5 道面试题覆盖了 Spring Day02 的核心知识点(IOC/DI 底层、容器差异、注解原理、整合开发),均为中大厂高频考察内容。

2025-11-03 22:27:22 1273

原创 【SSM框架 | day24 Spring IOC 与 DI 核心原理深度解析】

本文介绍了Spring框架的核心思想IOC(控制反转)与DI(依赖注入)。传统开发中对象创建和依赖管理由程序主动控制,导致高耦合,而Spring通过IOC容器管理对象生命周期,实现解耦。文章详细讲解了IOC入门案例、DI实现方式、Bean配置管理(包括作用域、实例化方式、生命周期控制),以及Setter注入、构造器注入、自动装配等依赖注入方式。最后总结了IOC/DI的设计思想,并解答了循环依赖、容器选择等常见面试问题,帮助开发者理解Spring如何通过反转控制实现松耦合架构。

2025-11-02 21:51:43 942 2

原创 【Java学习路线| 最佳食用指南 60days】

60days 每天10h以上时间 笔记知识点熟悉 附录面试题掌握 以下技术栈可牢固掌握。

2025-11-01 22:39:30 1115

原创 【项目实战1 -瑞吉外卖|day23 】

Day05-06 覆盖了瑞吉外卖的核心业务流程,源码设计体现了分层架构、复用原则、并发安全等核心思想。关键亮点:多表操作的事务控制(套餐管理、下单);DTO 模式解决前后端数据不匹配;ThreadLocal 实现用户隔离;第三方服务的封装(短信发送);移动端登录的 Session 状态管理。深入理解源码的底层逻辑(如事务传播、ThreadLocal 原理、MyBatis-Plus 操作),能帮助我们在实际开发中规避坑点,提升代码质量和复用性。

2025-11-01 17:28:36 1097

原创 【模拟面试|豆包模拟面试-2 Java基础】

昨天开始背的八股文 背了一点 背到面对对象那 前面记得还可以 后面没背的答不上来

2025-11-01 16:34:20 957

原创 Redisson 的分布式锁机制&幽默笑话理解

Redisson是一个基于Redis的Java分布式锁解决方案,相比手动实现的锁具有显著优势。它解决了分布式系统中的关键问题:1)通过Lua脚本和Hash结构实现可重入锁,避免死锁;2)采用WatchDog机制自动续期,防止业务未完成时锁过期;3)支持多种获取锁方式(阻塞/非阻塞)和锁类型(公平锁/读写锁等)。实现原理上,Redisson利用Redis的发布订阅机制通知等待线程,并通过定时任务确保锁的活性。其API设计与Java原生锁相似,使用简便,是分布式系统并发控制的优选方案。

2025-10-31 23:41:10 1113

原创 【项目实战1-瑞吉外卖|day22】

java运行// 自定义异常:用于业务规则违规(如关联数据不能删除)Entity:与数据库表一一对应(如DishCategory),用于持久化。DTO:数据传输对象(如DishDto),封装前后端传输的扩展数据(多表字段)。VO:视图对象,仅用于前端页面展示(按需封装数据)。多表操作数据不一致:务必加事务注解。分页无数据:检查分页插件是否配置、页码是否从 1 开始(MP 默认)。口味未保存:未设置dishId或未调用saveBatch。文件操作失败:路径错误、权限不足、文件大小超限。

2025-10-31 21:51:02 892 1

原创 【项目实战1 -瑞吉外卖|day21 】

摘要: 瑞吉外卖是一个基于SpringBoot+MyBatis-Plus的餐饮管理系统,采用前后端分离架构。Day01-02聚焦基础骨架搭建,包括:1)技术栈整合(SpringBoot自动配置、MP简化CRUD、MySQL事务);2)核心组件设计:统一返回类R(泛型+工厂方法)、全局异常处理器(精准捕获SQL/业务异常)、登录过滤器(白名单+Session校验)、Long精度转换器(解决JS数值限制);3)通用功能模板:自动填充审计字段(createTime/updateUser)、分页查询(LambdaQ

2025-10-31 20:49:30 925 4

原创 【模拟面试|豆包模拟面试-1 Java基础】

封装就是面向对象三个重要特点之一,封装需要把...(未说完)❌避免 “笼统回答”:每个问题尽量分点、结合示例,比如讲多态时必须提 “父类引用指向子类对象” 和instanceof;攻克 “知识盲区”:重点补全类加载过程、Integer 缓存池、接口默认方法、反射步骤等完全不会的知识点;强化 “细节记忆”:基本数据类型的字节数 / 取值范围、访问修饰符表格、StringBuffer 与 StringBuilder 的效率差异等,用 “表格 + 口诀” 辅助;

2025-10-31 20:07:53 516

空空如也

空空如也

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

TA关注的人

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