自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 GC Roots

当我们把基于 Spring Boot 构建的微服务(例如集成了 Nacos、RabbitMQ 或复杂的工作流引擎)打包进 Docker 容器并在生产环境运行时,默认的 JVM 参数往往无法发挥最佳性能。在较老的 JDK 版本中,JVM 无法感知 Docker 容器的内存限制,它会读取宿主机的物理内存来分配堆,这极易导致容器因为超出资源限制被 Linux 内核直接。:为了防止在清扫垃圾时,程序还在不停地制造新垃圾或改变对象引用,GC 会在特定阶段暂停所有用户的业务线程。,并为它们配备了不同的垃圾收集器。

2026-03-03 16:54:13 704

原创 深入理解 Java 虚拟机 (JVM) —— 核心原理教学指南

JVM(Java Virtual Machine)本质上是一个运行在操作系统之上的。我们编写的.java源码文件,会被编译器编译成.class字节码文件。JVM 的核心作用,就是将这些字节码翻译成当前操作系统(Windows、Linux、macOS 等)能够理解的机器码并执行。这就是 Java 实现“一次编写,到处运行”的核心。.class。

2026-03-03 16:49:57 800

原创 Nacos 2.x 的“单入口完全代理”

本文介绍了Nacos 2.x实现"单入口完全代理"的配置方案。核心要点包括: 通过Nginx同时代理HTTP(8848端口)和TCP/gRPC(9848端口)流量 修改nginx.conf文件,分别配置stream模块处理gRPC和http模块处理HTTP请求 调整Docker Compose配置,暴露8848和9848端口 Java客户端只需配置Nginx地址(8848端口),自动计算gRPC端口(9848)连接 验证方法包括访问控制台和观察客户端连接日志 该方案实现了客户端只需配置单

2026-03-02 09:14:38 449

原创 Docker 核心知识体系

本文摘要: Docker核心知识体系包含镜像、容器和仓库三大概念,通过配置阿里云镜像加速可解决国内下载慢的问题。文章详细介绍了Docker安装、镜像拉取与容器运行操作,重点讲解了如何编写Dockerfile构建自定义镜像(以Python Flask应用为例),并演示了镜像打包与推送至Docker Hub的完整流程。最后提供了Docker常用命令速查表,涵盖镜像操作、容器管理、交互调试等日常开发场景,帮助开发者快速掌握Docker的核心使用技能。

2026-03-02 09:14:05 616

原创 降本增效核武器:GraalVM 下的 Spring Cloud Alibaba 极致优化

针对你提到的 **Python + Java 混合开发** 以及 **服务器降本增效** 的迫切需求,传统的 Java 微服务(基于 JVM JIT 模式)往往存在启动慢、内存占用高(至少几百 MB 起步)的问题,这在资源受限的容器或混合部署环境中是非常不利的。**GraalVM Native Image(本机镜像)** 技术正是解决这一痛点的“核武器”。它能将 Spring Cloud Alibaba 应用编译成不依赖 JVM 的独立二进制可执行文件,实现**毫秒级启动**和**极低的内存占用**。

2026-02-28 09:39:02 521

原创 深度解构:Spring Cloud Alibaba 微服务全栈体系

Spring Cloud Alibaba (SCA) 是一套经过双十一验证的微服务全栈解决方案,核心组件包括Nacos、Sentinel和Seata。Nacos作为服务注册与配置中心,采用Raft和Distro协议实现数据一致性,通过推拉结合机制保证服务发现实时性。Sentinel作为流量防卫兵,基于责任链模式实现多样化流量控制与熔断降级。Seata提供分布式事务支持。SCA整合了高性能中间件,提供一站式微服务解决方案,完美适配云原生环境,是后Netflix时代微服务架构的理想选择。

2026-02-28 09:38:48 1201

原创 JDK 17 全景解读:为何它是 Java 的新基石?

摘要: JDK 17作为Java长期支持版本(LTS),是Java生态的新基石。从商业视角看,Spring Boot 3.0强制要求JDK 17,升级可免费获得10%-20%性能提升,并优化容器化支持。技术演进上,JDK 8到17实现了模块化、Records、Text Blocks等特性,大幅提升开发效率。底层优化包括紧凑字符串(节省50%内存)、G1/ZGC垃圾回收器(降低停顿时间)和改进的NPE信息。通过实战案例(如Records简化DTO、Text Blocks处理JSON/SQL)展示了JDK 17

2026-02-28 09:38:36 643

原创 JDK 21 虚拟线程实战:重构高并发 I/O 模型

本文对比了JDK 21虚拟线程与传统线程池在高并发I/O场景下的性能表现。传统线程池受限于线程数量(如200个),处理10,000个耗时1秒的任务需要约50秒;而虚拟线程方案通过轻量级的线程对象和挂载/卸载机制,能在1秒多完成同样任务,性能提升50倍。文章深入解析了虚拟线程的工作原理,指出其通过保存栈帧信息释放操作系统线程资源,并提醒注意synchronized导致的"Pinning"问题,建议使用ReentrantLock替代。最后介绍了如何在Spring Boot 3.2+项目中快速

2026-02-28 09:38:20 572

原创 Java JDK 8 - 21 全景深度解析:从函数式到云原生

本文深度解析Java从JDK 8到JDK 21的核心演进路径。JDK 8引入Lambda表达式和Stream API,通过invokedynamic指令实现函数式编程;JDK 9-11聚焦模块化系统和var语法糖;JDK 12-17转向数据导向编程,推出Records和Sealed Classes简化数据建模;JDK 19-21带来革命性突破,虚拟线程实现百万级并发支持,模式匹配提升代码表达力。全文从字节码到设计哲学,揭示了Java从函数式到云原生的技术蜕变。

2026-02-28 09:38:04 648

原创 Java 高级架构师必修:核心设计模式深度解析

本文深度解析Java高级架构师必修的四种核心设计模式。单例模式重点讲解静态内部类实现方式及其JVM类加载机制原理;策略模式结合Spring框架展示如何利用Map注入实现动态策略选择;代理模式对比JDK动态代理和CGLIB的底层实现差异;模板方法模式通过工作流节点案例演示抽象类骨架与具体实现的结合。每种模式都从原理层面剖析了Java内存管理、多态和字节码重组等关键技术,并提供了Spring等主流框架中的典型应用场景。

2026-02-27 09:16:44 444

原创 Spring Boot 深度架构:SOLID 原则的源码级体现

本文深入剖析了Spring Boot框架如何通过源码实现SOLID设计原则。在依赖倒置原则(DIP)方面,Spring通过IoC容器和依赖注入机制,使高层模块仅依赖抽象接口;开闭原则(OCP)通过AOP动态代理实现功能扩展而不修改原有代码;里氏替换原则(LSP)确保代理对象可以无缝替换原始对象;接口隔离原则(ISP)体现在细粒度的Aware接口设计上。这些原则共同构成了Spring框架高度灵活、可扩展的架构基础,使其成为工业级Java开发的标杆框架。

2026-02-27 09:16:23 511

原创 Java 架构师之路:核心特性、设计原则与阿里规范深度解析

本文系统解析了Java架构设计的核心要点。首先阐述了面向对象三大特性:封装(数据保护与接口暴露)、继承(代码复用与层级构建)、多态(动态绑定的运行时行为)。其次详细解读SOLID五大设计原则,强调开闭原则(扩展开放修改关闭)和单一职责原则(模块解耦)的重要性。最后结合阿里巴巴Java开发规范,重点说明了命名风格、OOP规约、集合处理和并发处理等生产环境中的关键实践,如避免使用Executors创建线程池以防止OOM风险。全文强调优秀Java工程师需将语言特性、设计原则与工程规范有机结合,才能构建高可靠、易维

2026-02-27 09:16:01 547

原创 Java 开发者必读:计算机网络底层原理与架构全解

本文系统讲解了Java开发者必备的计算机网络核心知识。首先介绍了TCP/IP四层模型及其在Java中的实现,包括应用层(HTTP/FTP)、传输层(TCP/UDP)等。详细解析了从浏览器输入URL到页面渲染的完整流程,重点分析了TCP三次握手(防止失效连接)和四次挥手(TIME_WAIT状态的作用)。深入探讨了TCP可靠性机制:滑动窗口(流量控制)、拥塞控制(慢启动/快恢复)和超时重传。最后对比了HTTP与HTTPS的安全特性差异,并列举了常见HTTP状态码含义。这些底层原理对Java网络编程和性能优化具有

2026-02-27 09:13:06 565

原创 Maven 核心原理深度解析与 JAR 包冲突终结指南

Maven核心原理与JAR包冲突解决方案 Maven本质是一个插件执行框架,通过POM模型和构建生命周期管理项目。其核心工作原理包括: 基于GAV坐标的仓库系统(本地→私服→中央) 生命周期与插件机制(Clean/Default/Site) JAR包冲突源于依赖仲裁机制: 路径最短优先(Shortest Path First) 第一声明优先(First Declaration Wins) 底层通过Maven Resolver实现DAG依赖图解析 冲突解决方案: 排除法(Exclusion):移除特定传递依赖

2026-02-27 09:12:51 852

原创 MySQL 核心技术点的深度解读指南

MySQL核心技术深度解析:存储引擎与索引机制 摘要: 本文系统解析MySQL两大核心技术:存储引擎架构与索引机制。重点剖析四大主流存储引擎特性:InnoDB(事务/行锁)、MyISAM(表锁/快读)、Memory(内存表)和Archive(高压缩归档)。深入解读B+树作为核心索引结构的优势,包括聚簇索引与非聚簇索引的区别、覆盖索引优化和最左前缀原则。通过对比B树与B+树的存储特性,揭示MySQL选择B+树的关键原因——更少的I/O操作和高效的范围查询能力。文章为数据库性能优化提供了理论依据和实践指导。

2026-02-26 11:00:55 723

原创 MySQL 核心原理与深度实战指南

本文深入解析MySQL核心原理与实战优化技巧,涵盖存储引擎对比、索引实现、事务机制和性能优化等关键内容。重点包括:InnoDB与MyISAM的核心差异;B+树索引的底层原理及索引失效场景;ACID特性的实现机制(Undo/Redo Log);MVCC并发控制的源码级解析;锁机制与死锁处理;以及执行计划分析、慢SQL优化等实战技巧。文章通过表格对比、伪代码示例和优化案例,系统性地揭示了MySQL的高效运行机制,为数据库开发与调优提供了全面的技术指南。

2026-02-26 11:00:21 1584

原创 Spring Cloud Alibaba Nacos 服务注册发现和分布式配置中心

本文介绍了Spring Cloud Alibaba Nacos的服务注册发现和分布式配置中心功能。主要内容包括:版本适配关系,推荐使用Spring Boot 3.2.x + SCA 2023.0.1.0 + Nacos 2.3.2组合;Nacos服务端的两种部署方式(单机模式和简化生产模式);Spring Boot项目整合步骤,包括依赖添加、配置文件和启动类注解;以及动态配置中心的核心功能演示,展示了如何通过@RefreshScope实现配置热更新。文章提供了详细的配置示例和操作指导,帮助开发者快速上手Na

2026-02-25 09:54:05 786

原创 Nacos 节点 + 1个 MySQL + Nginx 负载均衡

本文介绍了Spring Boot与Spring Cloud Alibaba Nacos的集成方案,重点讲解了版本适配、Nacos服务端部署和项目整合方法。主要内容包括:1) 版本对应关系表,推荐使用Spring Boot 3.2.x + SCA 2023.0.1.0 + Nacos 2.3.2组合;2) 通过Docker部署Nacos的两种方式(开发单机模式和生产环境MySQL模式);3) 项目整合步骤,包括依赖添加、配置文件和启动类设置;4) 演示了动态配置中心的使用方法,通过@RefreshScope实

2026-02-25 09:53:51 631

原创 Spring Boot AMQP

本文介绍了使用Spring Boot AMQP实现订单支付超时处理的完整方案。通过配置正常队列和死信队列,实现10秒未支付订单自动转入死信队列处理的业务闭环。关键点包括:1) 配置x-dead-letter-exchange连接正常队列和死信交换机;2) 开启手动ACK模式;3) 使用basicNack拒绝消息进入死信队列。方案支持两种触发方式:延迟队列自动过期或消费者主动拒绝消息,最终由死信消费者执行关单回滚等兜底逻辑。

2026-02-24 09:51:35 596

原创 RabbitMQ 高级消息队列协议

RabbitMQ是一个开源消息代理,实现了AMQP协议,用于解耦、削峰填谷和异步处理。核心组件包括生产者、消费者、交换机、队列和绑定规则。交换机有四种类型:Direct(精确匹配)、Fanout(广播)、Topic(通配符匹配)和Headers(头部参数)。推荐使用Docker部署,并开启管理界面。消费消息时建议采用手动ACK确认机制确保消息不丢失。死信队列(DLQ)用于处理无法正常消费的消息,可通过配置实现消息转发,还可用于实现延迟队列功能。关键点包括:交换机类型选择、手动ACK确认和死信队列的灵活应用。

2026-02-24 09:51:05 937

原创 JVM 深度解剖与 Spring Boot 云原生调优实战指南

本文深入剖析JVM运行机制与Spring Boot云原生调优策略。首先解析JVM内存模型,包括线程共享区(堆、方法区)与私有区(栈、程序计数器),探讨各区域OOM成因及栈帧执行原理。其次详解对象生命周期,从创建流程、对象头结构到四种引用类型。第三章重点讲解类加载机制与双亲委派模型源码实现。最后将理论落地,提供Spring Boot在K8s环境下的性能优化实战方案,帮助开发者突破云原生场景下的性能瓶颈。

2026-02-11 09:43:37 653

原创 Java 并发编程全景:从底层原理到架构实战

本文系统介绍了Java并发编程的核心知识体系。首先从进程与线程的区别入手,分析了上下文切换的性能损耗和Java内存模型(JMM)三大特性。重点剖析了volatile关键字原理及单例模式的双重校验锁实现。随后深入讲解了锁机制演进,包括CAS操作、synchronized锁升级过程,以及AQS框架的核心设计。通过ReentrantLock源码解析,展示了非公平锁实现和可重入机制。最后详细解读了线程池的设计原理,包括参数配置策略和ThreadPoolExecutor的核心调度逻辑。全文从底层原理到架构实践,构建了

2026-02-11 09:43:18 689

原创 Java 核心机制与原理深度解析

本文深度解析Java核心机制与原理,涵盖五大核心主题:1) String/StringBuffer/StringBuilder的不可变与可变特性对比及选型建议;2) hashCode与equals在HashMap中的契约关系及重写原则;3) 面向对象与面向过程的本质区别及适用场景;4) 深拷贝与浅拷贝的内存引用差异及实现方式;5) 多态的解耦作用及三要素。通过代码示例详细演示了各机制的工作原理,如String的不可变性验证、HashMap的存取逻辑、深/浅拷贝的实现差异等,并提供了实际开发中的最佳实践建议,

2026-02-10 09:23:30 710

原创 Java List 双雄决:ArrayList 与 LinkedList 深度解析及线程安全指南

本文深入解析了Java中ArrayList和LinkedList的核心差异与线程安全方案。ArrayList基于动态数组实现,随机访问快(O(1)),但增删慢(O(n))且有扩容开销;LinkedList采用双向链表结构,增删快(O(1)),但查找慢(O(n))。针对ArrayList的线程安全问题,提出了三种解决方案:使用Collections.synchronizedList包装、过时的Vector类,以及推荐采用读写分离的CopyOnWriteArrayList(适合读多写少场景)。开发者应根据具体业

2026-02-10 09:23:14 835

原创 Redis 核心原理与架构实战深度解析

Redis高性能核心原理与实战解析 摘要:本文深入剖析Redis高性能设计原理,包括单线程模型、IO多路复用(Epoll)和内存操作三大核心要素。详细讲解Redis数据结构底层实现,重点分析ZSet跳表机制。探讨RDB和AOF持久化策略的权衡,以及内存管理中的过期删除与淘汰算法。针对生产环境三大缓存问题(穿透、击穿、雪崩)提供解决方案,包括布隆过滤器、互斥锁和随机TTL策略。最后解析Redisson分布式锁实现原理,包括看门狗机制和Lua脚本原子性保证。通过源码级分析和实战案例,全面展示Redis的核心架构

2026-02-09 13:15:34 583

原创 Java 异常处理机制详解 (Java Exception Handling)

Java异常处理机制详解:文章系统介绍了Java异常处理的核心概念与最佳实践。首先解析了异常体系结构(Throwable、Error、Exception),重点区分受检异常和非受检异常的特性与使用场景。详细讲解了5个关键处理关键字(try-catch-finally-throw-throws)的用法,对比了传统资源管理与try-with-resources的差异。同时说明了如何创建自定义异常,并提供了企业级开发建议,包括避免吞掉异常、优先捕获具体异常、保留异常链等。最后强调现代框架中倾向于使用非受检异常配合

2026-02-09 13:14:45 952

原创 Java List 深度解析:ArrayList、LinkedList 与线程安全实战

本文深入解析了Java中List接口的两种主要实现:ArrayList和LinkedList。ArrayList基于动态数组,支持高效随机访问(O(1))但插入删除较慢(O(n));LinkedList基于双向链表,插入删除快(O(1))但随机访问慢(O(n))。在多线程环境下,推荐使用CopyOnWriteArrayList(读多写少)或Collections.synchronizedList(普通并发),避免使用Vector。最佳实践建议:默认选择ArrayList,特殊场景考虑LinkedList,根

2026-02-07 16:32:46 778

原创 Java 核心概念深度解析:接口/抽象类、重载/重写与等值比较

本文深入解析Java面向对象编程中的三个核心概念:1) 抽象类与接口的区别,指出抽象类用于代码复用("Is-A"关系),而接口定义行为契约("Can-Do"关系);2) 方法重载与重写的差异,重载是同一类中同名不同参的方法,重写是子类对父类方法的重新实现;3) ==与equals()的本质区别,==比较引用地址,equals()比较对象内容。通过代码示例展示了Tesla类如何继承Vehicle抽象类并实现Electric和Autonomous接口,体现了Java多态特

2026-02-07 16:32:22 740

原创 深入解析 Java HashMap:原理、源码与并发

本文深入解析Java HashMap的核心机制,包括底层数据结构(JDK1.7数组+链表 vs 1.8数组+链表+红黑树)、存取原理(二次Hash计算、尾插法)、扩容机制(高低位优化)以及线程安全问题(1.7死循环、1.8数据覆盖)。针对并发场景,推荐使用ConcurrentHashMap(1.8采用CAS+synchronized实现高性能并发)。文章还对比了HashMap与HashTable的关键区别,强调HashMap的高效性和非线程安全特性。

2026-02-06 09:06:03 702

原创 Spring 核心深度解析:IoC, DI 与 AOP

Java@Service@OverrideJava@Service@OverrideSystem.out.println("正在处理业务逻辑:创建订单 " + productId);特性IoC / DI (控制反转/依赖注入)AOP (面向切面编程)核心目标解耦对象之间的依赖关系。解耦业务逻辑与系统级服务(如日志)。关注点关注的是类与类的纵向关系。关注的是方法层面的横向切入。实现手段反射 (Reflection)、工厂模式。动态代理 (JDK Proxy / CGLIB)。

2026-02-06 09:05:40 835

原创 Java 核心容器详解:Collection 与 Map

本文深入解析Java集合框架,分为Collection和Map两大体系。Collection包含List(有序可重复)、Set(无序唯一)和Queue(队列);Map存储键值对且独立于Collection接口。文章详细对比了ArrayList、LinkedList、HashSet等核心实现类的底层原理与性能特点,并提供了选型决策树:读多写少选ArrayList,需要键值对选HashMap。最后通过代码演示了List、Set和Map的基本操作差异,如List支持索引访问而Set自动去重。该指南涵盖了从基础使用

2026-02-05 09:59:57 941

原创 Markdown

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2026-02-05 09:32:01 751

原创 Web.xml && index.jsp

web.xml && index.jsp

2022-01-12 13:59:32 159

原创 线程与进程

@[TOC]Process与Thread进程 与 线程1.程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念2.而进程则是执行程序的一次执行过程,他是一个动态的概念。是系统资源分配的单位3.通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程的cpu调度和执行的单位注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的

2021-06-16 15:05:04 163

aspose-words word转pdf无水印

导入架包后就可使用,注意:com.aspose.words.lic_2999.xml代码里需要指引这个文件,否者功能不生效,word转pdf还会有水印。

2020-09-11

Spire.Doc_3.8.1.zip

这是Spire.Doc 架包,是对word的操作.多个word合并word,word转换PDF,word添加目录,word添加页脚页眉。里面有案例有解析,案例在samples文件下,解析在doc里。里面的架包需要单独引入

2020-08-12

java excle生成统计图

Workbook wb = new XSSFWorkbook(); Sheet sheet1 = wb.createSheet("统计图"); /** *往sheet1添加数据 */ Drawing drawing = sheet1.createDrawingPatriarch(); ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 9, 10, 19); // Chart chart = drawing.createChart(anchor); ChartLegend legend = chart.getOrCreateLegend(); legend.setPosition(LegendPosition.TOP_RIGHT); LineChartData data = chart.getChartDataFactory().createLineChartData(); // Use a category axis for the bottom axis. ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM); ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT); leftAxis.setCrosses(AxisCrosses.AUTO_ZERO); /** *生成统计图的重要部分,从表格的那个地方开始到那个地方结束 */ ChartDataSource<Number> xs = DataSources.fromNumericCellRange(sheet1, new CellRangeAddress(2, 7, 1, 1)); ChartDataSource<Number> xs1 = DataSources.fromNumericCellRange(sheet1, new CellRangeAddress(2, 7, 0, 0)); data.addSerie(xs1, xs); chart.plot(data, bottomAxis, leftAxis);

2020-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除