自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java基础(十五):注解(Annotation)详解

介绍注解作为Java元数据机制的本质与作用,可用于编译、类加载和运行时处理

2025-11-05 20:41:31 2161 514

原创 告别重复数据烦恼!MySQL ON DUPLICATE KEY UPDATE 优雅解决存在更新/不存在插入难题

MySQL中的ON DUPLICATE KEY UPDATE语法提供了一种高效的"存在则更新,不存在则插入"解决方案。该语法在插入数据与主键或唯一索引冲突时,自动转为执行UPDATE操作。基本语法为在INSERT语句后添加ON DUPLICATE KEY UPDATE子句,并通过VALUES()函数引用原插入值。典型应用场景包括计数器更新、配置项维护和购物车管理等。高级用法支持条件更新、多表关联和批量操作优化。相比REPLACE INTO(先删后插)和INSERT IGNORE(忽略冲突

2025-10-09 18:22:01 3265 501

原创 Java基础(十四):枚举类详解

Java枚举全解析:从基础定义、特性方法到单例最佳实践,解锁类型安全常量的高效用法与设计优势。

2025-09-25 15:51:48 2220 313

原创 Java基础(十三):内部类详解

深入浅出Java内部类:从基础概念到高级应用,掌握成员、静态、局部、匿名四大类型的核心用法与设计优势!

2025-09-24 08:00:00 1869 294

原创 Java基础(十二):抽象类与接口详解

深入解析Java抽象类与接口的核心区别、特性及适用场景,助你掌握多态设计的最佳实践!

2025-09-22 08:30:00 2376 205

原创 为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义

Java 要求 Lambda 和匿名内部类引用的外部变量必须是 final 或等效 final,不是限制,而是保护——背后是变量生命周期、线程安全与数据一致性的深思熟虑!​​

2025-09-10 14:40:56 3366 288

原创 Java基础(十一):关键字final详解

掌握Java中final关键字的核心用法——从不可变的变量、方法到类,深入理解其设计意图与并发安全优势,助你写出更安全、高效的代码!

2025-09-08 09:00:00 1282 223

原创 Java基础(十):关键字static详解

你真的了解 Java 中的 static 吗?它看似简单,实则蕴含了类级别成员的核心机制。从静态变量共享数据,到静态方法工具化设计,再到静态内部类实现优雅架构,这篇文章将为你全面解锁 static 的强大与细节!

2025-09-02 14:43:59 1577 279

原创 Java基础(九):Object核心类深度剖析

深度解密Java万物之源Object类——从equals/hashCode契约到线程通信,掌握Java对象操作的核心基石与高频面试点!

2025-08-18 18:47:26 1647 347

原创 Java基础(八):封装、继承、多态与关键字this、super详解

解锁Java高内聚低耦合的终极密码!5种this用法、super调用禁区、多态转型陷阱——这些教科书没讲透的OOP实战技巧,一文终结你的困惑

2025-07-15 09:00:00 2565 483

原创 Java基础(七): 面向过程与面向对象、类与对象、成员变量与局部变量、值传递与引用传递、方法重载与方法重写

从执行者到设计者:一文掌握Java面向对象的核心思想与基础概念差异,彻底突破POP与OOP的思维鸿沟!

2025-07-02 09:00:00 1614 129

原创 Java基础(六):数组全面解析

🔥 深度解析Java数组内存机制+高效操作秘籍,从底层原理到Arrays工具类实战,彻底掌握数组设计与性能优化!

2025-06-30 08:30:00 3016 247

原创 Java基础(五):流程控制全解析——分支(if/switch)和循环(for/while)的深度指南

深入解析Java流程控制:从条件分支到循环迭代,一文彻底掌握编程逻辑的核心引擎!

2025-06-27 08:00:00 1959 194

原创 Java基础(四):位运算符详解

🔥 揭秘Java位运算:7大运算符详解 + 63%性能提升秘籍,解锁底层高效编程利器!

2025-06-25 08:00:00 1756 173

原创 Java基础(三):逻辑运算符详解

🔥 掌握Java逻辑运算符的短路奥秘:用&&、||避免空指针,用&、|、^处理复杂逻辑,一文解锁高效编码的核心技巧!

2025-06-23 08:00:00 2284 192

原创 计算机基础(三):深入解析Java中的原码、反码、补码

Java整数底层统一采用补码:彻底解决双零难题,实现加减法硬件级高效运算,揭秘byte范围-128~127的二进制连续性本质!

2025-06-17 14:12:35 3445 220

原创 计算机基础(二):轻松理解二进制、八进制、十进制和十六进制

探索进制转换的奥秘:从基础到Java实战,掌握二进制、十六进制等转换技巧,提升编程效率和理解计算机内部运作!

2025-06-16 07:45:11 2432 151

原创 计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析

从ASCII到UTF-8,一文彻底讲透字符集与编码的本质,终结中文乱码的根源!

2025-06-10 15:45:29 3040 227

原创 Java基础(二):八种基本数据类型详解

一文搞懂比特与字节的换算陷阱,掌握Java数据类型内存占用真相及类型转换规则!

2025-06-03 09:20:46 6486 293

原创 Java基础(一):初识Java——发展历程、技术体系与JDK环境搭建

从Oak到Java 21:一部咖啡命名的编程史诗,揭秘跨时代特性(泛型/Lambda/模块化)如何依托JVM实现“一次编译,全球运行”的终极哲学

2025-05-26 13:35:45 3942 314

原创 Java分层开发必知:PO、BO、DTO、VO、POJO概念详解

在Java企业级开发中,POJO、PO、DTO、BO、VO等对象概念常让开发者困惑。PO(持久化对象)与数据库表一一对应,用于数据持久化操作;BO(业务对象)封装业务逻辑,可包含多个PO;DTO(数据传输对象)用于不同层之间的数据传输,支持序列化;VO(视图对象)用于前端展示,避免暴露敏感字段;POJO是所有简单Java对象的统称。这些对象在项目中各有其应用场景和特点,合理使用它们能有效实现解耦、提高灵活性和安全性。通过统一团队规范,选择合适的对象类型,可以提升代码的可读性和可维护性。

2025-05-12 08:00:00 8340 375

原创 MapStruct从入门到精通:Java对象映射的终极指南

Data@Data在Mapper中定义默认方法实现复杂逻辑@Mapperreturn dto;MapStruct通过其优雅的设计和强大的功能,显著提升了Java对象映射的效率。结合编译时安全检查和灵活的自定义能力,它是现代Java工程中不可或缺的工具。

2025-04-21 09:00:00 1832 448

原创 SpringBoot条件注解全解析:核心作用与使用场景详解

Spring Boot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键。通过合理组合这些注解,可以实现“智能”的自动配置逻辑,同时避免冗余代码。实际开发中,建议结合Spring Boot的自动配置源码(如模块)深入学习。

2025-04-14 08:30:00 5360 356

原创 EasyExcel导出自动回显中文,读取自动转换码值(基于全局转换器与自定义注解)

用于标记需要转换的字段,指定码表类型/*** 码表类型(如 trans_status)*/通过自定义注解和全局转换器,实现了码值与中文的动态转换,代码简洁且易于扩展。这里可以结合之前写的文章EasyExcel自定义下拉注解的三种实现方式实现下拉框选择,进一步提升用户体验。

2025-04-01 17:30:21 2712 405

原创 Spring组件初始化扩展点:BeanPostProcessor

在Spring框架中,是一个强大的扩展接口,允许开发者在Bean初始化的过程中插入自定义逻辑。它是Spring IoC容器生命周期管理的核心机制之一,广泛应用于属性注入AOP代理监控等场景。理解的工作机制,能够帮助开发者更灵活地定制Spring容器的行为。是Spring框架中扩展容器功能的利器,通过介入Bean的生命周期,开发者可以实现高度定制化的逻辑。无论是框架本身的底层实现(如AOP、事务管理),还是业务层的通用增强(如日志、审计),都离不开这一机制的灵活支持。

2025-03-17 10:51:15 3873 492

原创 Spring组件实例化扩展点:InstantiationAwareBeanPostProcessor

是 Spring 生命周期中的一个关键扩展接口,继承自。它在 Bean 的实例化阶段拦截 Bean 的实例化过程,甚至完全自定义实例化逻辑在属性填充(依赖注入)前后执行自定义操作动态修改 Bean 的定义或属性值,实现更灵活的控制与普通的不同,该接口的关注点集中在 Bean 的实例化阶段,而非初始化阶段(如或为 Spring Bean 的生命周期提供了深度的扩展能力,尤其在实例化阶段和属性注入阶段。通过合理利用其回调方法,开发者可以实现高度定制化的 Bean 管理逻辑,如动态代理、属性加密、依赖注入扩展等。

2025-03-10 10:16:01 3737 424

原创 IDEA中Git版本回退终极指南:Reset与Revert双方案详解

作为开发者,代码版本回退是日常高频操作。集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择困惑。本文将解析Reset与Revert两种方案的操作细节及避坑指南。Reset通过移动HEAD指针直接回退,适用于本地或强制同步远程,Revert通过生成新的提交逆向撤销,适合团队协作并保留历史记录;根据需求选择合适方式并谨慎操作。

2025-03-03 07:30:00 8718 377

原创 Spring注册修改Bean定义扩展点:BeanFactoryPostProcessor与BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor示例@Override// 动态注册Bean@Override// 修改已有Bean定义和是Spring容器扩展机制的核心接口,二者分别在修改已有Bean定义和动态注册新Bean的场景下发挥着关键作用。

2025-02-26 07:30:00 3517 382

原创 SpringBoot源码解析(十一):准备应用上下文

在前文中,我们介绍了应用上下文的构造方法初始化两个组件:注解Bean定义读取器和类路径Bean定义扫描器,接下来,我们将探究下准备应用上下文阶段对外的扩展点。SpringBoot版本2.7.18SpringApplication的run方法的执行逻辑如下,本文将详细介绍第8小节:刷新上下文// SpringApplication类方法// 记录应用启动的开始时间// 1.创建引导上下文,用于管理应用启动时的依赖和资源// 配置无头模式属性,以支持在无图形环境下运行。

2025-02-24 07:30:00 2660 272

原创 解决MySQL错误:You can‘t specify target table ‘xxx‘ for update in FROM clause

核心问题:避免在同一语句中同时修改和查询同一张表推荐方法:优先使用派生表或JOIN,简洁高效;临时表适合复杂逻辑设计建议:在编写SQL时,尽量预先规划数据操作路径,减少子查询对目标表的直接依赖。

2025-02-19 07:30:00 5220 189

原创 深入理解Spring FactoryBean:灵活创建复杂对象的秘密武器

是 Spring 框架中的一个接口(位于包),用于创建复杂对象。与普通 Bean 不同,它本身是一个“工厂”,负责生成另一个 Bean 的实例。核心方法// 返回实际对象Class<?// 返回对象类型// 是否单例FactoryBean 与普通 Bean 的区别普通 Bean:容器直接实例化并管理其生命周期:容器会调用其方法返回目标对象当定义一个名为的 FactoryBean 时,返回的是的结果若需获取 FactoryBean 本身,需使用(名称前加假设我们需要根据配置动态创建不同品牌的。

2025-02-17 09:52:01 3775 245

原创 Spring排序机制:接口与注解的使用

Spring 提供了多种机制来控制Bean 的加载顺序和优先级,主要的排序机制包括Ordered接口、接口、@Order注解和@Priority注解。通过合理使用这些机制,可以有效地管理 Spring 容器中 Bean 的加载顺序,确保不同功能模块按照预期的顺序进行初始化。

2025-02-12 08:00:00 2895 263

原创 SpringBoot源码解析(十):应用上下文AnnotationConfigServletWebServerApplicationContext构造方法

SpringBoot源码系列文章SpringBoot源码解析(一):SpringApplication构造方法SpringBoot源码解析(二):引导上下文DefaultBootstrapContextSpringBoot源码解析(三):启动开始阶段SpringBoot源码解析(四):解析应用参数argsSpringBoot源码解析(五):准备应用环境SpringBoot源码解析(六):打印BannerSpringBoot源码解析(七):应用上下文结构体系  在前文中,我们深入解析了启动Banner的类型打

2025-02-10 07:30:00 8449 237

原创 Spring容器初始化扩展点:ApplicationContextInitializer

是 Spring 框架提供的一个接口,用于在 Spring 应用上下文(刷新之前对其进行自定义初始化。它允许开发者在上下文加载 Bean 定义之前,对上下文进行一些额外的配置或修改。在上下文刷新之前,可以通过动态注册自定义的 Bean 定义。// 创建自定义的 BeanDefinition registry . registerBeanDefinition("customBean" , beanDefinition);} }

2025-02-06 07:30:00 5855 282

原创 SpringBoot源码解析(九):Bean定义接口体系

Spring容器的核心在于其对Bean的管理,而这一切的基础则由接口体系所支撑。BeanDefinition作为描述和定义Spring容器中Bean的核心接口,它不仅负责存储Bean的元数据,还为容器的实例化、依赖注入和生命周期管理提供了必要的信息。接下来我们将对其主要组件进行介绍。是一个用于管理和操作键值对形式属性的接口,提供设置获取删除、检查属性等通用功能,广泛应用于Spring框架中元数据的管理。// 单例作用域标识符:`singleton`(表示该 Bean 在整个容器生命周期内只有一个实例)

2025-02-03 08:00:00 2310 194

原创 SpringBoot源码解析(八):Bean工厂接口体系

在前文中,我们详细概述了SpringBoot架构中应用上下文结构体系的各个组件。其中,通用应用上下文(GenericApplicationContext)通过创建负责注册、管理和创建Bean定义,同时支持依赖注入和动态Bean管理。结构相对复杂,接下来我们将对其组件逐一进行介绍。是Spring框架中BeanFactory接口的抽象实现,负责提供Bean的基础获取和管理功能,但不包含具体的Bean创建逻辑。//表示当前BeanFactory的父工厂(支持层级结构),用于递归地从父工厂中查找Bean。

2025-01-27 10:26:33 3663 221

原创 SpringBoot源码解析(七):应用上下文结构体系

在解析SpringBoot源码之前,需要对其使用的应用上下文(ApplicationContext)相关组件有清晰的了解。SpringBoot的核心在于基于Spring的扩展,其自动配置机制、嵌入式Web容器等特性都依赖于一套规范的上下文组件。因此,提前理清这些核心组件的功能和职责,可以显著提高源码阅读的效率,避免频繁地在代码中跳转而迷失方向。SpringBoot在调用方法启动时,根据应用类型(如 Servlet 类型)通过方法推断并创建,用于初始化和管理 Web 应用的上下文环境。

2025-01-13 07:30:00 3701 266

原创 Shell编程详解

Shell被翻译为“壳”。在Linux内核外面包了一个壳Shell是一种用于与操作系统进行交互的命令行解释器它是一种脚本语言,可以通过编写一系列的命令和脚本来执行操作系统的功能和任务我们在终端中编写的命令都是Shell命令。例如:ls、grep…等基本语法# 函数体:执行的命令或脚本# 函数体:执行的命令或脚本示例" } # 调用函数 say_hello如果希望在 任何地方都可以调用函数,可以将函数定义放入Shell的配置文件中,例如~/.bashrc或~/.zshrc。方法。

2025-01-06 07:30:00 3750 269

原创 我的五周年创作纪念日

之前写文章比较随性,看一个视频写一篇,直到我开始写tomcat源码系列,找的视频都一般,太难了,就几篇文章我记得断断续续写了有半年,反正好几个月,因为不好写,所以每次写着写着就不写了,一直来来回回的拖着。后来我发现必须定目标了,每周一必须发表一篇文章,所以有时候周末也是挺痛苦的,因为第二天必须交差,所以熬夜也得完成。至于成就好像就没啥了,有的是自信,因为通过学习和记录掌握了很多知识点的原理,和其他人对峙时候,我也就自信😎多了,怼他就完事了。哎,快35了,就目前的就业情况,没有办法,给我学,卷死你们。

2024-12-30 08:00:00 2396 308

原创 Linux用户与权限管理详解

方式 1:使用数字表示权限。方式 2:使用符号表示权限。超级用户(root)

2024-12-23 07:30:00 4501 344

贪吃蛇的java小程序

贪吃蛇的java小程序

2024-03-11

空空如也

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

TA关注的人

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