- 博客(233)
- 资源 (2)
- 收藏
- 关注
原创 Dubbo详解,用心看这一篇文章就够了【重点】
1.1 Dubbo概述Dubbo是阿里巴巴开源的基于 Java 的高性能RPC(一种远程调用) 分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。简单的说,Dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有Dubbo这样的分布式服务框架的需求。并且本质上是个远程服务调用的分布式框架(告别Web Service模式中的
2022-03-23 16:36:19
117964
56
原创 MongoDB详解,用心看这篇就够了【重点】
1.1 MongoDB概述MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。Mo
2022-03-22 17:02:34
92296
37
原创 RabbitMQ详解,用心看完这一篇就够了【重点】
1.1 消息中间件消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统——百度百科1.1.1 应用场景1.1.1.1 异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 ;(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西。(
2022-03-15 16:33:46
164865
74
原创 Spring Boot 自定义 Starter 实战:从创建到使用的完整指南
本文介绍了如何创建自定义Spring Boot Starter来实现Redis缓存功能。主要内容包括:1) Starter概念及价值,能聚合依赖、自动配置并简化集成;2) 详细实现步骤:创建项目结构、配置POM依赖、定义配置属性类、编写自动配置类;3) 使用方式:通过添加依赖和简单配置即可快速集成;4) 测试验证和最佳实践建议。该Starter封装了Redis连接池配置、序列化处理等通用逻辑,使开发者只需关注业务代码,提高了开发效率和标准化程度。
2026-01-23 14:00:00
814
原创 Spring Boot 日志配置详解:log4j2.xml 的完整配置指南
本文介绍在Spring Boot项目中配置Log4j2日志框架的方法。首先分析了Log4j2的性能优势,包括异步日志记录、无锁设计和动态更新等特性。
2026-01-22 20:45:00
1850
1
原创 Nginx与Spring Cloud Gateway QPS统计全攻略
QPS统计是系统性能监控的核心指标,本文介绍了Nginx网关层和Spring Cloud Gateway的QPS统计实现方案。Nginx通过stub_status模块和日志分析实现基础统计,而Spring Cloud Gateway则通过自定义全局过滤器实时计算QPS。应用层采用Spring AOP切面技术,结合定时任务清零计数器,实现接口级精细化监控。文章还提供了Shell脚本、Java代码示例及优化建议,涵盖从基础配置到进阶优化的完整方案,帮助开发者构建完善的QPS监控体系。
2026-01-21 16:00:00
1924
原创 Filter、Interceptor、Spring AOP 的执行顺序详解
本文解析了Spring Boot中Filter、Interceptor和Spring AOP的执行顺序及应用场景。Filter基于Servlet规范,在请求到达DispatcherServlet前执行,适用于全局处理;Interceptor在Controller方法前后执行,适合MVC相关处理;Spring AOP通过代理模式实现方法级别的拦截,适用于业务逻辑横切关注点。三者的执行顺序为:Filter→Interceptor preHandle→AOP→业务逻辑→AOP→Interceptor postHa
2026-01-20 19:45:00
822
原创 基于Netty构建WebSocket服务器实战指南
本文介绍了基于Netty框架的WebSocket服务器实现方案。首先阐述了WebSocket协议的全双工通信特性及其优势,以及Netty框架的高性能特点。核心内容包括服务器初始化配置、线程组分工和管道处理器设置。通过实时聊天室案例展示了具体实现方法,包括连接管理、消息处理和错误处理机制。服务器支持单播和广播消息模式,并提供了部署测试方案。最后给出了性能优化和安全加固建议,如调整线程数、添加身份验证和使用WSS协议等,为构建实时通信系统提供了基础架构参考。
2026-01-19 18:45:00
923
原创 从混乱到清晰:Maven 依赖版本管理最佳实践
本文探讨了Maven项目中版本冲突的解决方案。通过分析Maven依赖仲裁机制(优先选择路径最短或先声明的版本),指出传统使用exclusion排除依赖的弊端(易漏、难维护、代码混乱)。推荐采用父POM的dependencyManagement统一管理依赖版本,子模块只需声明依赖无需指定版本,实现集中管控。进阶技巧建议结合properties变量提升可维护性。相比临时排除依赖,这种方案更具架构性,能从根本上避免版本冲突问题,特别适合多模块项目。文章强调优秀开发者应通过良好设计而非临时补救来解决问题。
2026-01-19 16:00:00
1578
原创 Java开发效率革命:AI驱动的智能工具套件全面解析
本文介绍了AI编程助手通义灵码和IDE增强插件集的开发效率工具。通义灵码提供智能代码续写、质量检查、文档生成等功能,适合基础性工作;配套的IDE插件如Inspection Lens(错误可视化)、MyBatis Log Free(SQL调试)、Json Helper等则提供专业辅助功能。建议将AI工具与传统插件结合使用,针对重复性任务优先采用AI,复杂逻辑仍需人工处理,通过工具协同优化开发流程,实现效率提升。
2026-01-19 14:15:00
350
原创 Spring Boot 中的优雅重试机制:从理论到实践的完整指南
本文介绍了Spring Retry在分布式系统中处理临时性故障的解决方案。通过核心注解@EnableRetry、@Retryable和@Recover,可实现灵活的重试机制,包括异常匹配、退避策略和恢复处理。实战部分展示了如何在Spring Boot项目中配置重试模板,并针对API调用、数据库操作和支付接口等场景实现自动重试和失败恢复。文章提供了完整的代码示例,演示了从依赖配置到业务层实现的全过程,帮助开发者构建健壮的分布式系统。
2026-01-16 21:15:00
1664
原创 IntelliJ IDEA 2024.1 热部署配置指南
本文介绍了热部署的概念及其在Spring Boot项目中的配置方法。热部署是指在应用运行时无需重启即可使代码修改生效。该功能可显著提升开发效率,但需注意其适用场景和局限性。
2026-01-16 19:00:00
2067
原创 Spring Cloud Alibaba Sentinel 流量控制与熔断降级实战指南
摘要:Sentinel是阿里巴巴开源的分布式流量控制组件,提供流量控制、熔断降级、系统保护等功能。文章介绍了其核心功能、Spring Cloud集成配置方法,详细解析了@SentinelResource注解的使用,并给出基础限流和多参数接口的实际代码示例。同时对比了限流与降级的区别,提出规则配置策略和代码设计的最佳实践建议。Sentinel通过注解方式实现灵活限流,支持动态规则调整,能有效提升微服务架构的高可用性和稳定性。
2026-01-16 08:15:00
592
原创 Spring AOP 实现日志切面记录功能详解
本文介绍了使用Spring AOP实现方法级日志记录的技术方案。通过自定义@LogAnnotation注解标记需要记录的方法,结合AOP切面类LogAspectAop,在方法执行前后自动记录请求URL、参数、返回结果等信息。该方案具有无侵入性、灵活配置等优势,统一管理日志逻辑,便于系统监控和问题排查。同时需要注意性能开销、敏感信息过滤等问题,适合企业级应用开发。
2026-01-15 20:00:00
454
1
原创 API安全防护:签名验证与数据加密最佳实践
本文介绍了API安全的两大核心防护机制:签名验证和数据加密。签名验证通过时间戳、随机串和业务参数生成SHA256签名,防止请求篡改,并提供Java实现代码与拦截器方案。数据加密采用AES对称算法保护敏感信息,包含密钥管理与精准加密策略。文章还给出安全实践建议,如时间戳校验、密钥轮换和统一配置管理。这两种机制的结合使用可有效提升API服务安全性,构建多层次防护体系。
2026-01-15 17:26:06
549
原创 深入理解幂等设计:构建高可用系统的必备技能
本文介绍了分布式系统中接口幂等性的重要性及实现方案。幂等性可防止重复请求导致的数据不一致问题,常见场景包括网络超时重试、用户误操作等。核心方案是Token机制,通过预申请令牌和Redis验证实现简单高效的幂等控制,还提出了分布式锁增强版方案。其他方法包括数据库唯一索引约束。最佳实践建议采用多层防护策略,并优化Token过期时间、缓存策略等。总结指出,良好的幂等设计应具备透明性、高效性和可靠性,需根据业务场景选择合适方案,确保系统稳定性和数据一致性。
2026-01-15 15:21:51
471
原创 Spring Boot 应用启动成功后的事件监听与日志输出实践
本文介绍了Spring Boot应用启动后执行操作的两种实现方式。第一种是通过ApplicationListener监听ApplicationReadyEvent事件,适合应用完全启动后的初始化操作;第二种是使用ApplicationRunner接口,可直接获取启动参数并执行特定业务逻辑。文章对比了两者的特性差异,并提供了输出API文档地址和启动标识等实际示例。建议根据具体需求选择合适方式,注意避免耗时操作并添加错误处理,以提升应用可维护性和用户体验。
2026-01-14 15:56:17
553
原创 深入理解分布式锁:基于Redisson的多样化锁实现
本文探讨了分布式系统中六种常见的分布式锁实现及其应用场景。基于Redis和Redisson框架,项目通过枚举实现了非公平锁、公平锁、多锁、红锁、读锁和写锁等锁机制。非公平锁性能较高但可能导致饥饿现象;公平锁保证请求顺序但吞吐量较低;多锁和红锁适用于复杂资源协调场景;读写锁则优化了读多写少场景的性能。每种锁都有其特定的适用场景和实现方式,开发者可根据业务需求选择合适的锁机制来保证分布式环境下的数据一致性。
2026-01-13 16:04:17
856
原创 Spring Boot 日志配置详解:logback.xml 的完整配置指南
本文对比分析了Logback和Log4j2两种主流Java日志框架的配置特点。Logback配置简洁,采用XML格式定义滚动日志文件和控制台输出,适合Spring Boot默认集成场景。Log4j2功能更丰富,支持分布式追踪和异步处理,配置灵活但稍复杂,适用于高并发应用。性能方面,Log4j2在异步处理和内存优化上表现更优。建议根据项目需求选择框架,生产环境应合理设置日志级别、统一日志格式并实施有效的日志文件管理策略,以平衡功能需求和系统性能。
2026-01-09 16:56:19
699
1
原创 Spring Boot 项目中使用 Dynamic Datasource 实现多数据源管理
本文介绍了在Spring Boot中实现多数据的一种实用方法,这种方案适用于数据隔离、读写分离等企业级应用场景。
2025-12-30 15:35:50
955
1
原创 Spring Boot中Bean Validation的groups属性深度解析
通过合理使用Bean Validation的groups属性,我们可以构建出既灵活又健壮的数据校验体系,显著提升系统的可维护性和用户体验。
2025-09-24 16:12:53
718
原创 Java 枚举通用接口设计与实现
本文介绍了Java中枚举类型的通用接口设计方法。通过定义BaseEnumInterface接口,可以为枚举添加code和desc属性,并提供统一的静态操作方法,如根据code获取枚举实例、获取所有编码列表、验证编码有效性等。以GenderEnum为例,展示了枚举类如何实现该接口,并演示了通过接口提供的通用方法进行便捷操作。这种设计模式提高了代码复用性,使枚举操作更加规范统一。
2025-09-04 16:53:36
1237
原创 唯一索引中索引失效解决办法
在MySQL中,联合唯一索引允许多个NULL值,因为NULL与NULL不相等。这意味着,即使在联合唯一索引中,如果某一列的值为NULL,那么即使其他列的值相同,也不会触发唯一性冲突。这可能会导致数据的唯一性约束失效,从而违反业务逻辑中的唯一性要求。
2025-02-17 10:10:50
684
原创 Java反射机制:获取对象动态字段值
Java的反射API允许程序在运行时查询和使用类的信息。这包括获取类的字段、方法、构造函数等。反射的主要用途包括:动态创建对象:在运行时创建类的实例。访问私有字段和方法:即使字段或方法是私有的,也可以通过反射来访问和修改。动态调用方法:在运行时调用对象的方法。
2025-02-13 10:01:24
857
原创 EasyExcel导出自定义的数据
在现代Web开发中,数据导出功能是一个常见的需求,用户经常需要将数据导出为Excel文件,以便进行进一步的分析或记录。在Java后端开发中,EasyExcel是一个简单易用且功能强大的库,可以帮助我们轻松实现这一功能。本文将通过一个简单的示例,我们常常用的可能是他的注解式的导出,本文展示如何使用EasyExcel来导出自定义的数据,当然如果更复杂的可以使用原生Apache POI库进行导出。这个示例展示了如何导出一个简单的数据集,但你可以根据需要扩展它,以适应更复杂的数据结构和导出需求。
2025-02-13 09:52:43
766
原创 feign调用跳过HTTPS的SSL证书校验配置详解
不添加跳过SSL证书校验的配置可以显著提高安全性,但可能会导致连接失败,特别是在使用自签名证书或内部CA证书的情况下。因此,建议在生产环境中正确配置和验证SSL证书,而在开发和测试环境中可以考虑使用跳过SSL证书校验的配置,但应谨慎使用。
2025-01-20 15:53:33
1765
原创 深入解析RocketMQ配置与消息消费实现
在现代分布式系统中,消息队列扮演着至关重要的角色,`RocketMQ`作为一款高性能、高可靠性的分布式消息中间件,广泛应用于各种场景。本文将详细介绍`RocketMQ`的配置项,并通过一个实际的消息消费案例,帮助读者更好地理解和应用`RocketMQ`。
2025-01-19 11:39:30
717
原创 利用Java泛型和MyBatis-Plus实现通用数据存储方法
在实际项目中,我们经常需要处理批量数据的存储。例如,定时任务从外部系统同步数据到本地数据库,或者在用户提交批量数据时进行处理。传统的做法是为每种实体类编写单独的删除和插入逻辑,这不仅增加了代码量,还降低了代码的可维护性。为了解决这一问题,我们可以借助Java的泛型机制和提供的强大功能,编写一个通用的数据存储方法,适用于各种实体类型。通过利用Java泛型和的强大功能,我们能够编写出高度通用且灵活的数据存储方法。这不仅简化了代码结构,提升了开发效率,还为后续的维护和扩展提供了便利。
2025-01-19 10:51:35
1063
原创 1093 - You can‘t specify target table 报错原因分析及解决办法
1093 - You can't specify target table 1093 原因分析及解决办法
2024-12-27 09:43:29
5739
原创 Mybatis-Plus updateById 方法更新无效及空值处理
在使用 Mybatis-Plus 进行数据持久化操作时,开发者可能会遇到 updateById 方法不更新空值或某些字段更新无效的情况。这通常是由于 Mybatis-Plus 默认的更新策略导致的,该策略为了防止误操作,禁止将数据库中非空字段更新为 null。然而,在某些业务场景下,允许更新空值是必要的。
2024-12-27 09:07:10
2519
原创 文件字符编码的检测工具类
主要用于自动检测文本文件的字符编码,这对于处理来自不同来源的文件非常有用。例如,你可以在读取文件时使用来确定文件的正确编码,从而避免因编码不匹配导致的数据乱码问题。
2024-12-05 09:20:12
1047
原创 使用SpringBoot读取Windows共享文件
项目需要对接各种的设备仪器,有很多的类型,例如串口传输、读取数据库、TCP/IP等等方式,这些解决办法是非常多的,但是有几台机器是做完实验就会在本地生成文件,一开始我们的想法也比较多,比如业务人员每天进行导入操作,后续考虑到尽量减小业务人员的操作,想到一个简单的方式就是定时读取每个机器电脑上的共享文件,根据它的修改时间读取所需的数据文件。通过本文,我们了解了如何在应用中读取Windows共享文件。我们使用了jcifs库来处理SMB。
2024-11-01 15:29:20
1040
原创 Google Aviator: 高性能Java表达式求值引擎
Aviator是一个用于Java的表达式求值引擎,它的主要特点是轻量级、高性能和易于使用。Aviator可以将表达式编译成Java字节码,然后利用JVM的强大执行能力来高效地计算结果。此外,Aviator还提供了一系列内置函数和操作符,使得开发者可以轻松地处理各种数学和逻辑运算。除了内置函数外,Aviator还支持用户定义自己的函数来扩展其功能。这使得Aviator成为一个高度可定制的工具。
2024-08-16 09:48:13
2502
原创 设计模式系列:策略模式的设计与实践
策略模式非常适合那些需要在运行时动态改变行为的场景。策略模式是一种非常实用的设计模式,可以帮助开发人员编写更加灵活和可维护的代码。
2024-08-14 15:01:46
813
原创 Java 8 中 BiFunction 的全面解析与案例分析
BiFunction 是 Java 8 中的函数式接口,用于接收两个输入参数并返回一个结果,支持方法链式调用,适用于数据处理和事件响应等场景。
2024-08-14 09:41:39
860
原创 设备对接与串口通信【JAVA】
串口通信因其简单性、灵活性和通用性,在众多应用场景中仍然保持着极高的实用价值。深入理解串口的工作原理,掌握串口通信接口的选择与编程技巧,对于更好地应用串口技术、设计出更为可靠的通信系统具有重要意义。这不仅能够帮助我们充分发挥串口通信的优势,还能在不同应用场景中灵活应对各种通信需求,确保数据传输的稳定性和准确性。因此,深入学习和掌握串口通信的相关知识,是提升通信系统设计能力、实现高效数据传输的关键所在。
2024-08-13 10:29:13
1176
1
原创 Aop切面技术之存储用户信息
在面向切面编程(AOP, Aspect-Oriented Programming)中,通过定义切面(Aspect)可以在不修改源代码的情况下增加额外的行为,比如日志记录、事务管理、安全检查等。在你的场景中,你希望在方法执行之前获取当前用户的信息,并将这个信息作为参数传递给目标方法。
2024-08-12 16:28:23
522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅