SpringCloud概述

目录

一、概念

1.1 微服务架构

1.2 SpringCloud概念

1.3 核心价值

1.4 能力边界

1.5 微服务总体架构图

二、生态圈

2.1 不同生态圈组件对比

2.2 组件介绍

2.2.1 服务发现与注册

2.2.2 配置管理

2.2.3 API网关

2.2.4 容错与熔断

2.2.5 客户端负载均衡

2.2.6 服务调用

2.2.7 消息驱动

2.2.8 分布式追踪

2.2.9 分布式事务

2.3 技术选型建议

2.4 拓展:Service Mesh


一、概念

1.1 微服务架构

核心思想:将大型应用拆分为一系列小型、自治的服务。

单体架构到微服务架构的演进:

阶段核心特征优势挑战与劣势适用场景
1. 单体架构
(Monolithic)
- 所有功能模块(如UI、业务逻辑、数据访问)打包在一个应用程序中。
- 通常使用单一技术栈和单一数据库。
- 部署时作为一个整体单元进行部署和扩展。
开发简单:项目初期,结构简单,易于开发、测试和部署。
部署简单:只需打包和部署一个WAR/JAR文件。
性能可能更优:本地方法调用,无网络开销。
维护成本高:代码库庞大,耦合严重,难以理解和修改。
技术栈僵化:难以引入新的框架或语言。
扩展性差:无法按需缩放特定功能,必须整体扩展,成本高。
发布周期长:一个小的修改需要重新部署整个应用,风险高。
可靠性差:一个模块的Bug可能导致整个系统崩溃。
- 项目初期,业务简单,团队规模小。
- 需要快速验证想法(MVP)。
- 内部工具或小型应用。
2. 垂直架构
(也称“烟囱式架构”)
- 将一个大单体按业务/功能拆分成多个独立的、不互联的单体应用。
- 每个应用都包含自己的前端、后端和数据库。
一定程度上解决了扩展性问题:可以针对访问量大的应用单独进行扩展。
技术选型更灵活:不同的应用可以采用不同的技术栈。
团队可拆分:不同的团队可以负责不同的应用。
数据孤岛:应用之间数据不互通,难以进行关联业务处理。
大量重复代码:每个应用都需要实现用户管理、登录等通用功能,重复造轮子。
资源浪费:每个应用都需要独立的服务器资源。
- 业务线之间关联度极低的场景(如公司内部HR系统和外部官网)。
- 作为从单体向分布式架构演进的过渡阶段。
3. SOA架构
(面向服务架构)
- 将应用拆分为可重用的、松耦合的服务,通过ESB(企业服务总线) 进行集成和通信。
- 强调服务复用集成
系统集成能力强:ESB作为中枢,能有效集成不同来源的异构系统。
服务可复用:通用功能(如用户服务)可以被多个系统调用,避免重复开发。
松耦合:服务之间通过ESB交互,依赖关系减弱。
ESB可能成为性能和单点故障的瓶颈:所有通信都经过ESB,使其变得臃肿且复杂。
架构重量级:通常需要复杂的标准(如SOAP/WS-*)和昂贵的商业软件。
部署和管理复杂
- 大型企业需要整合大量遗留系统(Legacy Systems)。
- 需要实现跨部门、跨技术的复杂业务集成。
4. 微服务架构
(Microservices)
彻底的组件化与服务化:业务被拆分为一组小而自治的服务。
去中心化:轻量级通信(如HTTP/REST, gRPC),智能端点与哑管道,无需ESB。
每个服务拥有独立的数据存储,并可独立部署和扩展。
基础设施自动化(CI/CD、容器化、DevOps文化)。
高可扩展性:每个服务可按需独立伸缩。
技术多样性:每个服务可用最合适的技术栈实现。
高可靠性:一个服务故障不会导致整个系统瘫痪。
敏捷开发:小团队可独立开发、部署和迭代自己的服务,交付速度更快。
易于理解和维护:每个服务功能单一,代码库小。
分布式系统复杂性:需要处理网络延迟、故障容错、分布式事务等难题。
运维 overhead 高:需要强大的CI/CD、监控、日志聚合和服务治理能力。
数据一致性挑战:需要最终一致性模式,而非强一致性。
接口调整和测试更复杂:服务间API的变更需要谨慎管理。
- 大型复杂应用,需要快速迭代和频繁交付。
- 团队规模较大,需要独立开发和部署能力。
- 业务场景复杂,需要不同的技术栈支持。

微服务的优点:技术异构、弹性、独立部署、可扩展性

微服务的挑战:分布式复杂性、网络延迟、数据一致性、运维成本

1.2 SpringCloud概念

Spring Cloud 是一个基于 Spring Boot 的微服务架构开发工具集,它为分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)的开发提供了一套全面的解决方案。

简单来说,Spring Boot 让你能快速开发一个单体应用,而 Spring Cloud 则帮你将多个单体应用(微服务) 有机地整合和管理起来,构建成一个健壮、弹性的分布式系统。

核心理念:

  • 约定优于配置:它提供了默认的、开箱即用的配置,大大减少了搭建分布式系统所需的基础工作量。

  • 集成与封装:它并没有重复造轮子,而是将 Netflix、HashiCorp 等公司久经考验的成熟服务治理组件(如 Eureka, Hystrix, Zuul 等)通过 Spring Boot 的风格进行封装和集成,提供了统一、简单的编程模型。

  • 一站式解决方案:它提供了一整套微服务架构的解决方案,涵盖了服务治理的方方面面。

1.3 核心价值

Spring Cloud 的核心价值在于它提供了一套快速构建分布式系统(尤其是微服务架构)中常见模式的工具集。它致力于简化分布式系统基础设施的开发,让开发者可以专注于业务逻辑,而无需花费大量精力去搭建和集成那些复杂的基础设施组件。

主要解决了以下四大类问题:

  • 服务治理与发现 (Service Discovery & Registration)

    • 问题: 在微服务架构中,服务实例是动态变化的(扩缩容、故障、更新),客户端如何准确地找到所需服务的可用实例?

    • 解决: 提供了服务注册中心(如 Eureka、Consul、Zookeeper 集成),服务启动时向注册中心注册自己的元数据(如IP、端口、服务名),消费者通过注册中心发现服务实例列表,并结合客户端负载均衡器(如 Ribbon)进行调用。

  • 分布式配置管理 (Distributed Configuration)

    • 问题: 成百上千个微服务,每个都有大量配置(如数据库连接、第三方API密钥、业务参数),如何实现集中化、动态化的管理?修改配置后如何避免逐个服务重启?

    • 解决: 提供了 Spring Cloud Config,将配置存储在 Git、SVN 等版本库中。客户端在启动时或通过 Webhook 动态地从配置服务器拉取配置,实现配置的集中管理和动态刷新。

  • 服务的容错与保护 (Resilience & Fault Tolerance)

    • 问题: 在分布式环境中,服务调用失败是常态(网络波动、服务超载、宕机)。如何防止一个服务的故障导致整个系统雪崩?如何实现快速失败、服务降级和自动恢复?

    • 解决: 提供了 Spring Cloud Circuit Breaker(抽象层,支持 Hystrix、Resilience4j 等实现)来实现熔断器模式,以及 Spring Cloud Gateway / Zuul 集成这些功能来实现限流、熔断和降级。

  • 智能路由与API网关 (Intelligent Routing & API Gateway)

    • 问题: 所有服务直接对外暴露,客户端需要知道所有服务的地址,这带来了复杂性、安全性和耦合性问题。如何为外部客户端提供一个统一的入口,并处理跨切面关注点(如认证、鉴权、监控、路由)?

    • 解决: 提供了 Spring Cloud Gateway(新一代)和 Netflix Zuul(老一代),作为API网关,负责请求路由、组合、协议转换、安全认证、流量控制等。

其他交叉关注点 (Other Cross-Cutting Concerns):

  • 分布式跟踪 (Tracing): 集成 Sleuth 和 Zipkin,为请求分配唯一ID,跟踪一个请求在分布式系统中的完整路径,用于性能分析和故障排查。

  • 客户端负载均衡 (Client-side Load Balancing): 通过 Ribbon 或 Spring Cloud LoadBalancer,在客户端实现软负载均衡,从服务列表中选择合适的实例进行调用。

  • 消息驱动 (Messaging): 通过 Spring Cloud Stream 抽象,简化消息中间件(如 Kafka, RabbitMQ)的使用。

1.4 能力边界

  • 它是一个开发工具框架,而非运行时平台:

    • Spring Cloud 帮助你开发微服务应用,但它本身不负责这些应用的部署、调度和管理。这是 Kubernetes (K8s) 等容器编排平台的核心领域。你可以将用 Spring Cloud 开发的应用打包成 Docker 镜像,然后在 K8s 上运行。

  • 服务网格 (Service Mesh) 的崛起:

    • Spring Cloud 将很多分布式能力(如服务发现、负载均衡、熔断)以 SDK(库) 的形式嵌入到每个应用程序中。这带来了侵入性、升级困难、多语言支持差等问题。

    • 服务网格(如 Istio, Linkerd) 通过 Sidecar 模式(如 Envoy 代理)将这些能力从应用中剥离,作为基础设施层统一处理,实现了与业务代码的完全解耦、无侵入性和对多语言的完美支持。Spring Cloud 的很多功能正逐渐被 Service Mesh 所替代或补充。

  • 并非所有微服务问题都能解决:

    • 数据一致性: Spring Cloud 提供了分布式事务的集成(如通过 Seata),但分布式事务本身极其复杂,框架只能提供工具,最终方案需要根据业务场景精心设计(如 Saga 模式)。

    • 安全性: 虽然提供了与 Spring Security 和 OAuth2 的集成,但复杂的身份认证和授权体系仍需自行设计和实现。

    • 监控与告警: 提供了与监控系统的集成(如 Micrometer),但完整的监控、告警、日志分析平台需要依靠 Prometheus、Grafana、ELK 等专业工具。

1.5 微服务总体架构图

二、生态圈

2.1 不同生态圈组件对比

功能类别Spring Cloud Netflix (第一代, 已停止功能更新)Spring Cloud Alibaba (中国主流, 活跃)Spring Cloud Official (新一代, 趋势)服务网格 (Service Mesh - 下一代趋势)
服务注册与发现Eureka (AP系统)Nacos (AP/CP切换)Consul (CP系统) / ZookeeperIstio (Pilot) / Linkerd
客户端负载均衡Ribbon (已进入维护模式)Ribbon / Nacos LBSpring Cloud LoadBalancer (官方新推荐)Envoy (Sidecar)
API 网关Zuul 1.x (阻塞IO,性能一般)Spring Cloud Gateway (官方组件)Spring Cloud Gateway (非阻塞,WebFlux,性能强)Istio (Ingress Gateway)
熔断器/容错Hystrix (已停止更新)Sentinel (功能丰富,流量控制、熔断、系统保护)Spring Cloud Circuit Breaker (抽象层,支持 Resilience4j)Envoy (内置) / Istio (故障注入)
配置中心Spring Cloud Config (需配合 Bus 刷新)Nacos (配置管理+服务发现二合一,动态刷新更简单)Spring Cloud Config通常不直接解决此问题,可与原有配置中心共存
分布式跟踪Sleuth + ZipkinSleuth + Zipkin / SkyWalking (国产优秀APM)Sleuth + ZipkinIstio (Jaeger集成) / 链路追踪是核心能力
消息驱动-Spring Cloud Stream + RocketMQSpring Cloud Stream (抽象层,支持 Kafka, RabbitMQ)不直接解决
认证授权Spring Security OAuth2Spring Security OAuth2Spring Security OAuth2Istio (Citadel) 提供服务间mTLS认证

生态选择建议:

  • 新项目/技术选型: 强烈推荐 Spring Cloud Alibaba 或 Spring Cloud Official 的新一代组件(如 LoadBalancer, Gateway, CircuitBreaker)。它们更现代、性能更好、社区更活跃。

  • 老项目维护: 可能仍在使用 Spring Cloud Netflix 体系,需考虑逐步迁移。

  • 大规模、多语言、高要求集群: 考虑采用 Kubernetes + Service Mesh (Istio) 的方案。Spring Cloud 开发的微服务可以完美运行在 Service Mesh 环境中,两者是互补而非替代关系。Spring Cloud 处理业务能力,Service Mesh 处理通信基础设施。

2.2 组件介绍

2.2.1 服务发现与注册

微服务实例的动态注册和查找。

解决方案

  • Eureka (Netflix):服务实例的动态注册和发现。特点:AP架构,保证高可用。曾因其简单易用而流行。已进入维护模式(2018年宣布),不再添加新功能。新项目不推荐使用

  • Nacos (Alibaba):同时支持服务发现和分布式配置管理,是两者的一体化解决方案。特点:支持AP和CP模式切换,具有动态权重调整、灰度发布、健康检查等功能,性能较高(可达10万+ QPS),并提供友好的控制台。社区活跃,是当前国内Spring Cloud生态中的首选推荐之一

  • Consul:服务发现、配置管理,并提供强大的多数据中心能力和一致性协议。特点:CP设计,保证强一致性,与Docker等集成良好。稳定可靠,适合需要强一致性和多数据中心场景。

2.2.2 配置管理

实现分布式系统中配置的集中化和动态管理。

解决方案

  • Spring Cloud Config:提供分布式系统的外部配置支持。特点:配置信息可用Git、SVN等版本库存储,支持配置加密、解密。配合Spring Cloud Bus可实现配置的动态刷新。功能完善但略显繁琐(需自行集成Bus刷新),无开箱即用的可视化控制台许多开发者转向更现代化的替代品

  • Nacos Config:提供配置管理和服务发现的一体化解决方案。特点:支持配置的实时推送、版本管理、灰度发布、权限管理(1.2.0+)等,所有操作可通过控制台完成。功能强大且易用,是当前非常流行的选择

  • Apollo (携程):提供分布式配置的集中管理、热发布、灰度发布等功能。特点:功能非常丰富,提供完善的权限管理、发布审核、灰度规则、客户端配置监控等企业级特性。在企业级应用中非常受欢迎,尤其在配置管理要求精细复杂的场景

2.2.3 API网关

作为系统的统一入口,负责路由、过滤、鉴权、限流等。

解决方案

  • Zuul:API路由、过滤。特点:基于Servlet的阻塞IO模型,在高并发下性能一般1.x已停止发展,Zuul 2.x未大规模应用且前景不明。新项目强烈不推荐使用

  • Spring Cloud Gateway:提供一种简单有效的方式来路由到API,并为它们提供横切关注点,如:安全性,监控/指标和弹性。特点:基于 Spring WebFlux 响应式编程模型(非阻塞IO),性能更高,支持动态路由,完美集成Spring Cloud生态。Spring Cloud官方主力开发的网关,是目前绝对的主流和首选推荐

2.2.4 容错与熔断

防止分布式系统中的故障蔓延,提供服务降级、熔断能力。

解决方案

  • Hystrix (Netflix):通过断路器模式实现服务容错,防止服务雪崩。特点:提供了线程隔离、熔断、降级等功能以及近实时的监控仪表盘(Hystrix Dashboard)。已进入维护模式(2018年宣布)。新项目不推荐使用

  • Resilience4j:轻量级的容错库,是Hystrix的现代化替代品。特点:轻量级、函数式编程,提供熔断器、限频器、重试、舱壁隔离(Bulkhead)等多种容错机制,模块化设计。社区活跃,是Spring Cloud官方推荐的容错库之一尤其适合函数式编程和响应式编程场景

  • Sentinel (Alibaba):以流量为切入点,提供流量控制、熔断降级、系统自适应保护等功能。特点:功能丰富,支持多种流控效果(预热、排队等),可视化控制台非常强大,可以实时查看监控数据和管理规则。社区活跃,功能强大,在国内非常流行,是许多Java开发者的首选

2.2.5 客户端负载均衡

将网络请求分散到多个服务实例上。

解决方案

  • Ribbon (Netflix):客户端负载均衡。特点:集成于服务消费者一端,提供多种负载均衡算法(如轮询、随机、响应时间加权等)。已进入维护模式新项目不推荐直接使用

  • Spring Cloud LoadBalancer:为客户端的服务间通信提供负载均衡,是Ribbon的替代品。特点:提供了更简洁的 API 和响应式编程支持。是Spring Cloud当前默认的负载均衡器,推荐在新项目中使用

2.2.6 服务调用

声明式的服务调用客户端。

  • 解决方案

    • OpenFeign声明式的REST客户端,使编写Web服务客户端变得更简单。特点:通过注解和接口定义即可实现服务调用,默认集成了Ribbon(未来是LoadBalancer)实现负载均衡,以及可集成Hystrix或Sentinel实现熔断是目前进行HTTP服务调量的主流和推荐方式

2.2.7 消息驱动

通过统一抽象层简化消息中间件的使用,实现应用与消息中间件的解耦。

解决方案

  • Spring Cloud Stream:简化消息中间件(如Kafka, RabbitMQ)的使用,提供统一的编程模型,实现应用与具体消息中间件的解耦。特点:通过Binder抽象连接不同中间件,支持发布-订阅、消费者组、消息分区等模式。在需要消息驱动的场景中依然是Spring Cloud生态内的标准解决方案

2.2.8 分布式追踪

追踪一个请求在分布式系统中的完整路径,用于性能分析和故障排查。

解决方案

  • Spring Cloud Sleuth + Zipkin提供了在分布式系统中追踪请求的解决方案,可视化展示调用链路。特点:Sleuth负责在日志中生成追踪ID和跨度ID,Zipkin负责存储和展示这些追踪数据。功能成熟,是Spring Cloud中实现分布式追踪的经典组合。此外,SkyWalking(国产优秀APM)也是一个功能非常强大的替代或增强方案,提供更丰富的指标监控和可视化功能。

2.2.9 分布式事务

在微服务架构中处理跨服务的数据一致性。

解决方案

  • Seata (Alibaba):高性能的分布式事务解决方案。特点:提供了AT、TCC、SAGA和XA等多种事务模式,以应对不同的业务场景。是Java微服务生态中处理分布式事务的事实标准之一,社区活跃,广泛应用

2.3 技术选型建议

  • 新项目启动

    • 建议直接采用 Spring Cloud Alibaba 结合 Spring Cloud Official 的新一代组件,例如 Nacos (服务发现/配置) + Spring Cloud Gateway (网关) + Sentinel (容错) + OpenFeign (调用) + Seata (分布式事务,如果需要)。这套组合功能全面、社区活跃,并且非常契合国内开发者的需求和习惯。

  • 老项目维护

    • 如果使用的是 Spring Cloud Netflix 套件(Eureka, Hystrix, Zuul),短期内可稳定运行,但长远看需评估迁移至新组件的成本和风险。

  • 更高要求与未来趋势

    • 对于大规模、多语言、云原生环境,Kubernetes (K8s) 内置的服务发现、配置管理等功能已成为基础设施。服务网格(Service Mesh) 如 Istio 或 Linkerd 将服务间通信的复杂性(流量管理、可观测性、安全性)下沉到基础设施层,实现了对应用代码的无侵入和解耦,是微服务架构演进的重要方向。Spring Cloud 应用可以很好地运行在 K8s 和 Service Mesh 之上,两者是互补与合作的关系。

2.4 拓展:Service Mesh

特性维度阿里巴巴传统微服务框架 (如Dubbo, Spring Cloud)Service Mesh (以阿里云ASM为例)
核心架构集中式SDKSidecar代理
服务治理能力(如服务发现、负载均衡、熔断)通过SDK集成到应用中,与应用逻辑耦合服务治理能力下沉到独立Sidecar代理(如Envoy),对应用透明,实现与业务逻辑的解耦
通信方式点对点直接调用通过Sidecar代理间接通信
服务发现强依赖特定注册中心兼容并蓄
通常依赖Nacos、ZooKeeper等特定注册中心。支持接管传统注册中心(如Nacos、ZooKeeper、Eureka)的服务,并能统一管理Kubernetes原生服务,实现异构环境互通
服务治理治理能力由SDK决定基础设施统一赋能
治理能力(如路由、限流)内置于SDK,不同语言需开发不同SDK,多语言支持弱通过控制平面(如Istio)下发配置至Sidecar,统一实现流量管理(金丝雀、A/B测试)、安全(mTLS)、可观测性对应用语言无要求
技术栈支持主要支持Java技术栈支持多语言技术栈
Dubbo和Spring Cloud框架主要面向Java应用Sidecar模式解耦了通信与业务逻辑天然支持任何语言开发的应用,方便集成遗留系统或引入新技术栈。
性能与资源相对较低的额外延迟和资源开销一定的性能开销和资源占用
通信通常是点对点直接调用,延迟相对较低。通信需经Sidecar代理转发,会增加少量延迟。同时,每个Pod需部署Sidecar容器占用额外CPU和内存资源
部署与运维应用与SDK协同升级基础设施独立运维
升级服务治理能力通常需要升级所有应用的SDK,并重启应用,运维成本较高。Sidecar代理可独立升级和管理服务治理能力升级无需修改应用代码或重启应用。但需运维控制平面和数据平面Sidecar,初期有学习成本。
平滑迁移-支持渐进式迁移
产品如阿里云ASM提供了多种方案,支持传统微服务(Dubbo, Spring Cloud)无需修改代码或少量配置即可接入Mesh,实现从传统到Mesh架构的无缝过渡
通用性与特定开发框架和协议绑定更通用和标准化的通信层
大规模实践在阿里巴巴等企业有丰富的大规模实践验证。在超大规模落地时,需应对控制平面推送压力、Sidecar资源消耗等挑战。阿里云ASM等产品为此进行了诸多优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/97937.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/97937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏电站环境监测仪—专为光伏电站设计的气象监测设备

光伏电站环境监测仪是专为光伏电站设计的气象监测设备,通过实时采集关键环境参数,为光伏系统的发电效率评估、运维决策和安全预警提供数据支撑。监测参数太阳辐射采用高精度总辐射表,测量水平面总辐射和倾斜面辐射,精度达 2% 以内…

Node.js ≥ 18 安装教程

Windows 安装 下载安装包:访问 Node.js官网,下载最新的 LTS 版本(确保版本 ≥ 18)运行安装程序:双击下载的安装文件,按照向导完成安装验证安装:打开命令提示符或PowerShell,输入以下…

电脑 hdmi 没有声音问题解决

问题现象:电脑耳机声音正常输出,使用hdmi连接电视后,没有声音输出。(正常会通过hdmi 在电视上播放视频和声音)解决方案:出现该情况很可能原因是 显卡的驱动不对。网上找了各种方法都没有解决,最后系统升级后…

学习日记-XML-day55-9.14

1.xml基本介绍知识点核心内容重点XML定义可扩展标记语言,用于数据存储和传输与HTML的区别(HTML用于展示,XML用于结构化数据)XML用途1. 配置文件(Spring的beans.xml、Tomcat的server.xml);2. 数据交换&#…

【系统架构设计(27)】信息安全技术集成

文章目录一、本文知识覆盖范围二、信息安全基础要素详解1、机密性保障技术2、完整性验证技术3、可用性保障技术4、可控性管理技术5、可审查性追溯技术三、网络安全威胁与防护策略1、非授权访问防护2、拒绝服务攻击防护3、恶意软件传播防护四、加密技术体系与应用1、对称加密技术…

什么是 SaaS 安全?

什么是 SaaS 安全? SaaS 安全专注于保护云中的数据、应用程序和用户身份。它旨在应对基于云的软件所面临的挑战,以确保信息的安全性和可用性。SaaS 安全致力于降低未授权访问、数据泄露等风险,同时增强 SaaS 应用程序的安全性。 SaaS 安全不仅…

mysql和postgresql如何选择

h5打开以查看 简单来说: MySQL:更像是一个“快速、可靠的工匠”,注重速度、简单和稳定性,尤其在读操作密集的Web应用中是经典选择。 PostgreSQL:更像是一个“功能强大的学者”,追求功能的完备性、标准的符…

Redis最佳实践——安全与稳定性保障之数据持久化详解

Redis 在电商应用的安全与稳定性保障之数据持久化全面详解一、持久化机制深度解析 1. 持久化策略矩阵策略触发方式数据完整性恢复速度适用场景RDB定时快照分钟级快容灾备份/快速恢复AOF实时追加日志秒级慢金融交易/订单关键操作混合模式RDBAOF同时启用秒级中等高安全要求场景无…

Data Augmentation数据增强

目录 数据增强是什么 为什么数据增强 数组增强分类 有监督数据增强 无监督数据增强 数据增强是什么 数据增强又称数据扩增,是一种通过应用合理且随机的变换(例如图像位移、旋转)来增加训练集多样性的技术。让有限的数据产生等价于更多数…

OpenCV:特征提取

目录 一、特征提取核心概念:什么是图像特征? 二、实战 1:Harris 角点检测 1.1 角点的物理意义 1.2 Harris 算法原理 1.3 OpenCV 实战代码与解析 1.4 结果分析 三、实战 2:SIFT 特征提取 3.1 SIFT 算法核心优势 3.2 SIFT…

MySQL的查找加速器——索引

文章目录 目录 前言 一、基础概念:什么是 MySQL 索引? 二、底层数据结构:为什么 InnoDB 偏爱 B 树? B 树的结构特点(以短链接表short_link的short_code索引为例): B 树的优势&#xff1a…

【Vue2手录11】Vue脚手架(@vue_cli)详解(环境搭建+项目开发示例)

一、前言:为什么需要 Vue 脚手架? 手动搭建 Vue 项目存在诸多痛点(原笔记提及): 依赖管理复杂:需手动下载 Vue、Babel、Webpack 等工具,处理版本兼容性。配置繁琐:Webpack 配置、E…

自签发、CA机构签发、SSH、SCP、RSYNC,SUDO详解

一、为什么? 1. 自建CA为什么比Lets Encrypt强? 不能把CA放公网!Lets Encrypt是给公网服务用的(比如10.0.0.30的Web服务),但内网服务(比如OpenVPN)必须用自签CA。 CA私钥必须物理隔…

【Python】Python解决阿里云DataWorks导出数据1万条限制的问题

【Python】Python解决阿里云DataWorks导出数据1万条限制的问题一、前言二、脚本功能概述三、核心代码解析**1. 环境配置与安全设置****2. 用户配置区****3. 数据清洗函数****4. 核心逻辑**四、完整代码演示五、总结一、前言 在日常数据分析工作中,团队经常需要从阿…

计算机网络(一)基础概念

本篇文章为计算机网络相关知识点整理及扩展 基于B站计算机网络课程:https://www.bilibili.com/video/BV1p69tYZEvN/?spm_id_from333.1007.top_right_bar_window_history.content.click 如有错误,还望大家不吝指正 URL(统一资源定位符&…

Git的工作区域和文件结构

Git的工作区域和文件结构 1. Git的工作区域2. Git的文件结构 打开.git文件,.git的文件结构如下: objects 存放已经提交的文件,也就是使用 git commit 进行操作后的文件。 index 存放已暂存的文件,也就是使用了 git add 进行操作后…

前端开发易错易忽略的 HTML 的 lang 属性

前言本文主要记录:前端开发中,一个本人错了好几年,看似无关紧要的小错误:HTML 的 lang 属性设置。正文HTML 的 lang 属性在HTML中,lang属性用于指定文档的语言。这对于搜索引擎优化(SEO)、屏幕阅…

【GD32】 GPIO 超详细总结 (江科大风格课件版)

GD32 GPIO 超详细总结 (江科大风格课件版)第一部分:GPIO 是什么? 名称:GPIO General Purpose Input/Output (通用输入输出口)作用:MCU与外部世界交互的桥梁。通过程序控制引脚输出高、低电平,或者读取引脚的电平状态。…

《嵌入式硬件(八):基于IMX6ULL的点灯操作》

一、IMX6ULL启动代码.global _start_start:ldr pc, _reset_handlerldr pc, _undefine_handlerldr pc, _svc_handlerldr pc, _prefetch_abort_handlerldr pc, _data_abort_handlerldr pc, _reserved_handlerldr pc, _irq_handlerldr pc, _fiq_handler_undefine_handler:ldr pc, …

Spring Boot 调度任务在分布式环境下的坑:任务重复执行与一致性保证

前言在实际业务开发中,调度任务(Scheduled Task) 扮演着重要角色,例如:定时同步第三方数据;定时清理过期缓存或日志;定时发送消息或报告。Spring Boot 提供了非常方便的 Scheduled 注解&#xf…