Java
文章平均质量分 95
Java混杂文章分类
越重天
CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。技术合作请加本人wx(注明来自csdn):foreast_sea
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring WebFlux 核心操作符详解:map、flatMap 与 Mono 常用方法
本文介绍了Spring WebFlux中响应式编程的核心操作符map与flatMap的区别及Mono常用方法。map用于同步数据转换,直接返回结果;flatMap则处理异步转换,返回Publisher对象。文章通过代码示例对比两者特性,并详细讲解Mono的创建、转换过滤及错误处理操作符,包括延迟创建、类型转换、异步处理以及重试机制等实用技巧,帮助开发者编写高效可靠的响应式代码。适用于需要处理异步数据流的WebFlux应用场景。原创 2025-11-12 12:51:20 · 3240 阅读 · 113 评论 -
分布式事务原理深度解析
本文深入解析分布式事务原理,涵盖基础概念、CAP/BASE理论,以及两种主流解决方案。2PC通过协调者分两阶段控制事务提交/回滚,保证强一致性但存在同步阻塞和单点故障问题;TCC模式将事务分解为Try-Confirm-Cancel三个阶段,通过业务改造实现最终一致性,需关注幂等性和防悬挂控制。文章通过流程图和时序图详细展示各方案工作机制,为分布式系统设计提供理论指导和实践参考。原创 2025-10-20 19:00:08 · 3078 阅读 · 246 评论 -
面试官问:什么是Java内存模型?
本文介绍了Java内存模型(JMM)的核心概念及其在多线程编程中的重要性。JMM通过定义主内存与工作内存的交互规则,确保多线程环境下数据的可见性、原子性和有序性。文章详细解析了JMM的8种原子操作,并阐述了synchronized和volatile关键字如何实现内存一致性。最后区分了JMM与JVM内存结构的不同,强调JMM是规范而非具体实现。掌握JMM有助于理解Java并发机制,提升线程安全编程能力。原创 2025-10-14 09:50:22 · 2609 阅读 · 150 评论 -
Apache James-postgres-3.9.0 专属域名邮箱部署详情:从配置到安全防护
Apache James邮件服务器配置与安全防护指南 本文详细介绍了Apache James-postgres-3.9.0邮件服务器的部署与安全配置。主要内容包括:版本选型建议(推荐postgres生产版本)、域名系统配置、用户管理API、以及关键的SMTP多端口设置(25/465/587端口功能差异)。重点强调了SMTP认证机制的正确配置,避免服务器成为垃圾邮件中转站,同时提供了TLS加密、IP白名单等安全防护方案。通过本文的实践指导,读者可以搭建一个既满足业务需求又具备安全性的企业级邮件服务器。原创 2025-10-10 12:16:02 · 3237 阅读 · 129 评论 -
Let’s Encrypt SSL通配符证书永久免费获取与部署详解
本文详细介绍了如何通过Let's Encrypt免费获取通配符SSL证书,解决传统商业证书费用高、流程复杂的问题。文章从准备工作开始,指导读者获取Certbot Docker镜像,并详细讲解了内网环境下的证书生成流程,包括DNS解析记录的配置与验证。在成功获取证书后,还提供了Nginx部署和Spring Cloud Gateway证书格式转换的实用技巧。虽然Let's Encrypt证书有效期为3个月,但通过定期手动更新或自动化脚本,可以实现永久免费使用。这套方案特别适合拥有多个子域名的个人开发者和小型企业原创 2025-10-03 00:15:00 · 2860 阅读 · 92 评论 -
虚拟线程的隐形陷阱:Redisson订阅锁超时异常深度剖析
虚拟线程与Redisson订阅锁超时的隐形陷阱 摘要:本文剖析Java 21+虚拟线程环境下Redisson订阅锁频繁超时的根本原因。现象表现为低并发时出现RedisTimeoutException,而传统参数调优无效。核心问题在于虚拟线程的轻量级特性与Redisson的同步订阅机制冲突:虚拟线程的频繁挂起/恢复导致Netty事件循环线程资源耗尽。解决方案包括:1) 使用固定线程池执行Redisson操作;2) 调整Netty配置适配虚拟线程;3) 升级Redisson版本。本文通过源码分析、流程图解和实战原创 2025-09-24 11:56:02 · 1134 阅读 · 85 评论 -
JDK 24里程碑:虚拟线程重大升级,要用虚拟线程请务必用JDK24
摘要 本文解析了JDK 24对虚拟线程(Virtual Threads)的重大升级,重点解决了与synchronized关键字相关的线程固定(Pinning)问题。通过JEP 491提案,JDK 24重构了synchronized的底层实现,使虚拟线程能够在不绑定平台线程的情况下安全使用内置锁,从而释放其全部性能潜力。文中通过时序图、流程图和代码示例,详细对比了优化前后的执行流程,展示了JDK 24如何将锁所有权从平台线程转移到虚拟线程,实现无阻塞的高效并发。这一改进无需开发者修改代码即可获得显著的吞吐量提原创 2025-09-24 10:25:08 · 1542 阅读 · 73 评论 -
Java编程中常见的死锁场景及其应对策略
本文系统梳理了Java开发中常见的死锁场景及解决方案。主要内容包括:1)顺序死锁,由锁获取顺序不一致导致;2)动态锁顺序死锁,如转账操作中的循环等待;3)协作对象间的死锁;4)资源死锁;5)线程饥饿死锁;6)锁重入死锁。针对每种场景,作者提供了具体解决方案,如统一锁获取顺序、使用定时锁、减少同步范围、合理配置线程池等。文章强调理解这些死锁场景对编写健壮并发代码的重要性,并建议遵循Java并发最佳实践,避免潜在的多线程陷阱。原创 2025-09-17 12:48:41 · 1336 阅读 · 66 评论 -
从架构师到技术总监的转变
在技术的世界里,最迷人的跃迁之一,莫过于从一名深耕技术的架构师,逐渐成长为一名引领方向的技术总监。这绝非一次简单的职位晋升,而是一场彻头彻尾的思维革命与角色重塑。优秀的架构师,是解决复杂问题的“艺术家”;而卓越的技术总监,则是创造价值的“战略家”。他们需要将技术的深度、管理的广度与商业的高度熔于一炉,完成从“如何建造”到“为何建造”、从“对代码负责”到“对人与业务负责”的根本性转变。这条道路充满挑战,但也正是技术人突破天花板,实现更大影响力的必经之路。本文将为你剖析这场蜕变的核心,探寻从技术专家到全能领原创 2025-09-11 09:02:15 · 2623 阅读 · 116 评论 -
Nacos-3.0.3 适配PostgreSQL数据库:补丁版本3.0.3_patch_01
本文重点介绍基于Nacos-3.0.3最新版本如何用PostgreSQL数据库来存储后,修复的一个问题“3.0.2版本和3.0.3版本的pg数据库适配后,mcp服务列表查询功能有问题”,该问题是一个网友发现的,很感谢该网友:原创 2025-09-04 16:03:25 · 2346 阅读 · 150 评论 -
Nacos-3.0.3 适配PostgreSQL数据库
本文重点介绍基于Nacos-3.0.3最新版本如何用PostgreSQL数据库来存储,也就是如何打造或直接获取能适配Nacos-3.0.3的PostgreSQL数据库插件。Nacos-3.0.3版本最直接最快集成PostgreSQL数据源的方法就是引入依赖,这也是本文重点,也就是核心部分,我把它放这里:原创 2025-08-30 15:30:41 · 1910 阅读 · 87 评论 -
GitHub HTTPS 提交代码与个人访问令牌配置指南
除了 SSH 方式,GitHub 确实支持通过 个人访问令牌(Personal Access Token,简称 PAT) 来配合 HTTPS 协议进行身份验证和提交代码。从 2021 年 8 月起,GitHub 不再支持仅用账户密码来通过 HTTPS 操作仓库,个人访问令牌(PAT)就成为了更安全的替代方式。🔍 HTTPS 与 SSH 提交代码的区别在开始具体步骤之前,我们先通过一个表格快速了解 HTTPS 和 SSH 两种方式提交代码的主要区别,这能帮助你更好地理解为什么选择 PAT(个人访问令牌原创 2025-08-30 13:13:11 · 2073 阅读 · 75 评论 -
Java霸主未逝:不可撼动的生态与新特性的革命潜力
本文探讨了Java在当前编程语言竞争中的稳固地位与未来发展潜力。文章首先通过市场数据展示了Java在企业级应用中的持续主导地位,尤其在金融、电信等行业的关键系统中仍占据90%以上份额。随后分析了Java生态系统的核心优势,包括JVM的跨平台能力、成熟的框架体系以及强大的企业支持。最后重点介绍了Java新特性的革新潜力,如Project Loom的虚拟线程可支持百万级并发,GraalVM原生镜像技术显著提升启动性能。文章指出,尽管新兴语言不断涌现,但Java通过持续创新和生态扩展,依然保持着不可替代的地位,特原创 2025-08-24 12:38:43 · 3073 阅读 · 120 评论 -
微服务远程调用完全透传实现:响应式与非响应式解决方案
一、核心挑战:为何需要完全透传?在微服务架构中,服务间通信常面临以下痛点: 错误信息丢失:客户端库(如WebClient/RestClient)默认将4xx/5xx响应转换为异常 响应不一致:网关层无法获取下游服务的原始错误详情 调试困难:生产环境难以定位根因问题透传的核心要求: 保留原始HTTP状态码(如404、503等) 透传所有响应头(Content-Type、X-Request-ID等) 完整传递响应体(JSON/XML/二进制等)原创 2025-08-18 00:15:00 · 2376 阅读 · 108 评论 -
Caffeine 三种过期策略详解
本文详细解析Caffeine缓存的三种过期策略: 固定写入过期(expireAfterWrite):基于数据写入时间设置统一过期时长,适用于数据变更频率低的场景,如配置信息缓存。 固定访问过期(expireAfterAccess):基于最后访问时间重置过期计时,适合热点数据保留,如用户会话管理。 可变过期(expireVariably):支持为每个条目单独设置和动态调整过期时间,适用于需要精细化控制的场景,如促销活动数据。 文章通过对比表格展示核心差异,建议优先选择固定策略满足大部分场景,并提供了动态策略的原创 2025-08-07 23:42:19 · 2632 阅读 · 123 评论 -
使用公众号的消息模板给关注用户发消息
在Java中对接微信公众号并向指定关注用户发送消息,主要依赖微信公众号的消息模板功能。以下是关键步骤和代码实现:⚙️ 一、核心前提条件 公众号类型:需服务号或认证后的订阅号(个人可用测试号)。 用户关注:目标用户必须已关注公众号。 获取用户OpenID:每个用户有唯一OpenID(通过网页授权或后台接口获取)。 消息模板:在公众号后台申请模板消息,获取template_id。原创 2025-08-05 18:15:01 · 2068 阅读 · 93 评论 -
Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
Redisson高并发实战:Netty IO线程免遭阻塞的守护指南引言:Netty IO线程的珍贵性在分布式系统架构中,Netty的IO线程如同人体的心血管系统——一旦阻塞,整个系统将陷入瘫痪。Redisson作为Redis的Java客户端,其卓越性能正是建立在Netty的非阻塞IO模型之上。本文将深入剖析如何避免阻塞Netty IO线程,防止死锁灾难,并最大化Redisson的并发能力。原创 2025-08-02 14:11:17 · 2415 阅读 · 80 评论 -
Caffeine 缓存库的常用功能使用介绍
Caffeine作为新一代高性能Java缓存库,在并发场景下展现出卓越表现。它通过创新的W-TinyLFU淘汰算法实现高达99%的命中率,并采用无锁设计使吞吐量较传统方案提升5-10倍。该库提供灵活的缓存管理能力:支持基于时间(写入/访问过期)、数量或权重的淘汰策略;允许为单个Key设置专属过期时间;独创的异步刷新机制能在不阻塞请求的情况下更新数据。开发者可通过简洁的链式API配置内存控制、加载逻辑和事件监听,轻松构建高并发低延迟的智能缓存系统。其与Guava Cache兼容的接口设计,更使迁移原创 2025-07-26 19:33:01 · 2148 阅读 · 70 评论 -
一致性哈希环完整实现:从算法到生产级代码
在分布式系统的星辰大海中,数据分布与节点路由是永恒的挑战。传统哈希取模算法在节点变动时引发的数据海啸式迁移,曾让无数工程师彻夜难眠。直到一致性哈希算法如曙光般降临,它通过巧妙的环形拓扑和虚拟节点技术,实现了节点增减时仅需迁移少量数据的革命性突破。以下是完整的生产级一致性哈希实现,包含哈希环构建、虚拟节点管理、高效路由算法和平滑扩缩容能力:原创 2025-07-24 00:13:08 · 1855 阅读 · 88 评论 -
Netty实现单通道并发读写,即多路复用
在传统网络编程中,TCP连接常被视为单线程独占资源,这种设计在高并发场景下面临着严峻的性能瓶颈:每个连接只能串行处理请求,导致资源利用率低下,连接数量激增带来巨大开销。Netty共享通道连接池应运而生,它颠覆性地实现了**单TCP连接的多线程并行读写**,将连接复用提升到全新维度。下面我们将实现一个高性能的连接池,支持多个线程共享同一个通道(每个通道最大共享线程数可配置),并确保高并发获取和释放连接的效率。原创 2025-07-21 21:58:34 · 1571 阅读 · 65 评论 -
ConcurrentHashMap 原子操作详解:computeIfAbsent、computeIfPresent和putIfAbsent
在多线程编程的战场上,ConcurrentHashMap 犹如一把精密的瑞士军刀,而它的核心方法 computeIfAbsent、computeIfPresent 和 putIfAbsent 则是刀锋上最锐利的三道刃光。在百万级并发的洪流中,这些方法承载着构建线程安全数据结构的重任,却常被开发者误用或低估。当多个线程如潮水般涌向同一个键值对时,如何确保对象只创建一次?如何实现原子更新而不引发数据竞争?这正是这些方法存在的意义——它们通过桶级别锁和精心设计的原子语义,在保持高性能的同时解决了并发编程中最棘原创 2025-07-14 23:54:30 · 2193 阅读 · 61 评论 -
Maven生命周期与阶段扩展深度解析
在复杂的Java项目构建过程中,Maven的生命周期机制如同一位严谨的指挥家,协调着编译、测试、打包、部署等众多环节的先后顺序。然而,当标准构建流程无法满足特定项目架构或特殊交付需求时,开发者往往需要突破预定义生命周期的限制,定制专属的构建流水线。本文将深入剖析Maven生命周期的核心运作机制,并揭示如何通过自定义扩展实现构建流程的深度控制。原创 2025-06-27 17:06:10 · 2034 阅读 · 87 评论 -
Maven 多模块项目调试与问题排查总结
依赖冲突源于Maven的传递性依赖机制。当模块A依赖B,B依赖C(v1.0),而A同时依赖D,D依赖C(v2.0)时,冲突产生。主要类型包括: 版本冲突:同一依赖的不同版本 作用域冲突:test范围依赖泄漏到compile 缺失依赖:间接依赖未被正确传递原创 2025-06-23 19:20:09 · 2406 阅读 · 65 评论 -
Maven 大型项目分治与版本控制深度解析
在当今复杂的企业级软件开发中,Java项目规模日益庞大,单体应用逐渐被模块化、微服务化架构取代。Apache Maven作为Java生态的核心构建和依赖管理工具,在管理此类大型项目时面临着严峻挑战:如何有效协调数十甚至上百个子模块?如何确保跨模块依赖版本的一致性?如何实现模块的独立演进与发布?如何构建高效的自动化交付流水线? 这些问题的解决直接关系到项目的可维护性、开发效率和交付质量。模块化虽能解耦复杂性,但若缺乏科学的版本治理策略和自动化支撑,反而会引发依赖地狱、构建低效、发布混乱等新问题。原创 2025-06-20 00:15:00 · 1657 阅读 · 72 评论 -
Maven 多模块构建策略详解
在软件开发中,随着业务复杂度的提升,单一模块的项目结构逐渐演变为多模块架构。这种演进带来了代码复用性、职责分离等优势,却同时将构建过程拖入了新的困境。想象一个包含50+模块的电商平台:基础工具库、用户服务、商品中心、订单系统、支付网关等模块环环相扣。当开发者仅需修改支付网关的一个配置时,传统构建却要求重新编译打包所有依赖模块,构建时间从秒级跃升至分钟级。更糟糕的是,多模块间的依赖关系若未得到精确控制,可能导致构建顺序错乱,产生不可预知的运行时错误。资源文件的分散管理则加剧了维护成本——同一套图标可能需要在十原创 2025-06-18 01:00:00 · 2178 阅读 · 59 评论 -
Maven多模块项目架构设计:聚合、继承与依赖治理
在Java企业级应用的演进过程中,项目复杂度呈指数级增长。当单体应用膨胀到难以维护时,模块化拆分成为必然选择。Maven作为Java生态的核心构建工具,其多模块能力如同一把精密的瑞士军刀,但若使用不当——聚合与继承的混淆、循环依赖的陷阱、版本管理的失控——这把利器反而会割伤开发者自身。本文将深入剖析Maven多模块设计的核心原理,揭示高效协作的底层逻辑。原创 2025-06-16 12:32:14 · 2320 阅读 · 68 评论 -
Spring 路由匹配机制详解:时间复杂度从 O(n) 降至 O(log n)
在高并发、微服务化的架构浪潮中,路由匹配作为Spring框架处理HTTP请求的核心枢纽,其性能直接影响着系统的吞吐能力与响应延迟。尤其当应用承载上万个控制器路由时,传统的线性匹配机制(如Spring 4.x的AntPathMatcher)因O(n) 的时间复杂度,将引发显著的性能瓶颈。Spring 5.x的革命性突破在于引入路径模式解析树(PathPattern Parser),通过将字符串路径编译为结构化匹配指令,结合多级索引树与分层条件筛选策略,将匹配耗时从线性级降至O(log k)(k为路径深度)原创 2025-06-13 00:15:00 · 2569 阅读 · 85 评论 -
Maven 构建性能优化深度剖析:原理、策略与实践
在持续交付的浪潮中,构建速度已成为衡量研发效能的关键指标。一次缓慢的构建不仅拖延开发节奏,更会打断开发者的心流状态。Maven作为Java生态的构建基石,其性能瓶颈常隐藏在依赖解析、任务调度与日志处理等底层机制中。本文将深入剖析Maven构建链路的性能优化核心策略,揭示如何通过线程池调优、依赖预热、构建裁剪与日志治理等技术手段,将构建时间从分钟级压缩至秒级。原创 2025-06-11 08:45:57 · 2301 阅读 · 90 评论 -
Maven 多仓库治理与发布策略深度实践
想象这样一个场景:某次紧急修复中,工具团队更新了一个基础工具包,却意外覆盖了应用团队正在依赖的SNAPSHOT版本,导致生产环境构建失败。或者当某个关键模块需要回滚时,却发现Release仓库中混入了未经测试的快照版本。这些看似简单的仓库管理问题,实则可能引发级联构建失败、依赖地狱甚至生产事故。本文将深入探讨Maven多仓库治理的核心策略,通过仓库物理隔离、自动化发布流水线设计、精细化权限控制等方案,构建健壮的企业级制品管理体系。原创 2025-06-09 17:15:00 · 1937 阅读 · 89 评论 -
Spring Cloud 2025.0.0 Gateway迁移全过程详解
Spring Cloud 2025.0.0 Gateway迁移指南本文介绍了Spring Cloud 2025.0.0版本中网关模块的重大变更及迁移要点。新版本进行了深度重构,带来了显著性能提升和云原生优化。主要变化包括:依赖项重命名,新增webflux/webmvc区分配置前缀统一调整,采用模块化命名规范核心类优化:ReactiveLoadBalancerClientFilter实现负载均衡PathRoutePredicateFactory处理路由规则原创 2025-06-06 18:41:52 · 4580 阅读 · 140 评论 -
Maven 构建缓存与离线模式
摘要:本文深入解析Maven构建优化的四大核心策略:1)本地仓库缓存管理,通过dependency:purge精准清理冗余依赖;2)离线模式(-o)的适用场景与风险控制;3)增量构建方案对比,包括maven-compiler-plugin和incremental-build-plugin的实现;4)依赖下载的健壮性配置。文章结合原理分析、典型场景和实操命令,帮助开发者提升构建效率30%-70%,尤其适用于复杂项目、CI/CD流水线及离线开发环境。关键提示包括快照版本清理、离线仓库完整性验证及增量编译的类级依原创 2025-06-04 11:57:08 · 1978 阅读 · 111 评论 -
Nacos-3.0.1适配PostgreSQL数据库
从Nacos2.2版本开始,Nacos提供了数据源扩展插件,以便让需要进行其他数据库适配的用户自己编写插件来保存数据。当前项目插件目前已简单适配Postgresql。当前项目是基于Nacos3.0.1nacos团队的贡献,你们一如既往的迭代nacos版本,给你们说声辛苦了,但是却忘记了nacos的其他数据源适配,比如postgresql。原创 2025-05-26 09:27:48 · 3143 阅读 · 115 评论 -
Maven 仓库类型与镜像策略
本文深入解析Maven仓库体系,涵盖本地与远程仓库的运作机制、镜像配置策略及安全实践。主要内容包括:仓库分类:剖析本地仓库的存储结构(遵循GroupID/ArtifactID/Version范式)和缓存策略(updatePolicy四种更新机制),对比中央仓库(日均50亿请求)与私有仓库(Nexus/Artifactory)的架构差异。镜像策略:详解镜像匹配语法(精确/通配/排除/复合匹配),揭示"最长匹配原则"算法,指出全量镜像可能导致SNAPSHOT同步问题,建议为SNAPSHOT配置独立镜原创 2025-05-30 00:15:00 · 2341 阅读 · 69 评论 -
Maven Profile多环境构建实战指南
Maven Profile多环境构建实战指南本文系统讲解Maven Profile在Java项目多环境配置管理中的实战应用。主要内容包括:标准化环境配置:定义dev/test/staging/prod四套环境规范,通过pom.xml声明式配置各环境Profile,支持基于OS、文件、属性的智能激活策略。环境属性管理:采用分层目录结构组织环境专属配置文件,结合资源过滤机制实现动态属性替换,支持公共配置继承与环境特例覆盖。CI/CD集成方案:提供Jenkins、GitLab CI等主流工具的原创 2025-05-28 00:15:00 · 1945 阅读 · 51 评论 -
Maven Profile在插件与依赖中的深度集成
本文介绍了Maven Profile在多环境构建中的深度应用,重点探讨了其在插件配置和依赖管理中的高级用法。主要内容包括:插件动态控制:通过Profile实现开发环境下跳过静态检查(如Checkstyle),CI环境强制质量门禁(如Jacoco覆盖率检查),并详细解析了配置优先级、多模块管理等技术细节。依赖精准治理:利用Profile隔离测试专用依赖(如WireMock),区分不同环境的依赖版本(如Selenium本地/云端驱动),并对比了与optional依赖的差异。原创 2025-05-26 00:15:00 · 2156 阅读 · 60 评论 -
Maven Profile高级策略与冲突解决
Maven Profile高级策略与冲突解决方案本文深入解析Maven Profile在多环境部署中的核心作用,针对复杂项目中的三大痛点(组合条件不可预测性、版本耦合风险、配置合并盲区)提供系统化解决方案。主要内容包括:Profile组合激活机制:剖析6种标准激活条件的底层实现,详解AND/OR逻辑的三种工程范式,提供命令行、Shell预处理、属性表达式等灵活组合方案。精准特性开关设计:构建构建时、运行时、混合式三层开关模型,演示动态资源过滤和条件化依赖树等实践技巧,实现环境配置的精准控制。原创 2025-05-25 07:53:00 · 2173 阅读 · 54 评论 -
Java虚拟机面试题:内存管理(上)
程序计数器()也被称为 PC 寄存器,是一块较小的内存空间。它可以看作是当前线程所执行的字节码行号指示器。Java 虚拟机栈(),通常指的就是“栈”,它的生命周期与线程相同。当线程执行一个方法时,会创建一个对应的栈帧,用于存储局部变量表操作数栈动态链接方法出口等信息,然后栈帧会被压入栈中。当方法执行完毕后,栈帧会从栈中移除。本地方法栈()与虚拟机栈相似,区别在于虚拟机栈是为 JVM 执行 Java 编写的方法服务的,而本地方法栈是为 Java 调用本地(native)方法服务的,由 C/C++ 编写。原创 2025-05-24 11:28:33 · 888 阅读 · 54 评论 -
深入理解 JVM 的垃圾收集器:CMS、G1、ZGC
本篇内容我们主要介绍了 CMS、G1 和 ZGC 三种垃圾收集器,它们都是分区收集器,都是为了降低 GC 停顿时间而生的,但是它们各有优缺点,我们可以根据业务场景选择合适的垃圾收集器。垃圾回收对于 Java 党来说,是一个绕不开的话题,工作中涉及到的调优工作也经常围绕着垃圾回收器展开。面对不同的业务场景,往往需要不同的垃圾收集器才能保证 GC 性能,因此,对于面大厂或者有远大志向的球友可以卷一下垃圾收集器。就目前来说,JVM 的垃圾收集器主要分为两大类:分代收集器和分区收集器,原创 2025-05-21 11:28:50 · 1663 阅读 · 45 评论 -
Maven Profile中的资源过滤与属性管理
本文深入探讨了Maven Profile在资源过滤与属性管理中的应用,旨在解决多环境构建中的配置差异化问题。通过Maven的Profile机制,结合资源过滤功能,开发者可以实现环境隔离、属性覆盖和动态占位符替换,从而构建健壮的持续交付流水线。文章详细介绍了资源目录的标准化布局、过滤机制的双向绑定、多环境配置的进阶模式,以及属性覆盖的优先级体系。此外,还解析了动态替换的引擎原理,包括占位符解析器的工作流和多级占位符的解析示例。最后,文章探讨了敏感信息的安全处理方案,如Jasypt加密、Vault动态注入等原创 2025-05-23 00:15:00 · 1687 阅读 · 43 评论 -
Maven Profile基础与激活机制
本文深入探讨了Maven Profile的基础概念与激活机制,旨在帮助开发者在多环境构建中实现配置的动态切换。文章首先介绍了Profile的元数据规范体系,包括标识符命名规范和作用域分层体系,强调了POM级和Settings级Profile的不同应用场景。接着,详细解析了多维度激活策略,涵盖基于文件系统的触发机制、操作系统环境适配、属性驱动激活以及JDK版本约束等方面。通过这些策略,开发者可以根据不同条件自动激活相应的Profile,从而实现构建过程的灵活配置。原创 2025-05-21 00:15:00 · 1643 阅读 · 65 评论
分享