自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搞懂Spring Boot登录认证:从UUID到JWT,一次完整的架构推演

这篇文章介绍了如何从零实现一个Spring Boot登录接口,逐步演进为无状态的JWT认证架构。主要内容包括: 基础登录实现:使用UUID临时令牌和内存存储用户数据 进阶为JWT方案:对比有状态和无状态认证,集成JWT工具类生成自包含令牌 优化架构:通过Filter/Interceptor实现统一认证,结合全局异常处理 项目结构清晰,包含控制器、服务层、工具类和异常处理 使用IDEA HTTP Client进行测试,不依赖前端 关键点: 从有状态UUID过渡到无状态JWT JWT自带用户信息和有效期,减少服

2026-06-02 10:38:14 248 9

原创 记一次苍穹外卖项目 Maven 编译报错的排查与解决全过程

本文记录了《苍穹外卖》项目Maven编译报错的排查过程。首先遇到中文路径导致本地仓库创建失败的问题,建议将系统用户名改为英文。随后出现Lombok与JDK21不兼容的报错,通过下载JDK11并配置IDEA编译环境解决。最终编译成功,并指出控制台红色提示不影响运行。总结三点经验:避免Maven路径含中文、注意Lombok与JDK版本匹配、识别IDE伪报错。整个环境搭建耗时约30分钟,通过降级JDK版本成功解决问题。

2026-05-28 21:15:21 365 8

原创 Spring Boot 从零入门:请求响应、三层架构与 IOC/DI 实践总结

本文总结了Spring Boot入门的关键知识点:1) 项目搭建与接口创建;2) 请求参数接收方式(简单/路径/JSON参数);3) 三层架构设计(Controller-Service-DAO);4) IoC/DI实现解耦;5) 统一响应格式封装。重点包括:使用构造器注入优于字段注入,接口与实现类分离的必要性,以及常见问题如空JSON返回(缺少getter方法)的解决方法。文章通过对比表格和代码示例,清晰展示了从基础接口开发到企业级规范实践的演进过程。

2026-05-26 19:26:48 559 10

原创 MyBatis入门系列(三):动态 SQL 完全指南:告别硬编码,一个方法搞定所有查询

MyBatis动态SQL指南:告别硬编码,灵活构建查询 摘要:本文全面介绍MyBatis动态SQL的核心用法,帮助开发者告别硬编码SQL。通过条件标签实现灵活查询,包括: <if>标签进行条件判断 <where>智能处理WHERE子句 <set>动态生成UPDATE语句 <choose>实现分支选择 <foreach>处理批量操作 文章提供完整实战案例,展示用户动态查询和更新功能,并总结常见错误与避坑指南。掌握这些技巧可大幅减少重复代码,提高SQL语句的灵活性和可维护性。

2026-05-26 09:00:00 750 5

原创 MyBatis 入门系列(二):增删改查 + 批量删除完整总结(含 @Param 和 foreach)

本文总结了MyBatis实现增删改查和批量删除的完整流程。通过UserMapper接口定义CRUD方法,包括查询所有、按ID查询、新增、修改、单条删除和批量删除(使用@Param注解)。XML映射文件中使用foreach标签实现批量删除的IN子句,并详细说明了foreach参数含义。测试类演示了各项操作,包括获取自增ID、修改数据、单条删除和批量删除(指定ID列表)。关键点包括:返回值表示影响行数、useGeneratedKeys获取自增主键、foreach标签的collection/item/open/c

2026-05-23 20:13:33 417 6

原创 MyBatis 入门系列(一):从零搭建到查询实现,附踩坑记录

本文介绍了MyBatis框架的基础使用和核心原理,适合零基础新手学习。主要内容包括:1)MyBatis相比JDBC的优势,通过简化数据库操作流程实现半自动化;2)详细的环境搭建步骤,包括Maven项目创建、依赖配置和数据库准备;3)第一个可运行程序的完整实现,涵盖实体类、Mapper接口、配置文件和测试类;4)新手常见问题解决方案,如路径不一致导致的ClassNotFoundException。文章通过具体代码示例和项目结构说明,帮助读者快速掌握MyBatis的基本使用方法。

2026-05-21 20:07:00 453 7

原创 Java高级-第一篇:JDBC操作数据库——为什么不用Statement?——PreparedStatement防SQL注入一篇搞懂

本文介绍了使用Java程序通过JDBC操作MySQL数据库的基本流程。主要内容包括:1)JDBC基础配置和连接步骤;2)核心API(DriverManager、Connection、PreparedStatement、ResultSet)的作用;3)PreparedStatement相比Statement的优势,重点说明其通过预编译机制防止SQL注入的原理;4)对比两种执行方式的性能与安全性差异。文章强调在实际开发中应优先使用PreparedStatement,因其具有防注入、高性能和代码清晰等优势,而St

2026-05-07 22:59:05 237 1

原创 还在手动下载jar包?Maven这个自动化管家了解一下

Maven是一个Java项目管理和构建工具,主要解决两个核心问题:依赖管理和构建流程自动化。它通过坐标系统(groupId、artifactId、version)自动从中央仓库下载所需依赖包,并处理依赖传递问题。Maven还提供依赖范围控制(compile/test/provided)来精确管理包的使用场景。在构建流程方面,Maven通过预定义生命周期(compile→test→package等)自动执行标准化构建步骤。开发者只需配置pom.xml文件并运行简单命令(如mvn package),Maven就

2026-05-02 21:49:19 400

原创 MySQL笔记·第4篇:多表查询详解——内连接、左连接、自连接一篇搞定

本文介绍了SQL中的多表查询方法,通过学生表和成绩表的示例演示了四种连接方式:1)内连接(INNER JOIN)只返回两表匹配的记录;2)左连接(LEFT JOIN)保留左表所有记录,右表无匹配则显示NULL;3)右连接(RIGHT JOIN)保留右表所有记录,但通常用左连接替代;4)自连接将单表视为多表进行关联查询,适用于层级关系数据。文章通过对比表格和形象比喻(如"粘表")帮助理解不同连接的特性,并指出实际开发中左连接比右连接更常用。

2026-04-30 20:45:50 236

原创 MySQL笔记-第3篇:一篇搞懂事务、ACID和隔离级别

MySQL事务是一组SQL操作的集合,确保要么全部成功执行,要么全部失败回滚。事务通过START TRANSACTION、COMMIT和ROLLBACK命令控制,具备ACID特性(原子性、一致性、隔离性和持久性)。MySQL默认自动提交每条SQL语句,需手动开启事务才能将多个操作打包处理。常见的隔离级别包括读未提交、读已提交、可重复读(MySQL默认)和串行化,分别解决脏读、不可重复读和幻读问题。使用时需注意默认自动提交的机制,避免数据不一致。

2026-04-23 20:15:00 208

原创 MySQL笔记·第2篇:MySQL外键——阿里巴巴为什么禁止使用?外键的坑与替代方案

外键虽然能自动保证数据完整性,但在高并发、分库分表场景下存在性能损耗、扩展困难等问题。大厂通常采用应用层校验、事务、唯一索引等替代方案,牺牲少量便利性换取更好的性能和扩展性。外键适合小项目或数据一致性要求极高的系统,但高并发系统应避免使用。核心在于权衡数据安全与系统性能,选择最适合业务场景的方案。

2026-04-18 20:12:01 394 1

原创 MySQL笔记·第1篇:DDL、DML、DQL、DCL一篇搞定

本文系统梳理了MySQL的核心语法,按照数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)和数据控制语言(DCL)四大类别进行组织。内容从基础的数据库、表操作到复杂的查询、分组排序

2026-04-16 21:31:43 2115 1

原创 Java基础·第7篇:Java抽象类——把共性的先做了,剩下的你自己看着办

本文介绍了Java中抽象类的概念及应用场景。通过员工管理系统案例,阐述了抽象类的作用:将共性属性(姓名、工号等)和方法(打卡)定义在父类中,而将差异性方法(工作内容)声明为抽象方法由子类实现。文章详细说明了抽象方法和抽象类的语法格式,并通过代码示例展示了Manager和Programmer子类如何继承抽象类并实现抽象方法。最后总结了抽象类的特点(不能实例化但可多态使用)和核心思想:"把共性的先做了,剩下的你自己看着办"。抽象类能有效减少代码冗余,提高开发效率。

2026-04-11 20:15:00 381

原创 Java基础·第6篇:Java接口——能飞的就实现Flyer,能游的就实现Swimmer

本文介绍了Java接口的概念与应用。接口用于解决继承中子类功能冲突问题,可以集中抽象系统中部分子类的特有行为。文章详细讲解了接口的定义格式、组成成分(抽象方法和常量)以及实现方式。通过宠物管理系统案例,展示了如何定义飞行接口并让特定动物类实现该接口。此外,还介绍了接口的多继承特性、实现类的要求以及使用中的注意事项。接口体现了强制规范,要求实现类必须重写所有抽象方法或定义为抽象类。文章最后提供了接口与类、接口与接口之间关系的总结,帮助读者理解接口在Java编程中的实际应用。

2026-04-09 20:15:00 379

原创 Java基础·第5篇:Java多态——不用再写三个重载方法了!

本文介绍了Java多态的核心概念与应用。多态是指同一行为具有多种表现形式,其实现需要继承关系、方法重写和父类引用指向子类对象三个前提条件。文章通过Person类及其子类的示例展示了多态的具体应用,分析了"编译看左,运行看右"的运行特点,并指出多态带来的访问限制问题。为解决这一问题,详细讲解了向上转型和向下转型的概念,特别强调了使用instanceof进行类型检查以避免ClassCastException异常。最后指出多态与封装、继承共同构成面向对象编程的三大特性。全文通过代码示例和理论分

2026-04-04 20:15:25 324

原创 LeetCode 75简单题:数组与字符串部分,我的Java解法和掉坑记录

本文讲解了力扣75题中字符串和数组模块的5道简单题解法:1.交替合并字符串使用双指针交替拼接;2.字符串的最大公因子通过数学定理和公约数求解;3.拥有最多糖果的孩子通过遍历比较最大值;4.种花问题采用数组扩充和遍历检查;5.反转元音字母运用双指针交换。每道题都提供了Java代码实现,涵盖了字符串处理、数组操作等常见算法技巧。

2026-04-02 20:52:57 498 1

原创 Java基础·第4篇:Java继承——不用重复造轮子,一篇搞懂

本文介绍了Java继承的概念、特点及使用方法。继承允许子类复用父类的属性和行为,提高代码复用性并建立类间关系。特点包括单继承、多层继承和默认继承Object类。子类可继承父类非私有成员变量和方法,但不能继承构造方法。当成员变量或方法重名时,可通过super关键字访问父类成员。构造方法中默认调用父类无参构造super()。此外,文章还讲解了方法重写的规则与注意事项,以及super和this在构造方法中的使用区别。继承机制有效减少了代码冗余,是面向对象编程的重要特性。

2026-03-28 20:54:13 416 1

原创 Java基础·第3篇:Java封装——为什么要把数据藏起来?

本文通过对比面向过程和面向对象编程的数据处理方式,阐述了封装在面向对象编程中的重要性。作者首先以C语言为例说明全局变量容易被意外修改的问题,进而引入Java的封装机制。详细解释了封装的核心思想是信息隐藏和访问控制,并通过Student类的代码示例,展示了如何用private修饰属性和public的getter/setter方法实现数据保护。文章强调封装能提高安全性、隐藏实现细节并增强可维护性,是一种防御性编程思维。最后指出封装是面向对象三大特性之一,为后续讲解继承和多态做铺垫。

2026-03-26 20:15:00 285

原创 Java基础·第1篇:面向对象 vs 面向过程——Java和C语言到底有什么区别?

本文旨在帮助初学者理清面向对象(OOP)和面向过程(POP)这两个核心概念。内容涵盖了两者的定义、核心逻辑(线性执行 vs 对象交互)、优缺点以及典型应用场景。通过 C 语言与 Java 的代码实例对比,阐述了从“关注步骤”到“关注属性与行为”的思维转变,是理解编程底层逻辑的优质入门指南。

2026-03-21 20:15:00 379 2

原创 Java基础·第2篇:数据类型(基本+引用)和输入输出(Scanner)

本文介绍了Java的数据类型和输入输出操作。数据类型分为基本类型(byte、short、int等8种)和引用类型(类、接口、数组等),详细说明了每种基本类型的存储空间、取值范围和使用注意事项。输入输出部分讲解了标准输出方法print/println/printf的使用,以及通过Scanner类实现标准输入的步骤。文章强调实践的重要性,建议读者通过实际编码练习来掌握这些基础知识。

2026-03-19 20:15:00 370

空空如也

空空如也

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

TA关注的人

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