- 博客(65)
- 收藏
- 关注
原创 宝塔面板是用什么技术实现的?使用了 Java 吗?
宝塔面板是一款流行的服务器可视化管理工具,广泛用于 Web 环境部署与运维。很多人误以为它使用 Java 开发,实际上宝塔的核心技术栈是 Python + 前端技术(HTML、JS、jQuery/Vue)。Linux 版本由 Python 编写,通过调用 Shell 命令控制 Nginx、MySQL 等服务;Windows 版本则使用 C# 开发。前端页面采用 Ajax 与后端通信,实现图形化网站、数据库、SSL、防火墙等模块管理。本文详细分析了宝塔的实现原理与技术架构,并提出了使用 Java 重写简易面板
2025-05-27 15:46:47
447
原创 Spring Cloud项目登录认证从JWT切换到Redis + UUID Token方案
本文分享了如何将Spring Boot项目的登录认证方案由传统的JWT切换为基于Redis存储的UUID Token方案。该方案通过服务器生成唯一UUID作为Token,存储在Redis中并设置过期时间,实现了Token的集中管理和滑动续期。相比JWT,该方法支持主动注销和灵活控制Token生命周期,提升了安全性和用户体验。文中详细介绍了登录、退出登录接口的实现,以及在网关中统一校验Token的流程,适合对Token管理有较高要求的项目应用。
2025-05-25 14:32:08
573
原创 [特殊字符] 使用增量同步+MQ机制将用户数据同步到Elasticsearch
本文介绍了如何通过“定时任务 + 游标机制”实现MySQL中用户表数据的增量同步到Elasticsearch,以及结合MQ实现用户信息修改的实时同步。定时任务根据更新时间和ID作为游标分页拉取数据,保障同步准确有序;同时,用户更新操作通过MQ发送消息,由消费者监听并同步更新至ES,提升搜索数据实时性与一致性。
2025-05-24 18:19:41
819
原创 [特殊字符] 基于 XXL-JOB 实现聊天交友平台用户数据增量同步到 Elasticsearch
本文介绍了在聊天交友平台中,如何通过 XXL-JOB 定时任务将用户数据增量同步至 Elasticsearch,以支持高效的用户搜索功能。同步逻辑基于 updateTime + id 的复合游标,结合 MyBatis 精妙 SQL 实现精准控制数据范围,避免重复与遗漏。同时支持同步逻辑删除的用户,实现 ES 中的实时数据清理,确保搜索结果的准确性和一致性。整套机制具备高性能、可扩展、易维护等特点。
2025-05-21 09:43:01
708
原创 分布式与微服务的区别是什么?一文彻底搞懂!
本文深入解析了“分布式系统”与“微服务架构”的概念与区别。分布式系统侧重于将任务分布在多个节点上协同处理,以提升性能与容错能力;而微服务架构则强调将应用拆分为多个独立服务,以实现解耦、自治与快速迭代。两者虽有交集,但关注点不同:分布式强调部署与系统规模,微服务强调服务粒度与业务拆分。文章还通过对比表、实际场景及推荐阅读,帮助读者全面理解二者差异与联系。
2025-05-17 16:17:25
467
原创 消息队列(MQ)在项目中的使用场景详解【附开发实战思路】
本文系统梳理了消息队列(MQ)的核心作用和常见使用场景,涵盖异步处理、系统解耦与削峰限流三大价值。结合注册、支付、通知、秒杀、日志采集等实际业务案例,详细说明哪些模块适合使用 MQ,以及使用时的注意事项。文章还列举了不适合使用 MQ 的场景,帮助开发者在项目中做出合理取舍。适用于电商、SaaS、在线教育等各类系统架构优化参考。
2025-05-16 11:42:28
769
原创 Java开发中使用 RabbitMQ 入门到进阶详解(含注解方式、JSON配置)
本文系统介绍了在 Spring Boot 中使用 RabbitMQ 的方法,包括快速入门(消息发送接收)、WorkQueues 模型(含 prefetch 实现能者多劳)、三种交换机类型(Fanout、Direct、Topic)、队列与交换机的绑定方式(Bean 配置与注解)以及 JSON 消息转换器的配置,适用于初学者和进阶开发者。
2025-05-16 01:24:30
572
原创 微服务中的服务熔断与降级类该写在哪个模块?一文彻底弄懂!
在微服务架构中,服务熔断与降级是提升系统可用性的重要手段。本文深入分析了熔断降级类应放置的模块位置,明确指出应写在服务调用方模块,因为调用方最清楚如何应对调用失败。将降级逻辑放在 API 模块或服务提供方会导致职责不清、模块耦合等问题。通过 Feign + FallbackFactory 的示例,展示了最佳实践,帮助开发者避免常见错误,提升微服务系统的健壮性与可维护性。
2025-05-14 11:00:20
743
原创 [特殊字符] VMware虚拟机挂起后Docker容器MySQL无法连接的解决方案
在VMware虚拟机中运行Docker容器时,挂起并恢复虚拟机后,可能会导致Docker网络异常,容器间通信中断。这是因为NetworkManager服务在恢复过程中接管了Docker的网络接口,导致网络配置异常。通过修改NetworkManager配置文件,使其忽略Docker相关的网络接口,并重启NetworkManager和Docker服务,可以有效解决该问题,恢复容器间的正常通信。
2025-05-14 10:41:19
423
1
原创 解决 CentOS 7 镜像源无法访问的问题
本文介绍了如何解决 CentOS 7 在国内使用时,默认镜像源无法访问或下载速度慢的问题。通过将 /etc/yum.repos.d/CentOS-Base.repo 配置文件中的 mirrorlist 替换为国内镜像源的 baseurl,可以提升软件包更新和安装的速度。以阿里云镜像源为例,文章详细讲解了修改步骤,并提供了清理缓存和重新生成缓存的命令。通过此操作,用户可以确保系统能够顺利从国内镜像源获取更新和安装软件包,从而避免了由于国外源访问问题导致的安装失败。
2025-05-13 16:49:23
459
原创 如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接
本文介绍了如何在 CentOS 7 虚拟机上配置静态 IP 地址,并确保每次重启后依然能够通过 SSH 连接。首先,通过修改网络配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 为虚拟机设置静态 IP、子网掩码、网关和 DNS 服务器。然后,重启网络服务以应用配置,并使用 ip a 命令验证 IP 地址配置是否生效。为了确保虚拟机重启后网络配置不丢失,需要确保 ONBOOT="yes" 以便自动启用网络接口。最后,通过 SSH 连接测试静态 IP 地址的有效性。
2025-05-13 16:26:17
809
原创 [特殊字符]Spring Boot + Sentinel 报错:No Bean Validation provider could be found 的排查与解决
在使用 Spring Boot 集成 Sentinel 时,启动项目出现 “No Bean Validation provider could be found” 错误,原因是引入了 Bean Validation API(如配置绑定中的参数校验)但未引入其实现类。解决方案是手动添加 Hibernate Validator 依赖。添加后即可成功启动项目。此问题常见于使用 Spring Cloud Alibaba Sentinel 和 @ConfigurationProperties 时,需注意校验框架依赖的
2025-05-13 11:30:42
326
原创 [特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
这篇文章详细介绍了在 CentOS 7.6 上安装 JDK 11 的两种方式:一是通过 yum 安装 OpenJDK 11,推荐使用阿里云等国内镜像源,安装简单快捷;二是手动下载并配置 Oracle JDK 11,适用于有特定兼容需求的场景。文章还提供了环境变量配置、版本切换方法,并对两种方式进行了对比分析,适合国内服务器环境下使用。
2025-05-13 11:22:32
492
原创 Spring Boot 多模块集成 MyBatis-Plus 报错:MapperScannerConfigurer 未设置 basePackage 的原因与解决方案
在使用 Spring Boot 构建多模块项目并集成 MyBatis-Plus 时,即使正确配置了 @MapperScan 注解,项目启动仍可能因 MapperScannerConfigurer 未设置 basePackage 而失败。其根本原因是项目中误用了 MapperScannerConfigurer,可能是 XML 配置或手动 Bean 注册引起。Spring Boot 环境下应避免手动配置该类,仅需在启动类上正确使用 @MapperScan 注解即可完成 Mapper 扫描,确保路径正确并覆盖到所
2025-05-13 00:35:45
628
原创 [特殊字符] Spring Cloud 微服务项目中 common 模块依赖导致网关启动失败的排查与解决
在微服务项目中,common 模块常被用于封装通用配置,但若其中引入了数据库相关依赖(如 MyBatis Plus),会被传递到如网关 gateway 等不需要数据库的模块,导致启动报错:“Failed to determine a suitable driver class”。可通过将依赖设置为 <scope>provided>、为配置类添加 @ConditionalOnClass 注解或拆分模块来解决此类依赖传递问题,从而避免无关模块被迫加载数据库配置。
2025-05-12 10:46:43
879
原创 【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案
在多模块 Spring Boot 项目中,若在公共模块中使用 MapperScannerConfigurer 并从 bootstrap.yml 读取 Mapper 包路径,可能因配置尚未加载而导致启动失败。推荐仅在启动类使用 @MapperScan 注解指定 Mapper 包路径,避免生命周期问题和配置冲突,是最简单稳定的做法。
2025-05-09 00:00:20
809
2
原创 [特殊字符] Lombok 依赖必须在每个模块中单独引入吗?一文说清楚!
在多模块 Spring Boot 项目中,即使公共模块(如 common)已经引入了 Lombok,其他模块(如 user)仍需单独引入 Lombok 依赖。原因在于 Lombok 是编译期工具,注解处理器不会随模块依赖自动传递。若未在当前模块引入,会导致 @Data 等注解失效,编译报错。因此,建议在每个使用 Lombok 的模块中添加 compileOnly 作用域的 Lombok 依赖,并确保 IDE 安装了 Lombok 插件。
2025-05-08 23:31:41
396
原创 Spring 项目无法连接 MySQL:Nacos 配置误区排查与解决
本篇文章分享了Spring Boot项目通过Nacos读取数据库配置时,因配置文件中使用了Docker容器名mysql作为主机地址,导致本机项目无法连接MySQL的排查过程。问题根源在于项目实际连接数据库发生在本机环境,而非容器内部,容器名不可解析。最终通过将mysql替换为开发服务器公网IP成功解决问题,提醒开发者注意容器与本机网络环境的区别。
2025-05-07 21:06:18
1094
原创 理清缓存穿透、缓存击穿、缓存雪崩、缓存不一致的本质与解决方案
本文深入解析了缓存常见的四大问题:缓存穿透、缓存击穿、缓存雪崩和缓存不一致,分别阐明其产生原因、典型场景及应对方案。穿透是请求不存在的数据,应使用布隆过滤器或空值缓存;击穿是热点缓存失效,可通过加锁或逻辑过期解决;雪崩是大量缓存同时过期,需设置随机过期时间防范;不一致是缓存与数据库更新顺序错误,推荐先删缓存再更新数据库。掌握这些策略有助于构建高可靠、高性能的系统。
2025-05-06 11:09:32
1122
原创 [特殊字符]Git 操作实战:如何将本地项目提交到远程 Gitee 仓库
本文详细介绍了如何将本地 Git 项目提交到远程 Gitee 仓库的完整流程,包括初始化仓库、添加远程地址、推送代码,并针对常见错误(如远程地址错误、仓库不存在等)提供了解决方法,适合初学者快速掌握 Git 推送操作。
2025-05-05 17:07:59
419
原创 家政平台派单系统设计与实现详解
本文深入介绍了家政平台派单系统的整体设计与技术实现,围绕距离匹配、定时调度、派单策略与规则链展开,重点采用了Elasticsearch搜索、Redis ZSet构建派单池、Canal+MQ实现数据同步,并结合策略模式与责任链模式提升系统扩展性。同时引入XXL-Job进行任务调度,自定义线程池提高派单任务并发处理效率,并提供线程池参数配置建议。整套方案实现了高效、可扩展、具备公平性与稳定性的智能派单系统。
2025-05-05 15:32:42
1287
原创 如何使用责任链模式优雅实现功能(滴滴司机、家政服务、请假审批等)
责任链模式是一种行为型设计模式,常用于审批流程、事件处理、日志过滤等场景。它通过将多个处理器组成链条,使请求依次传递,直到被处理或终止。本文详细讲解了责任链的使用场景、实现步骤、优点以及注意事项,帮助开发者在实际项目中灵活应用此模式,实现高内聚、低耦合、可扩展的业务处理链路。适用于请假审批、滴滴接单、家政派单等业务系统。
2025-05-04 16:10:31
984
原创 [特殊字符]Spring Boot 后台使用 EasyExcel 实现数据报表导出(含模板、样式、美化)
本文介绍了如何在 Spring Boot 项目中使用阿里巴巴的 EasyExcel 实现 Excel 报表导出,包括按日或按小时导出数据、使用模板填充、设置样式注解、美化表格等内容。通过实际项目代码,展示了如何按月切分数据、汇总统计并导出为多段格式化 Excel 报表。EasyExcel 具有高性能、低内存占用、支持模板与注解样式配置等优点,适合用于企业级数据导出场景。文章适合有一定 Java 后端开发经验的读者参考实践。
2025-05-04 14:50:50
921
原创 Spring 分批处理 + 冷热数据分离:历史订单高效迁移与数据清理实战
本文介绍了订单冷热分离架构的设计与实现,针对历史订单访问频率低、但仍需支持查询与分析的特点,采用MySQL+TiDB的数据迁移方案。通过监听MySQL binlog日志并结合消息队列,实现订单同步表与TiDB历史订单表的数据迁移。采用分批处理方式高效迁移数据,并在确认数据成功迁移后安全删除同步表中的旧数据,确保数据一致性与系统性能。该方案有效提升了数据库性能、降低了存储成本,并保障了业务可查询性与可扩展性。
2025-05-02 14:39:22
391
原创 订单系统冷热分离方案:优化性能与降低存储成本
本文介绍了订单系统中的冷热分离方案,重点阐述了为何需要进行冷热分离以提高系统性能、降低存储成本并简化维护。冷热分离通过将频繁访问的热数据和不常访问的冷数据分开存储,确保系统高效运行。文章还详细讲解了如何选择合适的存储介质和数据库,推荐使用支持HTAP的分布式数据库TiDB,并结合MySQL binlog和消息队列(MQ)进行数据同步。通过该方案,订单系统可以在提升性能的同时有效管理和存储海量数据。
2025-05-02 12:57:14
1099
原创 Java状态机实战:打造高扩展性的订单流程引擎(含源码详解与快照设计)
本文介绍了一种可复用的状态机框架,旨在解决订单、支付、审批等场景中“状态变更”问题。状态机通过明确状态流转、避免状态错乱、解耦逻辑、实现快照审计回溯等优势,提升系统的可维护性和可扩展性。文章提供了自研状态机模块设计,包括状态定义接口、事件定义接口、快照抽象类、状态处理器和状态机子类的示例。通过保存业务快照,记录不同状态下的详细数据,确保状态变更的审计和回溯。最后,讨论了状态机适用场景,并总结了其优势。
2025-05-01 14:24:23
886
原创 [特殊字符] 蓝桥杯省赛全解析:含金量、获奖难度、参赛意义与发展价值全面剖析
蓝桥杯是面向全国高校学生的国家级IT竞赛,含金量高,获奖比例合理,省一可晋级国赛,并广泛用于保研、奖学金评选及求职加分。其题型贴近实际开发,适合多数学生参与,是提升算法能力和编码水平的重要平台。相比ACM等赛事,蓝桥杯门槛较低但认可度高,普通高校学生也有机会通过努力脱颖而出。对于有志于技术发展或进入大厂的同学来说,蓝桥杯是一条性价比极高的成长通道。
2025-04-30 17:06:02
2033
原创 [特殊字符] 开发工作高内存占用场景下,Windows 内存压缩机制是否应该启用?实测分析与优化建议
在高强度开发环境下(如同时运行 IntelliJ IDEA、VMware 虚拟机及多个 Java 程序),Windows 10 的内存压缩机制能有效缓解内存紧张问题。该机制通过压缩不活跃内存页,减少对磁盘虚拟内存的依赖,从而提升系统响应速度。实测表明,启用内存压缩可显著降低卡顿、减少磁盘 I/O,提升整体开发体验。建议开发者开启此功能,并结合虚拟内存、JVM 配置等进行系统级优化,保障高效稳定的开发环境。
2025-04-30 16:25:36
1502
原创 [特殊字符] Spring Cloud 微服务配置统一管理:基于 Nacos 的最佳实践详解
本文介绍了如何使用 Nacos 实现微服务配置的集中管理与动态刷新。通过引入相关依赖、配置 bootstrap.yml、在 Nacos 控制台编写配置,并结合 @ConfigurationProperties + @EnableConfigurationProperties 实现结构化配置注入。相比 @Value 注解,前者天然支持热更新,无需额外加 @RefreshScope,适用于生产环境中的配置自动同步与统一管理。
2025-04-30 15:19:24
713
原创 Spring Cloud 项目中优雅地传递用户信息:基于 Gateway + ThreadLocal 的用户上下文方案
本文介绍了在 Spring Cloud 微服务架构中,通过 Gateway 网关统一完成用户身份认证,并将用户信息注入请求头传递到下游服务,后端服务通过拦截器结合 ThreadLocal 实现用户信息的自动注入与清理,避免重复解析 Token,提高系统解耦性和安全性。同时强调了在拦截器中及时清理 ThreadLocal 的重要性,以防止线程复用导致的内存泄漏和用户数据串用问题,适用于使用 Spring Cloud Gateway 的微服务项目。
2025-04-29 17:54:35
1280
原创 探索微服务入口:Spring Cloud Gateway 实战指南
Spring Cloud Gateway 是 Spring 官方推出的高性能微服务网关,具备路由转发、权限校验、请求过滤等核心能力。本文介绍了 Gateway 的基本原理、快速上手配置、自定义过滤器(GatewayFilter、GlobalFilter)、JWT 登录校验方案,并对比了 Gateway 与 Nginx、Kong、Traefik 等常见网关组件的优劣,适合希望构建稳定、高效微服务网关的开发者入门与进阶参考。
2025-04-29 17:03:34
1057
原创 [特殊字符] SpringCloud项目中使用OpenFeign进行微服务远程调用详解(含连接池与日志配置)
本文系统讲解了在SpringCloud项目中整合OpenFeign进行微服务远程调用的完整流程,涵盖了依赖引入、Feign客户端编写、连接池优化(使用OkHttp)、公共模块抽取以及日志输出配置等内容。通过OpenFeign,微服务间调用变得声明式且高效,同时利用连接池大幅提升性能,日志配置也让调试更便捷。文章适合微服务入门与进阶开发者,帮助大家快速掌握微服务远程调用的最佳实践和性能优化技巧。
2025-04-28 11:51:08
779
原创 [特殊字符] 基于Docker部署Nacos注册中心及微服务注册发现详解(含MySQL持久化配置)
本文详细介绍了如何基于Docker快速部署Nacos注册中心,并使用MySQL实现数据持久化存储。通过配置custom.env文件,完成Nacos与数据库的连接,确保注册信息持久化。同时,演示了微服务(item-service)注册到Nacos的全过程,以及通过服务发现(cart-service)动态调用服务实例并实现简单负载均衡。内容涵盖Docker容器运行、微服务注册、服务发现、负载均衡调用等核心技术,适合初学者和微服务入门实践者快速掌握微服务注册中心的搭建流程。
2025-04-28 10:27:23
1001
原创 SpringBoot配置RestTemplate并理解单例模式详解
本文通过一个简单的Spring Boot配置示例,讲解了如何使用@Configuration和@Bean将RestTemplate注册为Spring容器中的单例对象。在Spring中,默认所有Bean都是单例模式,即整个应用生命周期中只创建一次实例,后续注入的都是同一个对象。这种机制可以节省资源、统一管理配置,同时需要注意线程安全问题。RestTemplate设计为线程安全,可以放心单例使用。文章最后补充了如何为RestTemplate设置连接超时时间,帮助开发者灵活定制HTTP请求配置。
2025-04-27 21:41:18
510
原创 [特殊字符]实战:使用 Canal + MQ + ES + Redis + XXL-Job 打造高性能地理抢单系统
本文分享了如何基于Canal监听MySQL Binlog变化,通过MQ异步解耦传递,结合Elasticsearch进行地理位置订单检索,Redis和Lua脚本实现高并发抢单保障,并借助XXL-Job定时修正订单状态,构建一套高性能抢单系统。文章详细讲解了各中间件的作用、配置要点、Java代码示例及完整流程图,适用于跑腿、外卖、上门维修等业务场景。
2025-04-27 17:57:00
2033
原创 [特殊字符] 深入理解Spring Cloud与微服务架构:全流程详解(含中间件分类与实战经验)
本文系统讲解了Spring Cloud与Spring Cloud Alibaba的区别与联系,分析了单体架构与微服务架构的优缺点,详细整理了微服务常用中间件分类,并结合实践分享了微服务的科学拆分原则,强调了“一个微服务对应一个数据库”的服务自治理念。同时,结合实际项目经验,提出了微服务系统搭建中的注意事项与优化建议,帮助开发者更好地理解微服务体系搭建和Spring Cloud技术选型。适合初学者及进阶开发者阅读学习。
2025-04-27 00:16:37
982
原创 [特殊字符] Docker 从入门到实战:全流程教程 + 项目部署指南(含镜像加速)
本文系统介绍了 Docker 的基础概念、常用命令、在 CentOS7 上的安装方法及国内镜像加速配置,帮助用户解决镜像拉取慢的问题。同时涵盖了数据卷持久化、Dockerfile 编写、网络配置、Java + Nginx 项目部署实战,以及 Docker Compose 多容器编排,适合初学者和后端开发者快速上手容器化开发与部署。
2025-04-25 17:36:04
740
原创 [特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解
本文系统讲解了在分布式系统中使用 XXL-JOB 实现统一定时任务调度的原理与优势,解决多实例重复执行问题。介绍了调度中心与执行器的配合机制,并重点解析了常见路由策略如轮询、随机、一致性Hash和分片广播的应用场景,帮助开发者灵活应对任务分发需求。适用于微服务架构下的定时任务管理与调度优化实践。
2025-04-24 10:26:10
1031
原创 [特殊字符]分布式事务失效排查实录:原来是 Sentinel fallback 吞掉了异常!
本文记录了一个因 Sentinel fallback 吞掉异常而导致 Seata 全局事务未回滚的问题。开发者在订单取消流程中调用营销服务退回优惠券,营销服务使用了 @SentinelResource 注解并配置了 fallback 方法,结果异常被吞掉,导致调用方未感知到异常,事务未回滚。通过在 fallback 方法中手动抛出异常,成功恢复了异常传播链,分布式事务得以生效。本文提醒开发者在使用 Sentinel 时,务必关注 fallback 对异常传播的影响。
2025-04-23 20:26:13
351
原创 [特殊字符] 分布式事务中,@GlobalTransactional 与 @Transactional 到底怎么配合用?
在微服务架构中,使用 Seata 实现分布式事务时,调用方需加 @GlobalTransactional 开启全局事务,而服务提供方也必须加上 @Transactional 来保证本地事务一致性。@GlobalTransactional 负责协调各参与方的事务行为,而 @Transactional 则确保服务内部多个数据库操作作为一个整体进行回滚。若服务提供方未加 @Transactional,即使全局事务回滚,局部操作仍可能已提交,导致数据不一致。两者协作使用,才能确保分布式事务的最终一致性。
2025-04-23 17:20:59
1294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人