自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (1)
  • 收藏
  • 关注

原创 [特殊字符] MyBatis-Plus:我 CRUD 都不用手写了?老板直呼“这班上的太轻松了”!

MyBatis-Plus 并不是让你“不写代码”,而是把重复劳动交给框架,把创造力留给自己。基础 CRUD?MP 给你。分页?MP 给你。逻辑删除?MP 给你。乐观锁?MP 给你。枚举映射?MP 给你。你只需要专注业务逻辑,比如:“用户注册时要不要发短信?“商品打折能不能叠加优惠券?而不是纠结:“我的 XML 写错没?“分页的 limit offset 对不对?🎉最后送大家一句话“优秀的程序员,不是写最多的代码,而是让代码写得最少。

2026-03-02 17:29:17 706

原创 [特殊字符] 拆箱哈米音乐 4 大核心模块!从底层到门户,代码手把手教你撸

各司其职不越界:core 只做核心逻辑,file 只管文件,console 只做运维,portal 只做前端,改一个模块不影响其他模块;依赖要 “轻”:模块间只调接口,别直接 new 对方的类,比如 portal 调用 core 的播放方法,用 Spring 注入而不是 new HamAudioPlayer ();新手友好优先:优先用成熟库(javazoom、jaudiotagger),别自己造轮子,先跑通再优化;异常处理全覆盖。

2026-02-25 22:22:24 581

原创 Spring Boot Web 开发实战:第二天,从零搭个“会卖萌”的小项目

创建一个配置类:Java// 1. 视图控制器:直接把 /tx 转发到 success.html@Override// 2. 拦截器:所有请求都拦截,除了 /hello2@Override// 3. Fastjson 替换默认 Jackson(先引入 fastjson 依赖)@Override// 加到最前面优先使用自定义拦截器:Java@Override。

2026-02-01 17:33:45 623

原创 Spring Boot :我终于和XML分手了,还顺便谈了个新恋爱(幽默版入门教程)

我们加了个空的beans.xml和custom.properties,就是为了演示还能兼容老项目。Spring Boot虽然推全注解,但它很包容,不会嫌弃你的“前任”XML。一天时间,我们从零搭建了一个功能完整的Spring Boot项目:Hello World、配置注入、多环境、校验、异常处理、热部署……最重要的是,几乎没写配置,全靠自动配置魔法。Spring Boot就像一个贴心的恋爱对象:你想要什么,它就自动给你配好,还支持热更新(改bug不重启,幸福感爆棚)。

2026-01-24 19:38:29 552

原创 Spring Boot 第一天:我与框架的“闪婚”之旅

首先,什么是 Spring Boot?简单说,它是整个 Spring 技术栈的大整合,J2EE 开发的一站式解决方案。2014 年,马丁·福勒(Martin Fowler)大佬发明了微服务这个概念,从 Servlet、SSH、SSM,到单体应用、SOA,再到 Spring Cloud——Spring Boot 就像是这场进化史的巅峰产物。它的优点?哦,天哪,太多了!快速创建独立运行的 Spring 项目,还能无缝集成主流框架。

2026-01-12 17:02:42 604

原创 Spring Boot 项目创建的五种常见方式

方式推荐指数适合人群是否需要网络Spring Initializr 官网★★★★★所有人(首选)是IDEA 内置向导★★★★★IDEA 用户是★★★★Eclipse 用户是★★★命令行爱好者、自动化是/否手动配置 pom★★学习、特殊需求否强烈推荐:新手直接使用方式1 或 方式2,几分钟就能跑起一个完整的 Spring Boot 项目。

2026-01-07 21:39:17 804

原创 java常见面试题

当执行这些对象的方法时,会先经过插件(拦截器)逻辑(Interceptor Chain)。它主要通过DispatcherServlet(前端控制器)来分发请求,配合HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)和ViewResolver(视图解析器)协同工作,极大地简化了Web开发。NEW(新建)、RUNNABLE(运行/可运行)、BLOCKED(阻塞)、WAITING(无限等待)、TIMED_WAITING(计时等待)、TERMINATED(终止)。

2025-12-20 17:29:25 998

原创 【Git实战】从“梁山好汉协作”到“自建代码军火库”:Git & GitLab 踩坑指南

从命令行的git push到图形化的 IDEA,再到自己运维 GitLab 服务器,你现在已经掌握了代码管理的“海陆空”全套战术。最后送大家一个 Next Step:虽然 GUI 很好用,但千万别忘了命令行。建议你在 IDEA 里操作 Git 时,偶尔盯着下面的 Console 窗口看看它到底执行了什么命令,这才是成为高手的必经之路。现在,去你的 GitLab 上创建第一个 Project 吧!

2025-12-20 10:40:02 468

原创 Git 推送远程仓库全攻略:GitHub + Gitee 的 HTTP 和 SSH 四种方式详细对比与实操步骤(2025最新版)

Gitee + GitHub 全协议(SSH + HTTPS)永久免密码 + 一键双推完整教程 (已亲测 Windows 11 + Git Bash 完美运行,复制即用)适合人群:想一辈子只敲 git push 的程序员、学生、打工人。

2025-12-11 20:32:48 476

原创 Git 入门:从小白到“版本控制大师”的快乐旅程

如果你写的代码没有版本控制,就像吃火锅不点饮料——一旦“翻车”就只有泪两行。过程太简单,不多赘述 —— 安装完你就能用 Git 当“时光机”了。如果文件没改,Git 甚至连快照都懒得保存,直接引用之前的版本。这是 Git 的“时光机操作记录”,未来丢了也能找回来!今天我们就来用最轻松的方式,把 Git 学个通透!Git 则不一样,它直接把整个文件拍个“快照”。Git 仓库是由下面这些区域组成的——这很重要!你看到的代码、正在编辑的文件都在这。它就像“购物车”——提交前先放进去。

2025-12-06 19:14:52 554

原创 《老子今天非要把 SSM 整明白!—— 一篇让你一次成功的超级无敌保姆级整合教程》

常见寄掉原因解决方案404url-pattern 写成空或 *.do → 改成 /数据库连不上URL 没写 jdbc:mysql:// + 时区参数Mapper 找不到mapper.xml 没放对位置 + 没配 mapperLocations@Autowired 注入为 null扫描包没扫到(component-scan 写错包名)事务不生效切面写错包名(execution 写成 Servlet)IDEA 一直红。

2025-11-29 20:16:37 364

原创 MyBatis 缓存:一级本地小弟,二级全局大佬(99%的人都分不清,我用大白话+代码给你讲透!)

同一个 SqlSession 里,你只要不关门、不改数据,查几次都是同一个对象!

2025-11-29 16:06:25 329

原创 MyBatis 延迟加载:我只在你真的想看我的时候才出现,不然我懒得动

我不是不查,我只是不想查得太早。我不是查得慢,我只是把查的权利交给了你。你不点我,我就不动;你一点我,我立刻起飞。这,就是一个合格社畜的自我修养。所以,下次再有人问你:“MyBatis 延迟加载到底怎么用?” 你就把这篇文章甩给他,然后淡淡地说一句:“哥们儿,我懒,但我专业。(完)作者:一个比延迟加载还懒的前端转后端的程序员。

2025-11-28 16:30:45 375

原创 MyBatis 参数传递全攻略:从一个“又臭又长”的实战项目聊到你彻底懂为止

User:普通用户表,有个 role_id 外键Role:角色表,超级简单就 id + nameQueryVo:今天的主角!一个查询条件的“快递箱”,可以装:自己的 name(比如模糊搜用户名)一个完整的 User 对象(里面可能有 birthday、sex 等)一个完整的 Role 对象(想按角色名搜)Java// 自己搜用户名// 想按生日、性别啥的搜// 想按角色搜// getter setter 省略……场景推荐方式理由单个 id 查询。

2025-11-26 21:37:53 505

原创 [特殊字符] 一篇可以让你入门 MyBatis 的神级教程

第二章:MyBatis 入门程序(真正的重点)从 0 到 CRUD,让你告别 JDBC 熬夜写 SQL!一、什么是 MyBatis?如果你学过 JDBC,你一定体验过那种的感觉——写 SQL 很爽,但是写一堆会让你怀疑人生。于是,MyBatis 闪亮登场。

2025-11-24 17:01:19 262

原创 [特殊字符]SpringMVC 拦截器:站在 Controller 门口的“保安大哥”

只拦进办公楼咨询业务的,像管控权力更大的前台小姐姐,只对访问 Controller 的人负责。下面我带你从原理讲到实战,从写拦截器到写拦截器链,再到配置执行顺序,全给你举得明明白白。:门口保安亭,谁来都得过一遍,水电工、送外卖的、老板、员工,全给你拦。在 SpringMVC 中,拦截器(Interceptor)是什么?SpringMVC 拦截器支持“拦截器链”,也就是多个保安一字排开,✏️ ① 编写 Controller(公司前台)🔁 拦截器链的执行顺序(重点!3. 自定义拦截器:写一个自己的保安。

2025-11-24 15:24:38 777

原创 SpringMVC 异常处理:别让你的程序“裸奔”出500了!

现在,你的 SpringMVC 项目即使除以零、数据库宕机、空指针狂欢,也能优雅地告诉用户:“别急,我在修,喝杯茶等我~”今天咱们就把 SpringMVC 的异常处理玩得明明白白,让程序即使“翻车”也能优雅地摔出一个友好的提示页,绝不裸奔!只要在 Spring 配置文件里加上包扫描,它就自动生效了,代码更少更优雅!“真正牛逼的程序不是不报错,而是报错的时候还能保持微笑 ”快去把异常处理加上吧,别再让用户看到那可怕的红字堆栈了!只要这一行配了,整个项目的所有异常都会被它接住!用户傻眼,你也傻眼,老板更傻眼。

2025-11-24 10:51:59 163

原创 Java异常处理:当代码也开始“耍脾气”时该怎么办?

朋友们,想象一下这个场景:你正悠闲地喝着咖啡,突然你的Java程序撂挑子不干了。它可能会:像叛逆期少年一样直接“崩溃”或者像个傲娇女友,抛出一堆你看不懂的错误信息这时候,了解Java异常处理就相当于掌握了与代码沟通的“读心术”!今天,我们就来聊聊代码世界的那些“小情绪”。在Java世界里,所有异常的老祖宗叫 (可抛出的)。这个名字起得相当直白——能被“throw”的东西。java第二部分:检查异常——编译器是个“操心老妈”检查异常就像你出门时妈妈的唠叨:“带伞了吗?手机充电了吗?钥匙拿了吗?”编译

2025-11-24 10:33:42 360

原创 Java 文件上传的“血泪进化史”:从 Servlet 哭着写到 SSM 笑着传,到底有几种姿势?

文件上传的最高境界,就是让别人看不出你写了文件上传。从 200 行哭着敲,到现在 2 行笑着传。这,就是 Java Web 的成长!

2025-11-21 22:28:49 539

原创 SpringMVC 文件上传?五分钟从菜鸟到老司机(附完整可运行代码)

http://localhost:8080/项目名/你会看到一个超级简陋但贼好用的上传页面,点上传 → 成功页面 → target/你的项目/uploads 目录下就能看到文件了!

2025-11-21 21:12:58 376

原创 [特殊字符] SpringMVC 响应数据与结果视图详解(附完整项目示例)

返回类型作用String指定逻辑视图名,跳 JSPvoid需要自己输出 response可携带数据 + 视图forward:请求转发redirect:重定向返回 JSON 数据接收 JSON 数据。

2025-11-17 23:04:25 938

原创 Map的循环遍历

需要特定顺序:使用 TreeMap 或 LinkedHashMap。简单遍历:使用 for-each 或 forEach。复杂数据处理:使用 Stream API。需要删除元素:使用 Iterator。:如果需要同时访问键和值,性能稍差。:需要在遍历时删除元素时使用。:适合复杂的过滤和转换操作。:性能最好,推荐使用。:代码简洁,可读性好。

2025-11-17 21:51:40 246

原创 SSM框架常见面试题2

底层机制:原子性操作,基于CPU指令内存屏障:保证内存可见性,防止指令重排序队列管理:CLH队列管理等待线程对象头Mark Word:记录锁状态、偏向线程ID等锁升级过程无锁 → 偏向锁 → 轻量级锁 → 重量级锁Java传递机制按值传递基本类型:传递值的副本引用类型:传递引用的副本(对象地址的副本)值传递:传递参数的副本,修改不影响原值引用传递:传递参数本身,修改会影响原值支持引用传递的语言:C++、C#(ref关键字)、PHP排序算法选择基本类型数组。

2025-11-15 19:18:59 697

原创 SpringMVC请求参数的绑定

在 Web 开发中,表单提交、URL 传参等请求数据都是 k=v 格式(例如 username=haha&password=123)。SpringMVC 的参数绑定就是将这些请求数据自动映射到控制器方法的参数中,无需手动解析 Request 对象,极大简化了数据获取流程。// 主实体类:User// 用户名// 年龄// 嵌套引用类型(地址信息)// 集合类型(多个地址)// 全参构造、无参构造(可选,建议保留)// Getter + Setter(必须!

2025-11-15 17:25:39 690 1

原创 [特殊字符] 一文搞懂 Spring 框架事务管理(含XML、注解、纯注解三种方式)

在开发中,“事务”这个词出现得非常频繁。事务(Transaction)是一组操作的集合,要么全部成功,要么全部失败。举个例子:假设你在转账,A账户转100元给B账户。这个过程有两个操作:A账户减100B账户加100这两个操作必须要么都执行,要么都不执行。如果执行到一半程序崩了,只扣了A的钱没加给B,那就出大问题了!这时候,事务管理就上场了。它能保证在异常出现时自动回滚(rollback),让数据保持一致。

2025-11-12 22:16:36 618

原创 [特殊字符]Spring 模拟转账开发详解 —— 从 JDBC 到 IoC 整合实战

对比项第一种方式第二种方式基类无继承JdbcTemplate 获取方式手动注入通过继承自动获取配置简洁度略繁琐更简洁可扩展性更灵活结构更清晰通过本案例,我们完整体验了:Spring IoC 的依赖注入Spring JDBC 模板的封装使用DAO 层的两种不同写法Spring 与数据库的整合。

2025-11-09 09:24:28 340

原创 Spring 框架的 JDBC 模板技术

在传统的 JDBC 开发中,我们经常需要编写大量样板代码,比如:加载驱动获取连接创建Statement手动关闭资源(很容易忘记)这些重复、冗长的步骤非常容易出错。👉 为了简化数据库操作,Spring 提供了模板技术(Template)。把固定的模式代码封装起来,开发者只关注核心逻辑。模板类用途操作数据库(JDBC)操作 Hibernate操作 Redis发送 HTTP 请求其中,最常用的就是 ——它大大简化了数据库的增删改查操作。功能实现方式手动方式直接 newXML 管理在。

2025-11-09 09:23:24 425

原创 [特殊字符] Spring AOP 注解方式详解

学习了Spring AOP 的 XML 配置方式需要写很多标签来配置切面。但在实际开发中,这样写太麻烦了!Spring 提供了更简洁的方式 ——使用注解来实现 AOP。通过几个简单的注解,就能实现相同甚至更强大的功能。对比项XML 方式注解方式配置复杂度需要手动写更简洁,只需加注解可读性XML 分散、冗长注解集中、直观推荐使用旧项目/配置多场景✅ 新项目首选通过注解方式实现 AOP,开发效率更高,代码更清晰。尤其是结合 Spring Boot 时,几乎只需一个注解。

2025-11-09 09:20:50 299

原创 Spring AOP 配置文件方式详解

在学习 Spring 时,我们常听到AOP(面向切面编程)。在不改变原有业务代码的情况下,给程序“加点料”。例如,我们在保存用户时,想额外加上:打印日志;记录操作时间;发送短信;或者进行事务控制。这些跟业务无关的功能,统一抽取到一个“切面”里,通过 AOP 技术“织入”到业务方法中,就不用每次都手写一遍啦!概念功能AOP把公共功能(如日志、事务)从业务逻辑中分离出来切面类(Aspect)定义要增强的逻辑切入点(Pointcut)定义哪些方法会被增强通知(Advice)

2025-11-09 09:18:04 429

原创 深入理解 CGLIB 代理技术:原理、使用与实战

CGLIB(Code Generation Library)是一个功能强大的字节码生成库,它可以在运行时动态生成某个类的子类,从而实现方法拦截和增强。JDK 动态代理只能代理实现了接口的类。CGLIB 代理可以代理普通的类,即使它没有实现接口。简而言之,CGLIB 是通过继承的方式来生成代理对象的。

2025-11-08 20:49:25 980

原创 用 JDK 动态代理手把手实现 AOP(详解关键代码与原理)

通过 JDK 动态代理,在不修改业务类的情况下,为统一加上事务逻辑(开启/提交/回滚/释放资源)。

2025-11-06 10:24:41 634

原创 Spring 框架整合 JUnit 单元测试

整合 Spring 与 JUnit 可以自动加载 Spring 容器,简化测试代码。使用。

2025-11-06 09:52:39 520

原创 IOC 注解方式详解

注解作用层次说明@Component通用组件类最基础的注解表现层(Web 层)控制器组件@Service业务逻辑层Service 组件持久层Dao 组件注解作用Bean 定义属性注入生命周期管理纯注解配置🌱 小结:从 XML 到注解再到纯注解配置,是 Spring 容器发展的必然趋势。掌握注解式开发,是通向 Spring Boot 与微服务架构的基础!

2025-11-05 22:56:57 573

原创 SSM框架常见面试题1

要点Spring Bean 容器:通常指管理 Spring Bean 的组件集合——负责 Bean 的定义加载、实例化、依赖注入、生命周期管理(初始化/销毁)等。实现有(更常用)等。IOC 容器是一种设计思想,把对象创建和依赖管理的控制权交给容器。通常把实现了 IOC 的容器称为 IOC 容器(也就是 Spring 的 Bean 容器)。区别:语义上基本重合。严格说:“IOC 容器”强调理念(控制反转)。“Bean 容器”强调具体实现(管理 Bean 的容器)。在实际使用中这两个词可以互换。

2025-11-02 15:27:03 773

原创 事务与数据库连接池

优点:性能、功能、扩展性都不错;内置 SQL 执行统计、慢查询监控、连接泄露检测、可配置密码加密等。适合线上大流量场景。事务保证数据的正确性(ACID),是数据库安全的最后一道防线。隔离级别是“安全 vs 并发”的开关:越安全越慢。按业务选择,不要盲目最高。连接池是性能的好朋友,避免频繁开关连接的昂贵代价;但也要善待它(避免泄露、保持配置合理)。实务中常见组合:使用DataSource。

2025-11-02 14:18:52 662

原创 Spring 框架

IOC(Inversion of Control,控制反转)对象的创建和依赖由容器负责,而不是程序自己 new。解决问题高耦合:程序员手动管理依赖 → 难以维护和测试。Spring IOC 通过读取配置文件或注解,实现对象的自动创建和注入。类比:你不再自己做饭(new 对象),交给 Spring 厨师(容器)帮你做。ApplicationContext 接口:Spring 容器核心接口,用于获取 Bean。常用实现类:从类路径加载 XML。:从磁盘路径加载 XML。功能。

2025-11-02 09:21:51 903

原创 Maven(项目管理工具)

专家 / 内行”Maven 是一个跨平台的项目管理与构建自动化工具,主要用于基于 Java 平台的项目。它覆盖**构建(compile/package)、依赖管理(dependency management)以及项目信息管理(POM: Project Object Model)**等。Maven 通过约定(convention)和生命周期(lifecycle)把构建过程标准化,并提供与远程/本地仓库的集成以自动解析依赖。什么是理想的项目构建?高度自动化:减少手工步骤,一条命令完成多步任务。跨平台。

2025-10-27 22:04:54 1087 1

原创 Maven 项目和 Maven Web 项目的异同点

🧩 Maven 项目 vs Maven Web 项目 — 全面对比总结jarwar.jar.warwebapppom.xml。

2025-10-25 17:08:40 394

原创 Java 项目 — 五种创建方式

适合控制台工具、学习练习、算法、单文件或少量类的程序,不依赖 Web 容器或复杂构建工具。

2025-10-25 16:51:32 1335

原创 JavaSSM项目知识点

Java Web是基于Java的服务端开发技术集合,用于构建动态网站或Web应用。Web服务器(Tomcat)Servlet容器JSP页面用户通过浏览器发出HTTP请求。Tomcat接收请求 → 定位Servlet。Servlet处理业务逻辑。响应返回给浏览器(HTML、JSON、文件等)。面试高频:Q:Web容器的作用是什么?A:负责加载、实例化、管理和销毁Servlet对象,并负责处理HTTP请求与响应。Maven是Apache提供的项目管理与构建工具。

2025-10-23 13:12:41 958

空空如也

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

TA关注的人

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