SpringCloud系列篇:入门讲解Spring Cloud是什么

news2025/4/9 17:42:33

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于SpringCloud的相关操作吧 

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

 一.Spring Cloud是什么

二.Spring Cloud的详解

生活例子

例子分析

结合说明Spring Cloud     

三.Spring Cloud的核心组件

1、注册中心组件

2、负载均衡组件

3、熔断器组件(断路器)

4、网关服务组件

5、配置中心

四.Spring Cloud 关系

1.Spring Cloud Netflix 第一代

2.Spring Cloud Alibaba 第二代

(1)阿里开源组件

(2)阿里商业化组件


一.Spring Cloud是什么

        Spring Cloud是基于Spring框架的一套用于快速构建分布式系统的开发工具集。它提供了常用的分布式系统模式,如服务注册与发现、配置中心、负载均衡、断路器、网关等,同时也支持各种云平台的集成,例如AWS、Azure、Google Cloud等。

        Spring Cloud主要关注以下几个方面:

  1. 服务注册和发现:Spring Cloud提供了服务注册和发现的功能,使得微服务能够动态地注册自己的服务实例,并能够自动发现和调用其他服务。

  2. 配置管理:Spring Cloud提供了集中式的配置管理功能,可以方便地管理微服务的配置信息,支持动态刷新配置。

  3. 负载均衡:Spring Cloud集成了负载均衡的功能,可以将请求均匀地分发到多个服务实例上,提高系统的可用性和性能。

  4. 断路器:Spring Cloud提供了断路器模式的实现,用于处理微服务之间的故障和延迟,提高系统的容错性。

  5. 链路追踪:Spring Cloud支持分布式链路追踪,可以跟踪并记录微服务之间的调用关系,方便排查和解决问题。

通过使用Spring Cloud,开发人员可以更方便地构建和管理分布式系统,降低系统之间的耦合度,提高系统的可伸缩性和可维护性

二.Spring Cloud的详解

        如果单说Spring Cloud的定义以及它的组件的话,好像都不是很好理解,感觉都太官方了,所以我这里按照自己的理解,给大家举一个通俗易懂的例子


生活例子

假设你有一个大型餐厅,每天会有很多顾客光顾

为了提供更好的服务和管理,你决定将餐厅分为几个部分

点餐台

厨房

结账台

以上每个部分都有自己的任务和职责

  • 在这里,点餐台可以看作是一个服务,负责接受顾客的点餐请求。
  • 而厨房是另一个服务,负责根据点餐台的请求来烹饪食物。
  • 结账台也是一个服务,负责收银和处理支付。

每个服务都有自己的工作,但是它们需要相互协作才能完成整个服务流程

现在,如果有一个新的顾客来到餐厅,他会去点餐台进行点餐,并将点餐信息传递给厨房。厨房根据点餐信息准备食物,并将完成的食物送回给点餐台。最后,顾客去结账台结账并完成支付


例子分析

  • 大型的餐厅就好比于我们的一个大型的项目
  • 其中有很多顾客光顾餐厅就相当于有很多的用户会访问我们的项目
  • 将餐厅分为几个部分,就相当于我们把一个项目分成好几个模块
  • 需要相互协作才能完成整个服务流程,也相当于我们项目中处理用户请求一样,每个模块都会发挥到自己的作用

        我们在餐厅吃饭的时候,可能会遇到这样的情况,假设我们点好菜,但是菜一直没有上齐,我们又很想快点吃到饭,那我们这个时候是不是需要催一下厨房,让它赶快把菜炒好。但是我们顾客也不知道这个餐厅的厨房到底在哪里,所以这个时候我们一般都会请求服务员来帮助我们去催一下厨房。

        同样的,我们把项目分成了几个模块,是不是也需要一个地方来管理这些模块呢?Spring Cloud就起到了这个的作用。它提供了服务注册与发现,就像是一个餐厅的导航板,告诉顾客每个服务的位置。同时,它还提供了负载均衡的功能,就像是餐厅内有多个点餐台和厨房窗口,可以平均分配顾客的请求,提高服务效率。此外,Spring Cloud还提供了断路器的机制,就像是餐厅突然出现了问题,会自动切换到备用方案,避免整个服务流程崩溃

首先,我们将餐厅拆分为三个服务:点餐台、厨房和结账台。每个服务都有自己的任务和职责。


结合说明Spring Cloud     

        点餐台服务负责接受顾客的点餐请求,处理顾客的点餐信息,并将点餐信息传递给厨房。这个服务需要保证高可靠性和高并发性,因为每天会有很多顾客在这里进行点餐。

        厨房服务负责根据点餐台的请求来烹饪食物,并将完成的食物送回给点餐台。这个服务需要保证高吞吐量和高性能,因为它需要快速地响应点餐台的请求,同时还需要保证食物的质量和口感。

        结账台服务负责收银和处理支付,将顾客的支付信息传递给支付平台。这个服务需要保证高安全性和高可靠性,因为它需要处理顾客的敏感信息,同时还需要保证支付的准确性和可追溯性。

        接下来,我们使用Spring Cloud来构建这些服务。首先,我们使用服务注册与发现模式来注册每个服务的地址,让其他服务可以通过注册中心查询并调用它。这样,我们就可以将每个服务拆分成多个实例,并通过负载均衡机制来平均分配请求,提高系统的吞吐量和可用性。

        其次,我们使用配置中心来动态修改服务的配置,比如修改菜单价格、添加新的菜品等。这样,我们就可以在不重启服务的情况下,快速地更新服务的配置信息。

        最后,我们使用断路器来避免服务故障和系统崩溃。当某个服务出现故障时,断路器会自动切换到备用方案,保证整个服务流程的顺利进行。

        总之,Spring Cloud提供了一套完整的分布式系统解决方案,可以帮助我们更加轻松地构建分布式系统,并提供了常用的分布式系统模式,使得整个系统更加稳定、可靠。【也就是里面提供了很多的组件,供我们来完成需求】

三.Spring Cloud的核心组件

1、注册中心组件

Spring Cloud Netflix Eureka(服务治理)

        Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。比如订单服务想要调用库存服务、仓储服务,或者是积分服务,怎么调用? 订单服务压根儿就不知道人家库存服务在哪台机器上啊!他就算想要发起一个请求,都不知道发送给 谁,有心无力!

这时候注册中心这个组件就能发挥到作用了

  • 它提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 的服务注册表将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到;
  • Eureka Server 之间通过复制的方式完成数据的同步,Eureka 还提供了客户端缓存机制,即使所有的 Eureka Server 都挂掉,客户端依然可以利用缓存中的信息消费其他服务的 API;
  • 在应用启动后,Eureka Client 将会向 Eureka Server 发送心跳,默认周期为 30 秒,如果 Eureka Server 在多个心跳周期内(默认 90 秒)没有接收到某个节点的心跳,Eureka Server 将会进入自我保护机制;

2、负载均衡组件

Spring Cloud Netflix Ribbon,各个微服务进行分摊,提高性能

        Netflix Ribbon的作用是是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上。可以想象一家电商网站,每天都有大量的用户访问该网站来查找商品、下订单等。如果所有的请求都发送到同一个服务器上处理,当访问量增加时,这个服务器可能会超负荷运行,导致网站响应变慢甚至崩溃。

为了解决这个问题,可以使用到Spring Cloud中的负载均衡组件

  •  负载均衡:Ribbon可以根据预定义的负载均衡策略(如轮询、随机、加权等)将请求分发到后端的多个服务实例上。这样可以避免某个服务实例过载,提高整个系统的性能和可扩展性。

  • 故障转移:当某个服务实例不可用或出现故障时,Ribbon可以自动将请求转发到其他可用的服务实例上,确保系统的稳定性和可靠性。

  • 服务发现:Ribbon可以与Netflix的服务发现工具Eureka等集成,实现动态的服务发现。它可以从服务注册中心获取可用的服务实例列表,并根据负载均衡策略选择合适的服务实例。

  • 定制化配置:Ribbon提供了一系列的配置选项,可以根据应用的需求进行灵活的定制。开发人员可以配置负载均衡策略、超时设置、重试机制等,以满足具体的业务需求。

3、熔断器组件(断路器)

Spring Cloud Netflix Hystrix,保护系统,控制故障范围

        假设有一个电商网站,它通过微服务架构实现了用户服务、订单服务和支付服务等多个服务。其中,订单服务调用了支付服务来完成支付操作。在高峰期或异常情况下,支付服务出现了故障或响应延迟变得很高。此时如果没有使用熔断器,那么可能导致订单服务无法及时响应,其他依赖该服务的服务(如库存服务)也将受到影响。这可能导致整个系统的故障蔓延,使得用户无法下单,库存无法更新等。

使用了熔断器组件就会是不一样的结果了:

  •  故障隔离:Hystrix使用断路器模式来实现故障隔离。当一个服务发生故障或超时时,Hystrix可以将请求快速失败并返回一个备选的响应,而不会影响到其他服务的正常运行。这样可以防止故障在整个系统中的传播,提高系统的稳定性。

  • 降级策略:Hystrix提供了降级功能,可以在主服务不可用时提供备选的响应。开发人员可以定义降级逻辑,例如返回默认值、调用缓存数据或执行简化的逻辑,以确保在主服务不可用时仍能够提供一定程度的功能。

  • 超时控制:Hystrix允许开发人员为每个服务调用设置超时时间,并在超时发生时进行处理。通过设置适当的超时时间,可以避免长时间的阻塞,提高系统的响应性能。

  • 实时监控和指标收集:Hystrix提供了丰富的实时监控和指标收集功能,可以帮助开发人员了解系统的健康状况和性能表现。通过监控Hystrix的统计数据,开发人员可以及时发现潜在的问题,并采取相应的措施加以处理。

4、网关服务组件

Zuul,Spring Cloud Gateway;api网关,路由,负载均衡等多种作用

        假设有一个电子商务平台,它基于微服务架构构建。在该平台中,有多个微服务,包括用户服务、商品服务和订单服务。每个微服务都有自己的API,用于处理相关的业务逻辑。

在没有网关路由的情况下,客户端需要直接与每个微服务进行通信。例如,当客户端想要获取商品信息时,它必须向商品服务发送请求。同样地,当客户端想要创建订单时,它必须向订单服务发送请求。但是,这种直接通信的方式存在一些问题:客户端需要了解每个微服务的地址和API细节。对于一个复杂的系统来说,客户端可能需要维护大量的连接和请求逻辑,增加了客户端的复杂性。没有统一的入口,各个微服务可能都需要进行独立的认证和授权。这样会导致安全策略分散,难以集中管理和更新。如果有新的微服务加入或旧的微服务被替换,客户端需要相应地更新和调整连接和请求逻辑【缺乏灵活性】。

如果使用了网关服务的组件,就能够很好的解决这些问题

  • 统一入口:网关路由作为系统的统一入口,集中处理所有的外部请求。它可以将所有的请求转发到适当的微服务,使得客户端无需直接与每个微服务进行通信。这简化了客户端的调用方式,并减少了客户端的负担。

  • 请求路由和负载均衡:网关路由组件可以根据请求的路径、参数或头部信息等进行路由,将请求转发给相应的微服务实例。它还可以结合负载均衡算法,将请求均匀地分发给多个微服务实例,以提高系统的可扩展性和负载能力。

  • 安全性:网关路由可以作为安全层,对外部请求进行认证、授权和加密处理。它可以集成各种安全机制,如OAuth、JWT和SSL/TLS等,确保只有经过授权的请求才能访问后端的微服务。

  • 缓存和数据聚合:网关路由可以缓存一些常用的响应结果,避免重复计算或查询后端的微服务。它还可以根据需要从多个微服务中聚合数据,提供更高效的响应和用户体验。

  • 监控和日志:网关路由可以集成监控和日志系统,对请求进行跟踪和记录。这样可以方便开发人员进行系统性能分析、故障排查和日志审计等工作。

  • API 管理和版本控制:网关路由可以提供API管理功能,包括API文档生成、版本控制和订阅管理等。它可以帮助开发人员更好地管理和维护不同版本的API,并提供友好的接口文档给客户端使用

5、配置中心

Spring Cloud Config,将配置文件组合起来,放在远程仓库,便于管理

        假设我们有一个电子商务平台,其中包含多个微服务,例如用户服务、商品服务和订单服务。每个微服务都需要一些配置信息,如数据库连接信息、API密钥和日志级别。

在没有配置中心的情况下,这些配置信息可能被硬编码在各个微服务的代码中。当需要修改某个配置时,我们必须逐个修改每个微服务的代码,并重新部署每个微服务,这是非常繁琐且容易出错的

现在,我们引入一个配置中心组件,例如使用Spring Cloud Config。我们将所有的配置信息集中存储在配置中心中,例如Git仓库或数据库

  • 集中管理配置信息:配置中心允许将系统的配置信息集中存储在一个地方,而不是分散在各个微服务或应用程序中。这样做可以简化配置的管理和维护,提高配置的可见性和一致性。

  • 动态刷新配置:配置中心可以提供动态刷新配置的机制。当配置中心的配置信息发生变化时,可以自动通知到相关的微服务或应用程序,并实现实时的配置更新。这样,系统无需重启或重新部署,就能够应对配置的变化,提高系统的灵活性和可扩展性。

  • 提高安全性:配置中心可以加强对敏感配置信息的保护。通过配置中心,可以对不同的配置进行权限控制,只有经过授权的用户或应用程序才能够获取到相应的配置信息。这样可以避免敏感信息泄露的风险,提升系统的安全性。

  • 版本管理:配置中心可以支持配置的版本管理。每次配置的修改都可以被记录下来,并且可以回滚到之前的版本。这对于排查问题、恢复误操作或者跟踪配置变更历史非常有帮助。

  • 简化部署流程:使用配置中心可以简化应用程序的部署流程。在部署新的实例时,只需要从配置中心获取相应的配置信息即可,而无需手动修改和配置。这样可以提高部署的效率和一致性。

6.声明式HTTP客户端

        假设我们有一个微服务架构,其中有两个服务:订单服务和用户服务。订单服务需要调用用户服务获取用户信息。在没有Feign的情况下,我们需要手动编写HTTP客户端代码,发送HTTP请求到用户服务,然后解析响应结果。这样做的过程繁琐而容易出错,并且需要大量的重复性工作

  1. 简化服务间调用:Feign让服务间调用变得更加简单和直观,开发者只需要定义接口并注解描述服务间调用的参数、路径、HTTP方法和返回值等信息,然后Feign会自动生成具体的客户端实现代码。这样服务间调用就像调用本地方法一样,不需要自己编写HTTP客户端代码,减少了工作量和出错的风险。

  2. 提高可维护性:使用Feign,开发者可以将服务间调用的契约描述集中到接口定义中,使得服务间调用的规范和约束更加明确和统一,便于维护和修改。例如,如果服务提供者的API发生变化,只需要修改接口定义即可,而不需要修改所有的客户端代码。

  3. 支持负载均衡:Feign内置了Ribbon负载均衡器,支持对服务提供者进行负载均衡。开发者可以通过配置不同的Ribbon策略来实现不同的负载均衡算法,如轮询、随机等。

  4. 支持拦截器:Feign支持自定义拦截器,开发者可以通过实现RequestInterceptor接口来添加自己的拦截逻辑,例如添加请求头、身份认证等。

  5. 支持多种协议:Feign支持HTTP、HTTPS和HTTP2等多种协议,可以根据具体的需求进行选择。同时,它也支持对请求和响应的压缩和解压缩,减少网络传输的数据量。

四.Spring Cloud 关系

Spring Cloud 包含很多子项目: Netflix 和 Alibaba 两个标准使用最多

1.Spring Cloud Netflix 第一代

针对多种 Netflix 组件提供的开发工具包,其中包括 Eureka、Ribbon、Feign、Hystrix、Zuul、 Archaius 等。

Netflix Eureka:一个基于 Rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机 制的实现,实现了云端负载均衡和中间层服务器的故障转移。

  1. Netflix Ribbon:客户端负载均衡的服务调用组件。
  2. Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供 更强大的容错能力。
  3. Netflix Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
  4. Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。
  5. Netflix Archaius:配置管理 API,包含一系列配置管理 API,提供动态类型化属性、线程安全配置 操作、轮询框架、回调机制等功能。

2.Spring Cloud Alibaba 第二代

同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案。 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的 必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微 服务解决方案,通过阿里中间件来迅速搭建分布式应用系统 

(1)阿里开源组件

  1. Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平 台。
  2. Sentinel:面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制、熔断降 级、系统负载保护等多个维度保护服务的稳定性。
  3. RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的 消息发布与订阅服务。
  4. Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,用于实现服务通信。
  5. Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

(2)阿里商业化组件

  1. Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产 品。
  2. Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供 的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访 问任意类型的数据。
  3. Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、 高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  4. Alibaba Cloud SMS:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速 搭建客户触达通道。

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊 

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

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

相关文章

家里有必要买NAS吗?

完全没有必要,因为用旧电脑搭建NAS不仅价格实惠,而且非常简单,效果也完全不差买了的! 并且......还环保 教程链接: 用旧电脑搭建NAS在您的家庭中,通过将旧 PC 转变为NAS服务器,您可以轻松搭建…

Ubuntu 虚拟机挂接 Windows 目录

Windows 共享目录 首先 Windows 下共享目录 我这里偷懒直接直接 Everyone ,也可以指定用户啥的 Ubuntu 挂接 挂接命令,类似如下: sudo mount -o usernamefananchong,passwordxxxx,uid1000,gid1000,file_mode0644,dir_mode0755,dynperm //…

04set注入专题/简单类型/数组/List/Set/Map/空字符串/null/特殊符号

1.1注入外部Bean 在之前使用的案例就是注入外部Bean的方式。 <!-- class属性声明要管理哪个类中的对象 property标签的name是提示set方法名ref标签指明注入的bean的id--><bean id"userServiceBean" class"com.powernode.spring6.service.UserService…

WorkPlus支持平台级定制,助理企业自主掌控业务和生态

在数字化时代&#xff0c;企业越来越需要满足自身特性和需求的定制化解决方案。WorkPlus不同于企业微信、钉钉和飞书&#xff0c;它支持平台级的定制服务&#xff0c;完全掌控自身数字化进程。WorkPlus可根据企业的安全特性、强可控要求和高定制化场景&#xff0c;提供原厂平台…

基于 HTTPS 协议配置 Git 连接 GitHub

文章目录 0.安装 Git1.注册 GitHub 账号2.配置 Git 的用户名和邮箱3.远程连接 GitHub 有两种传输协议4.基于 SSH 协议配置 Git 连接 GitHub5.基于 HTTPS 协议配置 Git 连接 GitHub5.1 创建 GitHub 个人访问令牌5.2 有两种方法将本地仓库和远程仓库关联起来5.2.1 第一种方法&…

位运算--二进制中1的个数(含常见的二进制运算操作)

目录 二进制中1的个数操作 1 查看第k位的数字是否为1操作2 lowbit操作 解题代码&#xff1a; 原题链接: 二进制中1的个数 给定一个长度为 n 的数列&#xff0c;请你求出数列中每个数的二进制表示中 1 的个数。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数&#xff0c…

Turn.js 实现翻书效果

接到了任务&#xff0c;要把孩子画的画放到网页上去&#xff0c;翻页效果还要逼真一点。搜索到了turn.js这个前端翻页组件&#xff0c;效果不错。先上图看效果。 网页实际效果&#xff1a;星月夜诗集 turn.js的官网地址&#xff1a;Turn.js: The page flip effect in HTML5 …

STM32_HAL Freertos按键控制LED

设置GPIO引脚 根据电路图&#xff0c;K0为用户按键&#xff0c;连接在PA0引脚&#xff0c;当K0按下时接地&#xff0c;引脚电平低电平。在CubeMX中设置PA0&#xff0c;将IO设置为输入&#xff0c;上拉&#xff08;上拉外部悬空时&#xff0c;引脚为高电平&#xff09;。 添…

【Linux】Linux基础之权限

目录 一、Linux中的用户1.1 用户之间的身份切换1.2 指令提权 二、权限管理2.1 文件权限2.2 权限操作2.3 chown和chgrp 三、文件类型四、目录文件的权限操作五、权限掩码六、粘滞位 一、Linux中的用户 Linux中主要有两种用户&#xff1a; root&#xff0c;超级用户非root&…

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL&#xff0c;Postgresql&#xff0c;Sqlite 的 Driver 协同&#xff0c;可以实现对应数据库的表与文件的 JO…

Python Asyncio网络编程方法全面解析与实战应用!

更多Python学习内容&#xff1a;ipengtao.com Python的asyncio库是一种强大的异步编程工具&#xff0c;它使得编写高效的网络应用程序变得更加容易。在本文中&#xff0c;我们将深入探讨使用asyncio进行网络编程的方法&#xff0c;包括异步IO、协程、事件循环等方面的内容&…

Long类型转换精度丢失问题解决

问题: 启动前端项目 页面传递的ID 和数据库保存的ID不一致 原因&#xff1a;给前端返回的id为long类型&#xff0c;在转换json传递到前端以后精度丢失&#xff0c;所以前端给我们的id也是丢失精度的id,不能查询数据。 因为js数字类型最大长度为16位&#xff0c;而java的long类…

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索

一、GitCode AI开源搜索是什么&#xff1f; GitCode AI开源搜索 是面开发者的 AI 开源搜索工具&#xff0c;目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案&#xff0c;帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库。 二、GitCode…

如何才能成长为一个架构师?

很多技术小伙伴都在问我&#xff0c;架构师是不是很牛逼&#xff0c;那么为什么自己不能成长为一名优秀的架构师呢&#xff1f;而总是作为工程师资源被项目打包带走&#xff0c;并周而复始的完成领导的业务开发需求任务。 架构师的工作职责&#xff1f; 为了方便技术小伙伴理…

带修莫队 P1903 题解

Part # 0. 前言 \text{Part \# 0. 前言} Part # 0. 前言 这个蒟蒻刚学带修莫队&#xff0c;所以 介绍带修莫队的部分比较简略&#xff0c;大家可以去参考一下 OI-wiki 或者其他大佬的博客&#xff1a;&#xff09; 本文参考了洛谷题解。 Part # 1. 带修莫队 \text{Part \# 1.…

OSPF 路由协议原型系统设计与实现

1.题目描述 参考计算机网络教材 164 页 OSPF 路由协议工作原理&#xff0c;在此基础上&#xff0c;实现一个简单的原型系统。主 要完成工作有&#xff1a;路由节点泛洪发布本地节点的链路信息&#xff0c;其它节点接收信息&#xff0c;构造网络拓扑&#xff0c;然后利 用 Dijk…

Linux第18步_安装“Ubuntu系统下的C语言编译器GCC”

Ubuntu系统没有提供C/C的编译环境&#xff0c;因此还需要手动安装build-essential软件包&#xff0c;它包含了 GNU 编辑器&#xff0c;GNU 调试器&#xff0c;和其他编译软件所必需的开发库和工具。本节用于重点介绍安装“Ubuntu系统下的C语言编译器&#xff27;&#xff23;&a…

如何解决找不到mfc100u.dll无法运行程序问题,分享四种靠谱的方法

在日常使用电脑的过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是找不到mfc100u.dll的困扰。这个问题主要是因为mfc100u.dll是Microsoft Foundation Class&#xff08;MFC&#xff09;库中的一个版本特定的DLL文件&#xff0c;它是Visual Studio 2010及更早…

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助struts2框架开发mvc模式&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发&#xff0c;数据…

Video classification with UniFormer基于统一分类器的视频分类

本文主要介绍了UniFormer: Unified Transformer for Efficient Spatial-Temporal Representation Learning 代码&#xff1a;https://github.com/Sense-X/UniFormer/tree/main/video_classification UNIFormer 动机 由于视频具有大量的局部冗余和复杂的全局依赖关系&#xf…