自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java设计模式揭秘:深入理解模板方法模式

模板方法模式(Template Method Pattern)属于行为型设计模式定义一个算法的骨架,将某些步骤延迟到子类中实现。该模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。核心结构抽象类 {// 模板方法(final防止子类覆盖)final void 模板方法() {步骤1();步骤2();步骤3();// 抽象方法(子类必须实现)abstract void 步骤2();// 钩子方法(可选步骤)void 步骤3() { /* 默认实现 */ }

2025-07-22 16:08:52 329

原创 深入浅出 BeanUtil.copyProperties:Java 属性复制的利器与避坑指南

优点:消除大量 getter/setter 调用。对象转换变得快速简单。API 简洁明了。缺点:不如直接调用代码快(但通常可接受)。对引用类型属性需特别注意。不能自定义映射规则(如不同名属性映射、类型转换器)。Spring 和 Apache Commons 的参数顺序不同。简单的、属性名和类型基本一致的 Bean 之间的转换(如 Entity <-> DTO <-> VO)。对性能要求不是极端苛刻的业务逻辑层。快速原型开发。

2025-07-21 16:02:02 790

原创 关于Mybatis-plus的主键回填看这一篇就够了!

配置优先级@TableId注解 > 全局配置 > 默认策略(ASSIGN_ID回填验证:插入后直接通过实体对象获取主键,而非方法返回值。批量操作:MySQL 需显式配置,非自增主键需结合数据库特性(如序列、RETURNING子句)。通过合理配置主键策略,MyBatis-Plus 可无缝实现主键回填,显著提升开发效率。遇到问题时,优先检查注解与数据库兼容性,并利用实体对象而非返回值获取主键 🔑。

2025-07-21 15:17:33 434

原创 Java加密加盐场景与最佳实践

在 Java 中对加密(尤其是密码哈希),必须使用加盐的强哈希算法(如。

2025-07-21 15:04:42 308

原创 Java中的DTO与VO详解:概念、区别与应用场景

DTO是传输专家:负责在系统内部或系统间高效传输原始数据VO是展示专家:负责将数据转化为对用户友好的展示形式核心区别:DTO关注数据传输,VO关注数据展示层间解耦更彻底接口更稳定前端展示更灵活系统安全性更高合理应用DTO/VO,让数据在各层之间优雅流转!

2025-07-14 15:27:11 418

原创 用Spring Boot逻辑删除(isDelete)优雅守护你的数据资产:告别物理删除的烦恼

/ 查询时自动忽略已删除数据// 手动查询已删除数据(突破@Where限制)逻辑删除不是简单的技术选型,而是数据治理理念的升级。在Spring Boot生态中,无论是MyBatis-Plus的还是Spring Data JPA的@Where注解,都能以极低成本实现这一能力。数据最有价值的时刻,往往是在你以为不再需要它之后—— 某个深夜恢复数据的程序员Spring Data JPA官方文档 - 实体状态管理MyBatis-Plus逻辑删除配置指南👉如有疑问欢迎评论区交流~

2025-07-14 10:10:48 885

原创 mac电脑的usr/libexec目录是干什么的?

【代码】mac电脑的usr/libexec目录是干什么的?

2025-07-11 14:15:01 311

原创 Java三年经验程序员技术栈全景指南:从前端到架构,对标阿里美团全栈要求

三年经验是Java程序员的分水岭,技术栈深度决定你成为“业务码农”还是“架构师候选人”。本文整合阿里、美团、滴滴等大厂招聘要求,为你绘制可落地的进阶路线。,三年经验的程序员应主动参与高并发、分布式项目(如秒杀系统、多租户SaaS平台),将技术栈转化为解决实际问题的能力。乌鲁木齐全栈岗要求:Redis/RocketMQ在生产环境的调优经验。北京西城区招聘要求:React/Vue复杂交互界面开发能力。阿里Lazada岗位要求:物流详情页的分布式系统开发经验。:三年经验的核心价值不在于会用多少框架,而在于。

2025-07-01 16:37:43 730

原创 分布式系统ID生成方案深度解析:雪花算法 vs UUID vs 其他主流方案

首选雪花算法:适用于90%的分布式场景慎用UUID:仅在不关心存储和索引时使用传统方案仍有效:数据库自增在简单场景仍具价值混合方案是趋势:结合多种策略取长补短终极建议中小项目:直接使用MyBatis-Plus内置的(雪花算法实现)大型系统:采用美团Leaf或百度UidGenerator特殊场景:使用Redis或号段模式作为补充正确选择ID生成方案,将为分布式系统奠定坚实基石!

2025-06-27 16:59:09 643

原创 实体类id字段选择Integer还是Long?

考量维度推荐选择理由说明初创小系统Integer节省内存,简化开发中大型业务系统Long避免未来扩展瓶颈高并发分布式系统Long支持分布式ID生成物联网大数据Long支持海量数据存储遗留系统维护维持原样避免复杂迁移风险架构师建议:在2023年后的新项目中,优先选择Long类型。随着硬件成本降低和数据规模爆发式增长,Long带来的扩展性优势远超过其微小的存储开销。

2025-06-27 12:10:50 1027

原创 为什么MyBatis-Plus实体类字段强烈建议使用包装类?深度解析与最佳实践

/ 主键推荐使用包装类// 普通字段使用包装类// 逻辑删除字段必须包装类场景基本类型风险包装类优势数据库NULL映射丢失信息(0代替NULL)正确表达NULL语义部分字段更新覆盖未赋值字段为0只更新非空字段条件查询混淆0和NULL精确区分0和NULL逻辑删除无法正确实现完美支持参数传递无法表示"未设置"null表示未设置📌黄金准则:在MyBatis-Plus实体类中,总是优先使用包装类。这不仅是规范问题,更是避免生产事故的关键防线!踩坑感悟。

2025-06-27 11:54:46 362

原创 Lombok实战指南:解放双手,优雅编码的终极利器

Lombok是一个Java库,通过注解的方式自动生成代码,减少开发中的样板代码。减少重复代码:自动生成getter/setter、toString等方法提升代码可读性:消除样板代码后,业务逻辑更加清晰降低维护成本:修改字段时无需手动更新相关方法增强代码健壮性:自动生成的方法不易出错@Getter@[email protected] // 排除字段@Getter(AccessLevel.PROTECTED) // 设置访问级别@Builder。

2025-06-24 15:35:08 856

原创 MyBatis中#{}和${}的深度解析:SQL注入与动态拼接的终极抉择

{}和${}的选择本质是安全与灵活性#{}是默认首选,保障安全与性能${}是特定场景下的"手术刀",需严格管控牢记:一次错误的${}使用可能导致整个系统沦陷!建议在团队中制定《SQL编写规范》,并配合SQL扫描工具(如SQLMap)定期检测漏洞。技术讨论:你在项目中遇到过哪些${}引发的安全问题?欢迎评论区分享避坑经验!

2025-06-23 11:20:49 514

原创 Spring框架中接口需要添加注解吗?

不要把注解加到接口上,那是无效的。总是把 Spring 的 Bean 注册注解(来声明依赖,Spring IoC 容器会自动完成匹配和注入工作。,而接口只是一个抽象契约,它本身不能被创建成一个具体的对象。Spring IoC 容器管理的是。在需要注入依赖的地方,使用。在 Spring 框架中,

2025-06-20 11:26:47 321

原创 Java实体类包名终极抉择:pojo vs bean vs model vs entity?90%开发者选错了!

保持包名的一致性比具体名称更重要,建议团队统一选择一种方案并坚持使用。

2025-06-19 15:53:43 363

原创 JavaWeb项目中,DAO层是否使用接口?

正式项目必须使用接口- 这是Java企业开发的行业标准接口命名去掉Impl后缀- 如UserDao接口,实现结合Spring使用更高效- 利用+ 依赖注入即使简单项目也建议用接口- 培养良好设计习惯现代框架已强制使用接口- 如Spring Data JPA、MyBatis📌核心原则:面向接口编程是JavaEE的核心设计思想,它能显著提高代码的灵活性、可测试性和可维护性,是专业开发的必备实践。

2025-06-19 15:11:09 362

原创 SpringAOP中的JoinPoint参数分析

JoinPoint是 Spring AOP 中访问被拦截方法元数据的核心入口。动态获取方法参数、签名、目标对象结合不同通知类型实现横切关注点在@Around中通过控制方法执行流合理使用JoinPoint能显著提升 AOP 编程的灵活性和可维护性,是 Spring 切面编程的基石之一。

2025-06-19 09:38:22 321

原创 使用@SpringJUnitConfig注解开发遇到的空指针问题

是Spring TestContext框架为**JUnit 5(Jupiter)**量身定制的组合注解,它融合了两个关键能力:其核心价值在于简化测试类配置:二、致命陷阱:JUnit版本不匹配引发的空指针当你在测试类中正确使用,但依赖仍为时,90%的根源在于JUnit版本错误。常见错误场景:问题本质:需要JUnit 5运行时支持,但是JUnit 4的注解。二者不兼容导致:必须在中添加完整JUnit Jupiter依赖集:四、避坑指南:其他常见问题排查即使版本正确,仍需检查以下配置:包导入一致性确

2025-06-18 16:44:09 1097 1

原创 Java的反射机制

Java反射是元编程(Metaprogramming)的典型实现,它让程序获得了"自我认知"的能力。根据2023年JVM生态报告,超过83%的Java项目间接使用反射技术。反射三定律能力越大责任越大 - 慎用setAccessible(true)性能代价不可忽视 - 缓存是关键编译时安全 > 运行时灵活 - 优先选择类型安全方案思考题:你遇到过哪些因反射引发的诡异Bug?欢迎分享你的"坑王"经历!

2025-06-16 15:07:25 465

原创 Java单体架构 vs 分布式架构

单体架构(Monolithic Architecture)如同一个巨型集装箱:所有功能模块(用户管理、订单处理、支付等)打包在同一个代码库中,编译为单一可部署单元(如WAR/JAR),运行在单个JVM进程里,共享同一个数据库。// 典型的Spring Boot单体应用结构│ ├── com.example.user // 用户模块│ ├── com.example.order // 订单模块│ ├── com.example.payment // 支付模块。

2025-06-16 10:32:49 1090

原创 一篇文章弄懂Git、GitHub 和 Gitee!

核心概念:Git - 时光机和协作本:GitHub - 基于 Git 的超级网盘 + 开源社区:Gitee - 中国的 GitHub:它们的关系和区别总结:简单来说:选择哪个?

2025-06-12 18:02:34 500

原创 2025最强Java开发工具全家桶:官网+直链下载+配置指南(持续更新)

fill:#333;color:#333;color:#333;fill:none;JDK 17IDE构建工具框架数据库测试部署AI辅助配置口诀1️⃣JDK环境变量必须配2️⃣Maven镜像换阿里3️⃣IDEA插件按需装(推荐:Lombok、MyBX)4️⃣Docker+Git团队刚需⚠️免责声明:直链下载可能随版本更新失效,请优先访问官网!商用软件请购买正版!🔥下期预告:《2025版Spring Boot 3 + Cloud Alibaba微服务实战脚手架搭建》

2025-06-11 15:29:02 366

原创 浅谈 Maven 项目中的 SNAPSHOT

在 Maven 项目中,SNAPSHOT。

2025-06-11 10:25:16 441

原创 JavaWeb响应状态码全解:HTTP王国的“摩斯密码”

200 OK - 黄金战士(最受欢迎)适用场景:用户登录成功、数据查询正常返回201 Created - 创造之神适用场景:RESTful API创建新资源(如新建订单)204 No Content - 沉默的功臣适用场景:DELETE请求成功但无需返回内容301 Moved Permanently - 永久搬家特点:SEO权重转移,浏览器会更新书签302 Found - 临时转移经典场景:用户未登录时跳转到登录页304 Not Modified - 省流量大师原理:浏览器问:“我的缓存还能用

2025-06-10 09:57:53 917

原创 Java Web三大作用域详解:Request、Session、Application的江湖风云录

Request域是。

2025-06-09 22:52:03 952

原创 Servlet与Filter生命周期详解

初始化 -> 服务 -> 销毁初始化 -> 请求过滤 -> 响应过滤 -> 销毁Filter的doFilter方法是关键分界点两者都是单例模式,需要注意线程安全问题合理使用生命周期方法进行资源管理生命周期是JavaWeb组件的核心概念,理解它们将帮助你编写更高效、更健壮的Web应用程序。在实际开发中,建议在init()中初始化资源,在destroy()中释放资源,避免内存泄漏问题。示例代码可在GitHub获取参考文档Oracle Servlet规范Apache Tomcat文档。

2025-06-09 15:44:01 623

原创 Druid数据库连接池1.2.18下载

如需最新功能(如 JDK 21 适配),可考虑。,但需测试环境验证稳定性。

2025-06-06 11:19:43 533

原创 Java测试类包JUnit 4.12下载

若需最新功能(如模块化测试、参数化测试增强),可考虑JUnit 5.8+,但需评估稳定性需求。是JUnit的断言依赖库,缺少会导致测试无法运行。

2025-06-06 10:18:15 402

原创 深入解析:TAR vs ZIP - 区别与选择指南

tar是 Linux/Unix 的归档基石,专注保留元数据,需搭配压缩程序。它是系统管理、备份和源码分发的首选,灵活强大。zip是跨平台压缩的通用语,开箱即用,分享无忧。它在Windows环境、日常文件共享和需要随机访问的场景中无可替代。最终选择取决于你的具体需求:平台、对元数据的要求、操作复杂度以及文件共享的对象。理解它们的核心差异,就能在Linux的精准和跨平台的便捷之间游刃有余!希望这篇详细的对比能帮助你清晰理解tar和zip的世界!如有疑问,欢迎评论区交流。

2025-06-05 18:08:57 949

原创 1.18.20版本Lombok包下载

若下载失败或需历史版本,可访问。

2025-06-05 15:49:52 716

原创 Java请求转发与重定向详解:核心区别、应用场景及常见问题解决

请求转发和重定向是Java Web开发中的基础但至关重要的技术。优先考虑请求转发:当需要保持请求数据且跳转在应用内部时必须使用重定向:涉及数据变更操作后(防止重复提交)、需要跨应用跳转或希望URL变化时避免滥用Session:重定向时不要为了传递数据而过度使用Session,优先考虑URL参数路径处理原则转发:应用内相对路径重定向:明确指定完整路径或使用动态构建WEB-INF资源访问:只通过请求转发访问。

2025-06-05 10:32:27 938

原创 告别乱码!GET、POST请求与HTTP响应中文乱码问题详解与终极解决方案

乱码问题看似复杂,但只要理解了数据在传输过程中“

2025-06-05 09:57:29 1037

原创 同时使用web.xml和注解配置Servlet映射

访问路径配置来源结果/aweb.xml实例化第一个MyServlet对象/b注解实例化第二个MyServlet对象始终遵循单一配置原则,可避免此问题。

2025-06-04 15:22:23 656

原创 Tomcat与JDK版本对照全解析|避坑指南+生产环境选型建议

本文详细整理Apache Tomcat与JDK版本的对应关系表,提供兼容性指南、生产环境选型方案和常见问题解决方案。适用于Java开发者、运维工程师和系统架构师。

2025-06-04 10:52:21 2393

原创 一篇文章了解并使用Homebrew

主要用于简化软件的安装、更新和管理。它被称为“macOS 缺失的包管理器”(The Missing Package Manager for macOS),因其解决了 macOS 系统本身缺乏官方包管理工具的问题,让用户通过简单的命令行操作即可获取和管理各类开发工具、应用和依赖库。通过 Homebrew,你可以像在 Linux 中一样高效管理软件,大幅提升 macOS 的使用体验!是 macOS(和 Linux)上的一个。

2025-04-14 09:51:14 445

原创 面向对象编程

比如你要做一杯奶茶,先写一个"奶茶配方"(类),再用这个配方做出芒果奶茶、珍珠奶茶(对象)。这样是不是清楚多啦?实际写代码时,你会像搭积木一样用这些特性组合出复杂功能 😉。比如"动物"是爸爸类,"猫"和"狗"是儿子类,自动获得爸爸的属性和方法。比如空调:你只需要按遥控器,不用管内部如何制冷。比如"动物"都会叫,但猫是喵喵,狗是汪汪。

2025-03-10 09:59:48 267

原创 Java注释以及快捷键

Java有三种注释方式1.单行注释以双斜杠“//”标识,只能注释一行内容,用在注释信息内容少的地方,如下图。.2.多行注释包含一对斜杠星,能注释很多行的内容。为了可读性比较好,一般首行和尾行不写注释信息(这样也比较美观好看),如下图。注意:多行注释可以嵌套单行注释,但是不能嵌套多行注释和文档注释。3.文档注释包含在“/**”和“*/”之间,也能注释多行内容,一般用在类、方法和变量上面,用来描述其作用。注释后,鼠标放在类和变量上面会自动显示出我们注释的内容,如下图。其中,多行注释和文档

2021-03-05 12:12:06 1310

原创 Java的第一个HelloWorld

不管是选择了Eclipse还是IntelliJ IDEA作为开发工具,java的第一个HelloWorld都应该在"记事本"中写好,并打开命令行编译并执行。下面列一下简单的步骤:1.【环境】首先就是java环境的问题,其实熟练搭建一个开发用的环境,是我们学习java的第一步。下载JDK:https://www.oracle.com/java/technologies/javase-downloads.html安装好JDK后,我们进行环境变量的配置:①右键点击我的电脑选择属性,然后选择这里的高级系

2021-01-10 20:49:17 327 2

空空如也

空空如也

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

TA关注的人

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