LVS集群-DR模式【部署高可用LVS-DR集群】

news2024/9/23 11:23:38

文章目录

  • 2.2 实战:配置LVS-DR集群
    • 2.2.1 配置IP
    • 2.2.2 生成ens33:1配置文件
    • 2.2.3 配置LVS-DR规则
    • 2.2.4 两台RealServer的IP配置
      • Alastor62(配置IP:192.168.1.62)
      • Alastor64(配置IP:192.168.1.64)
      • 客户端测试访问vip
  • 2.3 LVS的多种调度模式
    • 2.3.1 每个调度算法详细说明
    • 2.3.2 实例:
      • 例1:测试LVS 其它调度算法,如LVS-DR wrr diào dù
      • 例2:如果一个real server 的权重是0,将不再分配给他客户端的请求
      • 扩展:
  • 2.4 linux下ab网站压力测试命令
    • 2.4.1 linux下ab网站压力测试命令
    • 2.4.2 实战: 同时处理1000个请求,一次要执行1000个并发请求

2.2 实战:配置LVS-DR集群

在这里插入图片描述

分发器IP配置

从拓扑图看出我们的eth0有2个IP地址,所以我们需要配置eht0和eth0:1两个IP

  • DIP = ens33 = 192.168.1.70
  • VIP = ens33:1 = 192.168.1.63

2.2.1 配置IP

DIP: ens33ip地址: 192.168.1.70
VIP: ens33:1ip地址: 192.168.1.63

[root@youmin63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #以配置以下信息

IPADDR=192.168.1.70
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.96.134.133

本项目网关修改为:192.168.43.1 ,其他ip也修改

2.2.2 生成ens33:1配置文件

[root@youmin63 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@youmin63 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@youmin63 network-scripts]# vim ifcfg-ens33:1 #写入以下内容

DEVICE=ens33:1
NM_CONTROLLED=yes
IPADDR=192.168.1.63
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Etherneten	
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="ens33:1"
HWADDR=00:0C:29:12:EC:1E   #Mac地址必需要写成和eth0一样,否则出不来eth0:1这个网卡设备

在这里插入图片描述

[root@youmin63 network-scripts]# service network restart
[root@youmin63 network-scripts]# ifconfig #查看是否有ens33 和ens33:1

ifconfig命令可能没有安装,使用yum安装net-tools

ens33      Link encap:Ethernet  HWaddr 00:0C:29:12:EC:1E  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe12:ec1e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3266 errors:0 dropped:0 overruns:0 frame:0
          TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:239961 (234.3 KiB)  TX bytes:22832 (22.2 KiB)

ens33:1    Link encap:Ethernet  HWaddr 00:0C:29:12:EC:1E  
          inet addr:192.168.1.63  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

在这里插入图片描述

2.2.3 配置LVS-DR规则

[root@youmin63 network-scripts]# rpm -ivh /mnt/Packages/ipvsadm-1.25-9.el6.x86_64.rpm(安装包)
[root@youmin63 network-scripts]# yum install ipvsadm -y (yum安装)

在这里插入图片描述

[root@youmin63 ~]# ipvsadm -A -t 192.168.1.63:80 -s rr
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.62 -g
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.64 -g

注: -g 表示DR模式 , -m 表示IP tun 模式

[root@youmin63 ~]# ipvsadm -L -n

在这里插入图片描述

注:三个LVS 模式中,只有NAT模式需要开启 路由转发功能。 DR和TUN模式不需要开启。

2.2.4 两台RealServer的IP配置

Alastor62(配置IP:192.168.1.62)

1、配置ip ens33,桥接模式ifconfig ens33 192.168.1.62/24

2、回环接口:[root@youmin62 ~]# ifconfig lo:1 192.168.1.63 netmask 255.255.255.255

生成回环口配置文件:

[root@youmin62 network-scripts]# cd /etc/sysconfig/network-scripts
[root@youmin62 network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@youmin62 network-scripts]# cat ifcfg-lo:1

DEVICE=lo:1
IPADDR=192.168.1.63
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=loopback

在这里插入图片描述

3、网关指向公网出口路由器IP:

[root@youmin62 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=192.168.1.1

在这里插入图片描述

4、启动80端口

echo  192.168.1.62 > /var/www/html/index.html
service httpd restart

5、2.2.3 关闭ARP转发(在两台RS上都需要同样的操作)。

同一个广播域: 配置了多个相同的VIP 是不允许的, 要想实现,就必须让外面的网络, 无法发现这个VIP的存在
因此 在Linux里面, 可以修改内核参数, 实现接口IP的广播不响应、不广播

  • arp_ignore = 1 表示只回答目标IP是访问本地网络对应接口的arp请求
  • arp_announce = 2 只宣告本机网卡直连网络所在的ip的arp广播

[root@youmin62 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@youmin62 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
永久生效:(注意realserver的实际link ok的网卡是不是ens33)
[root@youmin62 ~]# vim /etc/sysctl.conf #最后添加

net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2

或:

net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@youmin62 ~]# sysctl -p

在这里插入图片描述

参数说明:

arp_ignore 为1 :只回答目标IP地址是访问本网络接口(eth0)的ARP查询请求。
个人理解:在设置参数的时候将arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的网卡设备上面没有这个ip,就不做出响应,默认是0,只要这台机器上面任何一个网卡设备上面有这个ip,就响应arp请求,并发送mac地址。

arp_announce 为2 :对查询目标使用最适当的本地地址。
例如,如果在eth0接口上接受到了一个VIP的arp请求包。内核判断这个VIP地址是不是eth0接口上的IP一样。如果一样,则回复这个包。如果不一样,就丢弃不回应。

Alastor64(配置IP:192.168.1.64)

1、配置ip ens33 ,桥接模式ifconfig ens33 192.168.1.64/24

2、回环接口:[root@youmin64 ~]# ifconfig lo:1 192.168.1.63 netmask 255.255.255.255

生成回环口配置文件:
[root@youmin64 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@youmin64 network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@youmin64 network-scripts]# cat ifcfg-lo:1

DEVICE=lo:1
IPADDR=192.168.1.63
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=loopback

3、关闭ARP转发

[root@youmin64 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@youmin64 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
永久生效:(注意realserver的实际link ok的网卡是不是eth0)
[root@youmin64 ~]# vim /etc/sysctl.conf #最后添加

net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2

或:

net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@youmin64 ~]# sysctl -p

4、网关指向公网出口路由器IP:

[root@youmin64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=192.168.1.1

5、启动80端口

echo  192.168.1.64 > /var/www/html/index.html
service httpd restart

搭建简单网站:https://blog.csdn.net/baibaigao/article/details/89406201

客户端测试访问vip

先测试real server :

http://192.168.1.62
http://192.168.1.64

或物理机上测试:

http://192.168.1.63/

注: 测试时,不要在分发器上测试。那样测试是不行的


2.3 LVS的多种调度模式

[root@youmin63 ~]# ipvsadm -h

–scheduler -s scheduler(ˈskejələr调度) one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, the default scheduler is wlc.

  • -s rr 轮循法
  • -s wrr 带权重的循环法
  • -s lc 最少连接法
  • -s wlc 带权重的最少连接法
  • -s lblc 基于本地的最少连接法
  • -s dh 目标散列法
  • -s sh 源散列法
  • -s sed 最短预期延迟法-s nq 永不排队法

注:调度算法配置后立即生效,就像iptables配置规则一样。

2.3.1 每个调度算法详细说明

1、rr - round robin

在服务器池中无穷的循环中遍历

2、wrr - Weighted Round Robin

基于集群节点可以处理多少来分配给每个节点一个权重值。权重值为2的服务器将收到权重值为1的服务器的两倍的连接数量。如果服务器的权重为0 ,则不会收到新的连接请求(但当前活动的已经建立的连接将不会丢失)。

3、lc - Least-Connection

当新的请求到达director时,director查看活动和非活动的连接数量,以确定把请求分发给哪个服务器。

director将集群节点目前的活动连接数量x256 再加上不活动的连接数量,得到节点的开 销值。最低开销值的节点胜出,被分发给新的入站请求。(如果开销一样,则第一个节点被选中)

4、wlc - Weighted Least-Connection

先如上算出集群节点的开销值,然后除以分配给其的权重值,最小值节点胜出,将入站请求分发给它。

5、lblc - Locality-Based Least-Connection

基于局部的最小连接,当real server是缓存服务器时用得比较多

6、lblcr - Locality-Based Least-Connection with Replication

带复制的基于局部的最小连接,当real server是缓存服务器时用得比较多

7、dh - Destination Hashing

8、sh - Source Hashing

同一个ip的客户端总是分发给同一个real server。

让客户端总是能访问到自己的会话信息,这种机制叫会话保持。

基于ip地址标识客户端的缺点:很多内网用户会伪装成公网ip,来访问服务器,不能人为的控制负载均衡。

比较高级的方法是基于客户端提供我们的session id来实现会话保持。
haproxy(做负载均衡的软件)可以实现基于会话信息来判断保持会话。

扩展:

  • 如何保持会话一致:如果总是保持和一个RS会话,这台RS如果故障了,要确定另一个RS也有会话信息,所有的RS保持数据同步。

  • 会话同步的方法:所有的RS把自己的会话信息保存到数据库当中(memcached软件)。

9、sed - Shortest Expected Delay最短延时预测 (Ci+1)/Ui Ci连接数 Ui权重值

在wlc方法上做了轻微改进,这些服务使用tcp,而且当群节点在处理每个请求时保持在活动状态。

计算方法: 每个休群节点的开销值是通过将活动的连接数加1计算的。然后开销值除以分配 给每个节点的权重,以取得SED值,具有最低SED值的集群节点胜出。

10、nq - Never Queue没有队列,分配请求给空闲的服务器,没有空闲的就找响应最快的

如果集群节点中没有活动的连接 ,不管每个集群节点SED计算值的结果,它始终被分配置服务的新入站请求。

HTTP的会话(session)信息:
cookies客户端(client)自己保存缓存
会话(session)服务器(server)端保存

2.3.2 实例:

例1:测试LVS 其它调度算法,如LVS-DR wrr diào dù

[root@youmin63 ~]# ipvsadm -C
[root@youmin63 ~]# ipvsadm -A -t 192.168.1.63:80 -s wrr
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.62 -g -w 10
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.64 -g -w 20

[root@youmin63 ~]# ipvsadm -L -n --stats

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.63:80                     0        0        0        0        0
  -> 192.168.1.62:80                     0        0        0        0        0
  -> 192.168.1.64:80                     0        0        0        0        0
  • 测试:在物理机上,刷新9次这个链接:http://192.168.1.63/
  • 查看:[root@youmin63 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.63:80                     9       45        0     6111        0
  -> 192.168.1.62:80                     3       15        0     2037        0
  -> 192.168.1.64:80                     6       30        0     4074        0
# 一共9次连接, youmin62:youmin64  是 1:2 关系。  说明权重越大,获得的连接说越多。

例2:如果一个real server 的权重是0,将不再分配给他客户端的请求

[root@youmin63 ~]# ipvsadm -C
[root@youmin63 ~]# ipvsadm -A -t 192.168.1.63:80 -s wrr # -s wrr 加权轮循
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.62 -g -w 0
[root@youmin63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.1.64 -g -w 20

  • 在物理机上,刷新9次这个链接:http://192.168.1.63/
  • 查看:root@youmin63 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.63:80                     8       40        0     5432        0
  -> 192.168.1.62:80                     0        0        0        0        0  #62的请求数为0
  -> 192.168.1.64:80                     8       40        0     5432        0

另外:
ipvsadm -L -n --stats
发现进来的包是有的,但是出去的包为0

InPkts                  OutPkts
   有				      0    

因为数据包出去时,直接交给了real server,而没有交给Director

扩展:

ipvsadm 更多参数说明

  • -L -n ==> 查看规则,显示内核虚拟服务器表
  • -L -n -c ==> 查看客户端连接分发器和real server 的情况

实例1:

[root@youmin63 ~]# ipvsadm -L -n -c

IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:33  TIME_WAIT   192.168.1.100:49698 192.168.1.70:80    192.168.1.62:80
TCP 01:26  TIME_WAIT   192.168.1.100:49690 192.168.1.70:80    192.168.1.64:80
TCP 01:57  TIME_WAIT   192.168.1.100:49739 192.168.1.70:80    192.168.1.62:80
  • -L -n --stats ==> 查看分发情况
  • -L -n --rate ==> 查看速率
  • -Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)

例1:[root@youmin63 ~]# ipvsadm -Z
[root@youmin63 ~]# ipvsadm -L -n --stats

IP Virtual Server version 1.2.1 (size=4096)

实例2:删除一条记录

[root@youmin63 ~]# ipvsadm -d -t 192.168.1.63:80 -r 192.168.1.64
[root@youmin63 ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.63:80 rr
  -> 192.168.2.62:80              Masq    1      0          0       

-C --clear 清除内核虚拟服务器表中的所有记录。

实例3: 清空所有记录
[root@youmin63 ~]# ipvsadm -C

其他查看方式

  • –stats 显示统计信息

[root@youmin63 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.63:80                     0        0        0        0        0
  -> 192.168.2.62:80                     0        0        0        0        0
  • –rate 显示速率信息

[root@youmin63 ~]# ipvsadm -L -n --rate
IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
TCP  192.168.1.63:80                     0        0        0        0        0
  -> 192.168.2.62:80                     0        0        0        0        0
  • -c --connection 显示LVS 目前的连接

[root@youmin63 ~]# ipvsadm -L -n -c

IPVS connection entries
pro expire state       source             virtual            destination

LVS的规则配置文件:/etc/sysconfig/ipvsadm

配置文件方法:

[root@youmin63 ~]# ipvsadm-save>/etc/sysconfig/ipvsadm 可以保存。

LVS的规则存储配置文件:/etc/sysconfig/ipvsadm

[root@youmin63 ~]# cat /etc/sysconfig/ipvsadm

-A -t 192.168.1.63:80 -s rr
-a -t 192.168.1.63:80 -r 192.168.1.62:80 -m -w 1
-a -t 192.168.1.63:80 -r 192.168.1.64:80 -m -w 1

2.4 linux下ab网站压力测试命令

2.4.1 linux下ab网站压力测试命令

  • 语法: ab -n 数字 -c 数字 http://链接

-n requests Number of requests to perform
#在测试会话中所执行的请求总个数。默认时,仅执行一个请求

-c concurrency Number of multiple requests to make
#一次产生的请求个数。默认是一次一个。

2.4.2 实战: 同时处理1000个请求,一次要执行1000个并发请求

[root@youmin64 ~]# ab -n 1000 -c 1000 http://192.168.1.63/index.html

ab命令在一般系统上面做测试时候,一般并发不能超过1024个,其实是因为因为系统限制每个进程打开的最大文件数为1024,可以用ulimit -a来查看

可以测试一下后面两机器的负载情况。

查看状态:

[root@youmin63 ~]# watch -n 0.1 ipvsadm -L -n --stats

[root@youmin64 ~]# ab -n 1000 -c 1000 http://192.168.1.63/index.html

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.63 (be patient 耐心)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests  #完成1000个请求

Server Software:        Apache/2.2.15   #被测试的httpd服务器版本://平台apache 版本2.0.54
Server Hostname:        192.168.1.63 //服务器主机名
Server Port:            80  //服务器端口
Document Path:          /index.html   //测试的页面文档
Document Length:        13 bytes  //文档大小
说明:在youmin62查看index.html大小。确实是13字节
[root@youmin62 html]# ll -h
-rw-r--r-- 1 root root 13 May  5 17:57 index.html
Concurrency(并发) Level:      1000  //并发数
Time taken for tests:   2.166 seconds  #整个测试花费的时间
Complete requests:      1000  //完成的请求数量
Failed requests:        0  //失败的请求数量
Write errors:           0
Total transferred:      281120 bytes   #整个测试过程中总传输字节数
HTML transferred:       13052 bytes  #//整个场景中的HTML内容传输量
Requests per second:    461.77 [#/sec] (mean)   #每秒处理请求数。//大家最关心的指标之一,相当于服务器中的每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request:       2165.597 [ms] (mean)  # //大家最关心的指标之二,平均请求响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request:       2.166 [ms] (mean, across all concurrent requests) #每个请求的时间:2.166[毫秒](意思是说,在所有的并发请求)  //每个请求实际运行时间的平均值。
由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数

Transfer rate:          126.77 [Kbytes/sec] received  #传输速率://平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)  #连接时间(毫秒)
              min  mean[+/-sd] median   max    # median(中间)
Connect:        4  225 143.8    214     538
Processing:    39  484 433.5    318    1581
Waiting:       36  480 433.8    317    1580
Total:        116  709 516.3    581    1807

Percentage of the requests served within a certain time (ms) #在一定的时间内提供服务的请求的百分比(毫秒)
  50%     44
  66%     49
  75%    285
  80%    453
  90%    495
  95%    884
  98%    899
  99%    904
 100%    906 (longest request) 
整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于44 毫秒,66% 的用户响应时间小于49 毫秒,最大的响应时间小于906 毫秒

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

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

相关文章

Macos视频增强修复工具:Topaz Video AI for mac

Topaz Video AI是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等等。 使用Topaz Video AI非常简单&#xff0c;…

C++设计模式_13_Flyweight享元模式

Flyweight享元模式仍然属于“对象性能”模式。 文章目录 1. 动机(Motivation)2. 模式定义3. 结构( Structure)4. 代码演示5. 要点总结6. 其他参考 1. 动机(Motivation) 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中&#xff0c;从而带来很高的运行…

Web攻防05_MySQL_二次注入堆叠注入带外注入

文章目录 MYSQL-二次注入-74CMS思路描述&#xff1a;注入条件&#xff1a;案例&#xff1a;74CMS个人中心简历功能 MYSQL-堆叠注入-CTF强网思路描述注入条件案例&#xff1a;2019强网杯-随便注&#xff08;CTF题型&#xff09; MYSQL-带外注入-DNSLOG注入条件使用平台带外应用场…

代碼隨想錄算法訓練營|第四十九天|139.单词拆分、关于多重背包、背包问题总结。刷题心得(c++)

目录 讀題 139.单词拆分 自己看到题目的第一想法 看完代码随想录之后的想法 139.单词拆分 - 實作 思路 Code 關於多重背包 與01背包與完全背包的差別 轉化成01背包問題 背包问题总结 背包問題分類 背包問題 - 遞推公式 最多裝多少/能否裝滿 最大價值 裝滿背包有…

OpenFeign实现分析、源码解析

什么是openfeign? 是springcloud全家桶的组件之一&#xff0c;其核心作用是为Rest API提供高效简洁的rpc调用方式。 为什么只定义接口而没有实现类&#xff1f; 源码解读&#xff08;省略&#xff09; 总结&#xff1a; 源码分析&#xff1a;如何发送http请求&#xff1f; …

基于单片机设计的智能窗帘控制系统

一、前言 智能家居技术在近年来取得了巨大的发展&#xff0c;并逐渐成为人们日常生活中的一部分。智能家居系统带来了便利、舒适和高效的生活体验&#xff0c;拥有广泛的应用领域&#xff0c;其中之一就是智能窗帘控制系统。 传统窗帘需要手动操作&#xff0c;打开或关闭窗帘…

微服务-Ribbon负载均衡

文章目录 负载均衡原理流程原理源码分析负载均衡流程 负载均衡策略饥饿加载总结 负载均衡原理 流程 原理 LoadBalanced 标记RestTemplate发起的http请求要被Ribbon进行拦截和处理 源码分析 ctrlshiftN搜索LoadBalancerInterceptor&#xff0c;进入。发现实现了ClientHttpRequ…

Snipaste--强大的截图贴图软件--非常实用

一.软件介绍&#xff1a; Snipaste 是一个简单但强大的截图工具&#xff0c;也可以让你将截图贴回到屏幕上&#xff01;下载并打开Snipaste&#xff0c;按下 F1 来开始截图&#xff0c;再按 F3&#xff0c;截图就在桌面置顶显示了。就这么简单&#xff01;你还可以将剪贴板里的…

SK-Net eca注意力机制应用于ResNet (附代码)

resnet发展历程 论文地址&#xff1a;https://arxiv.org/pdf/1903.06586.pdf 代码地址&#xff1a;https://github.com/pppLang/SKNet 1.是什么&#xff1f; SK-net网络是一种增加模块嵌入到一些网络中的注意力机制&#xff0c;它可以嵌入和Resnet中进行补强&#xff0c;嵌入…

composer安装thinkphp6报错

composer安装thinkphp6报错&#xff0c; 查看是否安装了对应的PHP扩展&#xff0c;我这边使用的是宝塔的环境&#xff0c;全程可以可视化操作 这样就可以安装完成了

linux工具篇

文章目录 linux工具篇1. linux 软件包管理器-yum1.1 什么是软件包1.2 yum的使用1.3 yum源 2. linux编辑器-vim2.1 vim概念2.2 vim各个模式切换2.3 vim正常模式命令汇总2.4 vim底行模式各命令汇总2.5 vim的简单配置 3. Linux编译器-gcc/g使用3.1 复习程序编译过程(1) 预处理(2) …

【Oracle】Navicat Premium 连接 Oracle的两种方式

Navicat Premium 使用版本说明 Navicat Premium 版本 11.2.16 (64-bit) 一、配置OCI 1.1 配置OCI环境变量 1.1.2 设置\高级系统设置 1.1.2 系统属性\高级\环境变量(N) 1.1.3 修改/添加系统变量 ORACLE_HOME ORACLE_HOME D:\app\root\product\12.1.0\dbhome_11.1.4 添加系…

Redis快速上手篇(一)(安装与配置)

NoSQL NoSQL 是 Not Only SQL 的缩写&#xff0c;意即"不仅仅是 SQL"的意思&#xff0c;泛指非关系型的数据库。强调 Key-Value Stores 和文档数据库的优点。 NoSQL 产品是传统关系型数据库的功能阉割版本&#xff0c;通过减少用不到或很少用的功能&#xff0c;来大…

vue3中使用svg并封装成组件

打包svg地图 安装插件 yarn add vite-plugin-svg-icons -D # or npm i vite-plugin-svg-icons -D # or pnpm install vite-plugin-svg-icons -D使用插件 vite.config.ts import { VantResolver } from unplugin-vue-components/resolvers import { createSvgIconsPlugin } from…

【C语言初阶】switch语句的基本语法

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学C语言》《数据结构篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; switch语句的介绍&#x1f4ac; switch语句的语法形式&#x1f4ad; 在switch语句中的 break&…

景联文科技提供4D-BEV标注工具:提升自动驾驶感知能力的精准数据支持

4D-BEV标注是一种用于自动驾驶领域的数据标注方法。在3D空间的基础上&#xff0c;加入了时间维度&#xff0c;形成了四个维度。这种方法通过精准地跟踪和记录动态对象&#xff08;如车辆、行人&#xff09;的运动轨迹、姿势变化以及速度等信息&#xff0c;全面理解和分析动态对…

JWT的登录认证与自校验原理分析

目录 一、JWT的概述 1.什么是JWT&#xff1f; 2.JWT的用户认证 3.JWT解决了什么问题&#xff1f; 4.关于JWT中的签名如何理解&#xff1f; 5.JWT的优势 二、JWT的结构 1.令牌的组成&#xff1a; 2.JWT的工具类 3.JWT所需的依赖 4.JWT登录生成Token的原理 三、JWT的自…

Linux中关于glibc包导致的服务器死机或者linux命令无法使用的情况

glibc是gnu发布的libc库&#xff0c;即c运行库。glibc是linux系统中最底层的api&#xff0c;几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外&#xff0c;它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX …

智能巡检系统可以应用在哪些地方?巡检系统有什么优势?

智能巡检系统可以广泛应用于学校、物业、工厂、酒店和民宿、运维商以及能源行业等不同领域的巡检管理之中&#xff0c;为用户提供了巡检任务安排管理、签到打卡、工单上报处理以及数据统计分析等多种功能。 一、巡检系统的应用场景   1、学校&#xff1a;为了确保学校各项设施…

【抓包分析】通过ChatGPT解密还原某软件登录算法实现绕过手机验证码登录

文章目录 &#x1f34b;前言实现效果广告抓包分析一、定位加密文件二、编辑JS启用本地替换 利用Chatgpt进行代码转换最后 &#x1f34b;前言 由于C站版权太多&#xff0c;所有的爬虫相关均为记录&#xff0c;不做深入&#xff01; 今天发现github上没有这个东西&#xff0c;抓…