解析Eureka的架构

1. 引言

1.1 Eureka的定义与背景

Eureka是由Netflix开发的一个RESTful服务,用于服务发现。它是微服务架构中的一个核心组件,主要用于管理服务的注册和发现。Eureka允许服务提供者注册自己的服务信息,同时也允许服务消费者查询可用的服务,以便进行通信和数据交互。Eureka的设计目标是简化微服务之间的相互通信,提高系统的灵活性和可扩展性。

1.2 在微服务架构中的重要性

在微服务架构中,服务数量庞大且动态变化,服务实例可能随时上线或下线。Eureka通过提供服务注册和发现功能,使得微服务之间的调用变得更加简单和高效。具体来说,Eureka的重要性体现在以下几个方面:

  • 动态服务管理:Eureka支持服务的动态注册和注销,允许微服务在运行时自我管理,确保系统能够适应变化。
  • 负载均衡:通过Eureka,服务消费者可以获取多个服务实例的信息,从而实现负载均衡,提高系统的可用性和性能。
  • 容错处理:Eureka具备故障检测能力,能够在服务不可用时及时更新服务列表,保证服务调用的可靠性。
  • 简化配置:Eureka集成了许多配置管理功能,减少了开发和运维的复杂度,使得微服务的部署和维护更加便捷。

通过Eureka,微服务架构能够实现高可用、高扩展性的系统设计,为现代应用程序的开发提供了强有力的支持。

2. Eureka架构概述

Eureka是一个RESTful服务,用于中间层服务的注册与发现。它是Netflix开源的一个组件,广泛用于微服务架构中,帮助服务实例相互发现。

2.1 Eureka Server与Eureka Client的角色

Eureka Server:

  • 服务注册中心:Eureka Server充当服务注册中心,负责管理所有服务实例的注册信息。
  • 提供服务发现:Eureka Server能够提供服务实例的信息,供其他服务进行调用和访问。
  • 高可用性:Eureka Server可以部署多个实例,以实现负载均衡和高可用性。通过使用客户端负载均衡,Eureka能够保证在某个实例不可用时,服务仍然可以被发现。

Eureka Client:

  • 服务注册:每个微服务实例作为Eureka Client,启动时会向Eureka Server注册自身的信息(如服务名、实例ID、IP地址、端口等)。
  • 心跳机制:Eureka Client定期向Eureka Server发送心跳,以维持注册状态。如果某个客户端停止发送心跳,Eureka Server会在一定时间后将其标记为下线。
  • 服务发现:Eureka Client能够从Eureka Server获取其他服务实例的信息,从而实现服务调用。

2.2 服务注册与发现流程

服务注册流程:

  1. 服务启动:微服务实例启动时,会初始化Eureka Client。
  2. 发送注册请求:Eureka Client向Eureka Server发送注册请求,包含服务实例的信息。
  3. Eureka Server接收注册:Eureka Server接收注册请求,并将服务实例信息存储在其注册表中。
  4. 返回注册结果:Eureka Server返回注册成功的响应给Eureka Client,服务实例开始向Eureka Server定期发送心跳。

服务发现流程:

  1. 服务请求:当微服务需要调用其他服务时,首先会向Eureka Server请求服务列表。
  2. 获取服务实例:Eureka Server返回当前注册的服务实例列表。
  3. 负载均衡选择:Eureka Client根据负载均衡策略,从服务实例列表中选择一个实例进行调用。
  4. 服务调用:Eureka Client向选定的服务实例发送请求,完成服务调用。

3. Eureka的核心特性

3.1 自我保护机制

Eureka的自我保护机制可以有效防止由于网络抖动或临时性故障导致的服务实例不可用情况。当Eureka Server发现某个服务实例在一定时间内未能心跳(即未定期向Eureka Server发送状态更新),它并不会立即将该实例从注册列表中移除。相反,Eureka会启动自我保护模式,允许服务实例在短时间内保持“存活”状态,防止服务的意外下线。这种机制的主要目的是避免因短暂的网络问题而导致的服务大规模宕机,从而提高系统的稳定性。

3.2 客户端负载均衡

Eureka实现了客户端负载均衡的功能,使得客户端能够在请求服务时根据注册的服务实例动态选择一个合适的实例。Eureka与Spring Cloud Ribbon等负载均衡组件紧密集成,允许开发者通过配置来选择负载均衡策略(如轮询、随机等)。客户端在获取服务实例列表后,可以选择最适合的实例进行请求,从而提高系统的吞吐量和响应速度,优化资源的利用。

3.3 服务实例的健康检查

Eureka提供了服务实例的健康检查机制,以确保客户端请求的服务实例是可用的。每个注册的服务实例在向Eureka Server发送心跳的同时,也可以在心跳请求中包含健康状态信息。Eureka Server会根据这些信息来判断服务实例的健康状态,并在必要时将不可用的实例从服务列表中剔除。这样,客户端在进行负载均衡时就能避免将请求发送到不可用的服务实例,提高了整个系统的可靠性和可用性。

4. Eureka的使用场景

4.1 微服务架构中的应用示例

在微服务架构中,各个服务通常是独立运行的,但它们需要通过网络进行通信和协作。Eureka的服务注册与发现机制为这些服务提供了一个动态的、中心化的注册表,便于服务之间的相互发现和通信。以下是一些典型应用场景:

  • 动态服务发现:当一个服务实例上线时,它会自动注册到Eureka Server,其他需要调用此服务的服务实例可以通过Eureka Server获取其详细信息。这样,服务提供者和服务消费者都不需要硬编码服务地址,增强了系统的灵活性和动态扩展能力。
  • 弹性扩展:在系统负载增加时,可以部署更多的服务实例,它们会自动注册到Eureka Server,从而实现服务的无缝扩展。当负载下降时,多余的实例可以被下线并从Eureka Server中移除。
  • 故障转移:如果某个服务实例宕机,Eureka会在健康检查中发现,并将该实例从可用服务列表中剔除,使得服务消费者可以自动选择其他可用实例进行调用,保证了系统的高可用性。

4.2 与Spring Cloud的集成

Eureka在与Spring Cloud集成时,可以实现更加强大的功能和更便捷的配置。Spring Cloud Netflix是Spring Cloud生态系统中提供Eureka功能的模块。以下是Eureka与Spring Cloud集成的优势和示例:

  • 快速启动和配置:通过Spring Boot和Spring Cloud的自动配置功能,开发者可以快速配置Eureka Server和Eureka Client。只需在application.propertiesapplication.yml文件中添加必要的配置,即可启动Eureka。
  • 服务注册与发现的自动化:Spring Cloud Netflix Eureka使服务在启动时自动注册到Eureka Server。消费者可以通过简单的声明式注解或配置,从Eureka Server获取服务实例列表,实现服务发现。
  • Spring Cloud Ribbon负载均衡:Eureka与Spring Cloud Ribbon无缝集成,提供客户端负载均衡功能,使得请求可以根据负载策略选择服务实例。
  • Spring Cloud Feign支持:通过与Feign结合,开发者可以实现更简洁的服务调用,Feign会自动使用Eureka的服务发现功能来调用远程服务,使服务间调用代码更加简洁和可维护。

例如,一个简单的Eureka Server配置可以如下实现:

# application.yml for Eureka Server
server:port: 8761eureka:client:register-with-eureka: falsefetch-registry: falseserver:enable-self-preservation: true

一个Eureka Client的配置示例如下:

# application.yml for Eureka Client
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true

通过这些配置,开发者可以轻松搭建一个支持服务注册与发现的微服务架构。Spring Cloud与Eureka的结合为开发者提供了强大的功能,简化了微服务的管理和交互流程。

5. Eureka的配置

5.1 基本配置示例

在设置Eureka时,基本配置包括Eureka Server和Eureka Client的简单配置,以确保服务能够正常注册和发现。

Eureka Server的基本配置
application.yml中,Eureka Server的基础配置如下:

server:port: 8761  # Eureka Server运行的端口eureka:client:register-with-eureka: false  # 不向自身注册fetch-registry: false        # 不从注册中心获取注册表server:enable-self-preservation: true  # 开启自我保护机制

Eureka Client的基本配置
Eureka Client需要在application.ymlapplication.properties中进行配置,以便与Eureka Server通信。

eureka:client:service-url:defaultZone: http://localhost:8761/eureka/  # 指定Eureka Server的URLinstance:prefer-ip-address: true  # 使用IP地址进行服务注册

上述配置适用于将Eureka Server和Client部署在本地环境中的基本场景。

5.2 高级配置选项

为了应对复杂场景,Eureka提供了一些高级配置选项,以实现更高的灵活性和可用性。

高级配置选项示例

  1. 自定义实例ID
    配置服务实例的唯一ID,以便于在注册表中识别。

    eureka:instance:instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
    
  2. 心跳间隔和超时设置
    自定义Eureka Client发送心跳的频率和超时参数,以确保服务的状态更新及时。

    eureka:client:lease-renewal-interval-in-seconds: 10  # 心跳间隔(默认30秒)lease-expiration-duration-in-seconds: 90  # 超时期限(默认90秒)
    
  3. 服务过滤和注册管理
    配置只允许某些服务注册到Eureka Server。

    eureka:server:registry-sync-retries: 3  # 注册表同步重试次数eviction-interval-timer-in-ms: 60000  # 实例剔除间隔时间
    
  4. 自我保护机制设置
    可以启用或禁用自我保护机制,以防止网络故障时大规模服务下线。

    eureka:server:enable-self-preservation: false  # 禁用自我保护
    
  5. 配置多区域支持
    在跨数据中心或多区域部署时,可以配置Eureka以支持多区域注册表同步。

    eureka:client:availability-zones:default: us-east-1, us-west-2  # 多个可用区域service-url:us-east-1: http://eureka-east-1.example.com/eureka/us-west-2: http://eureka-west-2.example.com/eureka/
    

通过以上基本和高级配置示例,开发者可以根据不同的需求灵活调整Eureka的配置,以满足生产环境下的高可用性、稳定性和扩展性需求。

6. Eureka的监控与管理

6.1 Eureka Dashboard介绍

Eureka Dashboard是Eureka Server提供的一个可视化界面,用于监控和管理已注册的服务实例。通过该Dashboard,运维人员和开发者可以直观地查看服务注册中心的状态、注册的服务列表、每个服务的实例信息及其状态。

主要功能

  • 服务列表:显示所有已注册的服务,包括服务名、实例ID、IP地址、端口、状态等。
  • 实例详情:点击某个服务,可以查看其注册的实例详情,如实例的健康状态、最后一次心跳时间等。
  • 自我保护状态:Dashboard还会显示Eureka Server当前是否处于自我保护模式,并提示潜在的问题。
  • 状态检查:提供了Eureka Server自身的状态检查信息,如是否处于UP状态,以及一些统计数据。

如何访问

  • 默认情况下,Eureka Server的Dashboard可以通过http://<Eureka-Server-Host>:<port>访问。例如,如果Eureka Server运行在本地的8761端口上,访问地址为http://localhost:8761
  • 该界面不需要额外的配置,只需确保Eureka Server正确启动。

6.2 常见的监控指标

Eureka在运行中会暴露一系列监控指标,用于监控Eureka Server和Eureka Client的性能和健康状态。以下是一些常见和关键的监控指标:

  1. 注册实例数量

    • 已注册实例总数:显示当前在Eureka Server上注册的所有服务实例数量。
    • 可用实例数量:显示目前被认为健康、可用的实例数量。
  2. 心跳和续租

    • 心跳频率:监控Eureka Client发送到Eureka Server的心跳频率,以确保客户端的健康状态。
    • 续租失败次数:统计未能成功续租(心跳)请求的次数,用于识别客户端可能存在的连接或网络问题。
  3. 自我保护模式

    • 自我保护触发状态:监控Eureka Server是否已进入自我保护模式。如果心跳失败次数超过一定阈值,自我保护模式会被触发以防止大规模实例下线。
    • 心跳丢失阈值:用于监控是否达到触发自我保护的条件。
  4. 请求和响应延迟

    • 服务注册请求延迟:统计Eureka Client注册到Eureka Server的请求延迟。
    • 服务发现请求延迟:统计客户端请求服务实例列表的平均响应时间。
    • 实例取消注册延迟:监控服务实例取消注册时的延迟。
  5. 健康检查状态

    • 健康检查结果:显示所有实例的健康检查状态,用于确定哪些实例在心跳检测中被认为是不可用的。
    • 健康检查失败次数:记录检测到服务实例不健康的次数。

这些监控指标可以帮助开发者和运维人员快速定位和排查问题,确保Eureka的运行状况良好。借助这些数据,可以采取必要的措施来优化Eureka Server和客户端的配置,提升系统的可靠性和可用性。

7. Eureka的性能优化

7.1 调整心跳间隔

Eureka Client和Eureka Server通过心跳机制来维护服务实例的注册状态。心跳间隔的调整对于优化Eureka的性能和系统的整体稳定性至关重要。

心跳间隔的优化策略

  • 缩短心跳间隔:如果需要更加实时地反映服务的健康状态,可以缩短心跳间隔,使Eureka Client更频繁地发送心跳。这样Eureka Server能够更快地检测到服务的状态变化,但这会增加网络和Eureka Server的负载。
  • 延长心跳间隔:在稳定性和网络带宽要求较高的场景中,可以适当延长心跳间隔,减少Eureka Client和Eureka Server之间的通信频率,从而降低系统资源的消耗。

配置示例
在Eureka Client的application.ymlapplication.properties中调整心跳间隔:

eureka:client:lease-renewal-interval-in-seconds: 10  # 心跳间隔,单位为秒,默认是30秒lease-expiration-duration-in-seconds: 90  # 服务过期时间,默认是90秒

通过调整这些参数,可以在性能和服务可用性之间取得平衡。需要根据具体应用场景进行压力测试,以选择最合适的配置。

7.2 服务实例数量的管理

Eureka Server需要处理大量的服务注册和发现请求,因此优化服务实例的数量和分布可以显著提高Eureka的性能和稳定性。

优化策略

  • 服务实例分组:在大型系统中,将服务实例按功能或区域分组,并使用多个Eureka Server实例来分别管理这些组。这样可以减轻单个Eureka Server的负载,提高系统的扩展性和容错能力。
  • 合理配置实例数量:在高负载的系统中,应确保Eureka Server有足够的资源来处理所有服务实例的心跳和注册请求。可以通过垂直扩展(增加Eureka Server的资源)或水平扩展(增加Eureka Server的数量)来优化性能。
  • 实例剔除策略:确保Eureka Server能及时剔除不再活跃的服务实例,以防止注册表冗余和性能下降。定期检查服务实例的健康状态,并在必要时移除长时间未发送心跳的实例。

配置示例
在Eureka Server中,可以调整实例剔除的间隔时间和策略:

eureka:server:eviction-interval-timer-in-ms: 60000  # 实例剔除间隔,默认是60秒

负载均衡与缓存策略

  • 本地缓存:Eureka Client可以启用本地缓存,减少对Eureka Server的频繁访问,降低Eureka Server的负载。客户端会定期从缓存中获取服务实例列表,确保请求在短时间内不会多次访问Eureka Server。
  • 负载均衡器的使用:结合Ribbon或其他负载均衡器,均衡请求的流量,避免某些实例过载。

通过调整心跳间隔和管理服务实例数量,可以实现Eureka的高效运转,确保微服务架构在高并发场景下的稳定性和性能。

8. 常见问题与解决方案

8.1 服务无法注册的原因

  1. 网络问题:检查服务实例与Eureka Server之间的网络连接是否正常。
  2. 配置错误:确保服务实例的Eureka配置(如eureka.client.serviceUrl.defaultZone)正确指向Eureka Server的地址。
  3. 服务端未启动:确认Eureka Server是否正在运行,并监听正确的端口。
  4. 注册信息不完整:确保服务实例的元数据(如应用名、实例ID等)正确配置。
  5. 过期时间设置:检查Eureka的心跳配置,确保服务实例的注册信息未过期。

8.2 Eureka Server的高可用性配置

  1. 集群部署:在多台机器上部署多个Eureka Server实例,配置eureka.client.registerWithEurekaeureka.client.fetchRegistryfalse以避免自我注册。
  2. 负载均衡:使用负载均衡器(如Nginx或HAProxy)在客户端与Eureka Server之间实现请求分发,增强可用性。
  3. 数据复制:配置Eureka Server之间的复制,确保注册信息在所有实例中保持一致,通过eureka.client.serviceUrl.defaultZone指定其他Eureka Server的地址。
  4. 监控与报警:使用监控工具监控Eureka Server的状态,及时处理故障。

这些解决方案能够帮助快速定位和解决服务注册中的常见问题,并提高Eureka Server的可用性。

9. 总结

9.1 Eureka 的优缺点

优点:

  1. 简化服务注册与发现: Eureka 提供了简单易用的 API,使得微服务的注册和发现变得轻松,无需复杂的配置。
  2. 高可用性: Eureka 通过服务的自我注册和心跳机制,实现了高可用性。当某个实例下线时,其他实例能够快速知晓并进行处理。
  3. 与 Spring Cloud 的集成: Eureka 是 Spring Cloud 的核心组件之一,与 Spring Boot 的集成非常顺畅,适合微服务架构的开发。
  4. 灵活的负载均衡: Eureka 支持客户端负载均衡,能够根据注册信息动态调整流量分配。
  5. 可扩展性: 可以轻松添加和删除服务实例,适应服务规模的变化。

缺点:

  1. 单点故障问题: 默认的 Eureka Server 如果没有配置高可用集群,可能成为单点故障,影响服务的可用性。
  2. 性能瓶颈: 当服务实例数量增多时,Eureka 可能面临性能瓶颈,需要进行合理的资源分配和监控。
  3. 复杂的网络配置: 在多区域或多云环境中,Eureka 的网络配置可能较为复杂,需要额外的设置以确保服务之间的通信顺畅。
  4. 服务发现延迟: 在实例注册与更新过程中,可能存在一定的延迟,导致客户端获取的服务信息不是实时的。
  5. 与 Kubernetes 的兼容性: 在 Kubernetes 环境中,Eureka 的角色和使用场景可能会有所不同,可能需要结合其他工具来实现最佳效果。

9.2 未来的发展方向

  1. 提升高可用性: 加强 Eureka 的高可用性设计,支持更简单的集群配置和故障转移机制,确保在多节点环境下的稳定性。
  2. 性能优化: 对于大规模微服务架构,继续优化性能,减少服务发现和注册的延迟,提高处理效率。
  3. 与云原生架构的集成: 进一步与 Kubernetes、Service Mesh(如 Istio)等云原生架构整合,提升微服务的灵活性和可管理性。
  4. 多租户支持: 开发多租户功能,使得多个团队或项目可以在同一个 Eureka 实例上安全地运行,互不干扰。
  5. 智能路由与负载均衡: 集成智能路由和负载均衡功能,提升服务调用的效率和准确性,满足更复杂的业务需求。
  6. 监控与管理工具: 提供更友好的监控和管理界面,帮助开发和运维人员实时监控服务状态,快速定位和解决问题。

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

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

相关文章

全星魅-物联网定位终端-北斗定位便携终端-北斗有源终端

在当今快速发展的物流运输行业中&#xff0c;精准定位与实时监控已成为确保货物安全与高效运输的关键因素。为了满足这一需求&#xff0c;QMCZ10作为一款集4G&#xff08;LTE Cat1&#xff09;通讯技术与智能定位功能于一体的终端产品&#xff0c;应运而生。它不仅具备普通定位…

交换机属性-持久化和自动删除等

交换机属性-持久化和自动删除 1、交换机属性2、交换机(Exchange)的持久化属性2.1、RabbitConfig配置类&#xff08;关键代码&#xff09;2.2、发送消息2.3、启动类2.4、application.yml配置文件2.5、pom.xml配置文件2.6、测试 3、交换机(Exchange)的自动删除属性3.1、RabbitCon…

基于Prometheus的client_golang库实现应用的自定义可观测监控

文章目录 1. 安装client_golang库2. 编写可观测监控代码3. 运行效果4. jar、graalvm、golang编译运行版本对比 前文使用javagraalvm实现原生应用可观测监控&#xff1a; prometheus client_java实现进程的CPU、内存、IO、流量的可观测&#xff0c;但是部分java依赖包使用了复杂…

Unity3D UI 拖拽

Unity3D 实现 UI 元素拖拽功能。 UI 拖拽 通常画布上的 UI 元素都是固定位置的&#xff0c;我们可以通过实现拖拽接口&#xff0c;让 UI 元素可以被拖拽到其他位置。 拖拽接口 创建一个脚本 UIDrag.cs&#xff0c;在默认继承的 MonoBehaviour 后面&#xff0c;再继承三个接…

《重学Java设计模式》之 工厂方法模式

《重学Java设计模式》之 建造者模式 《重学Java设计模式》之 原型模式 《重学Java设计模式》之 单例模式 模拟发奖多种商品 工程结构 奖品发放接口 package com.yys.mes.design.factory.store;public interface ICommodity {/*** Author Sherry* Date 14:20 2024/11/6**/voi…

【Python爬虫实战】DrissionPage 与 ChromiumPage:高效网页自动化与数据抓取的双利器

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、DrissionPage简介 &#xff08;一&#xff09;特点 &#xff08;二&#xff09;安装 &#xff08;三…

Word大珩助手:超大数字怎么读?35位数字?69位数字?

俄罗斯日前对谷歌开出了20000000000000000000000000000000000&#xff08;35位数字&#xff09;美元的罚款 这一数字远超全球GDP总和&#xff0c;消息一出很快就登上热搜。 面对这样一个庞大的数字&#xff0c;人们不禁好奇&#xff0c;这样的数字该如何读出来&#xff1f; …

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后&#xff0c;我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中&#xff0c;我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中&#xff0c;我们将一种状态空间语言模型 Mamba 移植到 VMamba 中&#xff0c;构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块&#xff0c;搭配 2D 选择…

JavaAPI(1)

Java的API&#xff08;1&#xff09; 一、Math的API 是一个帮助我们进行数学计算的工具类私有化构造方法&#xff0c;所有的方法都是静态的&#xff08;可以直接通过类名.调用&#xff09; 平方根&#xff1a;Math.sqrt()立方根&#xff1a;Math.cbrt() 示例&#xff1a; p…

【362】基于springboot的在线租房和招聘平台

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统在线租房和招聘平台信息管理难度大&#xff0c;容错率低&…

华为HCIP —— QinQ技术实验配置

一、QinQ的概述 1.1QinQ的概念 QinQ&#xff08;802.1Q in 802.1Q&#xff09;技术是一项扩展VLAN空间的技术&#xff0c;通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…

【数据集】【YOLO】【目标检测】抽烟识别数据集 6953 张,YOLO/VOC格式标注,吸烟检测!

数据集介绍 【数据集】抽烟识别数据集 6953 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含1种分类&#xff1a;“smoking”。数据集来自国内外图片网站和视频截图。检测范围园区吸烟检测、禁烟区吸烟检测、监控吸烟检测、无人机吸烟检测等。 主页私…

赛元MCU 脱机烧录步骤

烧录设置 生成烧录配置文件 载入配置文件 下载程序到烧录器中 并 对比 脱机烧录 1、 将SC-LINK 使用外部5V电源供电 2、将烧录口对准主板烧录接口 3、busy亮红灯&#xff0c;进入烧录ing&#xff0c;烧录成功后&#xff0c;OK灯亮蓝灯 注意事项 其中工程校验和 可以作为程序…

leetcode字符串(二)-重复的子字符串

题目 459.重复的子字符串 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例 2: 输入: s "aba" 输出: false示例 3: 输入: …

langchain 4大组件 | AI应用开发

在人工智能的浪潮中&#xff0c;大型语言模型&#xff08;LLM&#xff09;逐渐成为推动科技进步的重要力量。而LangChain&#xff0c;作为一个专为LLM应用开发设计的框架&#xff0c;凭借其模块化和高效性&#xff0c;受到了广泛关注。本文将深入浅出地讲解LangChain中的四个基…

TensorFlow|咖啡豆识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 &#x1f37a; 要求&#xff1a; 自己搭建VGG-16网络框架调用官方的VGG-16网络框架 &#x1f37b; 拔高&#xff08;可选&#xff09;&#xff1a; 验证集准…

Jmeter5.X性能测试

Jmeter5.X性能测试 文章目录 Jmeter5.X性能测试一、掌握Http基础协议1.1 浏览器的B/S架构和C/S架构1.2 HyperText Transfer Protocol 超文本传输协议1.3 超文本传输协议Http消息体拆分讲解1.4 HTTP的九种请求方法和响应码介绍1.5 Http请求头/响应头1.6 Http常见请求/响应头cont…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程&#xff0c;确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等&#xff0c;为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

AI - 人工智能;Ollama大模型工具;Java之SpringAI(三)

AI - 人工智能&#xff1b;Java之SpringAI&#xff08;一&#xff09; AI - 人工智能&#xff1b;Java之SpringAI&#xff08;二&#xff09; 一、Ollama 官网&#xff1a;https://ollama.com/ Ollama是一个大模型部署运行工具&#xff0c;在该工具里面可以部署运行各种大模型…