2025
11月
Java 性能优化实战 第 2 篇:如何定位性能瓶颈
本文提出性能优化的核心在于精准定位瓶颈,而非盲目调整。文章系统性地介绍了从Linux系统层、JVM层到业务代码层的三层排查法,并提供了具体工具与关键指标,如使用top、jstat、Arthas等快速诊断CPU、内存、线程及数据库问题。核心结论是:遵循标准排查流程,先定位再优化,可解决90%的线上性能问题。
Java 性能优化实战 第 1 篇:Java 性能优化全景图
本文系统阐述了Java性能优化的完整体系,指出性能优化并非单点改进,而是涵盖代码、线程、JVM、IO、持久化、架构及运维的七层立体结构。核心目标在于平衡响应时间、吞吐量与资源消耗。文章强调应遵循“发现问题—压测定位—分析瓶颈—方案验证”的黄金流程,并指出常见瓶颈多集中于GC、线程池、数据库及缓存设计。同时,推荐了必要的性能工具链,并总结了五大优化心法,强调系统性思维与监控预警的重要性。
Java Virtual Threads(虚拟线程)教程:Loom 未来路线图与结构化并发深入解析(第 6 篇)
本文前瞻性地解析了Project Loom的最终目标与未来路线图。其核心是通过虚拟线程、结构化并发及Continuations三大组件,使Java并发编程回归同步风格的简洁写法,同时获得异步性能。重点介绍了结构化并发(如`StructuredTaskScope`)如何以同步方式管理并行任务生命周期,实现自动错误传播与取消。未来,Loom将持续完善API、优化调度器,并深度结合云原生场景,旨在让Java成为高并发时代最易用的语言。
Java Virtual Threads(虚拟线程)教程:进阶调优与性能压测指南(第 5 篇)
本文是Java虚拟线程系列的第5篇,聚焦生产环境性能优化。核心观点是虚拟线程本身无需调优,关键在于优化代码阻塞点与运行环境。文章指出应避免使用重量级锁、执行CPU密集型任务、频繁创建大对象,并确保底层I/O调用可挂起。同时强调需防止外部资源池(如数据库连接池)成为新瓶颈。提供了性能压测方法,推荐使用ZGC,并总结了生产环境调优策略与完整检查清单,帮助工程师系统提升虚拟线程在高并发场景下的性能表现。
Java Virtual Threads(虚拟线程)教程:Spring Boot 实战(第 4 篇)
本文详细介绍了在Spring Boot 3+中全面启用虚拟线程进行全链路优化的实践方法。通过配置Tomcat直接使用虚拟线程执行器,可使Web层吞吐量显著提升。文章指出,Controller至Repository层代码无需改动即可自动运行于虚拟线程,并强调数据库连接池是主要瓶颈,建议适当调大或采用R2DBC。压测数据显示,虚拟线程在I/O密集场景下吞吐量比传统线程池高3~20倍,且内存消耗更低,实现了同步写法与异步高性能的结合。
Java Virtual Threads(虚拟线程)教程:调度机制与底层原理深度解析(第 3 篇)
本文深度解析了Java虚拟线程的调度机制。虚拟线程由少量平台线程执行,通过ForkJoinPool调度器管理。其核心优势在于:当虚拟线程执行I/O等阻塞操作时,会被立即挂起,栈帧保存至堆内存,从而释放平台线程去执行其他任务,实现了“同步写法,异步性能”。虚拟线程采用动态栈块管理,内存占用极轻。需注意避免因synchronized或原生I/O导致的Pinning问题。虚拟线程适用于I/O密集型场景,而非CPU密集型任务。
Java Virtual Threads(虚拟线程)教程:同步写法获得异步性能(第 2 篇)
本文介绍了如何使用Java虚拟线程重构传统同步代码以提升性能。通过HTTP请求、数据库查询和RPC调用等实战案例,展示了虚拟线程相比传统线程池的优势:支持海量线程(如10万+)、I/O阻塞时自动挂起不占用系统线程,同时保持同步代码的简洁性。其核心价值在于以同步写法获得异步性能,大幅提升吞吐量,并简化开发维护。
Java Virtual Threads(虚拟线程)教程:从零入门(第 1 篇)
Java虚拟线程是JDK 21引入的轻量级并发工具,旨在解决传统线程资源消耗大、高并发场景下复杂度高的问题。它由JVM管理,每个线程仅占几十KB内存,支持创建百万级线程,尤其适用于I/O密集型任务。虚拟线程通过挂起机制实现阻塞时的资源自动释放,使同步代码具备异步性能,同时保持代码简洁。但不适用于CPU密集型计算。
10月
💻 用 PowerShell + ps2exe 打造 Windows 托盘护眼提醒助手(支持自定义图标、自启、锁屏)
本文介绍如何利用PowerShell脚本制作一款轻量级Windows托盘护眼助手。该工具支持定时提醒(默认30分钟)、系统托盘运行、自定义图标、自动锁屏及开机自启等功能。通过ps2exe工具可将脚本打包为独立exe文件,无需外部依赖,方便分享使用。核心代码展示了如何使用.NET组件实现托盘图标、定时器和右键菜单,并解决了图标打包问题。