
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
Java 字符串驻留(`intern()`)方法详解(Java 7+)简单来说:如果常量池中有该字符串就返回的是常量池中的对象,如果没有的话,返回这个堆对象本身的引用,同时常量池中存储堆对象的引用(指向堆对象)。
Arthas是阿里巴巴开源的一款强大的 Java 在线诊断工具,尤其适用于生产环境。实时查看 JVM 内存、线程、GC 状态查看类是从哪个 jar 包加载的动态观察方法是否执行方法执行耗时、异常堆栈分析Dump 堆内存,辅助定位内存泄漏步骤工具说明1jpsjstat确认进程与初步内存状态2实时监控 JVM 内存/GC 状况3导出堆内存快照4VisualVM图形化分析堆内存内容5源码阅读结合代码逻辑
在 Java 应用的性能调优过程中,垃圾收集器(GC)是一个至关重要的环节。尤其是在企业级大内存、高并发场景中,一个选择不当的垃圾收集器可能直接导致系统性能崩溃,甚至生产事故。而在众多 GC 策略中,我几乎在所有的 Java 项目中都优先推荐使用 G1(G1 First)垃圾收集器。本文将深入解析为什么推荐 G1,并结合 JVM 内部结构进行对比、说明其机制与优势。
在 Java 并发编程中,线程池是提高系统性能和资源利用率的关键机制之一。然而,阿里巴巴的开发规范中明确禁止使用 JDK 提供的内置线程池(如 Executors 中的四种线程池)。本文将深入分析其中原因,并结合计算密集型与 IO 密集型业务场景,讲解如何正确设置和使用线程池,避免资源耗尽,构建更加稳健的系统。
本文介绍了Java 8引入的方法引用特性,它是Lambda表达式的简化写法,通过::语法直接引用已有方法。方法引用必须基于函数式接口,有四种常见形式:引用静态方法(ClassName::staticMethod)、引用特定对象的实例方法(instance::method)、引用任意对象的实例方法(ClassName::method)以及引用构造方法(ClassName::new)。文章通过示例展示
Java并发编程中,CyclicBarrier和CountDownLatch是两大核心同步工具,但开发者常混淆其用法。CyclicBarrier用于线程集合点,让多个线程在同步点等待后统一执行,适合期货交易统一上报等"并发起步"场景。CountDownLatch则用于主线程等待子线程完成,适合数据入库后汇总等"任务依赖"场景。
本文解析了Java中ConcurrentHashMap的线程安全机制。首先指出了HashMap在多线程环境下存在的问题:数据覆盖、环形链表和缺乏同步措施。接着详细对比了JDK 7和JDK 8的实现方式:JDK 7采用分段锁(Segment)机制,每个Segment独立加锁;JDK 8则改用更精细的CAS+synchronized+红黑树方案,通过桶级别锁和volatile保证可见性。文章通过代码示
本文系统介绍了分布式架构中四种数据库(MySQL、PostgreSQL、Redis、MongoDB)的数据变更感知(CDC)实现方案。MySQL基于Binlog的RBR模式,PostgreSQL通过WAL逻辑复制槽,MongoDB使用官方Change Streams,Redis则依赖有限的Keyspace通知功能。文章详细对比了各方案优缺点,并提出了通用工程化实践,包括全量+增量同步、断点续传、事
本文全面解析了云计算与云原生的区别与联系。云计算是面向资源的产品形态,提供IaaS、PaaS、SaaS等服务模式,核心在于弹性资源供给和按需付费。云原生则是技术实现体系,包含微服务、容器化、DevOps等五大支柱,旨在最大化利用云资源优势。两者互为补充:云计算提供基础设施,云原生提供架构方法。文章建议从容器、K8s等技术入手系统学习云原生,最终实现企业高效用云目标。理解二者的本质差异,有助于开发者
在当今容器化大行其道、云原生理念深入人心的背景下,越来越多的企业开始尝试将各种系统组件以 Docker 容器的形式进行部署,包括数据库。但数据库不同于无状态服务,其对持久化存储、性能隔离、数据一致性和稳定性有着更高的要求。今天我们就深入探讨一个非常务实的问题:是否应该使用 Docker 来部署 MySQL 数据库容器?答案并不绝对,但笔者并不推荐使用 Docker 来部署 MySQL,理由如下,我







