《当微服务遇上Ribbon:一场负载均衡的华丽舞会》

news2025/1/12 15:55:41

在微服务的厨房里,如何确保每一道服务都恰到好处?揭秘Spring Cloud Ribbon如何像大厨一样精心调配资源,让负载均衡变得像烹饪艺术一样简单!

文章目录

  • Spring Cloud Ribbon 详解
    • 1. 引言
      • 微服务架构中的负载均衡需求
      • Spring Cloud Ribbon的角色与意义
    • 2. 背景介绍
      • 2.1 微服务架构概览
      • 2.2 Spring Cloud生态体系
    • 3. Spring Cloud Ribbon基础
      • 3.1 Ribbon概述
      • 3.2 快速开始
      • 3.3 负载均衡策略
    • 4. 高级特性与配置
      • 4.1 读取远程配置
      • 4.2 超时与重试机制
      • 4.3 客户端负载均衡与服务发现
    • 5. 实战应用与最佳实践
      • 5.1 故障隔离与降级策略
      • 5.2 性能调优与监控
      • 5.3 安全策略集成
    • 6. 经典问题与解决方案
      • 6.1 服务调用延迟或失败
      • 6.2 负载不均现象
      • 6.3 高并发下的稳定性
      • 6.4 配置不生效问题
      • 6.5 服务实例信息不准确
    • 7. 结论
      • Spring Cloud Ribbon的核心价值
      • 对微服务架构的贡献与局限性
    • 8. 参考文献
      • 官方文档
      • 社区博客和教程
      • 在线教程和视频
      • 开源项目
      • 论坛和社区

Spring Cloud Ribbon 详解

1. 引言

微服务架构中的负载均衡需求

想象一下,你是一个餐厅的大厨,你的厨房里有很多助手,他们各自擅长不同的菜系。随着顾客越来越多,你开始意识到单靠一个助手来处理所有的订单是不够的。这时候,你需要一个系统,能够根据每个助手的忙碌程度和特长,合理分配顾客的订单。这就是微服务架构中负载均衡的现实写照。

在微服务架构中,我们把一个大型应用拆分成许多小的、独立的服务,每个服务负责处理特定的业务逻辑。随着服务数量的增加,如何合理地分配请求,确保系统的高效和稳定运行,就成了一个重要的问题。这时,负载均衡器就像那位聪明的餐厅经理,帮助我们管理这些服务,确保每个服务都能在最佳状态下工作。

Spring Cloud Ribbon的角色与意义

现在,让我们来谈谈Spring Cloud Ribbon,这位微服务架构中的“餐厅经理”。Ribbon是一个基于HTTP和TCP的客户端负载均衡器,它与Spring Cloud紧密集成,为我们提供了一种简单而强大的方法来实现服务之间的负载均衡。

想象一下,你是一位顾客,走进了一家装饰华丽的餐厅,你并不知道哪个厨师最擅长做你喜欢的菜。这时,Ribbon就像那位热情的服务员,他会根据厨师的忙碌程度、以往的表现和你的喜好,为你推荐最合适的厨师。这样,你不仅能享受到美味的菜肴,还能确保整个餐厅的运作流畅。

Ribbon的主要功能包括:

  • 服务发现:它能够感知到系统中所有可用的服务实例,就像服务员知道哪些厨师正在工作。
  • 客户端负载均衡:它根据预设的规则(如轮询、随机等)来分配请求,确保服务的负载均衡。
  • 故障转移:当某个服务实例出现问题时,Ribbon能够自动将请求转发到其他健康的服务实例,就像服务员会将你的订单重新分配给另一位厨师。

通过Ribbon,我们可以轻松地实现服务的高可用性和伸缩性,让微服务架构更加健壮和灵活。

Spring Cloud Ribbon 不仅仅是一个技术组件,更是微服务架构中的一位重要角色,帮助我们构建更加稳定和高效的系统。接下来,我们将深入了解Ribbon的背景、基础以及高级特性,一起探索这位“餐厅经理”的更多奥秘。

在这里插入图片描述

2. 背景介绍

2.1 微服务架构概览

在微服务的王国里,每个服务都是一个独立的小王国,它们各自为政,却又相互依赖。微服务架构就像是一场盛大的宴会,每个服务都是宴会上的一道佳肴,它们共同构成了一场丰富多彩的盛宴。

微服务架构特点

  • 独立性:每个服务都是独立的,拥有自己的数据库和业务逻辑。
  • 灵活性:服务可以独立部署和扩展,适应快速变化的业务需求。
  • 技术多样性:不同的服务可以使用不同的技术栈,以最适合的方式解决问题。

挑战

  • 服务发现:如何在众多服务中找到需要的服务。
  • 负载均衡:如何合理分配请求,避免某些服务过载。
  • 数据一致性:多个服务之间的数据如何保持一致性。

服务治理的重要性
在微服务架构中,服务治理就像是宴会的总指挥,确保每道菜都能按时上桌,每位客人都能得到满意的服务。服务治理包括服务的注册、发现、配置管理、监控等,是微服务架构稳定运行的基石。

2.2 Spring Cloud生态体系

Spring Cloud是微服务架构中的瑞士军刀,它提供了一整套工具和运行时来简化分布式系统的开发。Spring Cloud就像是微服务王国的皇家总管,为各个服务提供支持和协调。

Spring Cloud核心组件介绍

  • Eureka:服务注册与发现的中心,就像是宴会的菜单,让客人知道有哪些服务可用。
  • Hystrix:断路器,防止服务雪崩效应,就像是宴会上的应急计划,确保服务的稳定运行。
  • Zuul:API网关,统一的请求入口,就像是宴会的迎宾员,引导客人进入正确的服务区域。
  • Config:配置中心,集中管理配置信息,就像是宴会的食谱,统一调配食材和调料。

Ribbon在Spring Cloud中的位置
Ribbon在Spring Cloud生态中扮演着负载均衡器的角色。它与Eureka紧密集成,当Eureka发现服务时,Ribbon就会根据服务列表进行负载均衡,确保请求被合理分配。Ribbon就像是宴会上的智能点餐系统,根据客人的喜好和厨师的忙碌程度,推荐最合适的菜品。

咱们了解了Spring Cloud Ribbon在微服务架构中的重要性,它不仅仅是一个简单的负载均衡器,更是整个服务治理体系中不可或缺的一部分。接下来,我们将深入了解Ribbon的基础,探索如何在这个微服务的宴会中,让每一位“客人”都享受到最佳的服务体验。

3. Spring Cloud Ribbon基础

3.1 Ribbon概述

想象一下,你是一个乐队的指挥家,你的任务是确保每个乐手都能在正确的时间发出正确的音符。在微服务架构中,Ribbon就像是那个指挥家,它确保每个服务都能在正确的时刻接收到正确的请求。

主要功能

  • 客户端负载均衡:Ribbon能够根据服务的健康状况和响应时间等因素,智能地分配请求到不同的服务实例。
  • 与Eureka集成:Ribbon可以与Eureka服务注册中心无缝集成,自动发现服务实例的变化,并更新负载均衡策略。

工作原理

  • 当一个请求到来时,Ribbon会先询问Eureka,获取当前可用的服务实例列表。
  • 然后,Ribbon会根据配置的负载均衡策略(比如轮询、随机或基于响应时间的加权),选择一个服务实例来处理请求。

3.2 快速开始

让我们来点实际的,就像你第一次下厨,跟着食谱一步步来。

添加依赖
在你的Spring Boot项目中,加入Ribbon和Eureka的依赖。如果你使用的是Maven,你的pom.xml文件应该包含类似这样的配置:

<dependencies>
    <!-- Spring Cloud Starter -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>
</dependencies>

配置
application.propertiesapplication.yml中,配置Eureka和Ribbon的相关属性:

# Eureka配置
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

# Ribbon配置
server.port=8080

实现服务调用
在你的服务中,使用@LoadBalanced注解来创建一个负载均衡的RestTemplate,这样就可以通过Ribbon来调用其他服务了。

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.3 负载均衡策略

现在,让我们来谈谈Ribbon的负载均衡策略,就像选择乐队中的乐手一样,我们希望每个乐手都能得到公平的展示机会。

默认策略
Ribbon默认使用轮询策略,就像乐队指挥家轮流点名乐手一样,确保每个服务都有机会处理请求。

自定义策略
如果你想要更精细的控制,Ribbon允许你自定义负载均衡策略。比如,你可以根据服务的响应时间来加权分配请求,就像乐队指挥家根据乐手的表现来调整他们的演奏频率。

健康检查与过滤机制
Ribbon还会进行健康检查,就像指挥家检查乐手的状态一样,确保只有健康的服务实例才会接收到请求。你可以通过配置文件或编程方式来定义哪些服务实例被认为是健康的。


通过这个基础介绍,我们可以看到Ribbon是如何在微服务架构中扮演负载均衡器的角色的。就像乐队指挥家一样,Ribbon确保每个服务都能在最佳状态下工作,同时提供灵活性和可定制性,以适应不同的业务需求。接下来,我们将探索Ribbon的高级特性,看看如何让这个乐队的演出更加精彩。

4. 高级特性与配置

4.1 读取远程配置

想象一下,你是一位厨师,每天的菜单都由远在千里之外的总厨通过信鸽传来。在Spring Cloud的世界中,Spring Cloud Config就扮演着这位总厨的角色,而Ribbon和其它服务就像是那些等待菜单的厨师。

Spring Cloud Config集成
通过Config Server,我们可以集中管理配置信息,就像总厨管理着整个餐厅的菜单。Ribbon可以通过Config Server读取配置信息,实现动态调整负载均衡策略。

动态配置更新
当总厨更新了菜单,厨师们需要立即知道。同样,当Config Server更新了配置,Ribbon可以通过刷新机制动态获取最新的配置,无需重启服务。

4.2 超时与重试机制

在厨房中,如果一道菜迟迟未上,顾客可能会不耐烦。在服务调用中,如果请求迟迟未响应,我们也需要采取措施。

设置连接与读取超时
Ribbon允许你为服务调用设置超时时间,就像给厨师设定完成菜品的时间限制。如果超出了这个时间,Ribbon会认为服务不可用,转而调用其他服务。

异常重试策略
就像厨师在准备菜品时可能会遇到小问题,需要重新尝试一样,Ribbon也可以配置重试策略。当服务调用失败时,Ribbon可以自动重试,直到成功或者达到重试次数上限。

在这里插入图片描述

4.3 客户端负载均衡与服务发现

想象一下,你是一位餐厅经理,你不仅需要知道哪些厨师在工作,还需要知道他们的工作状态,以便合理分配顾客。

与Eureka的深度集成
Ribbon与Eureka的集成,让Ribbon能够实时获取服务实例的信息。就像餐厅经理通过监控系统了解厨师的工作状态。

自定义服务列表获取逻辑
Ribbon允许你自定义获取服务列表的逻辑,就像餐厅经理可以根据顾客的特殊需求,选择特定的厨师来准备菜品。


通过这些高级特性,Ribbon不仅能够实现基本的负载均衡,还能够根据实时的配置更新、服务状态和业务需求,动态调整其行为。就像一个高级餐厅,不仅提供美味的食物,还能根据顾客的反馈和偏好,不断优化服务。

接下来,我们将深入实战应用,看看如何将这些高级特性应用到实际场景中,让Ribbon成为微服务架构中的超级明星。

5. 实战应用与最佳实践

5.1 故障隔离与降级策略

想象一下,你是一位船长,你的船在茫茫大海中航行,突然遇到了暴风雨。这时,你需要迅速采取措施保护船只和船员。在微服务架构中,故障隔离和降级策略就像是你的救生圈和备用帆。

Hystrix与Ribbon的协同
Hystrix是一个断路器,当某个服务出现问题时,它可以防止问题扩散到整个系统。而Ribbon则可以与Hystrix协同工作,当检测到某个服务实例出现问题时,Ribbon会将其从服务列表中移除,直到该实例恢复正常。

服务降级处理
服务降级是一种策略,当系统负载过高或某些服务不可用时,系统会提供简化版本的服务。就像在暴风雨中,船长可能会决定放弃一些货物,以保证船只和船员的安全。

5.2 性能调优与监控

想象一下,你是一位赛车手,你需要不断调整你的赛车,以确保它在赛道上的表现最佳。在微服务架构中,性能调优和监控就像是你的赛车调校工具和仪表盘。

性能指标监控
通过监控工具,如Prometheus或Spring Boot Actuator,你可以实时监控服务的性能指标,如响应时间、吞吐量等。这就像是赛车手通过仪表盘监控赛车的速度和油耗。

调优建议与案例分析
根据监控数据,你可以对服务进行调优。比如,你可能需要增加服务实例的数量,或者优化服务的代码和配置。就像赛车手根据赛道情况调整赛车的设置。

5.3 安全策略集成

想象一下,你是一位银行的保安,你的任务是保护银行的安全。在微服务架构中,安全策略集成就像是你的安全系统和监控摄像头。

身份验证与授权
通过集成OAuth2、JWT等安全机制,你可以确保只有授权的用户和服务才能访问你的服务。这就像是银行的保安检查进入者的身份证和访问权限。

安全最佳实践
遵循安全最佳实践,如使用HTTPS、定期更新安全证书、限制访问权限等,可以提高系统的安全性。这就像是银行保安定期进行安全演练,确保在紧急情况下能够迅速响应。


通过这些实战应用和最佳实践,我们可以确保微服务架构的稳定性、性能和安全性。就像一个经验丰富的船长、赛车手和银行保安,我们通过不断的学习和实践,提高我们的技能,以应对各种挑战。

接下来,我们将探讨一些经典问题及其解决方案,看看如何在实际应用中解决这些问题,让我们的微服务架构更加健壮和可靠。

6. 经典问题与解决方案

6.1 服务调用延迟或失败

想象一下,你是一个快递小哥,每天骑着你的小摩托穿梭在城市的大街小巷。但是有一天,你发现有些包裹总是送不到,或者送得特别慢。在微服务的世界里,服务调用的延迟或失败,就像是这些送不出去的包裹。

网络问题排查
首先,你需要检查网络连接,就像检查你的小摩托的油路和电路一样。在服务调用中,这可能意味着检查网络延迟、丢包率等。

负载策略调整
如果发现某些服务实例响应特别慢,可能需要调整Ribbon的负载均衡策略。比如,你可以尝试更换为基于响应时间的加权策略,就像选择一条不那么拥堵的路线。

6.2 负载不均现象

再想象一下,你是一个农场主,你的农场有很多奶牛。但是有一天,你发现有些奶牛挤奶挤得特别频繁,而有些奶牛却几乎没被挤过。在微服务中,这就像是负载不均。

配置不当分析
首先,你需要检查Ribbon的配置,看看是否有不当之处。比如,检查服务实例的权重是否设置得当,或者是否有服务实例被错误地标记为不健康。

均衡策略优化
你可能需要优化负载均衡策略,比如引入更智能的算法,或者根据服务的实时性能数据动态调整权重。

6.3 高并发下的稳定性

想象你是一个游乐场的管理员,你的任务是确保在游客高峰时段,所有的游乐设施都能稳定运行。

并发控制策略
在高并发情况下,你可能需要实施并发控制策略,比如限制同时访问服务的请求数量,或者使用限流算法来控制请求的速率。

熔断与限流机制
就像游乐场在游客过多时会限制进入某些区域的人数一样,熔断和限流机制可以帮助保护服务不被过多的请求压垮。

6.4 配置不生效问题

想象你是一个摄影师,你已经调整好了所有的设置,但是拍出来的照片还是不理想。在微服务中,配置不生效就像是这些不理想的照片。

配置刷新机制理解
你需要理解Spring Cloud Config的配置刷新机制,确保你的服务能够及时获取到最新的配置。

环境与上下文问题排查
检查服务的环境和上下文设置,确保配置项被正确地加载和应用。

6.5 服务实例信息不准确

想象你是一个图书馆管理员,你需要确保每本书的位置信息都是准确的,以便读者能够快速找到。

Eureka服务注册与发现故障处理
如果服务实例信息不准确,可能是因为Eureka服务注册与发现出现了问题。检查Eureka服务器的日志,看看是否有异常或错误。

Ribbon服务列表缓存问题
Ribbon可能会缓存服务列表,如果服务实例有变动,需要确保Ribbon能够及时更新其缓存。


通过这些生动的例子和解决方案,我们可以看到,在微服务架构中,遇到问题并不可怕,关键是要有正确的方法和工具来诊断和解决问题。就像生活中的各种角色,我们通过不断学习和实践,变得更加专业和高效。接下来,我们将总结Spring Cloud Ribbon的核心价值,以及它对微服务架构的贡献与局限性。

在这里插入图片描述

7. 结论

Spring Cloud Ribbon的核心价值

想象一下,你是一位园丁,你的花园里种满了各式各样的花朵。为了让花园看起来更加和谐美丽,你需要精心地修剪和照料每一朵花。在微服务的花园中,Ribbon就像那位园丁,它精心地照料着每一个服务,确保整个系统的健康和平衡。

核心价值

  • 简化负载均衡:Ribbon为客户端提供了一种简单而强大的负载均衡能力,让开发者可以专注于业务逻辑,而不必过多地担心服务之间的调用问题。
  • 与Spring Cloud生态的无缝集成:Ribbon与Eureka、Hystrix等组件的紧密集成,使得在Spring Cloud生态中构建高可用的微服务架构变得更加容易。
  • 灵活性和可扩展性:Ribbon支持自定义负载均衡策略,开发者可以根据业务需求灵活地调整和优化服务调用。

对微服务架构的贡献与局限性

贡献

  • Ribbon通过其负载均衡能力,显著提高了微服务架构的伸缩性和可用性。
  • 它与服务发现组件的集成,使得服务实例的动态管理变得更加简单。
  • 通过与Hystrix等断路器的配合,Ribbon帮助系统在面对故障时能够更加优雅地降级和恢复。

局限性

  • 作为一个客户端负载均衡器,Ribbon需要与服务发现组件(如Eureka)配合使用,这可能会增加系统的复杂性。
  • 在某些场景下,Ribbon可能不如服务端负载均衡器(如Nginx)那样高效,特别是在处理大规模服务集群时。
  • 随着微服务架构的不断发展,Ribbon可能需要不断更新和优化,以适应新的技术和业务需求。

就像园丁精心照料花园一样,Ribbon以其核心价值和贡献,精心照料着微服务架构的每一个角落。虽然它有其局限性,但通过不断的学习和实践,我们可以更好地利用Ribbon,让微服务的花园绽放出更加绚丽的花朵。

随着技术的发展,我们有理由相信,Ribbon和Spring Cloud生态将继续进化,为我们带来更多的可能性和惊喜。让我们拭目以待,看看未来它们将如何帮助我们构建更加强大和灵活的微服务架构。


8. 参考文献

官方文档

  1. Spring Cloud官方文档
    Spring Cloud官网
    这是最权威的资源,提供了关于Spring Cloud各个方面的详细信息。

  2. Spring Cloud Ribbon官方文档
    Ribbon文档
    详细介绍了Ribbon的使用方法和配置选项。

社区博客和教程

  1. 《微服务设计》
    作者:Sam Newman
    这本书深入探讨了微服务架构的设计原则和模式。

  2. 《Spring Cloud与Docker微服务架构实战》
    作者:翟永超
    结合实战案例,详细介绍了Spring Cloud和Docker在微服务架构中的应用。

  3. 《深入理解Spring Cloud与微服务构建》
    作者:周立
    深入分析了Spring Cloud的核心组件和微服务构建的关键技术。

在线教程和视频

  1. InfoQ - Spring Cloud专题
    InfoQ Spring Cloud
    InfoQ上有许多关于Spring Cloud的高质量文章和访谈。

  2. YouTube - Spring Cloud系列教程
    Spring Cloud Tutorials
    YouTube上有许多视频教程,适合初学者和进阶学习者。

开源项目

  1. GitHub - Spring Cloud Samples
    Spring Cloud Samples
    GitHub上的官方示例项目,包含了许多Spring Cloud组件的使用示例。

  2. GitHub - Spring Cloud Netflix Ribbon
    Ribbon GitHub Repo
    Ribbon的GitHub仓库,可以查看源码和提交记录,了解其内部实现。

论坛和社区

  1. Stack Overflow - Spring Cloud标签
    Stack Overflow
    Stack Overflow上有许多关于Spring Cloud的问题和讨论,是解决实际问题的好去处。

  2. Spring Cloud Gitter聊天室
    Gitter
    Spring Cloud的官方Gitter聊天室,可以与开发者和其他用户实时交流。

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

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

相关文章

【chagpt】广泛使用API之前:考虑成本和数据隐私

文章目录 一. 定价和标记限制二. 安全和隐私 在广泛使用API之前&#xff0c;应该考虑两个重要因素&#xff1a;成本和数据隐私。 一. 定价和标记限制 OpenAI在Pricing页面上列出了模型的定价。请注意&#xff0c;OpenAI不一定及时更新该页面上的定价信息&#xff0c;因此实际…

爱岗敬业短视频:成都科成博通文化传媒公司

爱岗敬业短视频&#xff1a;传递正能量&#xff0c;塑造职场新风尚 在当今社会&#xff0c;短视频以其独特的传播方式和广泛的受众群体&#xff0c;成为了信息传播的重要渠道。在众多短视频内容中&#xff0c;以“爱岗敬业”为主题的短视频尤为引人注目&#xff0c;成都科成博…

链表mark

什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针的意思&#xff09;。…

《TCP/IP网络编程》(第十一章)进程间通信

进程间通信意味着两个不同的进程间可以交换数据&#xff0c;它使得不同的进程能够协同工作&#xff0c;实现复杂的系统功能。 1.通过管道实现进程间通信 下图是基于 管道&#xff08;PIPE&#xff09; 的进程间通信结构模型 管道不属于进程的资源&#xff0c;属于操作系统的资…

怎么简单的把图片缩小?图片在线改大小的方法

在日常工作中经常需要在网上上传图片&#xff0c;但是一般网上不同的平台对上传的图片大小和尺寸都会有限定的要求&#xff0c;不符合要求无法正常上传使用。所以当遇到图片太大的问题时&#xff0c;该如何快速修改图片大小&#xff0c;有很多的小伙伴都很关注这个问题的解决方…

qmt量化交易策略小白学习笔记第7期【qmt策略之股票快照指标】

qmt策略之股票快照指标 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 股票快照指标 提供标…

趣店集团golang一面要个20K,Channel什么情况下会出现死锁,有遇到过吗?

结束后面试官加了VX&#xff0c;并询问方便二面的时间&#xff0c;一直还没回复&#xff0c;拖着拖着给忘啦... 面试题 1、自我介绍 2、你在团队里头负责哪一块&#xff0c;这个物流开放平台流量多大 3、为什么今年3月份被从物流开放团队转到了finance财务部门&#xff0c;感…

VSCODE中F12无法跳转,快捷键设置F12和insert混淆了

异常现象 最近用新电脑&#xff08;华为&#xff09;的时候&#xff0c;发现VSCODE经常按F12无法跳转&#xff0c;在快捷键设置当中&#xff0c;也是设置成功的&#xff1b; 此时重新去快捷键设置&#xff0c;会发现按 F12变为了Insert 解决方法 华为笔记本的Fx按键&#x…

YashanDB携手慧点科技完成产品兼容认证 助力国产信创生态建设

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与慧点科技顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;共同支撑政府、企业、金融等办公应用场景下的数字化转型升级&#xff0c;为企业的信息技术应用创新提供坚…

如何彻底卸载sql sever2022

目录 背景过程1、关闭sql sever服务2、打开控制面板&#xff0c;卸载SQL Sever3、手动删除 SQL Server 遗留文件4、清空注册表5、重启计算机以确保所有更改生效。 总结 背景 重装了电脑&#xff0c;安装sqlServer&#xff0c;一直报错&#xff0c;不成功&#xff0c;所以每次安…

AAAI2024 基于扩散模型 多类别 工业异常检测 DiAD

前言 本文分享一个基于扩散模型的多类别异常检测框架&#xff0c;用于检测工业场景的缺陷检测或异常检测。 设计SG语义引导网络&#xff0c;在重建过程中有效保持输入图像的语义信息&#xff0c;解决了LDM在多类别异常检测中的语义信息丢失问题。高效重建&#xff0c;通过在潜…

装机必备——Bandizip7.33安装教程

装机必备——Bandizip7.33安装教程 软件下载 软件名称&#xff1a;Bandizip7.33 软件语言&#xff1a;简体中文 软件大小&#xff1a;8.42M 系统要求&#xff1a;Windows7或更高&#xff0c; 64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 下载通道①迅…

基坑气膜:建筑工地环保新利器—轻空间

随着城市化进程的加快&#xff0c;建筑行业的飞速发展带来了严重的环境问题&#xff0c;如噪音和粉尘污染&#xff0c;给人们的生活带来诸多不便。为了解决这些问题&#xff0c;建筑行业一直在探索更为环保和高效的施工方式。近年来&#xff0c;基坑气膜技术逐渐崭露头角&#…

编程零基础,如何学习Python?

初学者选择Python入手着实是一个不错的方向&#xff0c;入手简单且广泛的运用是它最显著的特色了。 那有几个问题&#xff0c;我想是开始学习Python之前应该了解的&#xff0c; python能做什么&#xff1f; 发展前景与工作机会有哪些&#xff1f; 需要学习哪些内容&#xf…

go-zero 实战(4)

中间件 在 userapi 项目中引入中间件。go项目中的中间可以处理请求之前和之后的逻辑。 1. 在 userapi/internal目录先创建 middlewares目录&#xff0c;并创建 user.go文件 package middlewaresimport ("github.com/zeromicro/go-zero/core/logx""net/http&q…

实战

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 实战一&#xff1a;输出“王者荣耀”的游戏角色 “王者荣耀”游戏中有很多英雄&#xff0c;这些英雄可以分为法师、战士、坦克、刺客、射手和辅助。…

Python---Matplotlib(2万字总结)【从入门到掌握】

数据可视化 在完成了对数据的透视之后&#xff0c;可以将数据透视的结果通过可视化的方式呈现出来&#xff0c;简单的说&#xff0c;就是将数据变成漂亮的图表&#xff0c;因为人类对颜色和形状会更加敏感&#xff0c;然后再进一步解读数据背后隐藏的价值。在之前的文章中已经…

OSPF优化——OSPF减少LSA更新量2

二、特殊区域——优化非骨干区域的LSA数量 不是骨干区域、不能存在虚链路 1、不能存在 ASBR 1&#xff09;末梢区域 该区域将拒绝 4、5LSA的进人&#xff0c;同时由该区域连接骨干0区域的ABR 向该区域&#xff0c;发布一条3类的缺省路由; 该区域内每台路由器均需配置&#xf…

【华为OD机试-C卷D卷-200分】反射计数(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。 无论物体…

浙江大学数据结构MOOC-课后习题-第十讲-排序4 统计工龄

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 测试点 思路分析 这道题很明显就是利用桶排序的思路 受到课程内容的影响&#xff0c;我一开始是想着建立一个链表数组&#xff0c;数组内每个元素下方都存放链表&#xff0c;最后再遍历统计输出。 但是&…