
Java
文章平均质量分 95
Java混杂文章分类
越重天
优快云博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。技术合作请加本人wx(注明来自csdn):foreast_sea
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
微服务远程调用完全透传实现:响应式与非响应式解决方案
一、核心挑战:为何需要完全透传?在微服务架构中,服务间通信常面临以下痛点: 错误信息丢失:客户端库(如WebClient/RestClient)默认将4xx/5xx响应转换为异常 响应不一致:网关层无法获取下游服务的原始错误详情 调试困难:生产环境难以定位根因问题透传的核心要求: 保留原始HTTP状态码(如404、503等) 透传所有响应头(Content-Type、X-Request-ID等) 完整传递响应体(JSON/XML/二进制等)原创 2025-08-18 00:15:00 · 1736 阅读 · 75 评论 -
Caffeine 三种过期策略详解
本文详细解析Caffeine缓存的三种过期策略: 固定写入过期(expireAfterWrite):基于数据写入时间设置统一过期时长,适用于数据变更频率低的场景,如配置信息缓存。 固定访问过期(expireAfterAccess):基于最后访问时间重置过期计时,适合热点数据保留,如用户会话管理。 可变过期(expireVariably):支持为每个条目单独设置和动态调整过期时间,适用于需要精细化控制的场景,如促销活动数据。 文章通过对比表格展示核心差异,建议优先选择固定策略满足大部分场景,并提供了动态策略的原创 2025-08-07 23:42:19 · 2133 阅读 · 102 评论 -
使用公众号的消息模板给关注用户发消息
在Java中对接微信公众号并向指定关注用户发送消息,主要依赖微信公众号的消息模板功能。以下是关键步骤和代码实现:⚙️ 一、核心前提条件 公众号类型:需服务号或认证后的订阅号(个人可用测试号)。 用户关注:目标用户必须已关注公众号。 获取用户OpenID:每个用户有唯一OpenID(通过网页授权或后台接口获取)。 消息模板:在公众号后台申请模板消息,获取template_id。原创 2025-08-05 18:15:01 · 1755 阅读 · 77 评论 -
Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
Redisson高并发实战:Netty IO线程免遭阻塞的守护指南引言:Netty IO线程的珍贵性在分布式系统架构中,Netty的IO线程如同人体的心血管系统——一旦阻塞,整个系统将陷入瘫痪。Redisson作为Redis的Java客户端,其卓越性能正是建立在Netty的非阻塞IO模型之上。本文将深入剖析如何避免阻塞Netty IO线程,防止死锁灾难,并最大化Redisson的并发能力。原创 2025-08-02 14:11:17 · 2107 阅读 · 64 评论 -
Caffeine 缓存库的常用功能使用介绍
Caffeine作为新一代高性能Java缓存库,在并发场景下展现出卓越表现。它通过创新的W-TinyLFU淘汰算法实现高达99%的命中率,并采用无锁设计使吞吐量较传统方案提升5-10倍。该库提供灵活的缓存管理能力:支持基于时间(写入/访问过期)、数量或权重的淘汰策略;允许为单个Key设置专属过期时间;独创的异步刷新机制能在不阻塞请求的情况下更新数据。开发者可通过简洁的链式API配置内存控制、加载逻辑和事件监听,轻松构建高并发低延迟的智能缓存系统。其与Guava Cache兼容的接口设计,更使迁移原创 2025-07-26 19:33:01 · 1845 阅读 · 61 评论 -
一致性哈希环完整实现:从算法到生产级代码
在分布式系统的星辰大海中,数据分布与节点路由是永恒的挑战。传统哈希取模算法在节点变动时引发的数据海啸式迁移,曾让无数工程师彻夜难眠。直到一致性哈希算法如曙光般降临,它通过巧妙的环形拓扑和虚拟节点技术,实现了节点增减时仅需迁移少量数据的革命性突破。以下是完整的生产级一致性哈希实现,包含哈希环构建、虚拟节点管理、高效路由算法和平滑扩缩容能力:原创 2025-07-24 00:13:08 · 1607 阅读 · 79 评论 -
Netty实现单通道并发读写,即多路复用
在传统网络编程中,TCP连接常被视为单线程独占资源,这种设计在高并发场景下面临着严峻的性能瓶颈:每个连接只能串行处理请求,导致资源利用率低下,连接数量激增带来巨大开销。Netty共享通道连接池应运而生,它颠覆性地实现了**单TCP连接的多线程并行读写**,将连接复用提升到全新维度。下面我们将实现一个高性能的连接池,支持多个线程共享同一个通道(每个通道最大共享线程数可配置),并确保高并发获取和释放连接的效率。原创 2025-07-21 21:58:34 · 1396 阅读 · 53 评论 -
ConcurrentHashMap 原子操作详解:computeIfAbsent、computeIfPresent和putIfAbsent
在多线程编程的战场上,ConcurrentHashMap 犹如一把精密的瑞士军刀,而它的核心方法 computeIfAbsent、computeIfPresent 和 putIfAbsent 则是刀锋上最锐利的三道刃光。在百万级并发的洪流中,这些方法承载着构建线程安全数据结构的重任,却常被开发者误用或低估。当多个线程如潮水般涌向同一个键值对时,如何确保对象只创建一次?如何实现原子更新而不引发数据竞争?这正是这些方法存在的意义——它们通过桶级别锁和精心设计的原子语义,在保持高性能的同时解决了并发编程中最棘原创 2025-07-14 23:54:30 · 1928 阅读 · 53 评论 -
Maven生命周期与阶段扩展深度解析
在复杂的Java项目构建过程中,Maven的生命周期机制如同一位严谨的指挥家,协调着编译、测试、打包、部署等众多环节的先后顺序。然而,当标准构建流程无法满足特定项目架构或特殊交付需求时,开发者往往需要突破预定义生命周期的限制,定制专属的构建流水线。本文将深入剖析Maven生命周期的核心运作机制,并揭示如何通过自定义扩展实现构建流程的深度控制。原创 2025-06-27 17:06:10 · 1873 阅读 · 82 评论 -
Maven 多模块项目调试与问题排查总结
依赖冲突源于Maven的传递性依赖机制。当模块A依赖B,B依赖C(v1.0),而A同时依赖D,D依赖C(v2.0)时,冲突产生。主要类型包括: 版本冲突:同一依赖的不同版本 作用域冲突:test范围依赖泄漏到compile 缺失依赖:间接依赖未被正确传递原创 2025-06-23 19:20:09 · 2185 阅读 · 59 评论 -
Maven 大型项目分治与版本控制深度解析
在当今复杂的企业级软件开发中,Java项目规模日益庞大,单体应用逐渐被模块化、微服务化架构取代。Apache Maven作为Java生态的核心构建和依赖管理工具,在管理此类大型项目时面临着严峻挑战:如何有效协调数十甚至上百个子模块?如何确保跨模块依赖版本的一致性?如何实现模块的独立演进与发布?如何构建高效的自动化交付流水线? 这些问题的解决直接关系到项目的可维护性、开发效率和交付质量。模块化虽能解耦复杂性,但若缺乏科学的版本治理策略和自动化支撑,反而会引发依赖地狱、构建低效、发布混乱等新问题。原创 2025-06-20 00:15:00 · 1450 阅读 · 63 评论 -
Maven 多模块构建策略详解
在软件开发中,随着业务复杂度的提升,单一模块的项目结构逐渐演变为多模块架构。这种演进带来了代码复用性、职责分离等优势,却同时将构建过程拖入了新的困境。想象一个包含50+模块的电商平台:基础工具库、用户服务、商品中心、订单系统、支付网关等模块环环相扣。当开发者仅需修改支付网关的一个配置时,传统构建却要求重新编译打包所有依赖模块,构建时间从秒级跃升至分钟级。更糟糕的是,多模块间的依赖关系若未得到精确控制,可能导致构建顺序错乱,产生不可预知的运行时错误。资源文件的分散管理则加剧了维护成本——同一套图标可能需要在十原创 2025-06-18 01:00:00 · 2051 阅读 · 49 评论 -
Maven多模块项目架构设计:聚合、继承与依赖治理
在Java企业级应用的演进过程中,项目复杂度呈指数级增长。当单体应用膨胀到难以维护时,模块化拆分成为必然选择。Maven作为Java生态的核心构建工具,其多模块能力如同一把精密的瑞士军刀,但若使用不当——聚合与继承的混淆、循环依赖的陷阱、版本管理的失控——这把利器反而会割伤开发者自身。本文将深入剖析Maven多模块设计的核心原理,揭示高效协作的底层逻辑。原创 2025-06-16 12:32:14 · 2073 阅读 · 56 评论 -
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 · 2350 阅读 · 80 评论 -
Maven 构建性能优化深度剖析:原理、策略与实践
在持续交付的浪潮中,构建速度已成为衡量研发效能的关键指标。一次缓慢的构建不仅拖延开发节奏,更会打断开发者的心流状态。Maven作为Java生态的构建基石,其性能瓶颈常隐藏在依赖解析、任务调度与日志处理等底层机制中。本文将深入剖析Maven构建链路的性能优化核心策略,揭示如何通过线程池调优、依赖预热、构建裁剪与日志治理等技术手段,将构建时间从分钟级压缩至秒级。原创 2025-06-11 08:45:57 · 2047 阅读 · 84 评论 -
Maven 多仓库治理与发布策略深度实践
想象这样一个场景:某次紧急修复中,工具团队更新了一个基础工具包,却意外覆盖了应用团队正在依赖的SNAPSHOT版本,导致生产环境构建失败。或者当某个关键模块需要回滚时,却发现Release仓库中混入了未经测试的快照版本。这些看似简单的仓库管理问题,实则可能引发级联构建失败、依赖地狱甚至生产事故。本文将深入探讨Maven多仓库治理的核心策略,通过仓库物理隔离、自动化发布流水线设计、精细化权限控制等方案,构建健壮的企业级制品管理体系。原创 2025-06-09 17:15:00 · 1788 阅读 · 87 评论 -
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 · 3882 阅读 · 134 评论 -
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 · 1810 阅读 · 101 评论 -
Nacos-3.0.1适配PostgreSQL数据库
从Nacos2.2版本开始,Nacos提供了数据源扩展插件,以便让需要进行其他数据库适配的用户自己编写插件来保存数据。当前项目插件目前已简单适配Postgresql。当前项目是基于Nacos3.0.1nacos团队的贡献,你们一如既往的迭代nacos版本,给你们说声辛苦了,但是却忘记了nacos的其他数据源适配,比如postgresql。原创 2025-05-26 09:27:48 · 2864 阅读 · 113 评论 -
Maven 仓库类型与镜像策略
本文深入解析Maven仓库体系,涵盖本地与远程仓库的运作机制、镜像配置策略及安全实践。主要内容包括:仓库分类:剖析本地仓库的存储结构(遵循GroupID/ArtifactID/Version范式)和缓存策略(updatePolicy四种更新机制),对比中央仓库(日均50亿请求)与私有仓库(Nexus/Artifactory)的架构差异。镜像策略:详解镜像匹配语法(精确/通配/排除/复合匹配),揭示"最长匹配原则"算法,指出全量镜像可能导致SNAPSHOT同步问题,建议为SNAPSHOT配置独立镜原创 2025-05-30 00:15:00 · 2208 阅读 · 67 评论 -
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 · 1838 阅读 · 49 评论 -
Maven Profile在插件与依赖中的深度集成
本文介绍了Maven Profile在多环境构建中的深度应用,重点探讨了其在插件配置和依赖管理中的高级用法。主要内容包括:插件动态控制:通过Profile实现开发环境下跳过静态检查(如Checkstyle),CI环境强制质量门禁(如Jacoco覆盖率检查),并详细解析了配置优先级、多模块管理等技术细节。依赖精准治理:利用Profile隔离测试专用依赖(如WireMock),区分不同环境的依赖版本(如Selenium本地/云端驱动),并对比了与optional依赖的差异。原创 2025-05-26 00:15:00 · 2015 阅读 · 60 评论 -
Maven Profile高级策略与冲突解决
Maven Profile高级策略与冲突解决方案本文深入解析Maven Profile在多环境部署中的核心作用,针对复杂项目中的三大痛点(组合条件不可预测性、版本耦合风险、配置合并盲区)提供系统化解决方案。主要内容包括:Profile组合激活机制:剖析6种标准激活条件的底层实现,详解AND/OR逻辑的三种工程范式,提供命令行、Shell预处理、属性表达式等灵活组合方案。精准特性开关设计:构建构建时、运行时、混合式三层开关模型,演示动态资源过滤和条件化依赖树等实践技巧,实现环境配置的精准控制。原创 2025-05-25 07:53:00 · 2077 阅读 · 52 评论 -
Java虚拟机面试题:内存管理(上)
程序计数器()也被称为 PC 寄存器,是一块较小的内存空间。它可以看作是当前线程所执行的字节码行号指示器。Java 虚拟机栈(),通常指的就是“栈”,它的生命周期与线程相同。当线程执行一个方法时,会创建一个对应的栈帧,用于存储局部变量表操作数栈动态链接方法出口等信息,然后栈帧会被压入栈中。当方法执行完毕后,栈帧会从栈中移除。本地方法栈()与虚拟机栈相似,区别在于虚拟机栈是为 JVM 执行 Java 编写的方法服务的,而本地方法栈是为 Java 调用本地(native)方法服务的,由 C/C++ 编写。原创 2025-05-24 11:28:33 · 857 阅读 · 50 评论 -
深入理解 JVM 的垃圾收集器:CMS、G1、ZGC
本篇内容我们主要介绍了 CMS、G1 和 ZGC 三种垃圾收集器,它们都是分区收集器,都是为了降低 GC 停顿时间而生的,但是它们各有优缺点,我们可以根据业务场景选择合适的垃圾收集器。垃圾回收对于 Java 党来说,是一个绕不开的话题,工作中涉及到的调优工作也经常围绕着垃圾回收器展开。面对不同的业务场景,往往需要不同的垃圾收集器才能保证 GC 性能,因此,对于面大厂或者有远大志向的球友可以卷一下垃圾收集器。就目前来说,JVM 的垃圾收集器主要分为两大类:分代收集器和分区收集器,原创 2025-05-21 11:28:50 · 1593 阅读 · 37 评论 -
Maven Profile中的资源过滤与属性管理
本文深入探讨了Maven Profile在资源过滤与属性管理中的应用,旨在解决多环境构建中的配置差异化问题。通过Maven的Profile机制,结合资源过滤功能,开发者可以实现环境隔离、属性覆盖和动态占位符替换,从而构建健壮的持续交付流水线。文章详细介绍了资源目录的标准化布局、过滤机制的双向绑定、多环境配置的进阶模式,以及属性覆盖的优先级体系。此外,还解析了动态替换的引擎原理,包括占位符解析器的工作流和多级占位符的解析示例。最后,文章探讨了敏感信息的安全处理方案,如Jasypt加密、Vault动态注入等原创 2025-05-23 00:15:00 · 1601 阅读 · 39 评论 -
Maven Profile基础与激活机制
本文深入探讨了Maven Profile的基础概念与激活机制,旨在帮助开发者在多环境构建中实现配置的动态切换。文章首先介绍了Profile的元数据规范体系,包括标识符命名规范和作用域分层体系,强调了POM级和Settings级Profile的不同应用场景。接着,详细解析了多维度激活策略,涵盖基于文件系统的触发机制、操作系统环境适配、属性驱动激活以及JDK版本约束等方面。通过这些策略,开发者可以根据不同条件自动激活相应的Profile,从而实现构建过程的灵活配置。原创 2025-05-21 00:15:00 · 1538 阅读 · 57 评论 -
Maven 插件调试与性能调优
本文深入探讨了Maven插件调试与性能调优的实践方法。首先,通过剖析Maven生命周期与插件绑定原理,结合mvn -X调试命令,解决多模块构建中的插件冲突问题。其次,构建精准的耗时分析体系,利用火焰图和模块级耗时报告识别性能瓶颈,优化构建流程。接着,探讨构建流程的精简艺术,提出安全跳过策略和智能条件执行方法,避免过度裁剪带来的风险。最后,深入分析Maven并行构建的并发模型,基于Amdahl定律计算最优线程数,提升构建效率。本文为开发者提供了一套经过生产环境验证的Maven效能提升方案,帮助解决构建过程中的原创 2025-05-19 00:15:00 · 1517 阅读 · 56 评论 -
Maven 插件扩展点与自定义生命周期
本文深入探讨了Maven插件扩展点与自定义生命周期的实现机制。首先介绍了Maven的核心生命周期模型,包括Clean、Default和Site生命周期,并详细解析了扩展点的技术实现原理,涉及Plexus组件框架、Maven Core Extensions API和Custom Lifecycle注册机制。通过案例分析,展示了如何通过扩展机制实现多模块并行构建等复杂场景。接着,文章详细讲解了自定义生命周期阶段的实现,包括lifecycle.xml的语法规范和阶段插入策略的工程实践原创 2025-05-17 21:36:18 · 1697 阅读 · 45 评论 -
RocketMQ面试题:原理部分
在操作系统中,使用传统的方式,数据需要经历几次拷贝,还要经历用户态/内核态切换。从磁盘复制数据到内核态内存;从内核态内存复制到用户态内存;然后从用户态内存复制到网络驱动的内核态内存;最后是从网络驱动的内核态内存复制到网卡中进行传输。所以,可以通过零拷贝的方式,减少用户态与内核态的上下文切换和内存拷贝的次数,用来提升 I/O 的性能。零拷贝比较常见的实现方式是mmap,这种机制在 Java 中是通过 MappedByteBuffer 实现的。原创 2025-05-17 11:28:42 · 846 阅读 · 41 评论 -
Java并发编程面试题:基础(11题)
进程说简单点就是我们在电脑上启动的一个个应用,比如我们启动一个浏览器,就会启动了一个浏览器进程。进程是操作系统资源分配的最小单位,它包括了程序、数据和进程控制块等。线程是操作系统中调度的最小单位,它是进程中的独立执行单元。多个线程可以共享同一个进程的资源,如内存和文件句柄,但每个线程都有自己独立的栈和寄存器。与进程相比,线程的创建和上下文切换开销更小,因此在需要并发执行任务时,多线程是一种常用的解决方案。在编程中,多线程的典型应用包括并行处理、I/O 操作、并发服务器等场景。原创 2025-05-17 11:28:11 · 1286 阅读 · 26 评论 -
Maven 插件参数注入与Mojo开发详解
本文深入探讨了Maven插件开发中的参数注入机制与Mojo开发的关键技术。首先介绍了Mojo类与@Mojo注解的绑定机制,包括Mojo的运行时模型、注解的元数据解析以及插件前缀的注册规则。接着,详细分析了参数注入的两种范式:字段注入和Setter方法注入,并解释了它们的适用场景和优先级规则。最后,文章探讨了默认值设置的进阶技巧,特别是动态解析和复合默认值的处理策略。通过本文,读者可以全面理解Maven插件开发的参数处理机制,掌握如何在实际开发中高效使用这些技术。原创 2025-05-16 00:15:00 · 1651 阅读 · 91 评论 -
Java并发编程面试题:并发工具类(10题)
①、HashMap 是非线程安全的,多线程环境下应该使用 ConcurrentHashMap。②、由于 HashMap 仅在单线程环境下使用,所以不需要考虑同步问题,因此效率高于 ConcurrentHashMap。原创 2025-05-14 11:28:35 · 1185 阅读 · 44 评论 -
Maven 动态插件配置:Profile的灵活集成实践
本文深入探讨了Maven Profile机制在动态插件配置中的灵活应用,旨在解决多环境部署和差异化构建需求带来的挑战。通过Profile,可以实现插件版本动态覆盖、环境敏感行为定制、执行流动态编排以及多策略协同。文章首先解析了Profile的元数据构成和激活拓扑,随后展示了如何通过Profile实现插件版本的三层模型控制和安全更新策略。接着,探讨了环境敏感的插件行为定制,包括资源过滤的动态绑定和插件参数的动态注入。最后,文章介绍了执行流的动态编排艺术,特别是Maven执行阶段与插件的绑定关系。原创 2025-05-14 00:15:00 · 4521 阅读 · 63 评论 -
Maven 执行单元(Execution)的精细化控制
执行单元(Execution)作为Maven生命周期与插件目标之间的核心纽带,承担着连接抽象构建阶段与具体实施动作的关键职责。其设计哲学体现了Maven"约定优于配置"的理念,但这也意味着开发者必须深入理解其运行机制才能突破默认约定的限制。本文将聚焦Execution的四个关键控制维度:ID唯一性规范、执行顺序控制、条件跳过机制和继承性管理,通过解剖其设计原理与实战应用,揭示如何在这些"微观层面"实现构建流程的精确调控。原创 2025-05-12 00:15:00 · 1458 阅读 · 86 评论 -
Maven 插件配置分层架构深度解析
某金融系统的聚合工程包含37个子模块,父POM中声明的Checkstyle插件配置在子模块中频繁失效,导致代码规范检查形同虚设。开发团队耗费三天时间排查,最终发现问题竟源于某个子模块无意间重写了execution的report目标。这种因配置覆盖规则理解偏差导致的构建问题,在大型项目中屡见不鲜。本文将深入剖析Maven插件配置的分层架构,揭示其"执行配置>公共配置>父POM"的优先级本质,解构execution的合并与覆盖机制,帮助开发者构建出坚如磐石的配置体系。原创 2025-05-10 22:53:26 · 1648 阅读 · 55 评论 -
Maven 插件机制与生命周期管理
在Maven的宇宙中,每个构件(包括插件)都通过唯一的坐标标识。这种坐标体系由三个基本元素构成: GroupId:组织或项目的唯一标识符,采用反向域名规范。例如org.apache.maven.plugins ArtifactId:构件的具体名称,需在GroupId下保持唯一。例如maven-compiler-plugin Version:构件的版本号,遵循语义化版本规范。例如3.11.0原创 2025-05-09 01:30:00 · 2615 阅读 · 87 评论 -
深入理解Java三大特性:封装、继承和多态
继承(英语:inheritance)是面向对象软件技术中的一个概念。它使得复用以前的代码非常容易。Java 语言是非常典型的面向对象的语言,在 Java 语言中继承就是子类继承父类的属性和方法,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的方法。我们来举个例子:动物有很多种,是一个比较大的概念。在动物的种类中,我们熟悉的有猫(Cat)、狗(Dog)等动物,它们都有动物的一般特征(比如能够吃东西,能够发出声音),不过又在细节上有区别(不同动物的吃的不同,叫声不一样)原创 2025-05-07 11:28:32 · 826 阅读 · 55 评论 -
Java 内存溢出排查优化实战:彻底干掉臭名昭著的 OOM
OutOfMemoryError,也就是臭名昭著的 OOM(内存溢出),相信很多球友都遇到过,相对于常见的业务异常,如数组越界、空指针等,OOM 问题 更难难定位和解决。这篇内容就以之前碰到的一次线上内存溢出的定位、解决问题的方式展开;希望能对碰到类似问题的球友带来思路和帮助。主要从表现-->排查-->定位-->解决 四个步骤来分析和解决问题。原创 2025-05-07 11:28:01 · 1353 阅读 · 37 评论 -
Maven 依赖发布与仓库治理
如何构建安全、高效、可控的Maven仓库治理体系,从而避免版本冲突引发生产事故?本文将剖析Maven仓库治理的完整知识体系,重点解读distributionManagement的核心配置机制,揭示Nexus/Artifactory等私有仓库的权限控制精髓,解析仓库镜像的匹配规则与优先级策略,并深入探讨依赖下载的优化之道。原创 2025-05-07 00:15:00 · 2050 阅读 · 62 评论