部署LVS负载均衡架构

目录

一、ipvsadm 工具

二、NAT模式下部署LVS负载均衡

1、部署NFS共享存储服务器

1.1 安装NFS软件

1.2 新建共享目录和站点文件

1.3 设置共享策略

2、部署节点服务器1

2.1 安装并启动nginx软件

2.2 挂载共享目录到网页站点目录

2.3 修改网关

3、部署节点服务器2

3.1 安装并启动nginx软件

3.2 挂载共享目录到网页站点目录

3.3 修改网关

4、部署调度服务器

4.1 添加新网卡并配置网卡信息

4.2 开启路由转发功能

4.3 搭建本地yum仓库安装ipvsadm

4.4 配置调度

5、测试


一、ipvsadm 工具

ipvsadm是用于配置IP负载均衡的工具,实现LVS内核的工具,用于实现负载均衡,将传入的连接分发给一组后端服务器

选项说明
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a添加真实服务器(节点服务器)
-d删除某一个节点
-t指定VIP地址及TCP端口
-r指定RIP地址及TCP端口
-m表示使用NAT群集模式
-g表示使用DR模式
-j表示使用TUN模式
-w设置权重(权重为0时表示暂停节点)
-p-p 60 表示保持长连接60秒
-l列表查看 LVS虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln
#管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address #删除
ipvsadm –C #清空
ipvsadm –R #重载,相当于ipvsadm-restore
ipvsadm -S [-n] #保存,相当于ipvsadm-save
#管理集群中的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]  
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]选项:
lvs类型:-g: gateway, dr类型,默认-i: ipip, tun类型-m: masquerade, nat类型        
-w weight:权重例子:
ipvsadm -A -t 12.0.0.1:80 -s rr
-A 新建代理服务器
-t tcp协议
12:0.0.1:80
-s 指定调度算法ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m
-r 真实服务器
-m 表示使用NAT群集模式
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

二、NAT模式下部署LVS负载均衡

前提:关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

注:

  • 当客户端访问负载调度服务器,负载调度服务器会根据轮询的调度算法,将请求调度到节点服务器1或节点服务器2上(比例1:1)。
  • 然后节点服务器1和节点服务器2从NFS共享存储服务器上获取网页资源,然后再通过负载调度服务器返回给客户端

在现实环境中,节点服务器1和节点服务器2从NFS共享存储服务器上获取的网页资源内容是一样的,但这里,为了方便展示效果,就使用不同的网页资源,方便区分。

浏览器访问:

情况一:

http://172.16.12.10/  ---> 负载调度服务器 ---> 节点服务器1 ---> NFS共享存储服务器:welcome to web 1

情况二:

http://172.16.12.10/  ---> 负载调度服务器 ---> 节点服务器2 ---> NFS共享存储服务器:welcome to web 2

1、部署NFS共享存储服务器

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS

协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡

群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支

持的一种协议

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程

到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS

共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持

1.1 安装NFS软件

[root@localhost ~]#yum install nfs-utils rpcbind -y
[root@localhost ~]#systemctl start rpcbind
[root@localhost ~]#systemctl start nfs

1.2 新建共享目录和站点文件

[root@localhost ~]#mkdir /opt/web1 /opt/web2
[root@localhost ~]#chmod 777 /opt/web1 /opt/web2
[root@localhost ~]#echo 'welcome to web 1' > /opt/web1/index.html
[root@localhost ~]#echo 'welcome to web 2' > /opt/web2/index.html

1.3 设置共享策略

[root@localhost ~]#vim /etc/exports
/opt/web1 172.16.12.0/24(rw,sync)
/opt/web2 172.16.12.0/24(rw,sync)
[root@localhost ~]#exportfs -r
[root@localhost ~]#exportfs -v
[root@localhost ~]#systemctl restart nfs

2、部署节点服务器1

2.1 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

2.2 挂载共享目录到网页站点目录

[root@localhost ~]#showmount -e 172.16.12.13
[root@localhost ~]#mount 172.16.12.13:/opt/web1 /usr/share/nginx/html

2.3 修改网关

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.11
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost ~]#systemctl restart network

3、部署节点服务器2

3.1 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

3.2 挂载共享目录到网页站点目录

[root@localhost ~]#showmount -e 172.16.12.13
[root@localhost ~]#mount 172.16.12.13:/opt/web2 /usr/share/nginx/html

3.3 修改网关

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.12
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost ~]#systemctl restart network

4、部署负载均衡调度服务器

4.1 添加新网卡并配置网卡信息

#添加新网卡并配置网卡信息,修改旧网卡网关
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]#vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=11.0.0.10
NETMASK=255.255.255.0
GATEWAY=11.0.0.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost network-scripts]#vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.10
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ifconfig

4.2 开启路由转发功能

[root@localhost ~]#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@localhost ~]#sysctl -p
[root@localhost ~]#sysctl -a | grep ip_forward

4.3 搭建本地yum仓库安装ipvsadm

#加载模块
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs

#搭建本地yum仓库安装ipvsadm
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#vim local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[root@localhost yum.repos.d]#yum clean all
[root@localhost yum.repos.d]#yum makecache
[root@localhost ~]#yum install -y ipvsadm.x86_64
#开启ipvsadm服务
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost ~]#systemctl start ipvsadm.service
[root@localhost ~]#systemctl status ipvsadm.service

4.4 配置负载分配策略,

[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm -A -t 11.0.0.10:80 -s rr
[root@localhost ~]#ipvsadm -a -t 11.0.0.10:80 -r 172.16.12.11:80 -m
[root@localhost ~]#ipvsadm -a -t 11.0.0.10:80 -r 172.16.12.12:80 -m
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm

5、客户端测试

[root@localhost ~]#curl 11.0.0.10

注: 

在调度服务器可查看,当前系统上 IPVS 的配置信息

[root@localhost ~]#cat /proc/net/ip_vs
[root@localhost ~]#ipvsadm -ln

二、 DR模式下部署LVS负载均衡

前提:关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

注:

  • 当客户端发送请求时,请求会首先到达负载调度服务器。负载调度服务器根据轮询的调度算法,将请求转发给节点服务器1或节点服务器2
  • 当节点服务器1或节点服务器2接收到请求后,处理并生成响应,直接将响应数据包发送回客户端,不需要经过负载调度服务器
  • 需要在负载调度服务器、所有的节点服务器上的配置虚拟IP(VIP),关闭所有节点服务器的arp广播

在现实环境中,从节点服务器1和节点服务器2获取的网页资源内容是一样的,但这里,为了方便展示效果,就使用不同的网页资源,方便区分。

浏览器访问:

情况一:

http://172.16.12.200/  ---> 负载调度服务器 ---> 节点服务器1 ---> welcome to web 1

                                                     客户端 <----

情况二:

http://172.16.12.200/  ---> 负载调度服务器 ---> 节点服务器2 ---> welcome to web 2

                                                      客户端 <----

1、部署节点服务器1

1.1 设置虚拟回环网卡

1.1.1 临时设置虚拟回环网卡
[root@localhost ~]#ifconfig lo:0 172.16.12.200/32
[root@localhost ~]#ip a

1.1.2 永久设置虚拟回环网卡 
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ip a

1.2 设置路由

[root@localhost network-scripts]#route add -host 172.16.12.200 dev lo:0
[root@localhost network-scripts]#route -n

1.3 忽略arp请求

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl -p

1.4 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

1.5 新建网页站点文件

[root@localhost ~]#echo "welcome to web 1" > /usr/share/nginx/html/index.html
[root@localhost ~]#cat /usr/share/nginx/html/index.html

2、部署节点服务器2

2.1 设置虚拟回环网卡

2.1.1 临时设置虚拟回环网卡
[root@localhost ~]#ifconfig lo:0 172.16.12.200/32
[root@localhost ~]#ip a

2.1.2 永久设置虚拟回环网卡 
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ip a

2.2 设置路由

[root@localhost network-scripts]#route add -host 172.16.12.200 dev lo:0
[root@localhost network-scripts]#route -n

2.3 忽略ARP请求

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl -p

2.4 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

2.5 新建网页站点文件

[root@localhost ~]#echo "welcome to web 1" > /usr/share/nginx/html/index.html
[root@localhost ~]#cat /usr/share/nginx/html/index.html

3、部署负载均衡调度服务器

3.1 设置虚拟网卡

3.1.1 临时设置虚拟网卡
[root@localhost ~]#ifconfig ens33:0 172.16.12.200/32
[root@localhost ~]#ip a

3.1.2 永久设置虚拟网卡
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]#vim ifcfg-ens33:0
#删除dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
[root@localhost network-scripts]#systemctl restart network
[root@localhost ~]#ip a

3.2 调整/proc响应参数

对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]#sysctl -p

3.3 搭建本地yum仓库安装ipvsadm

#加载模块
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs

#搭建本地yum仓库安装ipvsadm
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#vim local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[root@localhost yum.repos.d]#yum clean all
[root@localhost yum.repos.d]#yum makecache
[root@localhost ~]#yum install -y ipvsadm.x86_64
#开启ipvsadm服务
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost ~]#systemctl start ipvsadm.service
[root@localhost ~]#systemctl status ipvsadm.service

3.4 配置负载分配策略

[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm -A -t 172.16.12.200:80 -s rr
[root@localhost ~]#ipvsadm -a -t 172.16.12.200:80 -r 172.16.12.11:80 -g
[root@localhost ~]#ipvsadm -a -t 172.16.12.200:80 -r 172.16.12.12:80 -g
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm

4、客户端测试

#客户端访问负载调度服务器的虚拟网卡
[root@localhost ~]#curl 172.16.12.200

注:

在调度服务器可查看,当前系统上 IPVS 的配置信息

[root@localhost ~]#cat /proc/net/ip_vs
[root@localhost ~]#ipvsadm -ln

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

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

相关文章

在ABAP中创建一个简单的守护进程

原文地址&#xff1a;Create a simple Daemon in ABAP 目录 一、ABAP语言中的守护进程是什么&#xff1f;二、ABAP 守护进程框架 (ADF)三、ABAP 守护进程类四、创建一个简单的ABAP守护进程步骤1&#xff1a;创建一个新的ABAP Daemon类步骤2&#xff1a;实现ON_ACCEPT方法第三步…

「滚雪球学Java」:GUI编程(章节汇总)

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

Kosmos-1: 通用接口架构下的多模态大语言模型

Kosmos-1: 通用接口架构下的多模态大语言模型 FesianXu 20230513 at Baidu Search Team 前言 在大规模语言模型&#xff08;Large Language Model, LLM&#xff09;看似要带来新一番人工智能变革浪潮之际&#xff0c;越来越多尝试以LLM作为通用接口去融入各种任务的工作&#…

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复&#xff0c;初步分析是vue发布3.4版本以后引起的兼容性问题。 问题截图&#xff1a; 1.isFucntion is not function&#xff0c;是由于vue升级后众多插件版本不匹配造成的问题 2.弹框…

计算机中msvcp140.dll,丢失怎么修复与解决

一、msvcp140.dll20个软件环境 msvcp140.dll文件是许多软件运行环境的组成部分&#xff0c;通常与Microsoft Visual C Redistributable关联。以下是可能使用该文件的软件环境&#xff1a; 微软办公软件&#xff1a;如Microsoft Office套件&#xff0c;包括Word、Excel、Power…

Python给图片加水印

受到“手动给证件加文字太麻烦”的感触&#xff0c;想用Python来实现给图片加水印&#xff0c;这不方便多了。 这里使用PIL模块&#xff1a; from PIL import Image from PIL import ImageFont from PIL import ImageDrawimg_t Image.open(cat.jpg) img_size_t img_t.size…

OJ:循环队列

622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 思路 思路&#xff1a;首先循环队列的意思是&#xff1a;空间固定&#xff0c;就是提前开辟好&#xff0c;满了就不能插入了&#xff0c;但是删除数据后仍有空间&#xff0c;删除循环队列里面的数据后&#xff0c;保…

Apache ECharts数据可视化技术

介绍 官方地址:Apache ECharts 快速入门案例echarts.init //初始化方法 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src"echart…

基于JavaWEB SpringBoot婚纱影楼摄影预约网站设计和实现

基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

Java Swing游戏开发学习8

内容来自RyiSnow视频讲解 上一节提到的bug&#xff0c;不知道有没有人发现&#xff1f; 在播放音乐和音效的时候使用的是同一个clip对象&#xff0c;播放背景音乐在前&#xff0c;后续播放音效&#xff0c;clip对象就被覆盖了&#xff0c;因此导致调用停止播放背景音乐的时候&a…

计算机组成原理之机器:总线

计算机组成原理之机器 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chapter2&#xff1a;总线 2.1 总线的基本概念 1.为什么需要总线&#xff1f;有几百个部件需要连接进行信息传输 2.什么是总线&#xff1f;总线是连接各个部件…

七、链表问题(上)

160、相交链表&#xff08;简单&#xff09; 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个…

如何选择阿里云服务器配置?(CPU/内存/带宽/磁盘)

阿里云服务器配置怎么选择&#xff1f;CPU内存、公网带宽和系统盘怎么选择&#xff1f;个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例&#xff0c;企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器&#xff0c;阿里云服务器网aliyunfuwuqi.com整…

对象得定义与使用(动力节点老杜)

对象思想 1.什么是面向过程&#xff0c;什么是面向对象&#xff1f; 换而言之&#xff0c;面向对象思想实际就是将整体分成一个个独立的单元&#xff0c;每个单元都有自己得任务和属性&#xff0c;所有单元结合在一起完成一个整体。如果某个单元出现了问题还可以及时处理&…

比肩Gen-2,全新开源文生视频模型

著名开源平台Stability.ai在官网宣布&#xff0c;推出全新文生视频的扩散模型Stable Video Diffusion&#xff0c;已开源了该项目并公布了论文。 据悉&#xff0c;用户通过文本或图像就能生成高精准&#xff0c;14帧和25帧的短视频。目前&#xff0c;Stable Video Diffusion处…

回溯算法02-组合总合III(Java)

2.组合总合III 题目描述 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3,…

[Linux]如何理解kernel、shell、bash

文章目录 概念总览kernelshell&bash 概念总览 内核(kernel) &#xff0c;外壳(shell) &#xff0c;bash kernel kernel是指操作系统中的核心部分&#xff0c;用户一般是不能直接使用kernel的。它主要负责管理硬件资源和提供系统服务&#xff0c;如内存管理、进程管理、文件…

Pytest测试技巧之Fixture:模块化管理测试数据!

在 Pytest 测试中&#xff0c;有效管理测试数据是提高测试质量和可维护性的关键。本文将深入探讨 Pytest 中的 Fixture&#xff0c;特别是如何利用 Fixture 实现测试数据的模块化管理&#xff0c;以提高测试用例的清晰度和可复用性。 什么是Fixture&#xff1f; 在 Pytest 中…

【考研数学】武忠祥各阶段用书搭配+学习包

25考研数学全流程规划&#xff01;别等到二战了才知道这样学 本人属于基础很差相当于是零基础的考研党&#xff0c;经过一年备考成功上岸 中间花费了很多时间在考研数学备考信息检索上&#xff0c;写下这篇希望能帮助基础不好的学弟学妹们多节约一些时间复习&#xff01; 25…

【PowerMockito:编写单元测试过程中原方法没有注入的属性在跑单元测试时出现空指针】

出错场景 下面这一步报空指针&#xff0c;但是因为没有注入&#xff0c;在测试类中无法使用Mock 解决 在执行方法前&#xff0c;加入以下代码 MemberModifier.field(ResourceServiceImpl.class,"zero").set(resourceService,"0");