自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 收藏
  • 关注

原创 MySQL中 IN 到底走不走索引?

在 MySQL 中,IN 语句是否能够利用索引取决于多个因素,包括但不限于查询的具体形式、表的统计信息、索引的选择度等。本文通过几个案例来帮助理解 IN 语句与索引使用的关系。

2025-03-10 13:17:09 3188

原创 SpringBoot整合SSE(附详细案例代码)

SSE(Server-Sent Events,服务器发送事件)是一种允许服务器向浏览器推送实时更新的技术。它是一个基于HTTP的轻量级协议,专门用于从服务器到客户端的单向消息传递。与 WebSocket 不同,SSE 是单向的,服务器可以主动向客户端发送数据,而客户端只能接收数据。

2025-03-03 12:06:31 6535

原创 零基础入门Spring源码

本文主要介绍Spring的执行流程梳理,主线为Spring源码中bean创建到销毁的流程梳理和其中关键的接口,如:BeanFactory、BeanDefinition、PostProcessor等。

2024-12-24 17:52:13 1983

原创 一文看懂MySQL索引下推(ICP)

本文主要介绍MySQL索引下推(ICP)和索引下推底层原理

2024-12-10 12:48:49 3287 3

原创 一文搞懂 URI 和 URL

本文主要介绍URI、URL和URN的结构与区别

2024-10-14 19:04:12 9984

原创 Springboot整合websocket(附详细案例代码)

本文主要介绍WebSocket的概念,和在springboot项目中的使用。

2024-09-09 21:00:00 11115

原创 Java实现MQTT通信(发布订阅消息)

java实现MQTT的消息发布与订阅

2024-08-20 22:17:46 9405

原创 Spring Cloud Alibaba快速入门-Sentinel热点参数限流

本文介绍了Sentinel热点参数限流的应用场景与配置方法。热点参数限流可针对接口参数(如用户ID、商品ID)进行精细化流量控制。通过三个需求示例演示了如何实现:1)限制用户秒杀QPS;2)VIP用户豁免限流;3)特定商品禁止访问。详细讲解了fallback与blockHandler回调机制的区别:fallback处理业务异常,blockHandler专用于流量控制异常。

2025-09-26 23:46:43 1068

原创 Spring Cloud Alibaba快速入门-Sentinel熔断规则

Sentinel断路器是一种保护机制,通过监控服务调用的成功率、响应时间等指标,在服务异常时自动切换到"打开"状态阻止请求,避免连锁故障。其包含打开、关闭和半开三种状态,半开状态会尝试放行部分请求探测服务恢复情况。Sentinel提供三种熔断策略:慢调用比例、异常比例和异常数。相比无熔断机制,断路器能有效节省调用时间和资源,当触发熔断规则时直接阻止请求而非继续调用异常服务。

2025-09-23 23:28:49 331

原创 Spring Cloud Alibaba快速入门-Sentinel流量控制(FlowRule)

Sentinel的流量控制是一种保护系统高可用的机制,通过监控QPS或并发线程数等指标,在达到阈值时采取限流措施。它支持三种流控模式:直接策略(默认模式)、链路策略(限制特定调用链)和关联策略(保护依赖资源)。流控效果包括快速失败(立即拒绝)、Warm Up(预热)和排队等待(匀速通过)。通过合理配置,Sentinel能够在突发流量下保障系统稳定性,同时优化资源利用率。

2025-09-23 23:27:57 945

原创 Spring Cloud Alibaba快速入门-Sentinel

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

2025-09-11 23:59:40 321

原创 Spring Cloud Alibaba快速入门-OpenFeign进阶用法

本文重点内容为OpenFeign的进阶用法,包括日志配置、超时控制、重试机制、拦截器、兜底回调等。

2025-09-11 23:59:25 416

原创 Spring Cloud Alibaba快速入门-OpenFeign

本文介绍了Spring Cloud OpenFeign的使用方法,对比了Feign与OpenFeign的差异。通过代码示例演示了:(1)服务间远程调用的实现步骤,包括添加依赖、启用注解、定义Feign接口及调用流程;(2)调用第三方API的配置方式。文章强调OpenFeign的两种调用模式(指定URL或注册中心服务发现),并总结了声明式接口的编写规范。

2025-09-10 23:12:39 475

原创 Spring Cloud Alibaba快速入门-Nacos配置中心(下)

本文介绍了Nacos配置中心的数据隔离与多环境配置实战。主要内容包括:1)通过命名空间区分多套环境、分组区分不同微服务、DataId区分多套配置;2)演示了创建命名空间和配置文件的完整流程;3)展示了如何克隆配置到不同环境;4)实现动态切换环境配置;5)使用yml多文档模式管理不同环境下的配置文件组合。通过实际案例,说明了如何在不同环境下加载特定配置,并验证了配置加载的正确性。

2025-09-10 23:08:11 344

原创 Spring Cloud Alibaba快速入门-Nacos配置中心(上)

本文介绍了Nacos配置中心的三种动态刷新方法:1)@Value+@RefreshScope组合方式,通过注解实现配置自动更新;2)@ConfigurationProperties批量绑定配置,实现无感刷新;3)NacosConfigManager主动监听配置变化。详细演示了从创建配置、项目集成到接口测试的全过程,并解决了未使用配置中心时的报错问题。三种方法均可实现配置热更新,其中第二种方式最为简洁,第三种最灵活但需编码实现监听逻辑。

2025-09-08 23:51:32 946

原创 Spring Cloud Alibaba快速入门-Nacos注册中心(下)

文章摘要 本文介绍了微服务架构中注册中心与服务发现的实现方法,基于Nacos和Spring Cloud框架。主要内容包括:1)使用@EnableDiscoveryClient注解开启服务发现功能;2)通过DiscoveryClient和NacosServiceDiscovery两种方式获取服务实例信息;3)演示服务掉线后的自动发现机制;4)使用RestTemplate实现订单与商品服务间的远程调用。

2025-09-08 23:51:11 763

原创 Spring Cloud Alibaba快速入门-Nacos注册中心(上)

Nacos是一个动态服务发现和配置管理平台,可作为Spring Cloud生态中Eureka等组件的替代方案。文章介绍了Nacos的安装和单机模式启动方法,详细演示了服务注册到Nacos的流程:添加依赖、配置Nacos地址、启动服务后即可在控制台查看注册效果。同时展示了通过IDEA配置多实例集群的方法,以及使用@EnableDiscoveryClient实现服务发现的测试过程,包括获取服务实例列表及端口信息。测试结果验证了服务注册与发现功能的正确性。

2025-09-06 23:52:40 970 1

原创 Spring Cloud Alibaba快速入门

本文介绍了微服务架构的优势与挑战,对比了Spring Cloud与Spring Cloud Alibaba的关系,并系统梳理了架构演进过程:从单体架构到集群架构,最终发展为分布式架构。文章详细分析了每种架构的优缺点,单体架构简单但扩展性差,分布式架构灵活但复杂度高。

2025-09-04 23:49:29 836

原创 SpringBoot实现国际化(多语言)配置

本文介绍了Spring Boot实现国际化的核心原理与详细步骤。核心基于MessageSource接口,通过ResourceBundleMessageSource实现,根据用户Locale加载对应.properties文件。实现步骤包括:1)创建多语言资源文件;2)配置application.yml;3)开发LocaleResolver解析器处理请求头;4)注入配置类。测试时通过请求头中的lang参数切换中英文显示,未传参数时默认简体中文。该方法支持灵活扩展多语言,适用于全球化系统开发。

2025-09-04 22:15:07 1755 3

原创 访问相同的url,相同入参的请求,Apifox/Postman可以正常响应结果,而本地调用不行(或结果不同)

开发中调用外部系统接口时,发现本地返回结果与Apifox不一致,经排查发现是请求头缺少Accept: */*导致。通过对比Apifox实际请求,确认请求头参数差异是常见问题根源,建议重点检查Accept、Host、User-Agent等字段。此外,URL含中文时需手动编码,避免因未编码导致请求失败。总结:接口调试工具能通但本地失败时,优先排查请求头缺失或编码问题。

2025-09-01 22:05:35 436

原创 XXL-JOB快速入门

XXL-JOB是一款轻量级分布式任务调度框架,具有开发迅速、学习简单、易扩展等特点。文章介绍了传统定时任务实现方式(Timer、ScheduledExecutorService、Spring Task、Quartz)的局限性,如无法动态调整执行时间、缺乏监控界面等。针对这些问题,XXL-JOB提供了解决方案,支持任务分片、弹性扩容、可视化界面等特性。

2025-09-01 22:05:08 813

原创 Spring Cloud Netflix快速入门07-Spring Cloud Config

Spring Cloud Config 是一个为分布式系统提供集中化外部配置的解决方案,分为服务端(配置中心)和客户端。服务端连接Git等存储后端管理配置,客户端启动时拉取配置。它支持多环境动态配置更新,无需重启服务,并通过REST接口暴露配置信息。本文以码云仓库为例,演示了服务端(3344端口)和客户端(3355端口)的配置与集成,实现配置的集中管理与动态加载。通过Git版本控制,确保配置的可追溯性与环境隔离。

2025-08-22 23:41:21 604

原创 Spring Cloud Netflix快速入门06-Zuul

Zuul是Netflix开源的API网关组件,提供路由转发和请求过滤两大核心功能。作为微服务统一入口,Zuul整合Eureka实现服务发现,支持动态路由,并能通过过滤器进行请求校验和聚合。本文通过搭建Zuul网关服务(端口9527),演示了基本配置流程:引入Zuul、Ribbon、Hystrix等依赖;配置Eureka注册中心;通过@EnableZuulProxy启动网关。

2025-08-21 23:21:04 510

原创 Spring Cloud Netflix快速入门05-Hystrix

本文介绍了分布式系统中服务雪崩问题及其解决方案Hystrix框架。主要内容包括: 服务雪崩现象:当微服务调用链中某个节点响应过慢或不可用时,会导致资源占用激增,进而引发整个系统级联故障。 Hystrix功能:通过熔断、降级、限流等机制隔离故障,防止系统雪崩。具体提供: 服务熔断:当失败调用达到阈值时快速失败 服务降级:在系统压力大时优先保证核心服务 实时监控等功能。

2025-08-21 23:20:24 912

原创 Spring Cloud Netflix快速入门04-Feign

Feign是声明式Web服务客户端,简化了微服务间的调用。它通过接口和注解实现服务绑定,自动集成Ribbon实现负载均衡。使用步骤包括:1)添加Feign依赖;2)定义FeignClient接口;3)创建消费者模块并配置;4)通过@EnableFeignClients启用。相比Ribbon+RestTemplate,Feign更简洁,只需定义接口即可完成服务调用,无需手动封装客户端类。适用于需要频繁调用微服务接口的场景,能显著减少开发量。

2025-08-20 08:45:11 1001

原创 Spring Cloud Netflix快速入门03-Ribbon

Spring Cloud Ribbon 是一个基于 Netflix Ribbon 实现的客户端负载均衡工具,用于在微服务架构中实现请求的均衡分配。它支持多种负载均衡算法(如轮询、随机等),并能与 Eureka 服务注册中心无缝集成。本文介绍了 Ribbon 的基本概念、功能(如进程内负载均衡)以及如何在 Spring Cloud 项目中集成 Ribbon(包括配置 RestTemplate 和 Eureka 客户端)。

2025-08-20 08:41:03 836

原创 Spring Cloud Netflix快速入门02-Eureka

Eureka是Netflix开发的服务发现组件,基于REST实现云端中间件的服务注册与发现功能。其核心架构包含: Eureka Server:服务注册中心,维护可用服务节点信息 Eureka Client:通过心跳机制(默认30秒)与Server保持连接。

2025-08-19 08:38:19 868

原创 Spring Cloud Netflix快速入门01

本文介绍了Spring Cloud Netflix微服务解决方案及其核心组件(Eureka、Ribbon、Hystrix等),对比分析了微服务架构的优缺点。主要内容包括:1. 微服务的定义与特点,强调服务拆分与独立部署;2. 微服务架构的技术栈,涵盖开发、配置、通信等全链路技术;3. SpringCloud与SpringBoot的依赖关系及Dubbo的技术对比,指出SpringCloud采用HTTP REST方式的优势。

2025-08-19 08:37:36 1401

原创 SpringBoot项目导出excel,显示已损坏

本文内容为解决Spring Boot项目导出Excel文件损坏问题的方法。在Maven构建时,默认的资源过滤会导致Excel文件(.xlsx)损坏无法打开。通过在pom.xml中添加资源过滤配置,将.xlsx文件设置为不经处理直接复制到输出目录(filtering=false),其他资源文件则正常处理。这样可以确保导出的Excel文件保持完整可用。

2025-08-18 08:42:24 253

原创 SpringBoot集成FTP上传文件

本文介绍了基于Spring Boot和Apache Commons Pool实现FTP连接池的配置方法。主要内容包括:1)引入commons-net依赖;2)配置FTP连接参数(主机、端口、账号等);3)创建FTPConfig配置类绑定参数;4)实现PooledObjectFactory接口管理FTPClient对象池,包含连接创建、销毁和验证逻辑。通过对象池复用FTP连接,可有效提升性能并管理连接资源,其中关键点包括被动模式设置、连接状态检查和异常处理机制。该方案适用于需要频繁FTP操作的场景。

2025-08-18 08:40:19 842

原创 JVM类加载器详解

类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,一个类加载器,都拥有一个独立的类名称空间。

2025-03-30 22:01:25 868

原创 JVM类加载过程详解

类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。其中,验证、准备和解析这三个阶段可以统称为连接(Linking)。

2025-03-23 22:13:33 1385

原创 JVM类文件结构详解

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

2025-03-23 19:41:56 1082

原创 JVM垃圾回收笔记02-垃圾回收器

如果说回收(收集)算法是内存回收的方法论,那么垃圾回收(收集)器就是内存回收的具体实现。虽然有各种的收集器,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。

2025-03-22 23:46:49 1506

原创 JVM垃圾回收笔记01-垃圾回收算法

Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap)。从垃圾回收的角度来说,由于现在收集器基本都采用**分代垃圾收集算法**,所以 Java 堆被划分为了几个不同的区域,这样我们就可以根据各个区域的特点选择合适的垃圾收集算法。

2025-03-22 23:44:56 1195

原创 JVM内存结构笔记06-HotSpot虚拟机对象探秘

Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?基于实用优先的原则,本文以最常用的虚拟机HotSpot和最常用的内存区域Java堆为例,深入探讨一下HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。

2025-03-20 19:39:31 745

原创 JVM内存结构笔记05-直接内存

直接内存是一种特殊的内存缓冲区,并不在 Java 堆或方法区中分配的,而是通过 JNI 的方式在本地内存上分配的。直接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。而且也可能导致 OutOfMemoryError 错误出现。

2025-03-13 19:02:16 894

原创 JVM中常量池和运行时常量池、字符串常量池三者之间的关系

在Java虚拟机(JVM)中,常量池、运行时常量池和字符串常量池是三个相关但又有所区别的概念。本文将详细解释这三个概念及其相互的联系。

2025-03-13 19:01:42 1409

原创 JVM内存结构笔记04-字符串常量池

字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。

2025-03-12 23:20:13 1169

原创 JVM内存结构笔记03-方法区

方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

2025-03-12 21:46:42 1089

空空如也

空空如也

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

TA关注的人

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