【架构】负载均衡SLB浅谈

SLB负载均衡架构培训文档

1. 引言

作为一名架构师,理解并掌握SLB(Server Load Balancer)负载均衡架构是非常重要的。本培训文档旨在为您提供关于SLB负载均衡架构的详细知识和指导,帮助您更好地设计和优化企业级应用。

2. SLB负载均衡基础

2.1 负载均衡概念

负载均衡是一种技术,用于分散工作负载,以便在多个操作单元(如计算机、网络链接、中央处理器或磁盘驱动器)之间进行优化资源使用、最大化吞吐量、最小化响应时间,并防止任何单个资源的过载。

2.2 SLB工作原理

SLB负载均衡器通常位于客户端和服务器之间,充当反向代理。它接收来自客户端的请求,根据预定义的算法将请求分发到后端服务器,从而实现负载均衡。

2.3 SLB优势

  • 提高应用可用性和可靠性
  • 提升应用性能和响应速度
  • 实现灵活的扩展和缩放
  • 简化应用部署和维护

3. SLB负载均衡架构设计

3.1 架构层次

SLB负载均衡架构通常分为以下层次:

  1. 客户端层:客户端发送请求到SLB负载均衡器。
  2. 负载均衡层:SLB负载均衡器根据算法将请求分发到后端服务器。
  3. 服务器层:后端服务器处理请求并返回响应。

3.2 负载均衡算法

常见的负载均衡算法包括:

  • 轮询(Round Robin)
  • 加权轮询(Weighted Round Robin)
  • 最少连接(Least Connections)
  • 加权最少连接(Weighted Least Connections)
  • 基于源IP哈希(Source IP Hash)

3.3 高可用性设计

为了确保SLB负载均衡器的高可用性,通常采用以下设计:

  • 主备模式:主负载均衡器故障时,备用负载均衡器自动接管。
  • 双活模式:两台或多台负载均衡器同时工作,提高系统性能和可靠性。

3.4 安全性设计

SLB负载均衡器应具备以下安全性功能:

  • 防火墙:防止恶意访问和攻击。
  • SSL卸载:减轻服务器负担,提高性能。
  • DDoS防护:防止分布式拒绝服务攻击。

4. SLB负载均衡实践

4.1 部署SLB负载均衡器

根据企业需求,选择合适的SLB负载均衡器产品,如阿里云、腾讯云等。部署过程中,关注以下方面:

  • 配置负载均衡策略
  • 设置健康检查和故障转移
  • 配置安全组和访问控制

4.2 监控与优化

通过监控SLB负载均衡器的性能指标,如请求量、响应时间、并发连接数等,评估系统状况,并根据实际情况进行优化。

4.3 故障排查与处理

当SLB负载均衡器出现故障时,遵循以下步骤进行排查和处理:

  1. 分析监控数据,确定故障原因。
  2. 根据故障原因,调整负载均衡策略或后端服务器配置。
  3. 测试并验证故障是否已解决。

5. 总结

通过本次培训,您应该对SLB负载均衡架构有了更深入的了解。作为一名架构师,您需要不断学习和实践,以更好地为企业级应用设计高效、可靠、安全的负载均衡解决方案。

SLB负载均衡技术选型培训文档

1. 引言

作为一名架构师,在进行SLB(Server Load Balancer)负载均衡技术选型时,需要全面了解各种技术的优缺点,以及主流竞品的性能、功能和成本等方面的差异。本培训文档旨在为您提供关于SLB负载均衡技术选型的详细知识和指导,帮助您为企业级应用选择合适的负载均衡解决方案。

2. SLB负载均衡技术概述

2.1 硬件负载均衡

硬件负载均衡器通常采用专用硬件实现,具有高性能、高可靠性和高安全性的特点。常见的硬件负载均衡器有F5 BIG-IP、Citrix NetScaler等。

2.2 软件负载均衡

软件负载均衡器基于通用服务器运行,具有成本低、部署灵活和易于扩展的优势。常见的软件负载均衡器有Nginx、HAProxy、LVS(Linux Virtual Server)等。

2.3 云负载均衡

云负载均衡器是云计算服务提供商提供的一种负载均衡服务,如阿里云负载均衡、腾讯云负载均衡、AWS Elastic Load Balancing等。云负载均衡器具有易于管理、按需扩展和成本透明的特点。

3. 技术选型对比

3.1 性能

  • 硬件负载均衡器:性能较高,适用于高并发场景。
  • 软件负载均衡器:性能适中,适用于一般并发场景。
  • 云负载均衡器:性能取决于所选实例规格,可按需扩展。

3.2 功能

  • 硬件负载均衡器:功能丰富,支持高级特性如全局负载均衡、压缩、加密等。
  • 软件负载均衡器:功能相对简单,但能满足大部分应用场景需求。
  • 云负载均衡器:功能丰富,且与云服务提供商的其他服务(如云数据库、云存储等)集成良好。

3.3 成本

  • 硬件负载均衡器:成本较高,包括硬件购置、维护和升级费用。
  • 软件负载均衡器:成本较低,主要在于服务器和运维人员成本。
  • 云负载均衡器:成本适中,按使用量付费,无需硬件投资。

3.4 可维护性

  • 硬件负载均衡器:需要专业人员进行维护和升级。
  • 软件负载均衡器:维护相对简单,可通过社区或厂商获得支持。
  • 云负载均衡器:由云服务提供商负责维护和升级,用户无需关注底层硬件和软件。

3.5 部署方式

  • 硬件负载均衡器:需独立部署,可能涉及物理位置限制。
  • 软件负载均衡器:可部署在物理服务器、虚拟机或容器中,灵活度高。
  • 云负载均衡器:与云服务提供商的基础设施集成,部署简便。

4. 技术选型建议

在进行SLB负载均衡技术选型时,建议考虑以下因素:

  1. 应用场景:根据应用场景的并发量、性能需求等因素选择合适的负载均衡技术。
  2. 成本预算:权衡初期投资和长期运营成本,选择成本效益最高的方案。
  3. 维护能力:根据团队的技术实力和维护需求,选择易于维护的负载均衡技术。
  4. 可扩展性:考虑未来业务发展,选择具有良好可扩展性的负载均衡技术。

5. 总结

通过本次培训,您应该对SLB负载均衡技术选型有了更深入的了解。作为一名架构师,您需要根据企业需求,综合考虑各种技术的优缺点,为主流竞品进行合理的技术选型,以实现高效、可靠、安全的负载均衡解决方案。

Nginx主备架构与三可用区高可用配置手册

1. 引言

本文档旨在为Java架构师提供使用Nginx作为负载均衡器的主备架构配置,以及在三可用区环境中实现高可用配置的具体步骤。我们将详细介绍Nginx的配置,以及如何确保后端服务在多个可用区中的高可用性。

2. 环境准备

在开始配置之前,请确保您已经准备好以下环境:

  • 两台Nginx服务器,一台作为主服务器,一台作为备用服务器。
  • 后端服务部署在三个不同的可用区中。
  • 所有服务器之间网络互通,且可以访问公网(用于获取Nginx证书等)。

3. Nginx主备配置

3.1 安装Nginx

在两台Nginx服务器上安装Nginx。以Ubuntu系统为例,可以使用以下命令:

sudo apt update
sudo apt install nginx

3.2 配置主服务器

编辑主服务器的Nginx配置文件(例如 /etc/nginx/nginx.conf),设置上游服务器:

http {upstream backend {server backend-server1.example.com;server backend-server2.example.com;server backend-server3.example.com;}server {listen 80;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

3.3 配置备用服务器

编辑备用服务器的Nginx配置文件,使其与主服务器相同。

3.4 配置Keepalived

在主备服务器上安装Keepalived,用于实现VIP(虚拟IP)的高可用:

sudo apt install keepalived

编辑主服务器的Keepalived配置文件(例如 /etc/keepalived/keepalived.conf):

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100}
}
virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server backend-server1.example.com 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server backend-server2.example.com 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server backend-server3.example.com 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

编辑备用服务器的Keepalived配置文件,将state设置为BACKUPpriority设置为小于100的值(例如99)。

3.5 启动Nginx和Keepalived

在两台服务器上启动Nginx和Keepalived服务:

sudo systemctl start nginx
sudo systemctl start keepalived

确保服务随系统启动自动启动:

sudo systemctl enable nginx
sudo systemctl enable keepalived

4. 三可用区高可用配置

确保后端服务在三个可用区中均部署,并配置健康检查,以确保Nginx负载均衡器仅将流量转发到健康的后端服务器。

5. 测试与验证

配置完成后,测试VIP是否正确地浮动到主服务器,并通过VIP访问后端服务,验证负载均衡是否正常工作。

6. 监控与维护

定期检查Nginx和Keepalived的日志文件,监控服务状态,并根据需要进行维护和配置调整。

7. 总结

本手册提供了使用Nginx作为负载均衡器的主备架构配置,以及在三可用区环境中实现高可用配置的具体步骤。通过这些配置,您可以确保后端服务在多个可用区中的高可用性,并实现流量的负载均衡。

Nginx反向代理与负载均衡快速入门手册

1. 引言

本文档旨在帮助您(小白)迅速掌握如何使用Nginx作为反向代理来实现三台机器的负载均衡。我们将详细介绍Nginx的安装、配置细节,以及如何设置上游服务器和负载均衡策略。

2. 环境准备

在开始之前,请确保您已经准备好以下环境:

  • 一台安装了Nginx的服务器作为反向代理服务器。
  • 三台后端服务器,用于处理客户端请求。
    所有服务器之间网络互通,且可以访问公网(用于获取Nginx证书等)。

3. 安装Nginx

在代理服务器上安装Nginx。以Ubuntu系统为例,可以使用以下命令:

sudo apt update
sudo apt install nginx

4. 配置Nginx

4.1 配置上游服务器

这个是被代理的服务器
编辑Nginx的配置文件(例如 /etc/nginx/nginx.conf),设置上游服务器:

http {upstream myapp1 {server backend-server1.example.com;server backend-server2.example.com;server backend-server3.example.com;}server {listen 80;location / {proxy_pass http://myapp1;proxy_set_header Host $host;					#将请求头中Host 请求头的值发送到服务器proxy_set_header X-Real-IP $remote_addr;  		#传递客户端ipproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

4.2 负载均衡策略

Nginx支持多种负载均衡策略,常见的有:

  • 轮询(Round Robin):默认策略,请求按时间顺序逐一分配到不同的服务器,如果服务器down掉,能自动剔除。
  • 最少连接(Least Connections):分配到当前连接数最少的服务器。
  • IP哈希(IP Hash):根据请求的来源IP地址,将请求分配到固定的服务器,可以在一定程度上保持用户的会话状态。
    例如,要使用最少连接策略,可以修改上游服务器配置:
upstream myapp1 {least_conn;server backend-server1.example.com;server backend-server2.example.com;server backend-server3.example.com;
}

5. 启动Nginx

配置完成后,启动Nginx服务:

sudo systemctl start nginx

确保服务随系统启动自动启动:

sudo systemctl enable nginx

6. 测试与验证

配置完成后,通过访问代理服务器的IP地址或域名,验证负载均衡是否正常工作。可以使用浏览器或命令行工具(如curl)进行测试:

curl http://proxy-server.example.com

观察响应内容,验证是否从不同的后端服务器获取到数据。

7. 监控与维护

定期检查Nginx的访问日志和错误日志,监控服务状态,并根据需要进行维护和配置调整。

8. 总结

通过本手册,您应该能够迅速掌握如何使用Nginx作为反向代理来实现三台机器的负载均衡。了解配置细节和负载均衡策略,可以帮助您根据实际需求调整Nginx配置,实现高效、可靠的负载均衡解决方案。

Nginx极简实战—如何实现Nginx负载均衡高可用

之前讲了Nginx 如何实现负载均衡,以及如何实现动静分离。但是还确少Nginx 高可用的部分。因为Nginx 处于整个系统非常重要的位置,Nginx的高可用影响到整个系统的稳定性。如果nginx服务器宕机后端web服务将无法提供服务,影响严重。所以,接下来就来介绍Nginx + keepalived 实现高可用的方案。

一、什么是负载均衡高可用

nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。
为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

二、Nginx高可用方案

目前,比较流行的实现Nginx高可用方案就是:keepalived+nginx实现主备方案。
1、什么是keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

2、keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

3、keepalived+nginx实现主备过程
下图是keepalived + nginx 实现主备的过程。

从上图可以看到,主Nginx健康时,系统所有的请求通过主Nginx 转发到Tomcat服务器集群。当主Nginx 宕机后,会立马切换到备Nginx ,由备Nginx 提供转发服务。这样就保证系统的正常运行。

三、环境准备

1、两天Nginx服务器和两台web服务器
两台nginx,一主一备:192.168.101.3和192.168.101.4
两台tomcat服务器:192.168.101.5、192.168.101.6

2、安装keepalived
分别在主备nginx上安装keepalived,这里就讲解keepalived的安装了。

3、配置虚拟IP(vip:192.168.101.100)

四、配置Nginx高可用

1、配置主nginx
修改主nginx下/etc/keepalived/keepalived.conf文件,配置主Nginx。
#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from XXX@XXX.com #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.101.100 #可以多个虚拟IP,换行即可
}
}
2、配置备nginx
修改备nginx下/etc/keepalived/keepalived.conf文件,配置备Nginx
配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致

#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from XXX@XXX.com #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state BACKUP #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 99 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.101.100 #可以多个虚拟IP,换行即可
}
}
3、验证测试
1、主备nginx都启动keepalived及nginx。
service keepalived start
./nginx

2、启动之后,主Nginx正常工作,分别查看主nginx和 备nginx的eth0设置,vip(192.168.101.100)绑定在主nginx的eth0上。
访问http://192.168.101.100,访问成功。

3、将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机),再次查看主nginx和 备nginx的eth0设置,vip(192.168.101.100)已经漂移到备nginx 上。
再次访问http://192.168.101.100,发现系统依然可以访问。说明使用keepalived 成功实现了Nginx的高可用。

最后
以上,keepalived+nginx 系统高可用的解决方案介绍完了,看上去复杂,其实配置还是比较简单的。

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

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

相关文章

python爬虫--------requests案列(二十七天)

兄弟姐们,大家好哇!我是喔的嘛呀。今天我们一起来学习requests案列。 一、requests____cookie登录古诗文网 1、首先想要模拟登录,就必须要获取登录表单数据 登录完之后点f12,然后点击network,最上面那个就是登录接口…

Spring AI Summary

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Spring AI is a project that aims to streamline the development of AI applications by providing abstractions and reusable components that can be easily integrate…

Java面试题:描述Java中的链式调用是如何实现的?

链式调用(Chain of Responsibility)是一种行为型设计模式,它允许你通过创建一个对象的序列来处理请求,每个对象处理请求后,将请求传递给下一个对象,直到请求被完整处理。这种模式通常用于简化对象之间的连接…

Python学习之旅高级篇一:Web开发之旅

在Python学习之旅高级篇中,我们将探索如何使用Python进行Web开发。Flask和Django是两个非常流行的Python Web框架,它们可以帮助你快速构建Web应用程序。此外,了解如何设计和实现RESTful API也是Web开发中的一个重要技能。接下来的文章里&…

【java、微服务】MQ

同步通讯 优点 时效性较强,可以立即得到结果 问题 微服务间基于Feign的调用就属于同步方式,存在一些问题。 耦合度高。每次加入新的需求,都要修改原来的代码资源浪费。调用链中的每个服务在等待响应过程中,不能释放请求占用的…

【华科网安复试】网络安全——技术与实践 刘建伟版 重点和笔记

网络安全——技术与实践 刘建伟版 重点和笔记 华中科技大学网络安全学院考研复试笔试部分:《网络安全——技术与实践》重点和笔记,全是图和表格总结的重点,方便复习 文章目录 网络安全——技术与实践 刘建伟版 重点和笔记一、第一章&#xff…

【软考---系统架构设计师】软件架构

目录 1 一、软件架构的概念 二、软件架构风格 (1)数据流风格​​​​​​​ (2)调用/返回风格 (3)独立构件风格 (4)虚拟机风格 (5)仓库风格 三、架构…

labview中循环停止事件的深入研究

1.错误用法 第一次值事件运行的时候空白按钮给的F值,第二次值事件运行的时候空白按钮给的T值,这时循环才真正结束。 2.正确用法之一 赋值和值改变事件从同时进行变成按顺序执行。 3.正确用法之二 值事件发生以后超时事件将T值赋值给结束条件&#xff…

linux tar解压缩命令

列出压缩文件内容 tar -tzvf test.tar.gz 解压文件 tar -xzvf test.tar.gz 压缩文件夹或文件: #压缩categraf目录下的所有文件,对应解压后的目录结构跟目录还是categraf/ tar -czvf categraf.tar categraf/ tar -czvf categraffile.tar categraffile.co…

Linux环境变量深度解析

文章目录 一、引言二、环境变量的基本概念1、环境变量的定义2、环境变量的作用与意义 三、环境变量的导入1、导入所需文件2、登陆时的导入 四、环境变量的设置方法1、查看环境变量的方式2、使用export命令临时设置环境变量3、修改配置文件以永久设置环境变量 五、命令行参数与环…

免费听音乐,下载音乐mp3,mp4,歌词的网站分享(2024-04-22)

亲测!!! 1、音乐客 免费听和免费下载 经典老歌 - 音乐客音乐客,yinyueke.net,免费音乐,免费在线音乐播放器,免费下载音乐,音乐,播放器,下载,播放,DJ,免费,mp3,高音质,…

添加修改ubuntu中环境变量(PATH)

1.打开.bashrc文件进行设置,终端执行以下命令: sudo gedit ~/.bashrc2.在末尾行添加: export PATH$PATH:/xxx/xxx 其中,$PATH代表现存的环境变量,不能省去,等号两边一定不能有空格,/xxx/xxx要…

vLLM:由伯克利大学LMSYS组织开源的大语言模型高速推理框架-显著提高了大型语言模型(LLM)的服务效率

vLLM是一个由伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在提升实时场景下语言模型服务的吞吐与内存使用效率134。它是一个快速且易于使用的库,能够与HuggingFace无缝集成134。vLLM的核心是PagedAttention算法,这是一种新颖的注意力算法,通过引入操作系统的虚拟内…

LinkedList和链表

1.ArrayList的缺陷 ArraryList由于底层是一段连续的空间,所以在ArrayList任意位置插入或者删除元素时,就 需要将后续元素往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较…

pytest教程-27-分布式执行用例插件-pytest-xdist

上一小节我们学习了pytest随机执行用例插件-pytest-random-order,本小节我们讲解一下pytest分布式执行用例插件pytest-xdist。 前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要10…

C++的初步知识——命名空间,缺省参数,重载函数

C 首先写一段代码&#xff1a; #include <stdio.h>int main() {printf("Hello world\n");return 0; }这段C语言代码在cpp文件中仍可运行。我们了解C是兼容C语言的&#xff0c;C的关键字中就包含了C语言的关键字和自身的关键字。关于关键字&#xff0c;我们简…

【Ansible】03

【Ansible】02 ansible 变量 facts 变量 facts 翻译为 事实 facts 变量是 ansible 自带的预定以变量 , 用于描述被控端软硬件信息 facts 变量通过 setup 模块获得 ansible webservers -m setup facts 变量是一个大的由 { } 构成的 键值对字典 在 { }中存在多层级的嵌套 …

C 练习实例25

C 练习实例25 题目&#xff1a; 求12!3!...20!的和。 程序分析&#xff1a; 此程序只是把累加变成了累乘。 实例 #include <stdio.h>int main() {int i;long double sum,mix;sum0,mix1;for(i1;i<20;i){mixmix*i;sumsummix;} printf("%Lf\n",sum); }以…

PTA L2-052 吉利矩阵

题目 解析 这题考的是搜索剪枝 可行性剪枝&#xff1a; 即判断当前行&#xff08;列&#xff09;是否已经超过L和剩下的格子都填最大值是否小于L&#xff0c;若是则剪枝。 当前行数大于1时&#xff0c;判断上一个填完的行是否等于L&#xff0c;若否&#xff0c;则剪枝。 当前行…

React Router 6 路由重定向与编程式导航指南

在 React Router 6 中,你可以使用 Navigate 组件、useNavigate hook 来实现路由重定向。下面是一些常见的重定向场景以及对应的实现方式: 一.使用 Navigate 组件 从一个路由重定向到另一个路由 你可以在路由配置中使用 Navigate 组件作为某个路由的元素。例如: import { Na…