
Spring
文章平均质量分 95
Spring
01Byte空间
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
专注后端技术:Java、Shell、Socket、MySQL、Oracle、Linux、中间件、分布式、微服务。偶尔扯扯淡、分享技术干货。
https://github.com/zhouxx1055
https://zhouxx.blog.csdn.net/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
科普文:软件架构Spring系列之【万字详解Spring shell】
本文介绍了SpringShell框架及其在构建交互式命令行应用中的应用。SpringShell是Spring生态中的命令行开发工具,支持注解驱动开发、Tab补全、依赖注入等功能,适用于运维工具、开发工具等场景。文章对比了SpringShell与其他命令行框架的特点,详细说明了其核心类、注解及执行流程,并提供了JDK版本适配建议。此外,还展示了如何通过SpringShell实现服务器资源监控功能,包括JVM、CPU、内存、磁盘I/O和网络I/O的监控命令示例。最后给出了SpringShell的配置方法和界面自原创 2025-07-03 17:09:49 · 1129 阅读 · 0 评论 -
科普文:软件架构系列之设计模式【策略模式、状态模式、适配器模式、观察者模式】
设计模式是解决软件设计问题的通用方案。本文对比分析了四种常见模式:策略模式用于算法替换(如支付方式),状态模式管理对象行为随状态的变化(如订单流程),适配器模式解决接口不兼容问题(如系统集成),观察者模式实现一对多通知机制(如消息订阅)。这些模式各具特点:策略和状态模式属于行为型,分别强调算法独立性和状态转换;适配器是结构型模式,重在接口转换;观察者实现松耦合的消息通知。合理运用设计模式能提高代码复用性、扩展性和可维护性,如Spring框架就巧妙结合了观察者与策略模式。开发者应根据具体场景选择合适模式,注意原创 2025-06-30 23:19:30 · 699 阅读 · 0 评论 -
科普文:软件架构Spring系列之【Spring事件机制:Spring事件监听器能处理跨服务的事件吗?】
【摘要】Spring事件监听机制通过发布-订阅模式实现模块解耦,支持异步处理和自定义事件类型,但原生仅适用于单服务场景。跨服务事件需借助消息中间件(如Kafka)或Spring Cloud组件实现,需权衡一致性、性能等需求。典型方案包括:MQ异步解耦(最终一致性)、Spring Cloud Stream集成发布、分布式事务框架(强一致性)。实际应用中需注意消息幂等、事务协调及服务熔断等问题,建议根据业务场景选择合适方案,如高并发优先异步MQ,强事务采用Seata等框架。原创 2025-06-30 22:50:54 · 990 阅读 · 0 评论 -
科普文:软件架构Spring系列之【Spring事件机制ApplicationEventMulticaster调用所有监听器的处理方法】
Spring事件机制是基于观察者模式的轻量级消息通信方案,通过ApplicationEvent和ApplicationListener实现模块间解耦。事件发布者与监听者无需直接依赖,只需注册到Spring容器即可跨模块通信。文章详细介绍了事件定义、发布和监听流程,并重点讲解如何为异步事件监听器配置专属线程池:1)通过@Bean创建ThreadPoolTaskExecutor;2)使用@Async指定线程池;3)提供订单事件处理的完整示例。该机制适用订单状态变更等场景,关键要注意线程池隔离、拒绝策略和事务协调原创 2025-06-30 19:51:05 · 1121 阅读 · 0 评论 -
科普文:软件架构Spring系列之【Spring事件机制ApplicationEvent】
Spring框架提供了状态机和事件两种机制来处理业务逻辑。状态机(Spring StateMachine)专注于管理对象生命周期中的状态转换,适用于订单处理等工作流场景;而事件机制基于观察者模式,通过发布-订阅模型实现组件解耦,支持同步/异步处理。事件可通过@Async实现异步监听,并通过@TransactionalEventListener与事务生命周期绑定。两种机制各具特点:状态机适合复杂状态管理,事件机制更适用于轻量级解耦通信。开发者可根据业务需求选择合适方案,或组合使用以实现更灵活的系统架构。原创 2025-06-30 18:27:23 · 971 阅读 · 0 评论 -
科普文:软件架构Spring系列之【Spring状态机的设计模式:状态模式(State Pattern)】
摘要:本文深入解析Spring Statemachine状态机中运用的设计模式,重点阐述状态模式(State Pattern)的实现原理。通过对比传统分支逻辑方案,说明状态模式在管理复杂状态流转时的优势:代码更清晰、维护性更高。文章详细介绍了Spring Statemachine中状态模式的三个核心角色(Context、State、ConcreteState)及其协作方式,并以红绿灯状态变更案例进行演示。同时指出状态模式与策略模式的区别在于前者关注状态流转,后者关注策略选择。此外,还提及了观察者、策略、模板原创 2025-06-30 16:39:28 · 1247 阅读 · 0 评论 -
科普文:软件架构Spring系列之【Spring Statemachine状态机示例】
Spring StateMachine是Spring框架提供的状态机模块,采用状态模式实现对象状态管理。它通过定义状态(State)、事件(Event)和转换(Transition)来管理状态变化,核心类包括StateMachine、StateMachineFactory等。主要适用于订单处理、工作流等场景,具有状态管理清晰、可维护性强等优点,但也存在学习曲线陡峭、配置复杂等缺点。在分布式环境下,可通过分布式锁、状态持久化等方式保证状态一致性。文章通过订单处理流程示例,详细展示了状态机的配置和使用方法,并对原创 2025-06-30 16:22:10 · 1062 阅读 · 0 评论 -
科普文:软件架构Spring系列之【状态机:Spring Statemachine】
Spring State Machine是Spring框架中用于简化有限状态机开发的模块,它通过状态(State)、事件(Event)、转换(Transition)和动作(Action)等核心概念,帮助开发者管理复杂的状态流转逻辑。该框架采用Mealy型状态机模型,支持事件驱动、分层状态和状态持久化等特性,适用于订单处理、工作流引擎等场景。相比传统if-else实现,它提供了更清晰的状态管理方式,但存在学习曲线陡峭和性能开销等缺点。实际应用中需注意线程安全、状态持久化和错误处理等问题。原创 2025-06-30 13:55:47 · 1113 阅读 · 0 评论 -
科普文:软件架构设计之应用安全【身份验证(Authentication):2FA双因素认证详解】
前面我们详细梳理了OTP一次性密码,这里再看看双因素认证(2FA):2FA是结合两种不同的认证因素(如密码和OTP),增强安全性的身份验证方法。双因素认证,英文名称, 简称2FA。常规密码验证码使用2FA的主要目的是增强账户的安全性,提供额外的保护层,以防止未经授权的访问和潜在的安全威胁。降低了密码盗窃的风险弱密码尽管2FA并,但它是一种非常有效的方法,可以显著提高账户的安全性。通过多因素验证,即使密码泄露,攻击者也难以轻松进入您的账户。原创 2025-05-06 12:48:14 · 1049 阅读 · 0 评论 -
科普文:软件架构设计之应用安全【身份验证(Authentication):OTP一次性密码 TOTP详解】
一次性密码(OTP,One-Time Password)是一种用于身份验证的安全机制,通常用于提高用户账户的安全性。前面我们一步一步地分析一下OTP的工作原理。这种机制能有效防止重放攻击和钓鱼攻击,因为每个密码只使用一次且是短暂有效的。在这里我们再继续看看OTP的另一种方式RFC 6238(TOTP)。原创 2025-05-06 12:25:01 · 1416 阅读 · 0 评论 -
科普文:软件架构设计之应用安全【身份验证(Authentication):OTP一次性密码 HOTP详解】
动态口令(OTP)有一个同名确不同翻译的前辈,一次性密码(OTP, One-Time Pad),也叫密电本,是一种应用于军事领域的谍报技术,即对通信信息使用预先约定的一次性密电本进行加密和解密,使用后的密电本部分丢弃不再使用,能够做到一次一密。可以做到一次一个动态口令,使用后作废,口令长度通常为6-8个数字,使用方便,与通常的静态口令认证方式类似,使用方便与系统集成好,因此OTP动态口令技术的应用非常普遍,可以应用于多种系统渠道使用,如:Web应用、手机应用、电话应用、ATM自助终端等。原创 2025-05-06 11:38:18 · 873 阅读 · 0 评论 -
科普文:软件架构设计之应用安全【身份验证(Authentication):OTP一次性密码 TOTP和HOTP小结】
OTP生成方式:通常基于算法生成,包括TOTP和HOTP两种方式。 生成过程不依赖外部网络,具有更高的独立性。TOTP(基于时间的 OTP,计时使用):根据当前时间和共享密钥生成,基于RFC6238协议。HOTP(基于事件的 OTP,计次使用):根据计数器值和共享密钥生成,基于RFC4266 协议。原创 2025-05-05 19:30:20 · 1038 阅读 · 0 评论 -
科普文:软件架构设计之应用安全【身份验证(Authentication):短信验证、图片验证、TOTP一次性密码、2FA双重身份验证等小结】
为了确保应用程序的安全性和保护用户数据的隐私,开发者需要使用一些必备的身份验证应用安全技术。身份验证(Authentication)是网络安全的核心组成部分,指的是确认用户或系统的身份是否有效的过程。通过身份验证,可以确保只有授权用户才能访问敏感数据或系统资源。随着网络攻击手段的不断演进,传统的身份验证方式面临越来越多的挑战,因此多种身份验证机制相继出现,以应对日益复杂的安全威胁。原创 2025-05-05 16:21:23 · 1597 阅读 · 0 评论 -
科普文:一文搞懂Spring中常用的注解【@EventListener 注解的原理、核心类、应用场景】
EventListener 标记方法作为事件监听器,用于处理应用程序事件。通过松耦合方式实现事件驱动编程,适用于多组件协作场景。需注意同步/异步控制及条件表达式优化,结合具体业务合理设计事件链。我们继续梳理@EventListener的原理、核心类、优缺点、应用场景和注意事项。原创 2025-05-04 18:16:55 · 672 阅读 · 0 评论 -
科普文:一文搞懂Spring中常用的注解【@Profile、@PropertySource/ @PropertySources、@ConfigurationProperties】
@Profile 多环境隔离 切换开发/生产环境数据源@PropertySource 自定义配置文件加载 加载独立模块配置(如 redis.properties)@ConfigurationProperties 结构化配置映射 封装数据库连接参数对象@ImportResource 传统 XML 配置迁移 整合遗留系统的 XML 配置文件注意事项总结配置优先级:@PropertySource 默认优先级低于 application.properties,可通过 @Order 调整加载顺序。原创 2025-05-04 14:52:47 · 1112 阅读 · 0 评论 -
科普文:一文搞懂Spring中常用的注解【@PostConstruct、@DependsOn、@Order注解嵌套使用解决Bean加载优先级问题】
解决Bean加载优先级问题@PostConstruct、@DependsOn、@Order注解嵌套使用解决Bean加载优先级问题。注解作用域分析注解 作用层级 核心用途 生效阶段@DependsOn Bean 定义级别 显式声明依赖的 Bean,确保被依赖的 Bean 先初始化 Bean 实例化前 @Order Bean 注入/执行顺序 控制同类 Bean 在集合中的排列顺序或组件执行优先级(如拦截器链) Bean 注入时或组件调用时 @PostConstruct Bean 实例级别 标记初原创 2025-05-04 11:22:22 · 1333 阅读 · 0 评论 -
科普文:一文搞懂Spring中常用的注解【@Component、@Order、@DependsOn 三个注解的原理、核心类、应用场景】
DependsOn和@Order是用来解决Bean加载顺序问题的。同时,@Component是用于将类标记为Spring容器的组件,让Spring能够自动扫描并注册为Bean。@Order的使用场景,比如拦截器、过滤器、监听器的执行顺序,以及集合排序的情况。原创 2025-05-04 11:00:36 · 781 阅读 · 0 评论 -
科普文:一文搞懂Spring中常用的注解【@lazy注解的原理、核心类、应用场景】
前面有对java注解、spring注解做过梳理,这里我们再看看Spring框架中@Lazy注解的原理、核心类、应用场景。原创 2025-05-04 10:26:31 · 1109 阅读 · 0 评论 -
实战:软件架构设计之【Spring Boot 动态注册Controller:实现Mock Server】
例如,提供一个REST接口,允许用户发送一个POST请求来创建一个新的Mock端点,包括路径、方法、响应体等信息。或者使用配置文件,在启动时加载多个预定义的Mock接口。Mock Server在测试过程中快速创建临时的API端点,模拟各种响应,而不需要预先在代码中定义这些Controller。前面梳理了Spring Boot 动态注册Controller,这里我们来实现一个Mock Server,体验一下动态注册Controller。在单元测试或集成测试中动态创建接口,验证系统对不同响应的处理逻辑。原创 2025-04-29 15:41:41 · 1510 阅读 · 0 评论 -
科普文:软件架构设计之【Spring Boot 动态注册Controller】
Spring Boot 动态注册 Controller 的核心原理是 在运行时通过编程方式向 Spring 容器注册 Bean,并利用 Spring MVC 的 RequestMappingHandlerMapping 动态添加请求映射。传统静态注册:通过 @Controller/@RestController 注解在启动时扫描并注册 Bean。动态注册:绕过注解扫描,手动创建 Controller 的 Bean 定义,并 实现运行时灵活性,适用于插件化、多租户等动态场景。其核心依赖。原创 2025-04-29 14:48:08 · 1005 阅读 · 0 评论 -
科普文:软件架构设计之【Spring MVC小结】
SpringMVC 注解通过简化配置和增强语义,显著提升了开发效率。在 Spring 的基本架构中, Spring Web MVC 也就是SpringMVC,它是属于Spring基本架构里面的一个组成部分,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面,所以我们在后期和 Spring 进行整合的时候,几乎不需要别的什么配置。原创 2025-04-29 10:23:11 · 707 阅读 · 0 评论 -
科普文:HTTP协议【GET、DELETE一定没有请求体RequestBody吗?】
A payload within a GET request message has no defined semantics; sending a payload body on a GET request might cause some existing implementations to reject the request.可以看到,RFC7231规范并没有说明GET请求不能携带body(A payload within a GET request message has no原创 2025-04-29 09:18:42 · 916 阅读 · 0 评论 -
科普文:Java基础系列之【线程和线程池伪共享:ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal小结】
ThreadLocal:单线程数据隔离(如 Spring 的 RequestContextHolder)。InheritableThreadLocal:简单父子线程数据传递(如单次任务拆分)。TransmittableThreadLocal:线程池、异步任务、分布式链路跟踪(如日志 traceId 透传)类别 优点 缺点ThreadLocal 轻量级、线程隔离性强、无锁性能高 父子线程无法传递数据、线程池场景失效、内存泄漏风险需手动清理InheritableThrea原创 2025-04-28 20:33:13 · 1146 阅读 · 0 评论 -
科普文:软件架构设计之【国内最好的Java 权限认证框架Sa-Token】
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。官方地址:Sa-Token最新版本:sa-token-doc/start/new-version.md · dromara/Sa-Token - Gitee.com原创 2025-04-28 13:11:19 · 1113 阅读 · 0 评论 -
科普文:OAuth 2.0认证框架小结
OAuth 2.0 是一种 ,也是一个开放标准,允许第三方应用在用户授权下访问其资源服务器的数据,而无需直接获取用户凭据(如密码)。例如:用户把照片、视频、联系人数据存储在内容托管云服务R(Resource)中的Picture、Video、Contact三个模块中;用户使用在线照片打印服务P(Printer),用户需要让P服务读取R服务中的照片进行打印,但不想让P服务读取R服务中的其他数据。原创 2025-04-28 12:51:00 · 1004 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:Java高效NIO之IO模型和零拷贝】
传统IO模式,在处理数据流过程中,线程处于阻塞状态,直到流处理(读取后写入)完毕,所以一个线程只能处理一个IO任务,如果IO未准备就绪无数据(或不可写)线程只能一直等待,直到可以有数据(或可写);NIO模式,采用IO多路复用技术,使用选择器(Selector)监控一组IO,虽然Selector线程也处于阻塞状态,但一个线程可以同时处理多个IO任务,当IO就绪时,Selector返回就绪的IO并由程序进行处理。原创 2025-04-26 14:32:18 · 806 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:Java高效NIO之直接内存映射】
通过用户缓存和Kernel缓存的共享,用户程序的操作直接作用到Kernel内存,无需进行内存拷贝。使用内存映射文件处理磁盘上的文件时,无需对文件执行IO操作,也不需要再为文件进行内存分配、加载和释放等管理工作,因此此模式在处理大量数据的文件时能起到高效的作用。例如,对于数据库服务等比较复杂的应用,程序根据业务更懂如何使用内存,为了提高性能,希望绕过内核缓存区,由自己在用户空间管理IO缓存,包括缓存机制和写延迟机制等,以支持事务、提高查询缓存命中率等。才是提供实际功能的其直接子类,他同时实现了。原创 2025-04-26 14:14:27 · 667 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:Undertow踩坑小结】
关于Undertow,前面已经做了梳理,这里整理一下用Undertow碰到的三个坑。1.spring.mvc.servlet.load-on-startup=1 对undertow 无效2.文件上传报错MultipartException3.静态资源报错404原创 2025-04-26 14:06:24 · 1311 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:Undertow性能调优小结】
性能调优效果对比优化项 默认配置 优化后配置 QPS提升Worker线程数 CPU*8 CPU*4 +15%~20%直接内存缓冲区 堆内存 直接内存 +30%HTTP/2支持 关闭 启用 +25%响应压缩阈值 无压缩 >10KB启用 带宽减少40%Undertow的优势:轻量级和高性能:Undertow基于非阻塞I/O模型,具有低资源消耗和高并发处理能力。支持HTTP/2和WebSockets:开箱即支持HTTP/2和WebSockets,无需重写启动类路径。可嵌入式:只原创 2025-04-26 13:12:34 · 648 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:传统IO、堆外内存 ByteBuffer.allocateDirect、MappedByteBuffe的io操作】
传统 IO、堆外内存 (直接内存 ByteBuffer.allocateDirect、内存映射MappedByteBuffer)的IO操作。如果你的应用主要涉及小文件处理或者需要频繁的随机访问,传统的IO可能就足够了。对于大文件或者需要高速数据传输的应用,直接内存的ByteBuffer或内存映射的MappedByteBuffer可能是更好的选择。直接内存更适合于需要频繁读写操作的场景,而内存映射更适合于大文件的随机访问。三种方式都有其独特的优势和适用场景。原创 2025-04-26 10:01:02 · 903 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:堆外内存 ByteBuffer.allocateDirect、MappedByteBuffe的io操作】
在Java中,内存管理主要通过垃圾回收器(Garbage Collector)进行,也就是jvm的运行时区Runtime Data Area。然而,有时我们需要直接管理内存,以实现更高效的性能或满足特定需求。这就是堆外内存的用武之地。堆外内存是Java堆内存之外的内存空间。与堆内存不同,堆外内存的分配和释放不由Java的垃圾回收器管理。这意味着,一旦你分配了堆外内存,就意味着你放弃了java自带的内存管理机制GC,所以需要你手动释放,否则可能会导致内存泄漏。原创 2025-04-26 09:34:24 · 1085 阅读 · 0 评论 -
科普文: Java web应用性能分析【Java性能优化:纯java编程的优化方法论小结】
switch 优化: 使用 switch 代替多个 if-else,提高分支预测效率。合理配置容器: 设置合适的初始容量,减少扩容带来的性能损耗。并行处理: 利用多线程和 Fork/Join 框架,充分利用多核 CPU。锁粒度优化: 使用细粒度锁和读写锁,减少线程竞争。池化资源: 使用线程池、数据库连接池、对象池,减少资源创建和释放的开销。直接内存: 使用 ByteBuffer.allocateDirect() 进行高效 I/O 操作。日志优化: 使用 isDebugEnabled 检查、占位符原创 2025-04-25 17:25:21 · 902 阅读 · 0 评论 -
实战: Java web应用性能分析之【springboot自定义Starter 】
前面我们梳理springboot自动装配的starter原理,并分析springboot如何支持tomcat、jetty、undertow三款内嵌web服务器。这里我们一起看看如何自定义一个starter。Starter 的核心目标是简化依赖管理和自动配置逻辑,我们可通过自定义 Starter 实现通用功能的模块化封装。当然其核心原理spi,这里就不再展开。我们这里还是以springboot2.X为例,构建一个自定义的starter,核心代码实现MyServiceAutoConfiguration原创 2025-04-25 13:11:51 · 1000 阅读 · 0 评论 -
科普文: Java web应用性能分析之【springboot2.6、2.7、3.0的starter自动装配小结】
关于springboot2.6、2.7、3.0、3.5等的历史和特性,有兴趣的可以去看看前面的文章,这里我们做一个小结。即使2.6的支持已经到期,Spring Boot的自动装配主要通过@注解触发,其中是关键。稳定性与性能:Spring Boot 3.x版本因其对Java 17的支持和优化对Spring Framework 6的支持,被认为是当前最稳定的版本,适合需要高性能和长期维护的项目。社区支持:尽管2.x版本仍然有一定的市场占有率,但3.x版本因其最新的功能和性能优化,逐渐成为社区和企业原创 2025-04-25 11:33:25 · 955 阅读 · 0 评论 -
科普文: Java web应用性能分析之【java线程池中线程共享数据总结】
常见的并发问题竞态条件(Race Condition):多个线程同时访问和修改同一数据,导致结果依赖于线程的执行顺序。内存一致性错误(Memory Consistency Errors):一个线程写入的值可能在另一个线程中看不到,除非使用适当的同步机制。死锁:两个或多个线程相互等待对方释放资源,导致程序无法继续执行。java线程池中线程共享数据分类在分析并发问题前,我们有必要对java线程池中线程共享数据做一个分类,以便于更好的理解线程池和并发问题。下面从 “共享方式”(如显式同步原创 2025-04-24 22:26:15 · 767 阅读 · 0 评论 -
实战:Java web应用性能分析之【死扣代码性能:日志输出为什么要用isDebugEnabled() 】
当你在用Arthas、JPfofile等性能分析工具分析服务端应用性能时可以看到应用运行时的状态,耗时,从而及时发现性能瓶颈。以我们可以看到trace监控下,每个方法内部的耗时情况。可以明显的观察到:加了isDebugEnabled判断,在info级别时,只做了debug判断,并未执行日志拼接操作;而不加isDebugEnabled判断,info级别时,没有做debug判断,并执行日志拼接操作。至此我们再去看看开发手册,是不是就能理解为什么要这么规定。原创 2025-04-24 10:59:44 · 699 阅读 · 0 评论 -
实战:Java web应用性能分析之【为什么springboot的restful接口第一次访问很慢,第二次之后就快很多】
如题:为什么springboot的restful接口第一次访问很慢,第二次之后就快很多?如上日志所示:第一次访问耗时【763ms【528ms【329ms】】】第二次访问耗时【70ms【11ms【6ms】】】访问controller,第一次和第二次访问相差10-50倍,是哪里出了问题?当前环境:springboot2.6.8 + JDK11.0.2 同时用undertow替换了内置Tomcat。原创 2025-04-23 22:23:46 · 997 阅读 · 0 评论 -
实战:Java web应用性能分析之【spring boot 高性能日志:UDP+异步日志log4j2+logstash】
通过 Log4j2异步日志 + UDP传输 + Logstash聚合 的三层优化,可实现百万级TPS的日志处理能力,同时将主线程日志记录耗时控制在微秒级。Log4j2的异步日志机制,如AsyncAppender或AsyncLogger,能够减少日志记录对主线程的影响,提升应用性能。而UDP协议相比TCP,传输速度快,但不可靠,不过对于日志这种允许部分丢失的场景,UDP是合适的选择。Logstash作为日志收集工具,需要配置对应的输入插件来接收UDP传输的日志。原创 2025-04-23 18:34:49 · 812 阅读 · 0 评论 -
科普文:Java web应用性能分析之【UDP+异步日志log4j2,性能马上飞】
Log4j2 凭借无锁队列、零 GC 和动态异步策略,在吞吐量和稳定性上全面领先;Logback 适用于轻量级场景但需严格调优;Log4j (1.x) 已不推荐使用。选型需结合业务负载和运维成本综合考量。原创 2025-04-21 19:27:21 · 897 阅读 · 0 评论 -
实战:Java web应用性能分析之【springboot日志log4j2.xml中获取配置文件application.yaml中的配置】
继续前面的细节,springboot日志log4j2.xml中如何获取配置文件application.yaml中的配置?springboot都不是单点部署,那么在集群环境下如何区分同一个服务多点部署时,如何区分日志?其实这两个问题是一个问题,多点部署时,服务名、服务IP、服务端口这三要素是唯一的。如上面application.yaml配置示例,服务名=Ecommerce、服务IP=0.0.0.0、服务端口=8080。只要服务启动时将这些打印到日志中,即可完成服务多点部署时的日志区分。原创 2025-04-21 19:02:56 · 1340 阅读 · 0 评论