- 博客(347)
- 资源 (1)
- 收藏
- 关注
原创 详细介绍下Elasticsearch 布尔查询
布尔查询是 ES 复杂查询的基础,核心是must(AND/算分)、should(OR/算分)、must_not(NOT/无算分)、filter(AND/无算分/缓存);性能优化核心:过滤条件放filter、控制should数量、must_not后置;影响评分,不影响;复杂逻辑通过嵌套布尔查询实现,层级控制在3层内;should的配置、类型匹配、空布尔查询。掌握布尔查询的逻辑、算分和性能规则,能覆盖 90% 以上的业务查询场景,是 ES 进阶使用的核心基础。
2026-01-06 17:36:19
898
原创 @JsonValue和@JsonCreator介绍
默认枚举序列化会输出枚举名(如MALE),通过@JsonValueMALE(1, "男"),FEMALE(2, "女");// 序列化时,只输出desc的值(如"男"/"女")@JsonValue// 若想序列化输出code,只需把@JsonValue移到这里// }// 常规getter测试序列化// 序列化结果:"男"(而非"MALE")// 序列化时,只输出username(而非{"id":1,"username":"张三","age":20})
2025-12-15 16:00:08
956
原创 IDEA源码阅读神器-Diagram工具
Diagram工具是IntelliJ IDEA中被低估的强大功能,它将抽象代码转化为直观图形,大幅提升开发效率。无论是分析现有系统、设计新功能,还是团队协作,Diagrams都能成为你理解和沟通系统架构的得力助手。打开一个现有项目,尝试生成包的UML类图,体验自动生成的便利对复杂模块,生成依赖关系图,梳理依赖脉络遇到难以理解的代码逻辑时,使用插件生成时序图,直观展示执行流程。
2025-11-10 15:20:37
1070
原创 SpringMVC项目如何优雅处理异常
*** 通用响应实体*/@Data// 状态码:200-成功,非200-失败// 响应消息// 响应数据(成功时返回)// 成功响应(带数据)// 成功响应(无数据)// 失败响应(自定义状态码和消息)/*** 自定义业务异常(用于处理可预知的业务错误)*/// 异常状态码(如 400-参数错误,500-业务逻辑错误)// 父类存储异常消息// 简化构造方法(默认业务异常码为 500)// getter通过。
2025-11-07 09:09:09
848
原创 Grafana介绍
Grafana 是监控体系中“可视化”的核心工具,通过对接多种数据源,将原始监控数据转化为直观的图表和仪表盘,同时支持告警配置和交互式分析。它与 Prometheus 组合是微服务、云原生环境中最主流的监控方案,帮助开发和运维人员快速掌握系统状态、定位问题,保障系统稳定运行。
2025-11-06 20:25:45
1091
原创 ES索引配置字段解读
mappings类似数据库的“表结构”,定义了文档中字段的类型分词器是否索引聚合规则等,决定了ES如何存储和解析数据。配置项核心作用可修改性核心关联settings控制索引的集群行为与性能静态配置不可改,动态可改分词器配置需在settings中定义,供mappings使用mappings定义数据结构与解析规则字段可新增,类型不可改依赖settings中的分词器,决定数据如何存储和查询aliases提供灵活的索引访问入口可随时添加/删除/切换不依赖settings和mappings。
2025-11-06 17:56:34
867
原创 ES脚本语言Painless介绍
Painless 是 ES 专为脚本场景设计的语言,平衡了安全、性能和易用性,是实现自定义查询、更新、聚合逻辑的首选工具。其语法接近 Java,且提供了便捷的 ES 上下文访问方式,适合处理各种灵活的业务需求。
2025-11-06 17:13:07
971
原创 介绍一下Prometheus
Prometheus 是一款以“时序数据”为核心的监控告警系统,通过 Pull 模式采集指标、PromQL 查询分析、Alertmanager 告警管理,实现对分布式系统的全面监控。它与云原生生态(Kubernetes、Grafana)深度集成,是当前微服务和容器化环境中监控方案的首选工具。
2025-10-29 14:14:55
669
原创 spring-boot-actuator的原理是什么?
端点”是 Actuator 的核心概念,每个端点对应一类监控数据(如健康状态、指标、配置等)。Actuator 内置了数十个端点(如),每个端点本质是一个数据提供者,负责收集并返回特定类型的监控信息。例如:收集应用的健康状态(通过整合数据库、Redis 等组件的健康检查结果);收集 JVM 内存、GC、HTTP 请求等指标数据;开发者也可通过@Endpoint注解自定义端点(如业务指标监控)。开发者可通过@Endpoint注解定义自定义端点,其原理与内置端点一致:定义端点类并标注,通过。
2025-10-29 11:44:49
623
原创 介绍一下spring-boot-actuator
实现@Component@Override// 模拟检查自定义服务(如第三方API是否可用).withDetail("message", "外部服务正常").build();} else {.withDetail("message", "外部服务不可用").withDetail("error", "连接超时").build();// 实际检查逻辑(如发送HTTP请求)访问会包含custom组件的健康状态。
2025-10-29 11:43:21
669
原创 介绍一下Swagger
方式1:代码注解驱动(主流):通过在 Controller/实体类上添加 Swagger 注解(如@Operation@Schema),由工具(如 SpringFox)自动生成 OpenAPI 规范文件。@Operation(summary = "根据ID查询用户", description = "ID必须为正整数")) {// 业务逻辑return new UserDTO(id, "张三", 23);方式2:手动编写规范文件:直接用 YAML/JSON 编写,适合先设计 API 再开发的场景。
2025-10-29 11:25:24
678
原创 介绍一下springfox
主要用于为 Spring Boot/Spring MVC 项目自动生成符合 OpenAPI 规范(原 Swagger 规范)的 API 文档,支持通过注解描述接口信息,并提供交互式 UI 界面(Swagger UI)供开发者调试接口,大幅简化 API 文档的编写与维护工作。总之,SpringFox 是 Spring 项目生成 API 文档的高效工具,通过“代码注解 + 自动解析”的方式,解决了 API 文档维护难的问题,同时提供便捷的在线调试功能,是前后端协作的重要助力。SpringFox 基于。
2025-10-29 11:23:01
882
原创 介绍一下SkyWalking
Spring Cloud Alibaba 结合 SkyWalking 可实现微服务全链路的可观测性,通过分布式追踪、服务拓扑、性能指标监控等功能,解决微服务架构中“调用链路长、问题定位难”的痛点。其无侵入的集成方式和丰富的可视化能力,使其成为微服务监控的主流选择,帮助开发和运维人员快速定位问题、优化系统性能。
2025-10-29 10:54:38
976
原创 线程池如何自定义线程创建工厂
默认情况下,线程池使用线程名称格式固定(如),难以区分不同线程池的线程。线程优先级为默认值(),无法根据业务重要性调整。非守护线程,若线程池未正确关闭,可能导致JVM无法退出。无自定义异常处理器,线程执行中抛出的未捕获异常可能被忽略。自定义线程工厂可以解决以上问题,让线程管理更规范。线程工厂需实现,用于创建线程。
2025-10-29 10:13:29
897
原创 什么是NTP服务器
NTP是一种用于在分布式网络环境中同步时间的标准化协议,而NTP服务器则是运行该协议、提供时间基准的服务器。核心目标:消除网络中不同设备的时间偏差(可能由设备时钟精度、网络延迟等导致),让所有设备的时间统一到一个“标准时间”(通常是世界协调时间UTC)。关键价值:时间同步是很多场景的基础,例如日志审计(需按时间排序定位问题)、金融交易(需精确时间戳防篡改)、分布式系统(需时序一致性保障业务逻辑)、物联网设备(需同步采集数据的时间标记)。
2025-10-29 10:06:47
901
原创 什么是AARRR漏斗模型
由硅谷投资人戴夫·麦克卢尔(Dave McClure)提出,通过5个核心环节(获取、激活、留存、推荐、变现)拆解用户从接触产品到产生价值的全过程,帮助企业分析用户流失原因、优化关键环节,最终提升用户价值和业务增长。总之,AARRR模型是一套“从获客到变现”的全链路分析工具,通过量化各环节数据,帮助企业找到增长瓶颈,实现精细化运营和业务可持续增长。AARRR是5个环节英文首字母的缩写,每个环节对应用户生命周期的一个阶段,呈“漏斗”状(用户量逐步递减,需重点优化转化率)。要不要我帮你整理一份。
2025-10-29 09:55:14
509
原创 如何使用Spring Cloud Gateway实现动态路由?
登录 Nacos 控制台(Data ID(与一致)Group(默认)配置内容(标准的 Gateway 路由规则):spring:cloud:gateway:routes:uri: lb://user-service # 负载均衡到 user-service 服务filters:- StripPrefix=1 # 去除路径前缀 /apifilters:若需更灵活的路由管理(如通过后台系统增删改路由),可将路由规则存储在数据库(如 MySQL),通过定时任务或事件监听刷新路由。实现。
2025-10-28 20:23:59
1294
原创 介绍Spring Cloud Gateway
实现@Component@Override// 获取请求头中的 Token// 简单校验:Token 不存在则返回 401// 校验通过,继续执行过滤器链// 过滤器优先级:数值越小,优先级越高@OverrideSpring Cloud Gateway 作为新一代 API 网关,凭借响应式编程的高性能、丰富的路由能力和 Spring 生态的无缝集成,成为微服务架构中流量管理的核心组件。
2025-10-28 20:20:29
1472
原创 技术开发中的脚手架是指什么
脚手架的本质是**“复用与标准化”**——通过固化成熟的基础架构和开发流程,让开发者从重复的“搭架子”工作中解放出来,专注于业务逻辑实现。无论是开源工具还是企业内部定制,脚手架都是提升团队开发效率、保证项目质量的重要手段,尤其在中大型项目或团队协作中不可或缺。
2025-10-28 11:54:15
734
原创 介绍一下Hystrix的“舱壁模式”和“熔断状态机”
舱壁模式:通过资源隔离(如线程池)将不同依赖服务的调用隔离开,避免单一故障引发全局雪崩;熔断状态机:通过“闭合→打开→半开”的状态切换,动态管控对依赖服务的调用,实现快速失败与自动恢复。两者共同构成了分布式系统容错的核心手段,确保在依赖服务故障时,系统仍能保持核心功能可用。
2025-10-27 20:20:05
707
原创 Hystrix介绍
Service@Autowired// 用 @HystrixCommand 标记需要保护的方法,指定降级方法fallbackMethod = "getUserFallback", // 降级方法名// 配置熔断规则:失败率>50%且请求数>=10时熔断,熔断时长5秒// 调用用户服务(依赖服务)// 降级方法:参数和返回值需与原方法一致return new UserDTO(userId, "默认用户(服务降级)");
2025-10-27 19:50:05
602
原创 Sentinel介绍
/ 用 @SentinelResource 标记资源,指定降级方法// 业务逻辑:创建订单(可能依赖其他服务)return "订单创建成功";// 降级方法:当资源被限流/熔断时执行return "当前订单量过大,请稍后再试";Sentinel 以“流量治理”为核心,通过流量控制、熔断降级等功能保障微服务稳定性,具有轻量级、功能全面、动态配置、易集成等优势。它填补了 Hystrix 停止维护后的空白,成为 Spring Cloud 生态中微服务高可用保障的首选工具。
2025-10-27 17:51:28
834
原创 介绍一下Spring Cloud LoadBalancer
/ 1. 实现 ReactorLoadBalancer 接口(反应式策略)// 用于获取实例列表// 目标服务名@Override// 从 supplier 获取可用实例列表// 自定义策略:选择第一个实例(示例)});// 2. 配置自定义策略生效@Bean// 为指定服务(如 user-service)配置自定义策略serviceId);
2025-10-27 16:54:04
738
原创 介绍Spring Cloud Stream
Spring Cloud Stream 通过“绑定器 + 消息通道”的抽象,简化了消息驱动微服务的开发,实现了与具体消息中间件的解耦。其函数式编程模型进一步提升了代码简洁性,结合分组、分区、错误处理等特性,使其成为构建高可用、可扩展消息系统的理想选择。
2025-10-27 16:33:37
972
原创 Ribbon是如何与服务注册中心nacos交互的
Ribbon 与 Nacos 的交互核心是通过组件对接 Nacos 的服务发现能力,实现“初始化拉取实例列表→运行时实时更新(轮询+推送)→基于健康状态过滤”的全流程,为 Ribbon 的负载均衡策略提供动态、准确的实例数据。这种交互机制确保了 Ribbon 能及时感知服务实例的变化,从而更高效地分发请求,提升系统的可用性。
2025-10-27 15:57:55
1204
原创 介绍一下Ribbon的工作原理
拦截服务名请求 → 拉取并缓存实例列表 → 过滤健康实例 → 按策略选择实例 → 替换 URL 并发起请求(失败时重试)”。其核心是通过客户端本地的负载均衡逻辑,实现流量在多个服务实例间的合理分发,避免单实例过载,同时通过重试机制提高请求成功率。尽管 Ribbon 已停止维护,但其“客户端负载均衡”的设计思想仍被后续组件(如 Spring Cloud LoadBalancer)沿用。
2025-10-27 15:36:29
816
原创 介绍一下Ribbon
Ribbon 是早期微服务架构中客户端负载均衡的核心组件,通过“客户端自主选择实例”的方式实现流量分发,支持多种负载均衡策略和灵活配置。但由于停止维护,目前已逐步被 Spring Cloud LoadBalancer 替代。了解 Ribbon 的原理和使用,有助于理解微服务负载均衡的核心思想。
2025-10-27 15:23:48
1000
原创 OpenFeign与RestTemplate的区别
维度OpenFeign本质声明式接口驱动命令式方法驱动核心优势简洁、易维护、原生集成微服务组件灵活、可定制 HTTP 细节典型场景微服务内部高频调用,需负载均衡/熔断灵活调用第三方 API 或简单服务调用在 Spring Cloud 微服务实践中,OpenFeign 因更符合“声明式编程”理念且集成微服务生态更友好,成为服务间调用的主流选择;RestTemplate 则适用于需要精细化控制 HTTP 请求的场景。
2025-10-27 14:54:20
571
原创 OpenFeign与Sentinel集成的原理
OpenFeign 与 Sentinel 集成的本质是通过代理模式拦截 Feign 调用,将其转化为 Sentinel 可监控的资源,并通过 Sentinel 的 Slot 链实现流量控制、熔断降级。Feign 调用 → 代理类拦截 → Sentinel 规则检查 → 允许调用/触发降级 → 结果返回这种设计既保留了 Feign 声明式调用的简洁性,又借助 Sentinel 实现了对远程调用的精细化管控,是微服务架构中保障服务稳定性的重要方案。
2025-10-27 14:43:18
969
原创 Feign如何集成Sentinel
当远程服务调用失败(超时、异常、熔断触发)时,Sentinel 会执行降级逻辑。需通过的fallback或指定降级类。
2025-10-27 14:22:11
1229
原创 OpenFeign的快速入门手册
通过接口声明远程服务的调用规则,需与目标服务的Controller接口保持一致。// @FeignClient:声明目标服务名(需与注册中心的服务名一致)@FeignClient(name = "user-service") // "user-service" 是目标服务在注册中心的名称// 接口方法需与目标服务的Controller方法完全匹配(路径、参数、HTTP方法)@GetMapping("/users/{id}") // 对应目标服务的接口路径// 参数注解需显式指定名称。
2025-10-27 14:01:00
503
1
原创 OpenFeign介绍
OpenFeign是Spring Cloud生态中的一个组件,它基于Netflix Feign扩展而来。它的核心作用是将HTTP请求抽象为Java接口,开发者只需定义接口并添加注解,就能实现服务间的远程调用,无需手动编写HTTP请求代码(如HttpClient、OkHttp等)。// 声明要调用的目标服务名(service-provider)// 定义调用目标服务的接口方法,与目标服务的Controller接口一致。
2025-10-27 11:17:30
262
原创 Redisson与Spring提供的RedisTemplate做一个对比
是“Redis 命令的 Spring 风格封装”,适合简单操作和 Spring 生态整合,灵活性高但需手动处理复杂逻辑。Redisson是“分布式编程框架”,专注于解决分布式系统问题,封装了高级功能,开箱即用,适合复杂分布式场景。实际开发中,两者并非互斥关系:可同时使用——用处理简单缓存,用Redisson处理分布式锁等高级需求,充分发挥各自优势。
2025-10-24 16:24:22
632
原创 redisson介绍
Redisson通过对Redis的深度封装,让Java开发者能像使用本地对象一样使用分布式工具,大幅降低了分布式系统的开发难度,是微服务、分布式架构中的重要工具。它不仅提供了对Redis基本命令的封装,更核心的是通过封装复杂的分布式逻辑,为Java开发者提供了一系列。Redisson提供了多种分布式锁实现,解决分布式环境下的并发安全问题,且原生支持Redis的集群、哨兵模式,保证高可用。,让开发者无需直接编写复杂的Redis命令或分布式逻辑(如分布式锁的超时续期、重入性处理等),就能便捷地使用分布式工具。
2025-10-24 16:21:26
724
原创 介绍mybatis-plus代码自动生成工具
是一个高效的代码生成器,能够根据数据库表结构自动生成实体类(Entity)、Mapper接口、Mapper XML文件、Service层、Controller层等代码,大幅减少重复编码工作,提升开发效率。通过配置数据源、生成策略等参数,自动解析数据库表结构,按照预设模板生成符合MP规范的代码,支持自定义模板、命名策略、生成范围等,适配多种数据库(MySQL、Oracle、SQL Server等)。MP默认提供了一套模板,如需自定义代码风格(如修改Service实现类的模板),可通过。模板文件需放在项目的。
2025-10-24 14:03:48
848
原创 TraceId如何在Spring-Cloud微服务的REST调用中传递
若需自定义traceId传递逻辑(如自定义Header键、生成规则),可通过发送端拦截器和接收端过滤器实现。// 自定义traceId在HTTP头中的键// MDC中的键。
2025-10-23 16:09:59
459
1
原创 traceId怎么通过Dubbo调用传递
需分别实现消费端和服务端的过滤器(可合并为一个类,通过判断角色区分处理)。/*** Dubbo链路追踪过滤器,自动传递traceId*/@Activate(group = {CommonConstants.CONSUMER, CommonConstants.PROVIDER}) // 激活消费端和服务端// traceId在attachment中的键名@Override// 区分消费端和服务端逻辑// 消费端:将当前MDC的traceId放入attachment。
2025-10-23 15:19:08
379
原创 消息发送接收如何传递TraceId
MDC(Mapped Diagnostic Context)是日志框架(如Logback、Log4j)提供的线程本地存储工具,用于存储链路追踪的。通过以上方案,即可在MQ消息的发送和消费环节打通链路追踪,实现日志的全链路关联。单独提取),确保能获取到原始消息headers。标注的消费方法,从消息headers中提取。在Java中通过MQ实现链路追踪(传递。需先确保项目中已集成日志框架,并通过。拦截消息发送过程,将当前MDC中的。存入消息headers。的headers中提取。的headers携带。
2025-10-23 15:12:45
426
清华大学《DeepSeek从入门到精通》PDF-0积分免费下载
2025-02-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅