自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5、Seata

分布式事务问题的产生源于微服务架构中服务间的独立运行状态难以协同。Seata框架通过TM(事务管理器)、TC(事务协调器)和RM(资源管理器)协同工作,以XID为事务标识实现全局事务管理。使用Seata需引入依赖并配置服务映射,通过@GlobalTransactional注解开启分布式事务。每个服务连接的数据库需创建undo_log表存储回滚信息,确保事务异常时可正确回滚。这种机制有效解决了跨服务事务一致性问题。

2025-12-16 10:13:17 415

原创 4、Gateway

Spring Cloud Gateway是一个基于Spring Boot的API网关服务,提供反向代理、认证鉴权、流量控制、熔断和日志监控等功能。其核心工作原理是通过路由匹配和过滤器链处理请求。配置方式支持YAML文件和编码两种形式,其中YAML配置包含路由规则定义(如路径匹配、负载均衡)和优先级设置。内置丰富的断言工厂(Path、Header等)用于请求匹配,过滤器则支持请求/响应修改和流量控制等操作。典型部署流程包括创建Gateway模块、引入依赖、配置Nacos注册中心和路由规则。过滤器执行遵循&qu

2025-12-15 10:55:26 1166

原创 3、Sentinel

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从等多个维度保护服务的稳定性。定义定义工作原理。

2025-12-15 10:53:49 901

原创 2、OpenFeign

摘要:本文介绍了Spring Cloud OpenFeign的使用方法,包括声明式REST客户端配置、远程调用第三方接口、日志记录、超时控制、重试机制和拦截器实现。通过注解驱动方式简化HTTP请求,支持GET/POST请求参数传递,提供日志级别配置和超时设置,并演示了请求拦截器的全局和局部应用。文章涵盖了OpenFeign的核心功能,为微服务间通信提供便捷解决方案。

2025-12-12 13:31:42 940

原创 1、nacos

引入依赖,配置Nacos地址开启服务发现功能(默认是开启的)扩展获取服务实例列表负载均衡选择一个实例(需要引入 spring-cloud-starter-loadbalancer)可以发起远程调用。

2025-12-12 13:30:36 1174

原创 15、RabbitMQ

RabbitMQ是一个开源消息队列系统,支持多种消息传递模式。摘要介绍了RabbitMQ的四种核心工作模式:1)简单模式(一对一消息传递);2)工作队列模式(多消费者竞争消费);3)发布订阅模式(广播消息);4)路由模式(基于路由键定向发送)。每种模式均包含Java配置和实现代码示例,展示了生产者发送和消费者接收消息的完整流程。RabbitMQ通过这些模式实现了系统解耦、异步处理、流量削峰等分布式系统关键需求。

2025-12-11 10:31:13 566

原创 14、AOP

摘要:本文介绍了Spring Boot中AOP(面向切面编程)的应用,重点讲解了日志记录和权限控制的实现。AOP通过切面、连接点等核心概念,将横切关注点与业务逻辑分离。文章详细展示了如何配置AOP依赖、定义切面类,以及使用@Around等通知类型实现方法调用日志记录、性能监控和自定义日志级别。通过@LogMethod注解示例,演示了如何为不同方法设置不同日志级别,实现精细化的日志管理。这种AOP实现方式能有效解决调试、性能监控等开发痛点。

2025-12-10 09:32:34 732

原创 13、SpringBoot启动过程

SpringBoot启动过程 SpringBoot应用启动分为几个关键阶段: 初始化阶段:通过SpringApplication构造函数确定应用类型,加载初始化器和监听器 环境准备:配置PropertySources和Profiles,处理命令行参数 上下文创建:根据应用类型创建相应的应用上下文 自动配置:处理@SpringBootApplication注解,加载自动配置类 容器刷新:完成BeanFactory初始化、后置处理器注册等核心操作 启动完成:执行Runner接口实现类,完成应用启动 启动过程通过

2025-12-10 09:31:17 423

原创 12、多环境配置

本文详细介绍了Spring Boot多环境配置的实现方式。主要内容包括:1)通过application-{profile}.yml文件定义不同环境配置;2)配置激活的三种方式(YAML设置、命令行参数、IDE配置);3)配置继承与覆盖逻辑;4)开发、测试、生产环境配置示例对比;5)常见问题解决方案;6)进阶技巧如@Profile注解使用;7)部署最佳实践。文章提供了完整的配置结构设计和实战示例,帮助开发者高效管理多环境下的应用配置。

2025-12-09 14:37:22 600

原创 11、核心注解

本文介绍了Spring Boot项目中常用的核心注解及其用法,包括: 项目初始化注解:@SpringBootApplication(启动类)、@Configuration+@Bean(配置类)、@PropertySource(加载配置文件) 组件注册注解:@Component及其衍生注解(@Service/@Repository/@Controller) 依赖注入注解:@Autowired(按类型注入)、@Resource(按名称注入) 作用域控制注解:@Scope(管理Bean生命周期) 条件注解:@Co

2025-12-09 14:36:26 666

原创 10、集成JPA方法

摘要: JPA是Java EE中的ORM规范,Spring Data JPA基于JPA进一步简化了数据访问开发。核心功能包括:1) 实体映射注解如@Entity、@Id等;2) 内置Repository方法如save()、findById();3) 支持方法名自动生成查询和@Query自定义JPQL;4) 提供分页排序功能。SpringBoot集成步骤包括:添加依赖、配置数据源、定义实体类、创建Repository接口及业务层。通过继承JpaRepository可快速实现CRUD操作,显著提升开发效率。

2025-12-08 11:00:20 312

原创 9、缓存与Session共享

摘要:Spring缓存技术通过注解简化缓存实现,如@Cacheable、@CachePut等,配合Redis可提升系统性能。Session共享则通过Redis存储会话数据,解决分布式环境下的用户状态保持问题。两者均需合理配置过期时间,注意缓存穿透等问题。

2025-12-08 10:59:10 467

原创 8、事务管理@Transactional注解的深度解析

Spring的@Transactional注解简化了数据库事务管理,通过AOP实现事务控制。它支持ACID特性,提供多种传播行为和隔离级别配置,默认对RuntimeException回滚。使用时需注意仅对public方法有效,避免自调用问题,并确保数据库支持事务。典型应用场景包括订单处理、资金转账等需要原子性操作的业务逻辑,可通过属性定制传播行为、隔离级别和异常处理规则。

2025-12-05 16:45:21 915

原创 7、集成MyBatis

Spring Boot集成MyBatis的优势在于简化配置,支持注解和XML两种SQL编写方式,与Spring生态无缝整合。实现步骤包括:1)创建项目并添加依赖;2)配置数据库连接;3)定义实体类、Mapper接口;4)编写Service和Controller层。XML方式适合复杂SQL,需在resources/mapper下创建映射文件。集成过程通过自动配置减少样板代码,提高开发效率。

2025-12-05 16:43:40 559

原创 6、自动配置

摘要:Spring Boot的自动配置机制通过@SpringBootApplication注解组合实现,核心是@EnableAutoConfiguration和条件注解。自动配置类从META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports加载,通过@Conditional系列注解进行过滤。开发时可自定义自动配置类,使用@ConditionalOnClass等条件控制生效时机,并通过debug=true查看

2025-12-04 08:53:33 902

原创 5、内容协商机制

摘要:Spring Boot的内容协商机制支持客户端与服务器协商响应格式,主要实现方式包括基于HTTP Accept头、URL后缀和请求参数。默认配置支持JSON和XML格式,可通过application.properties自定义配置。开发者可创建自定义HttpMessageConverter来支持PDF等特殊格式,并通过ContentNegotiationManager管理媒体类型匹配。最佳实践建议REST API优先使用Accept头协商,同时明确控制器支持的媒体类型并合理处理自定义格式转换。

2025-12-04 08:52:31 1123

原创 4、定时任务

摘要:Spring Boot通过@Scheduled注解实现定时任务功能,支持fixedRate、fixedDelay和cron表达式三种调度方式。应用场景包括数据同步、缓存刷新、报表生成、系统健康检查和数据清理等。通过@EnableScheduling启用定时任务,开发者可以轻松配置各种周期性任务,如每小时同步数据、每日生成报表或定期清理过期数据。cron表达式提供了最灵活的时间控制,支持分钟、小时、日、月、周等多维度调度。

2025-12-03 08:57:14 494

原创 3、MVC的支持

Spring Boot 的 Spring MVC 支持通过自动配置简化了 Web 开发,提供 RESTful 路由、参数绑定和异常处理等核心功能。其特性包括:基于注解的请求映射(@GetMapping/@PostMapping);灵活的参数处理(@PathVariable/@RequestParam);内置 JSON/XML 消息转换;全局异常处理机制;文件上传支持;异步请求处理和 CORS 配置。同时还提供静态资源管理、视图解析等开箱即用功能,并通过 WebMvcConfigurer 接口支持自定义扩展,

2025-12-03 08:46:00 532

原创 2、返回JSON数据及封装

可以使用和// 其他字段...@Override"user_name": "张三",

2025-12-02 08:43:04 441

原创 1、Hi~ SpringBoot

Spring Boot是Spring框架的一个扩展,它简化了基于Spring的应用程序的初始搭建和开发过程。它采用了"约定优于配置"的理念,提供了大量自动配置功能,让开发者能够快速启动和运行项目。

2025-12-02 08:39:40 932

原创 悲观锁和乐观锁

摘要:SpringBoot中实现并发控制主要通过悲观锁和乐观锁。悲观锁适用于写频繁场景,使用数据库行级锁(@Lock)或Java同步机制(synchronized/ReentrantLock)保证线程安全;乐观锁适合读多写少场景,通过版本号(@Version)或CAS实现,需处理冲突重试。数据库悲观锁需配合@Transactional,乐观锁会抛出OptimisticLockingFailureException。分布式环境建议使用Redis或ZooKeeper的分布式锁。选择策略取决于业务场景:高并发写用

2025-11-05 16:10:24 883

原创 grep 查询日志

grep命令是Linux中强大的文本搜索工具,其基本语法为grep [选项] '正则表达式' 文件名。常用参数包括:-i忽略大小写、-n显示行号、-v反向匹配、-r递归查找等。实用场景包括:过滤日志关键词(如Exception)、查看匹配上下文、实时监控日志、多关键词搜索(error|failed)、日期过滤和多文件查找等。配合tail、less等命令可实现灵活的日志分析,如tail -f logs/app.log | grep "error"实时监控错误日志。

2025-10-30 10:14:43 141

原创 拆分单体项目

本文探讨了Spring Boot项目从单体架构向模块化架构的演进过程。文章首先分析了单体架构在业务扩张后面临的启动慢、编译久、依赖混乱等问题,提出模块化改造的必要性。随后对比了模块化与微服务的差异,强调模块化是更轻量的过渡方案。核心内容围绕模块化设计思路展开:按业务领域而非技术层拆分、规范Maven依赖管理、模块间解耦调用方式。文章还提供了循序渐进的改造步骤,列举了常见问题及解决方案,并总结了模块化带来的编译提速、协作优化等收益。最终指出模块化是在保持单体优势的同时引入服务化思维的平衡之道。

2025-10-24 14:11:46 758

原创 SpringBoot内容协商机制

本文介绍了Spring Boot中的内容协商机制,主要包括三种实现方式:基于HTTP Accept头、URL后缀和请求参数。文章详细说明了Spring Boot的默认配置和自定义配置方法,提供了控制器代码示例和自定义HttpMessageConverter的实现。同时解释了内容协商的工作原理,并针对常见问题给出解决方案。最佳实践建议REST API优先使用基于Accept头的内容协商,明确指定控制器支持的媒体类型,并为自定义格式提供合适的转换器。

2025-10-24 09:10:00 501

原创 前端小技巧:用 document.title 玩转网页标题

本文介绍了一个提升用户体验的小技巧:通过监听visibilitychange事件动态修改document.title,当用户切换标签页时自动改变页面标题。核心代码仅需几行,即可实现标题切换效果,如离开时显示"哎呦~页面不见了~"。文章还提供了进阶玩法建议:动态闪烁标题、结合Favicon切换等。这种简单实现能让网站更有温度,适用于音乐播放器、电商购物车等需要用户回流的场景,既增加趣味性又能提升用户粘性。

2025-09-28 14:56:48 302

原创 CSS实现打字机效果-核心代码讲解

我来详细解释这个CSS打字机效果的每一部分代码:1. 作用:隐藏容器边界外的内容作用:强制文本在一行内显示这是一个复合属性,包含多个值:steps() 工作原理:动画填充模式动画结束后保持最终状态(width: 100%)其他选项::动画开始前应用初始状态:同时应用开始和结束状态:默认值,动画结束后回到原始状态4. 关键帧动画定义动画的变化过程:扩展效果光标闪烁效果解释:参数对比:重要技巧和注意事项1. steps() 数值选择一般来说,step

2025-09-21 19:08:00 712

原创 REST接口幂等设计深度解析

摘要:Spring Boot开发中,REST接口的幂等性、重复提交和防抖限流是常见问题。幂等性可通过数据库唯一约束、幂等Token或业务Key保证;重复提交可采用前端按钮防重、后端拦截器或Token验证;防抖限流则通过前端防抖函数和后端RateLimiter等工具实现。这些措施能有效避免数据重复、性能下降和用户体验问题,建议根据业务特点选择合适策略,确保查询接口默认幂等,写操作必须保证幂等性,并对高频接口实施限流防抖。

2025-09-09 15:30:05 1022

原创 Redis基础教程

Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。Redis支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。

2025-09-01 11:18:38 432

原创 Spring Boot 项目部署到 Linux 遇错必看:排查与修复全指南

生产环境建议使用非 root 用户运行服务。确保生成的是“胖包”(包含依赖)。确保本地与服务器版本一致。

2025-08-18 16:02:05 346

原创 Git命名规范

模块名或功能关键词(可选,但推荐):简短说明(用连字符。

2025-08-14 15:51:07 1221

原创 MybatisPlus 常用注解

IdType.UUID:生成 UUID 字符串(适合不需要排序的场景)IdType.ASSIGN_ID:默认雪花算法(分布式系统推荐)并发更新时防止数据混乱的神器,需要表里有个版本号字段(比如。IdType.AUTO:数据库自增(需要表字段设置自增),更新成功后版本号 + 1,并发时只有一个请求能成功。:如果查询时手动指定了排序,会覆盖注解的默认规则。:如果项目里所有表都有统一前缀(比如。:如果很多字段都有下划线转驼峰(比如。),可以在配置文件里全局设置。,自动转换不用手动加注解。,不用每个类都加注解。

2025-08-12 11:52:00 408

原创 SpringBoot怎么查看服务端的日志

都显示出来,比如输出会包含异常前后的业务日志,帮你定位是不是前面某个步骤没处理好。Java异常堆栈都是“连续剧”,光看第一行根本找不到病根。只能拿到最上面那一行,下面几十行的堆栈信息全被吃掉了。装了透视眼,不用解压就能直接查压缩包里的内容!全拽出来,这样就能看到完整的异常堆栈了!这样就能看到用户干了什么导致报错,比你一行行翻日志快多了!有时候光看异常还不够,得结合前后日志分析。要是你怀疑应用会随时报错,想实时蹲守,可以把。要是日志刷屏太快,还可以用。直接跳到末尾看最新日志,按。这样只要异常一出现,它就会。

2025-08-02 16:51:52 556

原创 SpringBoot 多环境配置

Spring Boot 支持通过来定义多个环境下的配置文件,然后通过激活不同的profile,切换当前应用使用的配置。Spring Boot 提供了强大灵活的多环境配置能力;推荐使用结构划分配置;激活方式可通过、命令行参数、VM 参数等;结合@Profile注解可实现 Bean 的按需加载;合理配置有助于保障开发、测试和生产环境各自的稳定性和安全性。

2025-08-01 15:09:39 859

原创 [特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例

注解类型场景特点启动注解启动类三合一复合注解@Component通用组件工具类等可被扫描@Service业务组件Service 层本质是 @ComponentDAO组件数据访问自动异常封装Web 控制器页面跳转搭配模板引擎API 控制器返回 JSON@Autowired注入自动注入构造/字段均可请求映射多 HTTP 方法可用于类/方法等请求映射精准 HTTP 方法推荐使用@Value配置读取yml、prop 值注入字符串解析事务管理Service 层。

2025-07-18 19:00:56 712

原创 Optional 基础教程:让你的代码更优雅、更有意图!

return opt;super T,?📌 用,优雅代替深层 null 检查!

2025-07-16 18:55:21 426

原创 Optional:orElse 和 orElseGet 的底层逻辑,决定了它们的本质区别

方法工作方式特点使用建议orElse立即执行无论是否需要备胎,都会执行备胎代码轻量级默认值orElseGet延迟执行只有在 Optional 为空时,才执行备胎代码重成本操作,比如查库、调接口等💡精度优先:能不用就别用orElse⚙️逻辑清晰:看似相同的方法,可能有截然不同的运行代价🧪多测试 Optional 的执行路径,避免隐藏的性能雷。

2025-07-16 16:50:25 390

原创 Function 教程:从入门到精通的函数式编程指南

Java 在 8 之后引入了函数式接口和 Lambda 表达式,使得函数也可以作为“一等公民”在 Java 中流动。其中,是最常用的函数式接口之一,它表示一个接收一个参数并返回一个结果的函数,非常适合用于数据转换函数管道处理业务解耦等场景。super R,?super V,?✅提升逻辑表达的抽象度,替代匿名类支持链式组合,实现数据处理管道在 Stream、设计模式、业务逻辑中灵活运用🧠熟练掌握apply()compose()andThen()使用方式结合Stream API和Optional。

2025-07-11 17:47:19 453

原创 带你学会 Java 的 Supplier 和 Consumer 接口的使用

Java 8 引入的函数式接口为编程范式带来了革命性突破,其中Supplier与Consumer占据核心地位。二者分别封装了“数据供给”与“数据消费”的逻辑,极大增强了代码的解耦性、可读性和可维护性。T get();无输入,返回一个T类型的结果。常用于延迟计算、懒加载、数据源抽象等场景。接收一个输入,无返回值。常用于日志打印、状态变更、消息推送等“副作用”处理。Supplier与Consumer是函数式接口体系中的代表,一个用于“数据提供”,一个用于“数据处理”。

2025-07-11 17:00:34 582

原创 利用 Function 接口告别冗余(屎山)代码,优雅到不像 Java

说起用Function接口优化代码,兄弟们,我脑子里第一个浮现的画面就是:满屏 if-else、switch-case,一整个“判断地狱”🌀。每次看到这种逻辑,我都想给作者寄刀片 ✂️,维护起来比谈恋爱还难。用好Function函数式思维 + 行为抽象 = 结构更清晰的代码。技术没有银弹,但屎山能不踩就不踩。你早晚要面对维护的地狱,不如提前重构。别怕麻烦,该推就推;别怕重构,否则最后吃苦的是自己。

2025-07-08 19:02:07 434

原创 物流管理系统开源分享:全功能模块,课设

虽然是个“课设用的玩具项目”,但我在结构设计、数据库设计、功能模块拆分等方面都花了不少时间思考。如果你觉得还不错:点个 👍 支持一下;有问题欢迎留言;欢迎提 PR 一起完善!🚛 让我们用代码连接现实世界的每一次“发货”与“收货”~

2025-06-27 10:09:14 872

空空如也

空空如也

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

TA关注的人

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