- 博客(80)
- 收藏
- 关注
原创 JWT(JSON Web Token)
JWT(JSON Web Token)在当今企业中被广泛采用,尤其是在无状态认证和分布式系统场景中。其流行主要得益于其轻量级、跨平台兼容性和自包含特性。
2025-04-02 17:27:26
580
原创 GIt 分布式版本控制系统
Git 是一款,由 Linus Torvalds(Linux 内核创始人)于 2005 年开发,旨在高效管理代码和文件的变更历史。它不仅是软件开发的核心工具,也逐渐应用于其他需要版本控制的领域(如文档协作、设计稿管理等)。
2025-04-02 08:18:10
354
原创 SpringBoot(三)环境隔离/外部化配置/单元测试/可观测性/生命周期
外部化配置(Externalized Configuration)是一种将应用程序的配置信息从代码中分离出来,存储在代码之外的位置的设计模式。其核心目的是提高应用的灵活性、安全性和可维护性,使配置能够在不同环境(如开发、测试、生产)中无缝切换,而无需修改或重新编译代码
2025-03-30 17:15:31
1087
原创 MyBatis (五)动态SQL
动态 SQL 是 MyBatis 的核心特性之一,允许根据条件动态拼接 SQL 语句。通过条件判断、循环等逻辑,灵活生成不同场景下的 SQL,解决传统 JDBC 中硬编码 SQL 的繁琐问题。
2025-03-20 16:53:37
720
原创 MyBatis (四)自定义结果集-分步查询
MyBatis 发现 Customer 的 orders 属性需要填充,于是触发 <collection> 标签中的分布查询。我们在此标签当中添加相关属性,配置分布查询的相关参数。
2025-03-20 10:15:49
449
原创 MyBatis (三)自定义结果集-关联查询
解决和数据库对不上的数据被封装为空:1 驼峰命名规则# 启用驼峰命名自动转换(数据库下划线字段 -> Java驼峰属性)2 自定义映射规则默认疯转原则(resultType):JavaBean中的属性名,去数据库表中找对应的值--一一映射封装自定义映射规则(resultMap):我们告诉Mybatis如何将结果封装到Bean中实现:添加方法配置Mapper XML 映射文件相关信息--column为数据库字段名,property为封装属性名-->
2025-03-18 20:58:00
392
原创 MyBatis (二)参数处理与结果封装
{}用于字段名的声明,${}用于数据库表名的声明#{},参数位置动态取值,安全,无SQL注入问题${},主要是JDBC的应用,适用于表名等位置,不支持预编译,注意SQL注入问题。
2025-03-18 17:23:37
272
原创 MyBatis (一)持久层框架-基础入门
(安装 MyBatisX 插件,自动为 Mapper 类生成 Mapper 文件)在 Mapper 文件中配置方法的实现 SQL项目模块初始化。
2025-03-17 16:53:15
510
原创 SpringMVC(八)Knife4j 接口文档
Knife4j 是基于 Swagger(OpenAPI)的增强工具,专注于。:生成 Markdown、HTML 等格式的离线文档,便于归档或分享。:前后端开发、测试、产品等角色可通过文档快速理解接口定义。:通过注解自动生成标准化、可视化的 API 文档。:直接在文档页面发起请求,验证接口功能。1 配置pom.xml相关依赖。
2025-03-17 08:07:22
558
原创 SpringMVC(七)数据校验+VO++脱敏
在Spring MVC中,数据校验是确保用户输入符合预期规则的重要环节Spring MVC通过整合规范,提供了灵活的数据校验机制。核心步骤包括:在Java Bean中添加校验注解。在Controller中使用@Valid或@Validated触发校验。通过或全局异常处理捕获错误。可选扩展:分组校验、自定义注解、国际化消息。
2025-03-16 13:20:22
1128
原创 SpringMVC(六)异常:全局捕获与错误响应
声明式异常处理是通过 配置或注解 将异常处理逻辑与业务代码解耦,通常由框架统一管理。例如,在 Spring 中通过 @ControllerAdvice 和 @ExceptionHandler 实现全局异常处理。
2025-03-16 11:34:48
517
原创 SpringMVC(五)拦截器
Spring MVC拦截器通过灵活的三个方法钩子,为开发者提供了在请求处理流程中插入逻辑的能力,适合实现与业务紧密相关的横切关注点(如鉴权、日志)。合理使用拦截器可以显著提升代码的可维护性和复用性。
2025-03-15 13:22:11
1002
原创 SpringMVC(四)Restful软件架构风格
旨在构建高效、可拓展的分布式系统,尤其适用于Web服务,其核心思想是通过统一的接口和资源操作实现客户端于服务器之间的交互。REST 凭借其简洁、灵活的特点,成为现代 Web 服务的基石。
2025-03-15 11:46:50
938
原创 面试高频#LeetCode#Hot100-字母异位词分组
1首先定义map集合一个String对应一个String[]集合,遍历字符串数组。4如果key值在map中有,那就返回其所对应的values,将遍历的str放入。2对其先进行拆分,拆分为字符数组,再进行排序,再转为字符串。3如果key值没有就创建一个字符串集合,将遍历的str放入。5最后直接返回map所有的values组成的集合。
2025-03-13 16:00:49
274
原创 SpringMVC(三)响应处理
创建 POJO 实例并填充属性,Spring 自动转换属性名为 JSON 字段(如。快速构建 RESTful API,返回结构化数据(如查询用户信息)。类注解,自动将方法返回值序列化为 JSON(无需。将文件流包装为响应体,避免直接加载文件到内存。声明文件大小(非必须,但利于浏览器进度显示)。会将文件全部读入内存,大文件易导致 OOM。封装响应实体,精确控制状态码、头部和正文。)会被处理为 JSON 数组。无需手动处理响应头或内容协商。流式返回,无需预读字节。触发浏览器下载行为。,可能导致流关闭异常。
2025-03-13 10:13:09
499
原创 SpringMVC (一)基础
SpringMVC是Spring的web模块,用来开发Web应用,SpringMVC应用最终作为B/S,C/S模式下的Server端,Web应用的核心是处理HTTP响应。Spring Web MVC 是构建在 Servlet API 上的原始 Web 框架,已被包含在内 在 Spring Framework 中。正式名称“Spring Web MVC”, 来自其源模块的名称 ()、 但它更通常被称为 “Spring MVC”。
2025-03-12 08:26:45
339
原创 Spring (十)事务
拦截逻辑:代理对象会将方法调用委托给(事务拦截器),该拦截器负责管理事务的开启、提交或回滚。事务属性解析:拦截器会解析注解的属性(如、、等),决定事务的行为。事务操作:拦截器通过接口(如、)执行具体的事务操作::根据传播行为决定是否创建新事务或加入现有事务。:提交事务(如果当前是事务的发起者)。:回滚事务(在抛出异常时触发)。(timeoutString也行)超时时间,事务超时,以秒为单位,一旦超过约定时间,事务就会回滚。超时时间指的是从方法开始
2025-03-11 15:40:52
841
原创 Spring(九)AOP-底层原理与通知方法的理解
AOP的底层原理是动态代理或字节码增强技术,用于生成代理类或直接修改目标类。增强器链是运行时的执行流程控制机制,用于协调多个增强逻辑的顺序和协作。不同框架(如Spring AOP和AspectJ)的底层实现差异显著,但最终目标一致:无侵入地分离横切关注点。
2025-03-11 15:40:47
1171
原创 Spring (八)AOP-切面编程的使用
为什么推荐用 @Pointcut 代替内联表达式?减少重复:避免在多处重复相同的表达式。易于维护:规则集中管理,修改时只需改一处。代码简洁:通知方法只需关注逻辑,无需关注复杂表达式。
2025-03-08 20:13:10
676
原创 Spring(七)AOP-代理模式
静态代理是通过手动编写一个“替身类”(代理类),在不修改原始类代码的前提下,为其添加额外功能(如日志、权限校验),使用时通过代理类间接调用原始类。:在不修改原始对象代码的前提下,添加新功能(如日志记录、性能统计)。:限制或增强对原始对象的访问(如权限校验)。:在需要时才初始化复杂对象(如大文件加载)。:隐藏底层复杂逻辑,对外提供简洁接口。:在方法调用前后自动记录日志。:调用方法前检查用户权限。
2025-03-08 14:01:43
1371
原创 Spring (六)容器-生命周期
当Spring容器启动时,根据配置或组件扫描创建Bean实例。(默认是无参构造器,若需要参数需结合其他配置)。
2025-03-07 09:29:17
331
原创 Spring(五)容器-依赖注入的三种方式
通过 Setter 方法设置依赖对象,允许依赖在 Bean 创建后动态修改。:通过构造器参数传入依赖对象,确保 Bean 在实例化时即完成依赖注入。:直接通过反射将依赖注入到字段,无需显式构造器或 Setter 方法。:Spring 官方推荐的注入方式,尤其适用于单例 Bean。:允许在运行时重新注入依赖(但需注意线程安全)。:依赖在对象创建时即被赋值,避免后续修改。:仅推荐用于快速原型开发或非核心组件。:依赖关系不透明,不利于单元测试。:适合非必需或可变的依赖。
2025-03-07 09:10:41
441
原创 Spring(四)容器-先注册后注入
注册组件:告诉 Spring 容器“这个类归你管”(用@Component等)。依赖注入:容器自动把已管理的 Bean 赋值给其他 Bean 的依赖项(通过构造器、Setter 等)。核心关系没有注册→ 容器不认识这个类,无法注入。注册但未注入→ 容器知道这个类,但不会自动赋值给其他 Bean。一句话容器是仓库,注册是进货,注入是取货送货。只有先“进货”(注册 Bean),才能“送货”(注入依赖)!
2025-03-06 14:54:13
687
原创 Spring(三)容器-注入
Primary标记一个Bean,然后在注入时用@Autowired,这时候会自动选择@Primary的;或者当有多个Bean时,用@Qualifier指定名称来注入。,简化多数场景的依赖注入。时,@Qualifier。,精准控制依赖的选择。
2025-03-04 20:41:23
933
原创 Spring(二)容器-注册
在Spring框架中,@Bean 注解是一种用于定义和配置bean的方式。它通常与@Configuration注解一起使用,用来告诉Spring容器哪些方法需要被当作是创建和管理的bean。当一个方法上标记了@Bean注解时,这个方法会被Spring容器调用,并且其返回值将作为一个bean被注册到Spring的应用上下文中。
2025-03-03 20:39:41
800
原创 JDBC 进阶
指在数据库插入操作后,自动获取数据库生成的主键值(如自增ID、序列值等),并将其回填到程序中的对象或变量中。,例如:主表插入后需获取自增ID,才能将子表数据的外键关联到该ID。
2025-02-27 20:54:35
290
原创 JDBC 基础
JDBC:javaDatabase Connectivity,意为数据库连接JDBC是Java提供的独立于任何数据库管理系统的API.Java提供接口规范,由各个数据库厂商提供结构的实现,厂商的实现类封装成jar文件,也就是俗称的数据库驱动jar包
2025-02-27 11:25:33
459
原创 Web 后端(四) 请求与响应
请求(Request):客户端向服务器要数据或提交数据。响应(Response):服务器处理请求后返回结果。JavaWeb通过和对象封装了HTTP协议的底层细节,开发者只需关注业务逻辑的实现。
2025-02-17 21:14:23
857
原创 Web后端(三) Tomcat服务器
Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages (JSP) 技术,用于运行Java Web应用程序。Tomcat轻量、易于配置,常作为开发和部署Java Web应用的首选服务器。
2025-02-17 18:42:25
318
原创 MySQL数据库(八)☞ 我是不是锁神
在对表中某一行数据进行更新等操作时,表会对数据的这一行加上行锁,但是在此时加上表锁,表锁将会一行一行的排查,为了改进这种情况,引入了意向锁,在加上行锁时也会加上对应的意向锁,此时再加表锁时,意向锁会与表锁进行匹配判断是否兼容。如果一个事务打算对某些行加共享锁(S锁),那么在此之前,该事务会先在表上加上意向共享锁(IS锁)。一旦某个事务获得了排他锁,其他的事务都不能再对该行数据加任何类型的锁,包括共享锁和排他锁,这样就确保了再任意时刻只有一个事务可以执行修改删除等操作,防止数据不一致的问题。
2025-02-15 20:56:38
1373
原创 MySQL数据库(七)SQL 优化
页可以为空也可以填充一半,也可以填充全部。每个也包含2-N行数据(如果一行数据过大会行溢出),根据主键排列。-主键乱序插入可能出现的问题。在InnoDB存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。
2025-02-09 00:15:33
398
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人