keepalived详解
概念
keepalived 是一款基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)协议来实现高可用(High Availability, HA)的轻量级软件。它主要用于防止单点故障,特别是在 Linux 环境下,为 LVS(Linux Virtual Server,Linux 虚拟服务器)集群和其他服务提供高可用性和故障转移功能。虽然它最初是为 LVS 设计的,但现在也被广泛用于其他需要高可用性的场景,比如 MySQL 数据库集群、Nginx 负载均衡器等。
工作原理
keepalived 在集群中通常部署为一对或多对主备服务器。每个 keepalived 实例都会运行 VRRP 协议,并通过组播(Multicast)或单播(Unicast)方式与其他实例通信。主服务器定期发送 VRRP 广告包,通知其他备份服务器其状态。如果备份服务器在一定时间内没有收到主服务器的广告包,它会认为主服务器已经故障,并接管虚拟 IP 和服务。
VRRP是什么
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)是一种由IETF(Internet Engineering Task Force,互联网工程任务组)提出的路由协议,旨在解决局域网中配置静态网关时可能出现的单点失效问题。该协议于1998年推出。
VRRP的工作原理
1.选举机制:VRRP协议通过选举机制确定哪台路由器成为Master路由器。选举基于路由器的优先级,优先级高的路由器成为Master。如果优先级相同,则比较接口IP地址,IP地址大的成为Master。
2.状态维持:Master路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常。Backup路由器则启动定时器等待通告报文的到来,并根据收到的通告报文判断Master路由器的状态。
3.故障转移:如果Backup路由器在定时器超时后仍未收到Master路由器的VRRP通告报文,则认为Master路由器已经无法正常工作,此时Backup路由器将升级为主路由器,并对外发送VRRP通告报文,接管数据转发任务。
keepalived的主要模块
1.core模块:KEEPALIVED的核心模块,负责主进程的启动、维护以及全局配置文件的加载和解析。
2.check模块:负责健康检查,包括各种常见的检查方式,如ICMP、TCP端口状态、HTTP GET等,以确保集群中各节点的正常运行。
3.vrrp模块:实现VRRP协议的关键模块,负责虚拟路由器的选举、状态维护和报文发送等工作。
keepalived的安装与基本配置
安装keepalived
dnf install keepalived -y
systemctl start keepalived
keepalived的基本配置
配置文件位于/etc/keepalived/keepalived.conf
全局配置
notification_email { xxxxxxx@qq.com #keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区 分写多个} notification_email_from keepalived@ka1.exam.com #发邮件的地址
smtp_server 127.0.0.1 #指定用于发送邮件的 SMTP 服务器地址,这里是 127.0.0.1 。
smtp_connect_timeou 30 #每个keepalived主机唯一标识
router_id ka1.exam.com #建议使用当前主机名,但多节点 重名不影响
vrrp_skip_check_adv_addr #对所有通告报文都检查,会比较消耗性能#启用此配置后,如果收到的通告报文和上一 个报文是同一 个路由器,则跳过检查,默认 值为全检查
vrrp_strict #严格遵循vrrp协议 #启用此项后以下状况将无法启动服务: #1.无VIP地址 #2.配置了单播邻居 #3.在VRRP版本2中有IPv6地址 #建议不加此项配置
vrrp_garp_interval 0 #报文发送延迟,0表示不延迟
vrrp_gna_interval 0 #消息发送延迟
vrrp_mcast_group4 224.0.0.18 #指定组播IP的地址。
虚拟服务器配置
vrrp_instance VI_1 {state BACKUPinterface eth0 #绑定为当前虚拟路由器使用的物理接口,如:eth0,可以和VIP不在一 个网卡virtual_router_id 100 #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一 #否则服务无法启动 #同属一个虚拟路由器的多个keepalived节点必须相同 #务必要确认在同一网络中此值必须唯一priority 80 #当前物理节点在此虚拟路由器的优先级,范围:1-254 #值越大优先级越高,每个keepalived主机节点此值不同advert_int 1 #vrrp通告的时间间隔,默认1s#preempt_delay 5sauthentication { #认证机制auth_type PASS #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)auth_pass 1111 #预共享密钥,仅前8位有效 #同一个虚拟路由器的多个keepalived节点必须一样}virtual_ipaddress { #虚拟IP,生产环境可能指定上百个IP地址172.25.254.100/24 dev eth0 label eth0:1 #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认32}
}virtual_server IP port { #VIP和PORTdelay_loop #检查后端服务器的时间间隔lb_algo rr|wrr|lc|wlc|lblc|sh|dh #定义调度方法lb_kind NAT|DR|TUN <INT> #集群的类型,注意要大写persistence_timeout #持久连接时长 protocol TCP|UDP|SCTP #指定服务协议,一般为TCPsorry_server <IPADDR> <PORT> #所有RS故障时,备用服务器地址real_server <IPADDR> <PORT>{ #RS的IP和PORTweight <INT> #RS权重notify_up <STRING>|<QUOTED-STRING> #RS上线通知脚本notify_down <STRING>|<QUOTED-STRING> #RS下线通知脚本 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { ... } #定义当前主机健康状 态检测方法}}#注意:括号必须分行写,两个括号写在同一行,如: }} 会出错
应用层监测
HTTP_GET|SSL_GET {
url {
path <URL_PATH> #定义要监控的URL
status_code <INT> #判断上述检测机制为健康状态的响应码,一般为 200
}
connect_timeout <INTEGER> #客户端请求的超时时长, 相当于haproxy的timeout server
nb_get_retry <INT> #重试次数
delay_before_retry <INT> #重试之前的延迟时长
connect_ip <IP ADDRESS> #向当前RS哪个IP地址发起健康状态检测请求
connect_port <PORT> #向当前RS的哪个PORT发起健康状态检测请求
bindto <IP ADDRESS> #向当前RS发出健康状态检测请求时使用的源地址
bind_port <PORT> #向当前RS发出健康状态检测请求时使用的源端口}
tcp监测
TCP_CHECK {
connect_ip <IP ADDRESS> #向当前RS的哪个IP地址发起健康状态检测请求
connect_port <PORT> #向当前RS的哪个PORT发起健康状态检测请求
bindto <IP ADDRESS> #发出健康状态检测请求时使用的源地址
bind_port <PORT> #发出健康状态检测请求时使用的源端口
connect_timeout <INTEGER> #客户端请求的超时时长
}
定义VRRP script
vrrp_script
script <STRING> | <QUOTED_STRING> #shell命令或脚本路径
interval <INTEGER> #间隔时间,单位为秒,默认1秒
timeout <INTEGER> #超时时间
weight <INTEGER> #默认为0,如果设置此值为负数, #当上面脚本返回值为非0时 #会将此值与本节点权重相加可以降低本节点权重,
#即表示fall. #如果是正数,当脚本返回值为0, #会将此值与本节点权重相加可以提高本节点权重 #即表示 rise.通常使用负值
fall <INTEGER> #执行脚本连续几次都失败,则转换为失败,建议设为2以上
rise <INTEGER> #执行脚本连续几次都成功,把服务器从失败标记为成功
user USERNAME [GROUPNAME] #执行监测脚本的用户或组
init_fail #设置默认标记为失败状态,监测成功之后再转换为成功状态
}
keepalived实例
环境配置
实现master/slave的 keepalived 单主架构
ka1主机配置
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {notification_email {923452780@qq.com}notification_email_from keepalived@exam.orgsmtp_server 127.0.0.1smtp_connect_timeout 30router_id ka1.exam.orgvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
ka2主机配置
vim /etc/keepalived/keepalived.conf
global_defs {notification_email {923452780@qq.com}notification_email_from keepalived@exam.orgsmtp_server 127.0.0.1smtp_connect_timeout 30router_id ka2.exam.orgvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
测试
tcpdump -i eth0 -nn host 224.0.0.18
关闭ka1主机上的keepalived服务时,VIP将转移到ka2主机上
启用keepalived日志
vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"
systemctl restart keepalived.service vim /etc/rsyslog.conf
local6.* /var/log/keepalived.log
systemctl restart keepalived.service rsyslog.service
tail -f /var/log/keepalived.log
实现独立子配置文件
注意:如果需要独立子配置文件就需要把原配置文件的内容注释掉或者删掉
vim /etc/keepalived/keepalived.conf
include "/etc/keepalived/conf.d/*.conf"[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d[root@ka1 ~]# vim /etc/keepalived/conf.d/172.25.254.100.conf
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}systemctl restart rsyslog.service
keepalived的通知脚本配置
邮件配置
yum install mailx -y
vim /etc/mail.rc
#######mail set##########
set from=XXXXXXXX@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=XXXXXXXX@qq.com
set smtp-auth-password=XXXXXXXX #自己邮箱的授权码
set smtp-auth=login
set ssl-verify=ignore
#发送邮件
echo hello word | mail -s test xxxxxxxxx@qq.com
实现Keepalived状态切换的通知脚本
vim /etc/keepalived/mail.sh
#!/bin/bash
mail_dst="xxxxxxxxx@qq.com"
send_message()
{mail_sub="$HOSTNMAE to be $1 vip move"mail_msg="`date +%F\ %T`: vrrp move $HOSTNAME change $1"echo $mail_msg | mail -s "$mail_sub" $mail_dst
}
case $1 inmaster)send_message master;;backup)send_message backup;;fault)send_message fault;;*);;
esacchmod +x /etc/keepalived/mail.sh
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
...unicast_src_ip 172.25.254.10 #本机IPunicast_peer {172.25.254.20 #对端IP}notify_master "/etc/keepalived/mail.sh master"notify_backup "/etc/keepalived/mail.sh backup"notify_fault "/etc/keepalived/mail.sh fault"
}
实现 master/master 的 Keepalived 双主架构
master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
master/master 的双主架构:
即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率
(ka1主机和ka2主机都要配置,都需要添加一个VRRP(虚拟路由冗余协议)实例的配置模块。)
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1vrrp_ipsets keepalived#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}
}vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 80advert_int 1vrrp_ipsets keepalived#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}
}[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}
}vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 100advert_int 1#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}
}
测试
实现单主的 LVS-DR 模式
准备web服务器并使用脚本绑定VIP至web服务器lo网卡(realserver1主机和realserver2主机都要配置)
[root@realserver1 ~]# ip a a172.25.254.100 dev lo
[root@realserver1 ~]# vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2[root@realserver1 ~]# sysctl --system[root@realserver2 ~]# ip a a172.25.254.100 dev lo
[root@realserver2 ~]# vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2[root@realserver2 ~]# sysctl --system
配置keepalived服务(ka1主机和ka2主机都要做)
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
virtual_server 172.25.254.100 80 {delay_loop 6lb_algo wrrlb_kind DR#persistence_timeout 50protocol TCPreal_server 172.25.254.110 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}real_server 172.25.254.120 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
}[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# ipvsadm -Ln
测试
将realserver2的http服务停掉,我们可以观察到keepalived会控制ipvsadm自动将172.25.254.120这个策略剔除。但是如果realserver2的http服务重新启动,keepalived会将172.25.254.120这个策略重新恢复。
重启后
相关文章:
![](https://i-blog.csdnimg.cn/direct/4d7c0ffef62a4a2dad7cade0fe3ebeaa.png)
keepalived详解
概念 keepalived 是一款基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)协议来实现高可用(High Availability, HA)的轻量级软件。它主要用于防止单点故障,特别是在 Linux 环境下ÿ…...
![](https://i-blog.csdnimg.cn/direct/78ff4a4a25b14a2599e8d0a379a26923.jpeg)
工业设备中弧形导轨的检测标准是什么?
弧形导轨在工业自动化中扮演着重要的角色,尤其是在需要曲线运动或圆弧插补的场合。这种运动形式在工业自动化中虽然不如直线运动普遍,但在某些特定应用中却是不可或缺的。弧形导轨的质量直接影响加工效率与加工质量,因此,弧形…...
![](https://i-blog.csdnimg.cn/direct/72c9db7c8b3449878610d3acfacf2e48.png)
Redis 技术详解
一、Redis 基础 (一)为什么使用 Redis 速度快,因为数据存在内存中,类似于 HashMap,查找和操作的时间复杂度都是 O(1)。支持丰富数据类型,支持 string、list、set、Zset、hash 等。支持事务,操…...
![](https://www.ngui.cc/images/no-images.jpg)
Kubernetes Pod入门
在 Kubernetes 中,一个重要的概念就是 Pod(豆英),Kubernetes 并不是直接管理容器的,他的最小管理单元叫做 Pod。 一、什么是 Pod。 Pod 是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及运行规范。在 Pod中&…...
![](https://www.ngui.cc/images/no-images.jpg)
opencv批量修改图片大小
文章已删除,访问可以 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~...
![](https://i-blog.csdnimg.cn/direct/dbc175ecf98d4add9f5df2c444bb8527.png)
【RTT-Studio】详细使用教程十二:UART的分析和使用
文章目录 一、简介1.串口发送模式2.串口接收模式 二、串口配置三、串口发送四、串口接收 一、简介 本文主要阐述STM32串口的几种工作中使用的工作模式和编程思路。串口通常情况下使用的是:1个起始位,8个数据位,无奇偶校验,1位停止…...
![](https://img-blog.csdnimg.cn/direct/00d4fdeb7b0d4dbb99e88f325ef249d8.gif#)
【AI绘画】Midjourney前置指令/settings设置详解
文章目录 💯Midjourney前置指令/settings设置详解💯Use the default model(AI绘画所使用的大模型)Midjourney Model(Midjourney 模型)Niji Model(Niji模型) 💯Midjourney…...
![](https://i-blog.csdnimg.cn/direct/a4489d7e07a0423d95949157f1b2576d.png)
【NI国产替代】PXIe‑4330国产替代24位,8通道PXI应变/桥输入模块
25 kS/s,24位,8通道PXI应变/桥输入模块 PXIe‑4330是一款同步输入模块,为基于桥接的传感器提供集成数据采集和信号调理。 PXIe‑4330具有更高的准确性、高数据吞吐量和同步特性,使其成为高密度测量系统的理想选择。\n\n为了消除噪…...
![](https://img-blog.csdnimg.cn/img_convert/1cdaae1c3f4e4d68881d9e4ef7e2a249.png)
哪里可以免费上传招生简章
随着招生季的临近,各高校和培训机构纷纷摩拳擦掌,准备迎接新一代学子们的到来。在这个信息化的时代,如何让招生简章发挥最大的效用,成为吸引优质生源的关键。 那么如何制作招生简章? 1. 注册账号:访问FLBO…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
Midjourney中文版教程:参数详解
1.长宽比 可以设置图片的纵横比。按照需求可以选择不同的尺寸,也可以自定义。 注意:--ar必须使用整数。使用139:100代替1.39:1。 长宽比会影响生成图像的形状和构图。 在放大时,某些长宽比可能会稍微改变。 较旧的…...
![](https://i-blog.csdnimg.cn/direct/bd5fedf0a5aa46b3927d959caf3ac09b.jpeg)
误闯机器学习(第一关-概念和流程)
以下内容,皆为原创,实属不易,请各位帅锅,镁铝点点赞赞和关注吧! 好戏开场了。 一.什么是机器学习 机器学习就是从数据中自动分析获取模型(总结出的数据),并训练模型,去预…...
![](https://i-blog.csdnimg.cn/direct/951985a90c0b4b15a8084611ef167886.png)
Tensorflow 2.16.0+在PyCharm中找不到keras的报错解决
在PyCharm(2024.2版本)中,直接使用from tensorflow import keras会提示“Cannot find reference ‘keras’ in ‘init.py’ ”,找不到keras,如下图所示。 查阅相关资料,可以发现在tf2.16之后,默认的keras后端升级为了…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python】高效的Web自动化测试利器—Python+Playwright快速上手自动化实战指南(限时开放)
文章目录 前言一.playwright是什么二.python引入playwright1.安装2.playwright命令行参数3.playwright codegen自动生成代码4.Chrome和Chromium有什么关系?三.基本概念1. 无头浏览器(Headless Browser)2.同步和异步模式操作playwright2.1.同步(Sync)模式同步方式代码模板2…...
![](https://img-blog.csdnimg.cn/img_convert/0bb9e994ad9a991fccc9ec75ff3ae400.png)
CentOS上安装和配置Docker与Docker Compose的详细指南
引言 大家好,我是小阳,在这篇文章中,我将带大家一步步完成在CentOS系统上安装和配置Docker与Docker Compose的过程。通过这篇详细的指南,你将能够轻松配置Docker环境,并在日常开发和部署中享受其带来的便利。 原文阅…...
![](https://www.ngui.cc/images/no-images.jpg)
Vim多文件操作
Vim多文件编辑的实际意义在于它极大地提高了开发者在处理多个相关文件时的效率和便利性。在软件开发、文本编辑、代码审查、配置管理等场景中,经常需要同时打开和操作多个文件。Vim的多文件编辑功能使得这些任务变得更加直观和高效。 提高编码效率:在开发…...
![](https://img-blog.csdnimg.cn/img_convert/c0164698f8db911c254840c8f3191fec.jpeg)
【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在智能制造中的应用案例:全自动切片机器人
蔬菜是人们日常生活必不可缺的食品,并且食用方法多种多样。自步入小康社会以来,人们的生活节奏越来越快,很多传统服务已不能满足人们的物质需求和生活节奏。日常生活中通过手工快速切菜严重地威胁着人身安全,切菜时间过长或切菜不…...
![](https://i-blog.csdnimg.cn/direct/ed03aa0a680342bbaec05e6eb92b8401.png)
NSI程序打包脚本文件编写教程
引言 NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外,还可以设置程序开机自启动、管理员权限运行…...
![](https://i-blog.csdnimg.cn/direct/58851bf7e4464385aa1fe861c455313a.png)
[LitCTF 2023]1zjs
很有意思的一道题,打开题目环境之后F12可以看到 点击那个蓝色下划线的就能看到: 然后访问: /fk3f1ag.php就可以看到: 然后将这些复制到控制台然后回车就能得到flag。...
![](https://i-blog.csdnimg.cn/direct/7e5fa2637cf7489ab17075fbcf978843.png)
MCU复位RAM会保持吗,如何实现复位时变量数据保持
在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢? MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…...
![](https://i-blog.csdnimg.cn/direct/46797d4dbe854c0eb7bb65e918561956.png)
解决window 端口的占用问题
netstat -nao | findstr "5554" taskkill -pid 5076 -f 本文资料来自 https://cloud.tencent.com/developer/article/1703982...
![](https://i-blog.csdnimg.cn/direct/0dd2ae1a8bc7456f9c13a0f318d77dc6.png)
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG: 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗?Kimi学了这些资料以后,根据这里面的信息综…...
![](https://www.ngui.cc/images/no-images.jpg)
PyTorch 基础学习(10)- Transformer
系列文章: 《PyTorch 基础学习》文章索引 介绍 Transformer模型是近年来在自然语言处理(NLP)领域中非常流行的一种模型架构,尤其是在机器翻译任务中表现出了优异的性能。与传统的循环神经网络(RNN)不同&a…...
![](https://i-blog.csdnimg.cn/direct/2696fdb5b4b1400f8c8c6f74f6867a65.jpeg)
mybatis-plus使用
目录 1. 快速开始 1. 创建user表 2. 插入几条数据 3. 创建一个新的springboot项目 4. 导入mybatis-plus依赖 5. 在配置文件中进行配置 6. 编写实体类 7. 编写Mapper 接口类 8. 添加 MapperScan 注解 9. 测试 编辑2. CRUD 1. 插入一条语句 2. 根据主键id删除一条记录 3. 根据…...
![](https://www.ngui.cc/images/no-images.jpg)
ant-design-vue快速上手指南及排坑攻略
前言 ant-design-vue是Ant Design的Vue实现,旨在为Vue用户提供一套企业级的UI设计语言。本文将带你快速上手ant-design-vue,并在实践中分享一些常见的坑及解决方法。遵循本文档,让你轻松搭建优雅的Vue应用。 一、环境准备 在开始之前&…...
![](https://i-blog.csdnimg.cn/direct/8e64fab0f076420088b63f2695369151.png)
【GitLab】使用 Docker 安装 3:gitlab-ce:17.3.0-ce.0 配置
参考阿里云的教程docker的重启 sudo systemctl daemon-reload sudo systemctl restart docker配置 –publish 8443:443 --publish 8084:80 --publish 22:22 sudo docker ps -a 當容器狀態為healthy時,說明GitLab容器已經正常啟動。 root@k8s-master-pfsrv:~...
![](https://i-blog.csdnimg.cn/direct/8a9292840ec94feb9b6f43d820ffd410.png)
多线程(4)——单例模式、阻塞队列、线程池、定时器
1. 多线程案例 1.1 单例模式 单例模式能保证某个类在程序中只存在唯一一份实例,不会创建出多个实例(这一点在很多场景上都需要,比如 JDBC 中的 DataSource 实例就只需要一个 tip:设计模式就是编写代码过程中的 “软性约束”&am…...
![](https://img-blog.csdnimg.cn/img_convert/a3fef49d7bc86b6dee724494717e4e7f.png)
告别电量焦虑,高性能65W PD快充芯片HUSB380A打造梦中情【头】
市面上的充电器越来越卷,让人眼花缭乱。压力同样也给到了快充芯片行业,要在激烈的市场竞争中脱颖而出,快充芯片必须集高功率、高性价比与广泛的兼容性等于一身。 基于此,慧能泰推出了新一代高性能PD Source产品——HUSB380A。 图…...
![](https://i-blog.csdnimg.cn/direct/5dc54937dd734ec29f7ab057052192a1.png)
vulnhub靶场 — NARAK
下载地址:https://download.vulnhub.com/ha/narak.ova Description:Narak is the Hindu equivalent of Hell. You are in the pit with the Lord of Hell himself. Can you use your hacking skills to get out of the Narak? Burning walls and demons are around every cor…...
![](https://i-blog.csdnimg.cn/direct/66672baa8b144f4295eb207a4b0d5b84.png)
RabbitMQ如何保证消息不丢失
RabbitMQ消息丢失的三种情况 第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了。 第三种…...
![](https://i-blog.csdnimg.cn/direct/abe98c388596471990a0e98719fc9f81.png)
(亲测有效)SpringBoot项目集成腾讯云COS对象存储(1)
目录 一、腾讯云对象存储使用 1、创建Bucket 2、使用web控制台上传和浏览文件 3、创建API秘钥 二、代码对接腾讯云COS(以Java为例) 1、初始化客户端 2、填写配置文件 3、通用能力类 文件上传 测试 一、腾讯云对象存储使用 1、创建Bucket &am…...
![](/images/no-images.jpg)
平面设计可以做网站/站长工具seo综合查询怎么用
数据库系统原理与应用教程(076)—— MySQL 练习题:操作题 160-167(二十):综合练习 160、聚合函数的使用(1) 该题目使用的表和数据如下: /* drop table if exists resu…...
![](https://img-blog.csdnimg.cn/img_convert/532ec9375a53aa5a93658f6a5d2b9807.png)
可以玩h5的网站/百度关键词怎么做
题库来源:安全生产模拟考试一点通公众号小程序 2021年N1叉车司机考试题及N1叉车司机免费试题,包含N1叉车司机考试题答案和解析及N1叉车司机免费试题练习。由安全生产模拟考试一点通公众号结合国家N1叉车司机考试最新大纲及N1叉车司机考试真题汇总&#…...
![](/images/no-images.jpg)
无锡网站建设培训班/东莞网络营销推广公司
Set 和 Map 数据结构Set 和 Map 数据结构Set基本用法ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x…...
![](/images/no-images.jpg)
做企业网站需要人维护么/百度网盘资源共享
idea左右分屏 右键文件,选择split vertically...
![](/images/no-images.jpg)
网网站制作/二十条优化措施
视频是一帧帧的图像,视频处理的是运动图像,而不是静止图像。视频资源可以是一个专用摄像机、网络摄像头、视频文件或图像文件序列。 OpenCV 中,VideoCapture 类和 VideoWriter 类为视频处理中所涉及的捕获和记录任务提供了一个易用的 C++API。 下方的 recVideo 示例是一…...
![](/images/no-images.jpg)
如何搭建一个个人网站/免费接单平台
1.在编辑器传入的图片尺寸大都比h5宽, 如果直接用v-html渲染传回的标签代码,则图片显示则很大 2,获取到后台数据时,程序已经渲染了页面,然后开始处理图片 样式,id为box-show <div id"box-show&qu…...