lvs集群、NAT模式和DR模式、keepalive
目录
lvs集群概念
集群的类型:三种类型
系统可靠性指标
lvs集群中的术语
lvs的工作方式
NAT模式
lvs的工具
算法
实验
数据流向
步骤
一 、调度器配置(test1 192.168.233.10)
二、RS配置(nginx1和nginx2)
三、地址转换(test1 192.168.233.10)
实验结果
DR模式
概念
数据流向图
问题:
1.vip地址冲突
2.返回报文时,vip地址还在,怎么样能让客户端来接收到响应
DR模式的实现
步骤
一 、调度器配置(test1 192.168.233.10)
二、RS配置(nginx1和nginx2)[两遍都要修改]
实验结果
总结
总结实验
lvs实现四层转发+nginx实现7层转发(动态),访问lvs的vip地址可以实现动静分离
数据流向图
实验步骤
实验结果
lvs的三种工作模式
高可用的HA架构
概念
keepalive实验
实验步骤
主
编辑
备
实验结果编辑
lvs集群概念
全称是linux virtual server,是在Linux的内核层面实现负载均衡的软件。
主要作用:将多个后端服务器组成一个高可用高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上,来实现高可用和负载均衡。
阿里的SLB server loab balance 是用lvs+keepalive实现的。
集群和分布式
系统的拓展方式:
垂直扩展:向上扩展,增强性能更强的计算机。瓶颈:计算机本身设备的限制;硬件本身的性能瓶颈
水平扩展:向外拓展,增加设备。并行的运行多个服务,依靠网络解决内部通信的问题,cluster集群
集群:为了解决某个特定的问题将多台计算机组合起来形成的单个系统
集群的类型:三种类型
LB:load balance 负载均衡集群,多个主机组成,每个主机只承担一部分的访问请求
HA:high availiablity 高可用,在设计系统时,采取一定的措施,确保系统当中某一组件或者部分出现故障,整个系统依然能够正常的运行。为了维护系统的可用性,可靠性,容错性
HPC:high-performance computing 高性能集群,对响应时间,处理能力要求更高
系统可靠性指标
MYBF:Mean Time Between Failure 平均无故障时间
MTTR:Mean Time Resotration repair 平均故障恢复时间
A=MTBF/(MTBF+MTTR)
A指标要在0-1之间,A指标就是系统可用性的度量。0表示系统越不可用,1表示系统越可用
A指标要无限接近于1 (98%-99%合格;90%-95%不合格)
都是以小时为单位(1年365天8760小时)
停机时间和计划内时间不算在内
计划外时间,即故障时间,从故障发生到故障解决的总时间,计划外时间是我们必须关注的一个指标
lvs适用场景:
小集群不需要使用lvs,用nginx,大集群使用lvs
lvs集群中的术语
VS:vittual server lvs服务的逻辑名称,也就是我们外部访问lvs集群时使用的ip地址和端口
DS:director server lvs集群中的主服务器,也就是调度器(即nginx的代理服务器),是集群的核心,调度器就是用来接受客户端的请求转发到后端的服务器
RS:real server lvs集群中的真是服务器,后端服务器,用来接受DS转发来的请求并且响应结果
CIP:client ip 客户端的地址,也就是发起请求的客户端地址
VIP:virtual ip lvs集群使用的ip地址,对外提供集群访问的虚拟ip地址
DIP:director ip 调度器在集群当中的地址,用于和RS进行通信
RIP:real ip 后端服务器在集群当中的ip地址
lvs的工作方式
NAT模式:模式由调度器响应给客户端 (地址转换)
DR模式(直接路由模式):真实服务器直接响应给客户端
TUN模式:隧道模式
常用的模式:NAT模式和DR模式
NAT模式
在NAT模式下,lvs会将来自客户端的请求报文中的目标ip地址和端口,修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器。
响应结果返回客户端的过程中,响应报文经过lvs的处理,把目标ip和端口修改成客户端的ip地址和端口。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。
然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。
真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,
把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,
因此负载均衡器将成为整个系统的瓶颈。
特点是地址转换
地址转换:内网——外网 转换的是源ip地址 SNAT
外网——内网 转换的是目的ip地址 DNAT
lvs的工具
ipvsadm工具,用来配置和管理lvs集群的工具
-A 添加虚拟服务器 vip
-D 删除虚拟服务器地址
-s 指定负载均衡的调度算法
-a 添加真是服务器
-d 删除真实服务器
-t 指定vip的地址和端口
-r 指定rip的地址和端口
-m 使用NAT模式
-g 使用DR模式
-i 使用隧道模式
-w 设置权重
-p 60 连接保持60s 设置连接保持时间
-l 列表查看
-n 数字化展示
算法
轮询 rr
加权轮询 wrr
最小连接 lc
加权最小连接 wlc
实验
数据流向
nginx 1 RS1 192.168.233.20
nginx2 RS2 192.168.233.30
test1 调度器 ens33 192.168.233.10 ens36 12.0.0.1
test2 客户端 12.0.0.10
步骤
一 、调度器配置(test1 192.168.233.10)
yum -y install ipvsadm* -y
配置ens33
systemctl restart network
配置ens36
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
systemctl restart network
二、RS配置(nginx1和nginx2)
配置nginx1 192.168.233.20 修改网关
systemctl restart network
配置nginx2 192.168.233.30 修改网关
systemctl restart network
vim /usr/local/nginx/html/index.html
修改访问页面的内容
查看访问是否连接
三、地址转换(test1 192.168.233.10)
iptables -t nat -vnL 查看nat表是否有策略
1.
iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to 12.0.0.1
从192.168.233.0/24出的设备地址转换成12.0.0.1
2.
ipvsadm -C 清空原有的策略
ipvsadm -A -t 12.0.0.1:80 -s rr 指定好vip的地址和端口
先添加vip,虚拟服务器的ip和端口,然后再添加真实服务器
3.
ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.20:80 -m
-a 添加真实服务器
-t 指定vip地址
-r 指定真实服务器的地址和端口
-m 指定模式为nat模式
ipvsadm -ln 查看
4.
ipvsadm-save 保存
ipvsadm -D -t 192.168.233.10:80 删除策略
ipvsadm -d -r 192.168.233.20: -t 12.0.0.1:80 删除节点服务器
5.开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
四、客户端(test2 12.0.0.10 )
修改test2的ip地址和网关
实验结果
加权轮询
DR模式
概念
它是直接路由模式
NAT模式:调度器在整个lvs集群当中是最重要的,在nat模式下,既负责接收请求,同时根据负载均衡的算法转发流量,响应发送给客户端
DR模式:调度器依然负责接收请求,同时也根据负载均衡算法转发流量到RS,响应直接由RS响应给客户端
直接路由 Direct Routing :是一种二层转发模式,二层转发的是数据帧,根据源mac地址和目的mac地址进行转发,不会修改数据包源ip和目的ip。根据数据包mac地址进行转发。
DR模式下,lvs也是维护一个虚拟的ip地址,所有的请求都是发送到这个vip,既然走二层转发,当客户端的请求到达调度器之后,根据负载均衡的算法选择一个RS,修改vip服务器的目的mac变成RS的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。
然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。
真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。
所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
数据流向图
问题:
1.vip地址冲突
原因:调度器配置了vip,RS也配置了vip地址。vip地址冲突,因为调度器和RS都在同一个网段,会造成ARP通信紊乱。因为是整个局域网广播,所有的设备都收到了。
怎么把lo这个回环的响应把它屏蔽掉,只有本机的物理ip地址响应。
解决方法:修改内核参数:arp_ignore=1
系统的物理ip地址才会响应ARP请求,lo回环接口不会响应ARP请求
2.返回报文时,vip地址还在,怎么样能让客户端来接收到响应
解决方法:arp_announce=2
系统不使用ip数据包的源地址来响应ARP请求,直接发送物理接口的ip地址
DR模式的实现
nginx1 RS(真实ip) 192.168.233.20
nginx2 RS 192.168.233.30
vip 192.168.233.100
调度器 192.168.233.10
客户端 192.168.233.40
步骤
一 、调度器配置(test1 192.168.233.10)
yum -y install ipvsadm* -y
添加虚拟网卡ens33:0
修改调度器的响应参数
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
sysctl -p
添加策略
cd /opt
ipvsadm -A -t 192.168.233.100:80 -s rr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
二、RS配置(nginx1和nginx2)[两遍都要修改]
修改静态页面的展示内容
vim /usr/local/nginx/html/index.html
systemctl restart nginx
添加回环地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
添加lo:0接口做为vip
route add -host 192.168.233.100 dev lo:0
设置ip地址为192.168.233.100的地址添加到回环接口,做为lvs的vip,通过路由的模式转发到RS,能让vip识别到真实的服务器
修改RS真实服务器的内核响应
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
实验结果
修改vip轮询的算法
修改策略轮询当中的权重
总结
lvs和nginx做负载均衡的区别
lvs是四层转发,走的是内核态 ip+端口 只能做四层代理
nginx 四层代理 ,也可以七层代理
总结实验
lvs(DR模式)+nginx+tomcat
lvs实现四层转发+nginx实现7层转发(动态),访问lvs的vip地址可以实现动静分离
数据流向图
实验步骤
在上面DR模式的实验基础上实现动静分离
一、tomcat部分
1.分别在tomcat1和tomcat2做动态页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
2.分别在tomcat1和tomcat2添加站点
cd conf
vim server.xml
先删除原有的站点
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
查看端口是否启动
访问192.168.233.40:8080/index.jsp
二、nginx部分
配置nginx2和nginx3
cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak.2024.07.08
vim nginx.conf
upstream tomcat {
server 192.168.233.40:8080 weight=1;
server 192.168.233.50:8080 weight=1;
}
location ~ .*\.jsp$ {
proxy_pass http://tomcat;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
然后systemctl restart nginx
配置nginx1代理
做四层代理
cd /usr/local/nginx/conf
vim nginx.conf
然后systemctl restart nginx
实验结果
访问192.168.100:81 静态页面
访问192.168.233.100:82/index.jsp 动态页面
lvs的三种工作模式
NAT DR TUN
优点 地址转换,配置简单 性能最好 WAN,可以实现 较远距离的数据包转发
缺点 性能瓶颈 不支持跨网段 专用的通道,需要开 通VPN(花钱)
RS的要求 无限制 必须要禁止非物理接口的ARP响应 要支持隧道模式
RS的数量 10-20台 100台 100台
面试题:
1.简述lvs的三种模式和区别
上面的表
2.keepalive的脑裂怎么解决
高可用的HA架构
Keepalive概念
它是lvs集群当中的高可用架构,只是针对调度器的高可用
基于vrp来实现调度器的主和备之间的切换
主调度器和备调度(多台)
在主调度器正常工作的时候,备完全处于冗余状态(待命),不参与集群的运转。只有当主调度器出现故障时,备才会承担主调度器的工作。如果主调度器恢复功能之后,主继续做为集群的入口,备继续处于冗余状态,不绝对取决于优先级。
keepalive基于vrp协议来实现lvs高可用(主备切换)
1.组播地址
224.0.0.18根据组播地址来进行通信,主和备之间发送报文。确定对方是否存活
2.根据优先级的大小来确定主和备的位置
3.故障切换,主挂了,备来继续工作。主恢复了,备继续待命
4.主和备之间的切换是vip地址的切换
keepalive是专门为了lvs而出现的,但不是lvs专用的,keepalive也可以使用nginx,haproxy
core模块:keepalive的核心模块,负责主进程的启动、维护以及全局配置文件的加载
vrrp模块:实现vrrp协议的模块,也就是主功能模块
check模块:负责健康检查,也可以检查后台真实服务器的情况
配置注意点:
1.配优先级
2.配置vip和真实服务器
3.主备的id要一致
4.主备的id要区分
keepalive实验
test1 192.168.233.10 主
test2 192.168.233.50 备
vip 192.168.233.100
nginx1 192.168.233.20
nginx2 192.168.233.30
客户端 192.168.233.40
实验步骤
1.主和备都要同样操作
yum -y install ipvsadm keepalived
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
sysctl -p
ipvsadm -C
ipvsadm -A -t 192.168.233.100:80 -s rr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
主
cd /etc/keepalive
vim keepalived.conf
备
实验结果
ip addr
keepalive+nginx实现高(主备切换)
数据流线图
实验步骤
1.vim check_nginx.sh
写一个check_nginx.sh的脚本
#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
fi
主
2. chmod 777 check_nginx.sh
cd /etc/keepalived/
vim keepalived.conf
script "/opt/check.nginx.sh"
调用脚本内容,检测nginx的状态
interval 5
检测的间隔时间是5s
删除这个后面的所有内容并添加监控配置
systemctl restart nginx
systemctl restart keepalived
备
3.把主的配置复制到备进行修改
scp root@192.168.233.20:/etc/keepalived/keepalived.conf /etc/keepalived/
cd /etc/keepalived/
vim keepalived.conf
实验结果
如果主nginx停止 keepalive也自动停止 备启用
面试题:脑裂是什么?怎么解决脑裂
HA高可用架构中的一个特殊现象,只要使用vip地址代理的冗余模式的高可用, 都有可能出现脑裂的问题。现象:主和备同时都有vip地址。
主和备无法确定各自的身份,同时出现了vip地址,就是两边都起来了,但是两边都无法使用。
原因:1.keepalive的配置文件问题
2.心跳线(网线)问题
3.网卡(硬件问题)、ip地址配置冲突
4.防火墙的策略和iptables的策略,屏蔽了组播地址的广播,屏蔽了vrrp协议的报文
5.两台服务器的时间不同步也可能导致
6.其他的服务配置对心跳线的检测造成了干扰
解决方法:
1.检查keepalive.conf里面的配置是否对
2.查看网线是否坏了
3.ifconfig检查ip地址是否冲突
4.查看电脑硬件是否有问题
5.iptables -vnL查看策略看看是否冲突
6.systemctl status firewalld 查看防火墙的状态是否关闭
7.查看两台服务器的时间是否同步
8.以上都没有问题再检查其他服务配置
相关文章:

lvs集群、NAT模式和DR模式、keepalive
目录 lvs集群概念 集群的类型:三种类型 系统可靠性指标 lvs集群中的术语 lvs的工作方式 NAT模式 lvs的工具 算法 实验 数据流向 步骤 一 、调度器配置(test1 192.168.233.10) 二、RS配置(nginx1和nginx2)…...

zookeeper在哪里能用到
zookeeper是什么 ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig) 的管理员, Apache Hbase和 Apache Solr 以及LinkedIn sensei 等项目中都采用到了 Zookeeper。 ZooKeeper是一个分布式的,开放源码的分…...

coco_eval 使用
参考 coco eval 解析 COCO目标检测比赛中的模型评价指标介绍! coco 的评估函数对应的是 pycocotools 中的 cocoeval.py 文件。 从整体上来看,整个 COCOeval 类的框架如图: 基础的用法为 # The usage for CocoEval is as follows: cocoGt…...

国产精品ORM框架-SqlSugar详解 进阶功能 集成整合 脚手架应用 专题二
国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题一-CSDN博客 sqlsugar 官网-CSDN博客 4、进阶功能 5、集成整合 6、脚手架应用 4、进阶功能 4.1、生命周期 Queryable 什么时候操作库 Queryable是一个引用类型 Queryable拷贝机制 4.2、执行Sql 方法列表 方法名 描述 返…...

el-table 动态添加删除 -- 鼠标移入移出显隐删除图标
<el-table class"list-box" :data"replaceDataList" border><el-table-column label"原始值" prop"original" align"center" ><template slot-scope"scope"><div mouseenter"showClick…...

Kafka接收消息
文章目录 Acknowledgment读消息指定分区批量消费消息拦截 // 采用监听得方式接收 Payload标记消息体内容. KafkaListener(topics {"test"},groupId "hello") public void onEvent(Payload String event,Header(value KafkaHeaders.RECEIVED_TOPIC) Stri…...

C语言 | Leetcode C语言题解之第233题数字1的个数
题目: 题解: int countDigitOne(int n) {// mulk 表示 10^k// 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)// 但为了让代码看起来更加直观,这里保留了 klong long mulk 1;int ans 0;f…...

简谈设计模式之原型模式
原型模式是一种创建型设计模式, 用于创建对象, 而不必指定它们所属的具体类. 它通过复制现有对象 (即原型) 来创建新对象. 原型模式适用于当创建新对象的过程代价较高或复杂时, 通过克隆现有对象来提高性能 原型模式结构 原型接口. 声明一个克隆自身的接口具体原型. 实现克隆…...

CentOS7.X系统部署Zabbix6.0版本(可跟做)
文章目录 一、部署环境说明二、基本环境部署步骤1、环境初始化操作2、部署并配置Nginx3、部署并配置PHP4、测试NginxPHP环境5、部署并配置MariaDB 三、Zabbix-Server部署步骤1、编译安装Zabbix-Server2、导入Zabbix初始化库3、配置Zabbix前端UI4、启动Zabbix-Server5、WEB页面配…...

QT文件生成可执行的exe程序
将qt项目生成可执行的exe程序可按照以下步骤进行: 1、在qt中构建运行生成.exe文件; 2、从自定义的路径中取出exe文件放在一个单独的空文件夹中(exe文件在该文件夹中的release文件夹中); 3、从开始程序中搜索qt…...

【ZooKeeper学习笔记】
1. ZooKeeper基本概念 Zookeeper官网:https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop项目中的一个子项目,是一个树形目录服务Zookeeper翻译过来就是动物园管理员,用来管理Hadoop(大象)、Hive&…...

220V降5V芯片输出电压电流封装选型WT
220V降5V芯片输出电压电流封装选型WT 220V降5V恒压推荐:非隔离芯片选型及其应用方案 在考虑220V转低压应用方案时,以下非隔离芯片型号及其封装形式提供了不同的电压电流输出能力: 1. WT5101A(SOT23-3封装)适用于将2…...

AWS S3 基本概念
AWS S3 基本概念 引言什么是 AWS S3S3 应用S3 的核心概念 引言 最近工作中有接触到 S3,往 S3 写入数据,从 S3 访问数据,所以花点时间整理一下有关 S3 的基本概念。 什么是 AWS S3 AWS S3 (Amazon Simple Storage Service) 是一个由 Amazon…...

[XCUITest] 处理iOS权限点击授权 有哪些权限?
位置权限 (Location Permission) app.addUIInterruptionMonitor(withDescription: "Location Permission Dialog") { (alert) -> Bool in if alert.buttons["Allow While Using App"].exists { alert.buttons["Allow While Using App"].tap(…...

宪法学学习笔记(个人向) Part.5
宪法学学习笔记(个人向) Part.5 4. 公民基本权利和义务 4.1 公民🌸 概念 是指具有某个国家国籍的自然人; 【拓展】国籍:在宪法上是指一个人隶属于某个国家的法律上的身份🌸 ; 取得方式 出生国籍 因出生而获得的国籍&a…...

C语言的指针与数组
函数定义 参考书籍章节9.7 无论函数定义的参数是数组还是指针,在编译的时候,编译器都将在栈上开辟一个空间存放入参的地址,换句话说,也就是在函数内部都当做指针处理。 #include <stdio.h> #include <stdlib.h>char g…...

计算机图形学入门28:相机、透镜和光场
1.前言 相机(Cameras)、透镜(Lenses)和光场(Light Fields)都是图形学中重要的组成部分。在之前的学习中,都是默认它们的存在,所以现在也需要单独拿出来学习下。 2.成像方法 计算机图形学有两种成像方法,即合成(Synthesis)和捕捉(Capture)。前…...

Swift 基于Codable协议使用
Codable协议 继承自 Decodable & Encodable // // Test1.swift // TestDemo // // Created by admin on 2024/7/9. // import Foundationstruct Player{var name:Stringvar highScore:Int 0var history:[Int] []var address:Address?var birthday:Date?init(name: St…...

conda激活的虚拟环境的python版本不对应
这个大坑,要看看虚拟环境下envs下有没有bin文件夹 python -Vecho $PATH镜像源的问题,参考...

深度学习概览
引言 深度学习的定义与背景 深度学习是机器学习的一个子领域,涉及使用多层神经网络分析和学习复杂的数据模式。深度学习的基础可以追溯到20世纪80年代,但真正的发展和广泛应用是在21世纪初。计算能力的提升和大数据的可用性使得深度学习在许多领域取得…...

什么是白盒测试中的静态测试?其包含哪些过程和方法?
文章目录 前言一、文档审查二、软件静态分析1.编码规范检查2.软件质量度量 三、代码审查与代码走查1.代码审查2.代码走查 总结 前言 软件白盒测试中的静态测试是指不运行被测软件,仅通过分析或检查等手段达到检测的目的。在软件白盒测试中,静态测试常通…...

搭建一个高并发的Web商品推荐系统,如何涉及软件架构?
搭建一个高并发的Web商品推荐系统,如何涉及软件架构 在搭建一个高并发的Web商品推荐系统时: 微服务架构: 为了支持高并发,我们可以采用微服务架构,将系统拆分成小型、独立的服务,每个服务专注于特定的功…...

今日科技圈最新时事新闻(2024年7月12日
一、智能硬件与电子产品 小米Redmi G Pro 2024游戏本新版本发布 发布时间:7月12日上午10点产品亮点: 搭载英特尔酷睿i7-14650HX处理器,拥有16个核心和24个线程,性能释放高达130W。配备140W满血释放的RTX 4060显卡,提…...

jenkins系列-09.jpom构建java docker harbor
本地先启动jpom server agent: /Users/jelex/Documents/work/jpom-2.10.40/server-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % sh Server.sh start/Users/jelex/Documents/work/jpom-2.10.40/agent-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % ./Agent.…...

构造+贪心,CF 432E,Square Tiling
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 432E - Codeforces 二、解题报告 1、思路分析 很简单的一个构造题 考虑字典序从左到右从上到下,所以我们正常遍历 对于当前格子如果空闲,那么找到一个能填的最小字符 然…...

【Linux】任务管理
这个任务管理(job control)是用在bash环境下的,也就是说:【当我们登录系统获取bashshell之后,在单一终端下同时执行多个任务的操作管理】。 举例来说,我们在登录bash后,可以一边复制文件、一边查…...
计算机网络——常见问题汇总
1. introduction 1.1 Explain what a communication protocol is and why its important. A communication protocol is a set of rules and conventions(公约) that govern(统治) how data is transmitted and received between devices(设备), systems, or entities in a ne…...

Linux的世界 -- 初次接触和一些常见的基本指令
一、Linux的介绍和准备 1、简单介绍下Linux的发展史 1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的…...

[AI 大模型] Meta LLaMA-2
文章目录 [AI 大模型] Meta LLaMA-2简介模型架构发展新技术和优势示例 [AI 大模型] Meta LLaMA-2 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yYHlT342-1720705768360)(https://i-blog.csdnimg.cn/direct/9ddc783e01bf48c3bc784a584339003f.jpeg…...

Python3.6.6 OpenCV 将视频中人物标记或者打马赛克或加图片并保存为不同格式
1、轻松识别视频人物并做出标记 需安装face_recongnition与dlib,过程有点困难,还请网上查找方法 import face_recognition import cv2 #镜像源 -i https://pypi.mirrors.ustc.edu.cn/simple # 加载视频 video_file E:\\videos\\1.mp4 video_capture …...