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世纪初。计算能力的提升和大数据的可用性使得深度学习在许多领域取得…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...