微服务中的相关概念

在这里插入图片描述
在这里插入图片描述

Eureka

Eureka 是由 Netflix 开发的一个服务发现和注册中心,广泛应用于微服务架构中。Eureka 主要用于管理和协调分布式服务的注册和发现,确保各个服务之间能够方便地找到并通信。它是 Netflix OSS(Netflix Open Source Software)技术栈中的一部分,通常与 Spring Cloud 集成使用。

Eureka 的主要作用

  1. 服务注册

    • 每个微服务启动时,会将自己的信息(如服务名、实例地址、端口等)注册到 Eureka 服务器(也称为 Eureka Server)。
    • Eureka 服务器会维护一个服务实例列表,记录所有注册到它的微服务信息。
  2. 服务发现

    • 当一个微服务需要调用另一个微服务时,可以通过 Eureka 服务器查询所需服务的实例列表。
    • Eureka 客户端(也称为 Eureka Client)会定期从 Eureka 服务器获取更新的服务实例列表,并将请求路由到适当的服务实例。
  3. 健康检查

    • Eureka 客户端会定期向 Eureka 服务器发送心跳请求,表明服务实例的健康状态。
    • 如果 Eureka 服务器在一定时间内没有收到某个服务实例的心跳,将认为该实例不可用,并从服务实例列表中移除。
  4. 高可用性

    • Eureka 服务器可以集群部署,实现高可用性和容错能力。多个 Eureka 服务器实例之间会相互同步服务注册信息,确保服务的高可用性。
    • 在客户端缓存服务实例列表,即使 Eureka 服务器全部宕机,客户端仍可以使用缓存的服务实例列表进行服务发现。

Eureka 的功能特性

  1. 自我保护模式

    • 当 Eureka 服务器检测到短时间内大量服务实例不可用时,会启动自我保护模式。在这种模式下,Eureka 服务器将不会移除未收到心跳的服务实例,避免因网络分区等问题导致的大规模服务剔除。
    • 自我保护模式可以提高系统的稳定性和容错能力,防止因瞬时网络故障引发的连锁反应。
  2. 易于集成

    • 与 Spring Cloud 集成紧密,提供了简单的配置和使用方式,极大简化了服务注册和发现的实现。
  3. 灵活的客户端配置

    • Eureka 客户端可以通过配置文件或代码灵活地设置注册、心跳、缓存等参数,满足不同应用场景的需求。
  4. 丰富的 API

    • 提供了丰富的 REST API,支持对服务实例的注册、查询、更新、删除等操作,方便开发者进行管理和监控。

Eureka 在微服务中的应用场景

  1. 服务注册与发现

    • 在微服务架构中,服务实例的数量和地址是动态变化的,使用 Eureka 可以实现动态的服务注册和发现,简化服务间的调用。
  2. 负载均衡

    • Eureka 客户端可以从服务实例列表中选择合适的服务实例进行调用,实现客户端负载均衡,提升系统的性能和可靠性。
  3. 高可用性和容错

    • 通过集群部署 Eureka 服务器,实现服务注册中心的高可用性和容错能力,保证系统在部分节点故障时仍能正常运行。
  4. 自动化运维

    • 使用 Eureka 的自我保护模式和健康检查机制,可以实现服务实例的自动注册和注销,简化运维工作,提升系统的稳定性和可靠性。

示例架构

Eureka Server
  • 通常部署在多个节点上,以实现高可用性。
  • 负责维护所有注册的服务实例信息,并将这些信息提供给 Eureka 客户端。
Eureka Client
  • 每个微服务在启动时会注册到 Eureka Server,并定期发送心跳以表明自己是健康的。
  • 当微服务需要调用其他服务时,通过 Eureka Client 获取最新的服务实例列表进行调用。

总结

Eureka 作为微服务架构中的服务注册和发现中心,提供了动态服务注册、服务发现、健康检查和高可用性等功能,简化了服务间的调用和管理。通过与 Spring Cloud 的集成,Eureka 提供了简单而强大的服务注册和发现机制,极大地提高了分布式系统的弹性和可靠性。Eureka 的自我保护模式和灵活的客户端配置,使其能够适应各种复杂的网络环境和应用场景,是构建稳定可靠的微服务架构的重要工具。


Nacos

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款支持云原生架构的服务发现、配置管理和动态 DNS 的解决方案。它在微服务架构中发挥着重要作用,主要包括以下几个方面:

Nacos 的主要作用

  1. 服务发现与服务注册

    • 服务注册:微服务启动时,将自己的信息(如服务名、实例地址、端口等)注册到 Nacos 服务中心。
    • 服务发现:微服务可以通过 Nacos 查询到其他服务的地址和端口,从而实现服务间的调用。
    • 动态更新:当服务实例的状态发生变化(如上线、下线、崩溃等),Nacos 能够及时更新服务列表,并通知相关的微服务。
  2. 配置管理

    • 集中管理:Nacos 提供统一的配置管理平台,支持对分布式系统中各个微服务的配置进行集中管理。
    • 动态更新:配置文件的变更可以实时生效,Nacos 会将最新的配置推送给所有订阅该配置的微服务实例,减少了因配置变更导致的服务重启和停机时间。
    • 多环境、多版本管理:支持对不同环境(如开发、测试、生产)和不同版本的配置进行管理。
  3. 动态 DNS

    • DNS 服务:Nacos 提供类似 DNS 的功能,微服务可以通过域名访问其他服务,无需关心实际的 IP 地址。
    • 负载均衡:Nacos 可以将流量均匀分配到多个服务实例上,提升系统的可用性和扩展性。

Nacos 的功能特性

  1. 易于集成

    • Nacos 与 Spring Cloud 和 Dubbo 等微服务框架无缝集成,提供了友好的 API 和 SDK,使得开发者可以方便地使用 Nacos 的功能。
  2. 高可用性和可靠性

    • Nacos 支持集群部署,保证了服务的高可用性和可靠性。
    • 它使用 Raft 协议来实现一致性和故障恢复,确保数据的一致性和可靠性。
  3. 灵活性

    • 支持多种数据存储(如 MySQL、嵌入式存储等),开发者可以根据实际需求选择合适的存储方式。
    • 支持多种注册中心协议(如 HTTP、gRPC),兼容性强。
  4. 可视化界面

    • Nacos 提供了友好的管理控制台,用户可以通过 Web 界面方便地管理服务和配置,监控服务状态和配置变更。

Nacos 在微服务中的应用场景

  1. 服务治理

    • 通过 Nacos 实现服务的注册与发现,简化了服务之间的调用,提升了服务治理的效率。
    • 提供了服务健康检查和负载均衡功能,确保服务的稳定性和高可用性。
  2. 配置管理

    • 集中管理微服务的配置,支持配置的动态更新和多环境管理,降低了配置管理的复杂性。
    • 提供了细粒度的权限控制,确保配置的安全性。
  3. 流量管理

    • 支持灰度发布和流量控制,通过动态 DNS 和负载均衡机制,实现服务流量的精细化管理。
  4. 监控和报警

    • 集成了监控和报警功能,用户可以实时监控服务的运行状态和性能指标,及时发现和处理问题。

总结

Nacos 在微服务架构中充当了服务发现、配置管理和动态 DNS 的重要角色,极大地简化了服务治理和配置管理的工作。它通过提供统一的服务注册与发现、集中化的配置管理和灵活的流量控制,帮助开发者构建高可用、高性能、易扩展的分布式系统。在云原生和微服务架构越来越普及的今天,Nacos 是一个非常实用的工具。


Zuul

Zuul 是 Netflix 开发的一个基于 JVM 路由和服务网关的项目,主要用于微服务架构中的动态路由、监控、弹性、安全等功能。它可以作为微服务的 API 网关,处理所有外部请求,并将请求转发到相应的后端服务。

Zuul 的主要作用

  1. 动态路由

    • 根据请求路径、请求参数等动态地将请求转发到不同的后端服务。
    • 支持基于各种条件的路由规则配置。
  2. 负载均衡

    • 通过集成 Ribbon 等客户端负载均衡器,实现对后端服务的负载均衡。
  3. 安全管理

    • 可以在 API 网关层实现身份认证、授权等安全机制,确保请求的合法性。
  4. 流量控制

    • 支持对请求流量的限流、熔断等操作,保护后端服务免受流量激增的冲击。
  5. 监控和统计

    • 可以记录请求的各项指标,如延迟、成功率、失败率等,提供丰富的监控数据和日志。
  6. 过滤器机制

    • Zuul 提供了丰富的过滤器机制,开发者可以编写自定义过滤器来实现各种功能,如请求日志记录、请求参数校验等。

Zuul 的应用场景

  1. API 网关

    • 作为微服务的入口,处理所有外部请求,统一路由和转发到后端服务。
    • 实现统一的身份认证和授权,保证请求的安全性。
  2. 流量管理

    • 对请求流量进行限流和熔断,保护后端服务免受流量冲击。
  3. 日志和监控

    • 记录请求日志,提供丰富的监控数据,帮助运维人员了解系统的运行状况。
  4. 过滤器

    • 通过自定义过滤器,实现请求的校验、修改、转发等操作,满足各种业务需求。

总结

  • Zuul:作为 API 网关,主要负责请求路由、负载均衡、安全管理、流量控制和监控等功能,是微服务架构中外部请求的统一入口。

Sentinel

Sentinel 是阿里巴巴开源的一个用于分布式系统的流量防护组件,主要用于实现流量控制、熔断降级、系统负载保护等功能,确保分布式系统的稳定性和高可用性。

Sentinel 的主要作用

  1. 流量控制

    • 根据设定的限流规则,对进入系统的流量进行控制,防止系统过载。
    • 支持多种限流策略,如并发线程数限流、QPS(每秒查询数)限流等。
  2. 熔断降级

    • 当某个服务的调用失败率或响应时间超过设定阈值时,触发熔断机制,暂时拒绝对该服务的调用。
    • 在熔断期间,可以返回预设的降级处理结果,确保系统的可用性。
  3. 系统负载保护

    • 根据系统的负载情况(如 CPU 使用率、内存使用率等),动态调整流量控制策略,保护系统稳定运行。
  4. 热点参数限流

    • 对热点参数进行限流控制,防止某些高频请求导致系统性能下降。
  5. 实时监控

    • 提供丰富的监控数据,支持实时监控和统计各项指标,如流量、响应时间、成功率、失败率等。
  6. 规则动态调整

    • 支持动态调整限流、熔断等规则,能够根据实际情况灵活调整策略,适应系统的动态变化。

Sentinel 的应用场景

  1. 流量控制

    • 在微服务架构中,对服务的调用进行限流,防止服务过载。
    • 在流量激增时,确保核心服务的稳定性。
  2. 熔断降级

    • 当某个服务出现故障或性能下降时,通过熔断机制及时隔离问题,防止故障蔓延。
    • 提供降级处理,确保系统的基本可用性。
  3. 系统保护

    • 根据系统负载情况,动态调整流量控制策略,保护系统的稳定运行。
  4. 监控和报警

    • 实时监控各项指标,及时发现和处理系统中的异常情况,保障系统的正常运行。

总结

  • Sentinel:作为流量防护组件,主要负责流量控制、熔断降级、系统负载保护、热点参数限流和实时监控,确保分布式系统的稳定性和高可用性。

Hystrix

Hystrix 是由 Netflix 开发的一款用于处理分布式系统中延迟和容错的库,主要应用于微服务架构中。它通过隔离服务之间的调用、监控、熔断和故障恢复机制,提高了系统的弹性和容错能力。Hystrix 已经被广泛用于保护分布式系统中的服务免受依赖故障的影响,确保系统在面对部分服务故障时仍能提供关键功能。

Hystrix 的主要作用

  1. 熔断器模式(Circuit Breaker Pattern)

    • 熔断器:当服务的调用失败率达到一定阈值时,熔断器会打开,暂时中断对该服务的调用,以避免连锁故障。熔断器会在一段时间后尝试恢复对服务的调用,检查服务是否恢复正常。
    • 保护机制:避免对已知不可用的服务进行无效的重试调用,从而保护系统资源。
  2. 隔离技术(Isolation Techniques)

    • 线程池隔离:每个依赖服务都有一个独立的线程池,当线程池满时,新的请求会被立即拒绝,而不是排队等待,从而避免了服务调用之间的相互影响。
    • 信号量隔离:使用信号量限制并发调用的数量,适用于对延迟敏感且调用频繁的服务。
  3. 回退机制(Fallback)

    • 当服务调用失败、超时或熔断器打开时,Hystrix 可以执行一个预定义的回退方法,提供一个降级的服务响应,以确保系统的可用性。
  4. 实时监控

    • Hystrix 提供了丰富的监控指标和实时的监控数据,帮助开发者了解服务的运行状态和健康状况,及时发现和处理问题。
  5. 请求合并(Request Collapsing)

    • 合并多个请求以减少请求次数,提升性能。例如,将对同一服务的多个请求合并成一个批量请求,减少网络开销。
  6. 请求缓存(Request Caching)

    • 对相同的请求进行缓存,避免重复调用,提升效率。

Hystrix 的功能特性

  1. 熔断器配置

    • 支持自定义熔断器的各项参数,包括失败阈值、熔断器打开后的休眠时间、失败率计算窗口等。
  2. 隔离策略

    • 可以选择线程池或信号量两种隔离策略,灵活适应不同的服务调用场景。
  3. 超时设置

    • 可以为每个服务调用设置超时时间,确保慢调用不会拖累系统的整体性能。
  4. 统计和监控

    • Hystrix 提供了丰富的统计信息,包括成功、失败、超时、拒绝等调用的次数和比例,帮助开发者及时了解服务健康状况。
    • 提供了 Hystrix Dashboard,通过可视化界面展示各项指标,方便监控和管理。

Hystrix 在微服务中的应用场景

  1. 服务保护

    • 在微服务架构中,各个服务之间相互依赖,某个服务的故障可能会引发连锁反应。Hystrix 通过熔断器和隔离技术,有效防止服务之间的故障传播,保护系统的整体稳定性。
  2. 提升系统弹性

    • 通过回退机制和请求合并,Hystrix 能在服务不可用或性能下降时,提供降级服务或合并请求,提升系统的弹性和用户体验。
  3. 流量控制

    • 通过线程池和信号量隔离,Hystrix 能有效控制对依赖服务的调用流量,避免因过载导致的系统崩溃。
  4. 实时监控和报警

    • Hystrix 提供的实时监控和报警功能,帮助运维人员及时发现和处理系统中的异常情况,保障系统的正常运行。

总结

Hystrix 在微服务架构中扮演了重要的角色,通过熔断器、隔离、回退等机制,增强了系统的容错能力和弹性,保护了服务间的调用链路。尽管 Hystrix 项目已进入维护模式,不再积极开发新功能,但其设计理念和模式仍然在很多现代微服务框架中得到了应用和延续,例如 Spring Cloud 的 Resilience4j。Hystrix 的应用和经验为分布式系统的稳定性设计提供了宝贵的借鉴。

在微服务架构中,Hystrix 是一个用于处理延迟和容错的库,旨在提高系统的弹性和稳定性。Hystrix 提供了熔断和降级机制,这两者在保护系统免受依赖服务故障影响方面发挥了关键作用。

熔断机制(Circuit Breaker Pattern)

熔断机制的灵感来自电气工程中的电路断路器,当电流过大时,断路器会切断电路以保护设备。在软件系统中,熔断器保护系统免受持续的错误请求影响。

熔断器状态

  1. 关闭状态(Closed)

    • 默认状态,所有请求都正常发送给目标服务。
    • 如果请求失败次数超过设定阈值,熔断器进入半开状态。
  2. 打开状态(Open)

    • 熔断器阻止所有对目标服务的请求,并直接返回失败响应或执行回退逻辑。
    • 熔断器在打开状态下等待一段时间,然后进入半开状态。
  3. 半开状态(Half-Open)

    • 部分请求被允许通过,测试目标服务是否恢复正常。
    • 如果通过的请求成功,熔断器关闭;否则,重新进入打开状态。

触发熔断的条件

  1. 请求失败率:如果在一个时间窗口内,请求失败率超过设定的阈值(例如 50%),熔断器打开。
  2. 请求数量:熔断器只在达到一定数量的请求后才进行计算,以避免在请求量很少时误触发熔断。
  3. 响应时间:如果请求响应时间超过设定的阈值,也可以触发熔断。

熔断器打开后的行为

  1. 立即返回:直接返回一个错误响应,通知客户端服务不可用。
  2. 执行回退:执行一个预定义的回退方法,提供一个降级服务响应。

降级机制(Fallback)

降级机制是指在服务调用失败、超时或熔断器打开时,执行一个备用的回退方法,以提供替代的服务响应。这确保了系统在部分功能不可用时仍能提供基本的服务。

降级场景

  1. 服务调用失败:目标服务宕机或不可用时,执行回退逻辑。
  2. 服务超时:请求超时未响应时,执行回退逻辑。
  3. 熔断器打开:当熔断器进入打开状态时,直接执行回退逻辑。
  4. 自定义错误条件:开发者可以定义其他错误条件触发降级,例如特定的异常类型。

具体应用场景

  1. 网络故障:由于网络问题导致服务调用失败,熔断器打开,执行回退逻辑。
  2. 服务过载:目标服务因负载过高无法响应请求,触发熔断,执行降级服务。
  3. 服务升级或维护:目标服务临时下线进行维护,调用失败,触发熔断和降级。
  4. 瞬时高流量:突发流量导致部分请求失败,熔断器打开,提供降级响应以保护系统。

实际代码示例

以下是使用 Hystrix 的一个简单示例,展示了熔断和降级机制:

import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;

public class MyServiceCommand extends HystrixCommand<String> {

    private final String name;

    public MyServiceCommand(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("MyServiceGroup"));
        this.name = name;
    }

    @Override
    protected String run() {
        // 模拟调用远程服务
        if (Math.random() > 0.5) {
            throw new RuntimeException("Service failure!");
        }
        return "Hello, " + name;
    }

    @Override
    protected String getFallback() {
        // 降级逻辑
        return "Fallback, " + name;
    }

    public static void main(String[] args) {
        MyServiceCommand command = new MyServiceCommand("World");
        String result = command.execute();
        System.out.println(result);
    }
}

在这个示例中,run 方法模拟了一个远程服务调用,如果调用失败,getFallback 方法将返回降级响应。Hystrix 通过这种方式实现了熔断和降级机制,确保系统的稳定性和高可用性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指针和数组

同一指针相减的绝对值得到的是之间元素的个数 #include"stdio.h" #include"string.h" int main() {int arr[10]{0};printf("%d\n",&arr[9]- &arr[0]);return 0; } 不同类型的指针减去指针没有意义 地址加地址&#xff0c;指针加指针没…

UE5 C++ 跑酷游戏练习 Part1

一.修改第三人称模板的 Charactor 1.随鼠标将四处看的功能的输入注释掉。 void ARunGANCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) {// Set up action bindingsif (UEnhancedInputComponent* EnhancedInputComponent CastChecked&…

【Linux基础IO】常见的对文件操作的函数、文件描述符fd、访问文件的本质分析

目录 fopen函数 chdir函数 fclose函数 fwrite和fread函数 open函数 umask函数 write函数 read函数 close函数 文件描述符fd 进程访问文件的本质分析 fopen函数 参数mode&#xff1a; w方式打开文件&#xff1a;1、如果被打开文件不存在&#xff0c;系统会在使用fopen函…

玄机平台流量特征分析-常见攻击事

前言 熟悉常见的攻击流量特征&#xff0c;我们就可以通过主机的一个流量情况来判断主机遭受了何种攻击。这里来看看玄机平台的一道题目。 步骤1.1 这里需要我们找出恶意扫描者&#xff0c;也就是黑客的ip。下载好附件之后用wiresharke打开&#xff0c;直接筛选http协议的流量…

CSS【实战】抽屉动画

效果预览 技术要点 实现思路 元素固定布局&#xff08;fixed&#xff09;在窗口最右侧外部js 定时器改变元素的 right 属性&#xff0c;控制元素移入&#xff0c;移出 过渡动画 transition transition: 过渡的属性 过渡的持续时间 过渡时间函数 延迟时间此处改变的是 right …

C# Winform 侧边栏,切换不同页面

在项目中我们经常遇到需要在主界面上切换不同子页面的需求&#xff0c;常用做法是左侧显示子页面菜单&#xff0c;用户通过点击左侧菜单&#xff0c;实现右边子页面的展示。 实例项目实现&#xff1a; 项目左侧侧边栏实现FlowLayoutPanel使用显示不同子窗体 实例链接&#xf…

行业模板|DataEase应用平台对接大屏模板推荐

DataEase开源数据可视化分析工具于2022年6月发布模板市场&#xff08;https://templates-de.fit2cloud.com&#xff09;&#xff0c;并于2024年1月新增适用于DataEase v2版本的模板分类。模板市场旨在为DataEase用户提供专业、美观、拿来即用的大屏模板&#xff0c;方便用户根据…

利用深度学习进行纹理分析以改善计算机视觉

利用深度学习进行纹理分析以改善计算机视觉 人工智能的一个独特应用领域是帮助验证和评估材料和产品的质量。在IBM&#xff0c;我们开发了创新技术&#xff0c;利用原生移动、专用微传感器技术和AI来提供实时工作的解决方案&#xff0c;利用商用智能手机技术&#xff0c;并提供…

.NET周刊【6月第3期 2024-06-18】

国内文章 记一次 .NET某游戏币自助机后端 内存暴涨分析 https://www.cnblogs.com/huangxincheng/p/18243233 文章讨论了程序中非托管内存暴涨的问题。作者描述了友人发现内存问题并请他帮助分析的背景&#xff0c;利用WinDbg工具分析Linux平台上的内存泄漏情况。文章介绍了如…

Jenkins教程-3-github自动化测试任务构建

上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法&#xff0c;本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例&#xff0c;讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…

2.什么是计算机程序

什么是计算机程序? 计算机程序是为了告诉计算机"做某件事或解决某个问题"而用"计算机语言编写的命令集合(语句) 只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作,计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成 现实生活中你如…

网络安全 - DDoS 攻击原理 + 实验

DDoS 攻击 什么是 DDoS 进攻 D D o S \color{cyan}{DDoS} DDoS&#xff08;Distributed Denial of Service&#xff0c;分布式拒绝服务&#xff09;攻击是一种通过多个计算机系统同时向目标系统发送大量请求&#xff0c;消耗其资源&#xff0c;使其无法正常服务的攻击方式。DD…

经验分享,在线文本比较工具

这里分享一个在线文本比较工具&#xff0c;打开网页即用&#xff0c;很方便 网址&#xff1a; https://www.jq22.com/textDifference 截图&#xff1a;

用python实现多文件多文本替换功能

用python实现多文件多文本替换功能 今天修改单位项目代码时由于改变了一个数据结构名称&#xff0c;结果有几十个文件都要修改&#xff0c;一个个改实在太麻烦&#xff0c;又没有搜到比较靠谱的工具软件&#xff0c;于是干脆用python手撸了一个小工具&#xff0c;发现python在…

设备档案包括哪些内容

设备档案通常包括以下内容和要求&#xff1a; 1. 设备基本信息&#xff1a;包括设备名称、型号、规格、生产厂商、出厂日期、购买日期等。 2. 设备安装信息&#xff1a;包括设备的安装位置、安装日期、安装人员等。 3. 设备维护信息&#xff1a;包括设备的维护保养记录&#xf…

关于办公软件的使用

第一部分&#xff1a; 常用函数的使用 在使用的地方&#xff0c;输入SUM(B2:F2)回车 第二部分&#xff1a; 自定义函数的使用 1、打开 宏编辑 2、 自定义函数方法 3、自定义函数的使用和常用函数一样&#xff1a; 在使用的地方&#xff0c;输入计算面积(A3&#xff0c;B3)…

python学习笔记-07

python内置函数 内置函数就是python自带的函数&#xff0c;不需要我们再去定义的&#xff0c;如print等直接使用即可&#xff0c;内置函数官方文档&#xff1a;官链。 1.数学运算 #数学运算&#xff1a; print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

c语言---循环 、判断基础知识详解

if语句 else离最近的if语句结合。 if语句题目 //1. 判断一个数是否为奇数 //2. 输出1 - 100之间的奇数 #include <stdio.h> int main() {int n 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n"…

视频太长了,想要剪切掉一节怎么操作?

如果你想为你的视频制作一个具有一定客观性的短视频&#xff0c;并在一些平台上发布&#xff0c;那么剪辑视频片段是不可避免的。通过剪辑视频片段的操作&#xff0c;提出视频中多余的视频内容&#xff0c;将自己需要的内容单独提取出来。但问题是如何操作它。对于新手来说&…

docker部署dm数据库

官方文档参考 官网地址&#xff1a;https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html 下载镜像地址 docker部署 1、加载镜像 docker load -i dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar使用docker images&#xff0c;查看镜像和镜像标签…