自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自定义 Starter(spring boot starter)

通过自定义 Starter,你可以将一组功能封装为可复用的组件,其他项目只需添加依赖即可自动配置 Bean。),可以让其他项目通过依赖引入你的 Starter 来自动配置 Bean 和相关组件。发布到 Nexus 或 Maven Central。在 Spring Boot 中自定义一个。就能轻松集成你的功能!

2025-04-25 14:17:03 176

原创 Spring boot 自动配置

Spring Boot 的自动配置通过条件化加载机制和默认配置,极大简化了开发流程。理解其原理和条件注解的用法,可以帮助开发者更高效地使用和定制 Spring Boot。

2025-04-25 14:11:58 301

原创 IOC容器类比理解

它的核心目标就是帮你管理所有 Bean 的“家务事”,让你能更专注于业务逻辑的开发(即“自己的事业”)。下面通过一个具体的场景和对比,详细解释这个比喻的合理性及其优势。通过这个“管家”,你可以更高效、更优雅地构建应用程序,而无需被技术细节绊住脚步。这正是 Spring Boot 设计的核心理念——

2025-04-25 00:44:12 363

原创 Bean存在的意义和IOC容器管理

通过 IOC 容器管理 Bean,你不仅能更高效地开发,还能让代码更健壮、更易于维护和扩展。的区别,逐步解释 Bean 存在的意义,以及 Spring IOC 容器的核心优势。

2025-04-25 00:38:32 606

原创 Spring boot 中的IOC容器对Bean的管理

Spring Boot 中 IOC 容器对 Bean 的管理,涵盖从容器启动到 Bean 的生命周期管理的全流程。掌握这些步骤后,可以高效利用 Spring Boot 的 IOC 容器管理 Bean,构建松耦合、可维护的应用。容器负责将依赖的 Bean 注入到需要它们的对象中。通过注解或接口控制 Bean 的初始化和销毁逻辑。Spring Boot 的 IOC 容器基于。通过条件注解控制 Bean 的注册。注解指定 Bean 的作用域。,在应用启动时自动初始化。注解标记主类,启动容器。

2025-04-25 00:16:02 1631

原创 ThreadLocal线程本地量

后续业务代码(如 Controller、Service、DAO)可直接从。为了避免内存泄漏(尤其是使用线程池时),必须在请求处理完成后清理。通过这种方式,你可以安全地将用户登录信息存储在。在用户登录成功后,将用户信息存入。(但需谨慎,线程池中可能不适用)。中,并在整个请求链路中共享数据。如果业务代码中使用异步线程(如。),子线程无法直接继承父线程的。以下是实现将登录信息存储在。中获取用户信息,无需传参。:手动传递用户信息或使用。

2025-04-24 18:07:37 333

原创 Spring AOP 的讲解

技术,将横切关注点(如日志、事务、权限校验)与核心业务逻辑分离,提升代码的模块化和可维护性。在 Maven 项目中,需添加以下依赖(Spring Boot 项目推荐使用。掌握 Spring AOP 是构建高可维护性企业级应用的关键!是 Spring 框架的核心模块之一,旨在通过。Spring AOP 通过。

2025-04-23 23:49:28 752

原创 注解的讲解

/ 注解参数// 属性,可设置默认值五、注解的处理注解需要通过反射或编译时处理工具(APT)来解析。

2025-04-23 17:36:06 498

原创 过滤器和拦截器

在 Spring Boot 项目中,过滤器和拦截器是两种常用的请求处理机制,它们都可以实现对请求的预处理和后处理,但在使用场景和实现原理上有明显区别。以下是详细说明(

2025-04-22 22:57:26 402

原创 JWT令牌登录校验

以下是基于JWT的登录校验模块化实现方案,分为四大核心模块,代码结构清晰且职责分明。

2025-04-22 16:15:49 552

原创 全局异常处理器

Data。

2025-04-22 15:44:33 227

原创 分页查询详细讲解

以下是 原生 SQL 分页、PageHelper 的 对象和 对象 三种分页查询方式的详细实现讲解,包含代码示例和对比分析。3. 优缺点优点:无第三方依赖,灵活控制 SQL。缺点:需手动处理分页参数和总条数查询,代码冗余。二、PageHelper 的 对象1. 实现步骤启动分页:调用 。查询数据:直接执行查询,返回 (本质是 的子类)。获取分页数据:通过 对象直接读取总记录数、当前页数据等。2. 代码示例3. 关键点强制转换: 是 的子类,可以直接转换。分页

2025-04-19 14:11:04 752

原创 Mybatis Plus详细使用讲解

Data@TableName("user") // 表名映射(默认类名驼峰转下划线)@TableId(type = IdType.AUTO) // 主键自增。

2025-04-13 11:21:41 1021

原创 RabbitMQ简单使用

以下是关于如何在 Spring Boot 项目中使用 RabbitMQ 的详细指南,涵盖核心概念、配置、代码实现及使用场景。RabbitMQ 是一个开源的消息代理(Message Broker),基于 AMQP 协议实现异步通信。通过以上步骤,你可以在 Spring Boot 项目中轻松集成 RabbitMQ,实现高效可靠的异步通信。

2025-04-12 23:43:08 783

原创 同步通信和异步通信的区别和使用场景

同步通信和异步通信是两种不同的数据传输或交互模式,它们在实时性、资源占用、实现复杂度等方面有显著差异,适用于不同的应用场景。以下是两者的详细对比及典型使用场景,

2025-04-12 17:47:13 262

原创 Seata实现分布式事务

通过代理数据源和自动生成回滚日志,显著降低了分布式事务的侵入性,适合中小型系统快速集成。实际应用中需结合业务场景选择事务模式,并通过监控和日志优化系统健壮性。远程服务(如库存服务)无需显式标记分支事务,Seata 自动通过数据源代理管理本地事务。Seata 通过代理数据源实现 SQL 解析和自动补偿。实现分布式事务管理的详细步骤及代码示例,结合其。若业务需要更细粒度控制(如资金转账),可切换至。在 Spring Boot 项目的。,数据源代理默认开启,无需额外配置。在发起分布式事务的方法上添加。

2025-04-12 14:49:43 607

原创 Sentinel控制台解决雪崩问题

通过以上步骤,您可以有效配置熔断与流控规则,并通过控制台实时监控系统状态,从而解决雪崩问题。如需更复杂策略(如热点参数限流),可参考Sentinel官方文档扩展。在控制台“实时监控”页面,查看各资源的QPS、响应时间、异常比例等指标。点击“簇点链路”,查看所有受监控的接口,直接针对资源配置规则。在Spring Boot项目的。,输入账号密码登录。

2025-04-11 20:56:58 919

原创 Nacos 注册中心(配置管理)

以下是关于。

2025-04-09 22:03:15 967

原创 网关实现登陆校验(Spring Cloud Gateway)

Override// 从JWT解析用户信息// 添加自定义请求头.build();

2025-04-09 21:47:11 1051

原创 网关(Spring Cloud Gateway)讲解

主要功能前端通过访问一个固定的端口,可以通过Spring Cloud Gateway来访问到微服务里面的不同的端口里面的,可以通过如下的图片理解一下;结合 Nacos 服务发现和 Sentinel 限流,可构建高可用、安全的 API 网关层。

2025-04-08 23:11:59 681

原创 OpenFeign 日志输出配置

通过以上配置,可灵活控制 OpenFeign 的日志输出,快速定位服务调用中的问题。结合监控工具(如 Prometheus + Grafana)可进一步优化系统性能。在微服务架构中,OpenFeign 作为声明式 HTTP 客户端,其日志输出配置是调试和监控服务间调用的关键。Spring Boot 默认集成。

2025-04-08 21:31:40 275

原创 Nacos 注册中心(服务注册)

Nacos 是微服务的“管家”,既管理服务的注册与发现(让服务互相找到彼此),又统一管理所有配置(让系统灵活适应变化)。在一个服务调用另一个服务的时候通过这个nacos来知道是否可以使用成功。

2025-04-08 20:56:09 1533

原创 JDBC简单介绍

JDBC作为Java生态中数据库访问的事实标准,其核心价值在于通过驱动体系实现了数据库操作的标准化。虽然直接使用JDBC需要处理资源管理、异常处理等底层细节,但正是这种灵活性和普适性,使其成为所有Java关系型数据库操作的基础支撑(包括Spring Data等高级抽象层的底层实现)。

2025-04-05 21:27:27 765

原创 单体架构和微服务的简单介绍

在Java开发的前后端项目中,单体架构和微服务架构是两种主流的架构模式,它们在设计理念、技术实现和适用场景上有显著差异。

2025-04-05 17:48:27 695

原创 Deque和Queue接口之间的区别

接口均用于管理元素的顺序操作,但它们在功能和应用场景上有显著差异。:仅支持单端操作(尾部插入、头部删除),无法在队列中间或两端灵活调整元素顺序。是功能更强大的双端队列,可替代栈和队列的使用场景。方法适用于需要明确感知容量问题的场景(如开发阶段的调试)。用于严格校验队列非空的场景(如业务逻辑要求必须存在元素)。方法适用于需静默处理失败的场景(如高并发任务队列)。),既可模拟队列(FIFO)也可模拟栈(LIFO)。:需要同时操作窗口的头部和尾部(如求最大值队列)。用于需容忍空队列的场景(如任务队列轮询)。

2025-04-01 22:42:18 821

原创 双指针几种常见用法

双指针的核心优势在于通过指针的协同操作将时间复杂度从 O(n²) 优化至 O(n),适用于线性数据结构(

2025-03-27 21:22:34 772

原创 力扣刷题路线

结合高频题、经典题和算法思想学习建议,分阶段从基础到进阶编排,覆盖所有核心标签,并标注题号与学习方法。:画图模拟快慢指针移动,如移动零时快指针探路、慢指针标记非零位置。:括号生成时,左括号数不能超过n,右括号数不能超过左括号数。:LCA问题中,若左右子树均含目标节点,则当前节点为祖先。:终止条件、递归调用、返回值,如二叉树深度递归返回。:掌握虚拟头节点、递归反转、环形检测。:掌握索引操作、快慢指针、滑动窗口。:熟悉括号匹配、单调栈、层序遍历。:熟悉反转、哈希统计、回文处理。

2025-03-27 16:31:59 1018

原创 TreeMap 的底层原理

TreeMap 的核心原理基于红黑树,通过颜色和旋转规则维持树的平衡,保证操作的高效性(O(log n)其优势在于:•有序性:支持自然排序或自定义排序。•范围操作:高效实现子映射查询。•稳定性:在动态数据场景下性能优于普通二叉查找树。

2025-03-26 22:48:12 541

原创 LinkedHashMap的底层原理

LinkedHashMap 通过哈希表 + 双向链表的结构,在保留 HashMap 高效查找的基础上,实现了顺序访问特性。其核心设计包括:•双向链表维护顺序:支持插入顺序或访问顺序(LRU)。•灵活的扩展性:通过重写实现缓存淘汰策略。•性能平衡:在少量额外内存开销下,提供更可控的遍历顺序。适用于需要按顺序迭代或实现缓存淘汰机制的场景(如页面置换、资源池管理等)。

2025-03-26 22:44:41 472

原创 HashMap底层原理

HashMap的底层设计通过数组+链表/红黑树、哈希扰动、动态扩容等机制,在大多数场景下实现了高效的键值对操作。其核心优势在于:•时间复杂度:理想情况下为O(1),高冲突时通过红黑树优化至O(log n)。•空间效率:负载因子平衡了空间占用与哈希碰撞概率。遍历方法的选择需根据具体需求:•功能需求:优先选择entrySet()遍历键值对。•性能敏感:避免多次调用get()的KeySet遍历。•代码简洁性:Java 8+推荐Lambda或Stream API。注意事项• 确保键对象的。

2025-03-26 22:40:33 736

原创 TreeSet 的底层原理

自然排序• 元素必须实现Comparable接口(如IntegerString),通过方法定义排序规则。• 未实现Comparable的自定义类会抛出。自定义 Comparator• 通过构造方法传入比较器,覆盖自然排序规则。• 示例:按字符串长度排序:TreeSet<String> set = new TreeSet<>((s1, s2) -> s1.length() - s2.length());TreeSet 通过红黑树实现了高效的有序集合管理,核心优势在于元素自动排序和唯一性保障。

2025-03-26 00:02:44 830

原创 LinkedHashSet 底层原理

LinkedHashSet 通过哈希表 + 双向链表的复合结构,在保留 HashSet 高效去重能力的同时,实现了插入顺序的维护。顺序性:适合需要记录操作历史的场景。高效性:查询性能接近哈希表,优于普通链表。灵活性:可通过覆盖实现 LRU 缓存淘汰策略(需结合 LinkedHashMap)。

2025-03-25 23:19:32 626

原创 HashSet底层原理

•必须重写hashCode()和equals():确保相同对象返回相同哈希值,不同对象尽量分布均匀以减少冲突。• equals():精确判断对象内容是否相等。若未重写,默认比较对象地址,导致重复元素未被正确过滤。示例@Override// 基于属性生成哈希值@Override// 属性完全相等才视为重复HashSet 通过哈希表实现高效的元素唯一性管理,其核心优势在于均摊 O(1) 的操作复杂度,适用于高频去重、快速查找的场景。

2025-03-25 22:19:20 1370

原创 LinkedList 的底层原理

LinkedList 通过双向链表实现高效的动态增删,但随机访问性能较差。其设计适用于频繁修改且无需快速随机访问的场景,如队列、栈或动态数据管理。在多线程环境下需配合同步机制使用,避免数据竞争问题。

2025-03-25 17:49:30 704

原创 ArrayList 的底层原理

ArrayList 通过动态数组实现高效的随机访问,但插入/删除中间元素性能较低,适合读多写少的场景。在多线程环境下需使用同步包装类或并发集合替代。合理预分配容量和优化操作位置可显著提升性能。

2025-03-25 17:23:57 547

原创 八种常见数据结构的图形化介绍

动态增删高效(O(1)),但查询需遍历(O(n))。:路径规划(Dijkstra算法)、社交网络分析。,增删元素需移动其他元素(时间复杂度O(n))。:需快速访问元素的场景,如高频查询的静态数据集。:频繁插入/删除的场景(如LRU缓存淘汰算法)。:平均查询时间复杂度O(1),最坏情况O(n)。,支持随机访问(索引时间复杂度O(1))。:函数调用栈、表达式求值(如括号匹配)。,支持高效搜索(平均O(log n))。:链地址法(拉链法)或开放寻址法。:边带方向(如网页链接关系)。:将键映射到桶(数组索引)。

2025-03-25 16:24:04 375

原创 Java集合框架核心结构总览

以下是Java集合框架中接口与实现类关系的结构化总结及对应的文本示意图。

2025-03-25 16:18:09 285

原创 Linux简单命令

通过灵活组合这些命令与参数,可高效完成文件管理、系统监控、网络调试等复杂操作。:以人类可读格式显示文件大小(如 KB、MB)。:将前一个命令的输出作为后一个命令的输入(如。:显示所有进程详细信息(CPU、内存占用)。:长格式显示(权限、所有者、大小等)。:递归创建多级目录(自动创建父目录)。:操作对象(如文件名、目录路径)。:指定编辑命令(如替换操作)。:递归修改目录及子文件所有者。:递归修改目录及子文件权限。:递归复制目录及其子内容。:递归搜索目录中的文件。:递归显示子目录内容。:递归删除目录及内容。

2025-03-24 20:53:31 543

原创 Mybatis的动态SQL和结果映射

•。

2025-03-24 20:27:01 974

原创 Mybatis在Spring boot里面的简单使用

•注解 vs XML:简单查询优先用注解,复杂动态 SQL 用 XML•性能优化:结合二级缓存、批量操作(@Options注解)提升效率•扩展性:通过自定义 TypeHandler 处理特殊数据类型(如 JSON 字段)

2025-03-24 20:23:18 682

空空如也

空空如也

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

TA关注的人

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