LVS负载均衡群集和keepalive

news2025/5/15 5:28:28

目录

一. 集群概述

1.1 集群的定义

1.2 集群的分类

1.  高可用集群 HA

2. 高性能运输群集 HPC

3.负载均衡群集 LB

4.  分布式存储集群

二. LVS概述

2.1 LVS的定义

2.2 LVS的工作原理

2.3 LVS 的三种工作模式

2.4 LVS 三种工作模式的对比

2.5 LVS 调度算法

1. 静态方法

2. 动态方法

三. LVS集群创建与管理

3.1 LVS集群类型中的术语

3.2 ipvsadm工具

3.2.1 ipvsadm工具选项

3.2.2 常见操作

1. 列出规则

2. 建立集群

3. 添加后端服务器 

4. 删除后端服务器 

5. 删除集群

四. DR模式部署

4.1 配置负载调度器

4.2 配置节点服务器

五. keepalive概述

5.1 vrrp技术

5.1.2 vrrp相关术语

5.2 keepalive的定义

5.3 keepalive的功能

5.4 keepalive架构

六. 安装keepalive

6.1 centos7-yum安装

6.2 Ubuntu-apt安装

6.3 centos7-编译安装

6.4 Ubuntu-编译安装

七. keepalived的相关文件

7.1 配置组成

7.1.1 全局配置

7.1.2 配置虚拟路由器


一. 集群概述

1.1 集群的定义

集群(Cluster) 是指将多台计算机或服务器通过某种方式连接在一起,作为一个整体来提供服务或执行任务的技术架构。

1.2 集群的分类

1. 高可用集群 HA

目标:确保服务的高可用性,减少停机时间。

实现方式:通过冗余节点和故障转移机制,当主节点故障时,备用节点立即接管服务。

例如:Keepalived、heartbeat

2. 高性能运输群集 HPC

目标:通过并行计算解决复杂的科学计算或数据处理任务

实现方式:将任务分解为多个子任务,分配到多个节点并行执行。

3.负载均衡群集 LB

目标:将请求或任务均匀分配到多个节点,提高系统性能和资源利用率。

实现方式:通过负载均衡器(如LVS、Nginx、HAProxy)将请求分发到后端服务器。

例如:LVS、Nginx

4.  分布式存储集群

目标:提供高可用、可扩展的存储服务。

实现方式:将数据分布到多个节点存储,并通过冗余机制确保数据安全。


二. LVS概述

2.1 LVS的定义

LVS(Linux Virtual Server) 是一种基于 Linux 内核的高性能、高可用的负载均衡技术,用于将客户端请求分发到多个后端服务器节点,以提高系统的处理能力和可用性。

2.2 LVS的工作原理

  1. 客户端发起请求

    • 客户端通过访问 LVS 的虚拟 IP(VIP)发起请求。
  2. 负载均衡器接收请求

    • 负载均衡器接收客户端的请求,并根据预定义的调度算法选择一个后端服务器节点。
  3. 请求分发

    • 负载均衡器将请求转发到选定的后端服务器节点。
    • 转发方式取决于 LVS 的工作模式(NAT、DR 或 TUN)。
  4. 后端服务器处理请求

    • 后端服务器节点处理请求并生成响应。
  5. 响应返回客户端

    • 后端服务器将响应返回给客户端。
    • 返回方式取决于 LVS 的工作模式(NAT、DR 或 TUN)。

2.3 LVS 的三种工作模式

1. NAT 模式

  • 工作原理

    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。

    2. 负载均衡器将请求的源 IP 地址修改为自身的 IP 地址,并将请求转发到后端服务器。

    3. 后端服务器处理请求,并将响应返回给负载均衡器。

    4. 负载均衡器将响应的目标 IP 地址修改为客户端的 IP 地址,并将响应返回给客户端

2. DR 模式

  • 工作原理

    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。

    2. 负载均衡器将请求直接转发到后端服务器,不修改 IP 地址。

    3. 后端服务器处理请求,并直接将响应返回给客户端。

 3. TUN 模式

  • 工作原理
    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。
    2. 负载均衡器通过 IP 隧道将请求封装并转发到后端服务器。
    3. 后端服务器解封装请求,处理请求,并直接将响应返回给客户端。

2.4 LVS 三种工作模式的对比

NATTUNDR
优点端口转换WAN性能最好
缺点性能瓶颈服务器支持隧道模式不支持跨网段
真实服务器要求anyTunnelingNon-arp device
支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)
真实服务器数量low (10~20)High (100)High (100)
真实服务器网关lvs内网地址Own router(网工定义)Own router(网工定义)

2.5 LVS 调度算法

分为两种:

静态方法: 不管后端真实服务器的 状态,根据自身 算法进行调度

动态方法: 会根据后端服务器的状态来进行调度

1. 静态方法

轮询(RR):将请求依次分发到每个后端服务器节点。

加权轮询(WRR):根据后端服务器的权重分发请求,权重越高,分配的请求越多

源地址哈希(SH):根据客户端的源 IP 地址哈希值分发请求,确保同一客户端的请求被分发到同一台后端服务器。

目标地址哈希(DH):通过让后端服务器直接响应客户端请求来优化性能和简化配置。

2. 动态方法

最小连接数(LC):将请求分发到当前连接数最少的后端服务器节点。

加权最小连接数(WLC):根据后端服务器的权重和连接数分发请求。

预期延迟最短(SED):选择预期延迟最短的后端服务器来处理请求。

空闲(NQ):优先选择 空闲 的后端服务器,如果没有空闲服务器,则退化为 SED 算法。

基于地址的最小连接数(LBLC):基于 请求的源地址 和 后端服务器的活动连接数 进行分发,确保同一客户端的请求被分发到同一台后端服务器。


三. LVS集群创建与管理

3.1 LVS集群类型中的术语

  1. VS(代理服务器):Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器) 代理服务器

  2. RS(真实服务器):Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

  3. CIP:Client IP(客户机IP) 客户机的ip

  4. VIP:Virtual serve IP VS外网的IP 代理服务器的 外网ip

  5. DIP:Director IP VS内网的IP 代理服务器的 内网ip

  6. RIP:Real server IP 真实服务器的 ip地址

3.2 ipvsadm工具

LVS集群通过ipvsadm工具创建管理

3.2.1 ipvsadm工具选项

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc  默认的 )
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
-w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

3.2.2 常见操作

1. 列出规则
ipvsadm -L
2. 建立集群
格式:
ipvsadm -A -t <虚拟IP>:<端口> -s <调度算法>

例子:
ipvsadm -A -t  192.168.91.188:80 -s rr
3. 添加后端服务器 
格式:
ipvsadm -a -t <虚拟IP>:<端口> -r <后端服务器IP>:<端口> -g -w <权重>

例子:
ipvsadm -a -t 192.168.91.188:80 -r  192.168.91.100:80  -g
4. 删除后端服务器 
格式:
ipvsadm -d -t <虚拟IP>:<端口> -r <后端服务器IP>:<端口>

例子:
ipvsadm -d -t 192.168.91.188:80 -r 192.168.91.100:80
5. 删除集群
格式:
ipvsadm -D -t <虚拟IP>:<端口>

例子:
ipvsadm -D -t 192.168.91.188:80

四. DR模式部署

4.1 配置负载调度器

ubuntu 调度器配置

1.更新系统并安装 ipvsadm
apt update
apt install ipvsadm -y

2.添加虚拟IP(VIP)
ifconfig ens33:0 192.168.52.188/24

3.配置LVS规则
添加虚拟服务器(VIP)并设置调度算法为轮询(rr):
ipvsadm -A -t 192.168.52.188:80 -s rr
添加真实服务器(RIP):
ipvsadm -a -t 192.168.52.188:80 -r 192.168.52.100:80 -g
ipvsadm -a -t 192.168.52.188:80 -r 192.168.52.101:80 -g

4.修改内核参数:
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

使配置生效:
sudo sysctl -p

4.2 配置节点服务器

centos7-13真实服务器1配置

1.安装Nginx:
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx

2.设置测试页面
echo "7-13" > /usr/share/nginx/html/index.html

3.修改内核参数
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

4.添加虚拟IP(VIP)
ifconfig ens33:0 192.168.52.188/24
centos7-14 真实服务器2配置

yum install epel-release -y
yum install nginx -y
systemctl start nginx

"7-14" > /usr/share/nginx/html/index.html

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

sysctl -p

ifconfig ens33:0 192.168.52.188/24

测试
在集群外的新机器上测试:
curl 192.168.52.188
多次执行 curl 命令,观察返回的内容是否在 7-13 和 7-14 之间轮换。

五. keepalive概述

5.1 vrrp技术

VRRP 是一种用于实现 路由器高可用性的网络协议。它通过将多个路由器组成一个虚拟路由器组,并分配一个虚拟 IP 地址(VIP),确保在主路由器故障时,备用路由器能够接管流量,从而实现网络服务的连续性。

5.1.2 vrrp相关术语

虚拟路由器(Virtual Router):由多个物理路由器组成的一个逻辑路由器。

虚拟 IP 地址(VIP):虚拟路由器对外提供的 IP 地址,客户端通过该 IP 地址访问网络服务。

主路由器(Master Router):在虚拟路由器组中,负责转发流量的路由器,持有虚拟 IP 地址。

备用路由器(Backup Router):在主路由器故障时,接管流量并成为新的主路由器,平时处于监听状态,不转发流量。

优先级(Priority):用于选举主路由器的参数,优先级越高,越有可能成为主路由器。

5.2 keepalive的定义

Keepalived 是一个用于实现 高可用性负载均衡的开源软件。它基于 VRRP(Virtual Router Redundancy Protocol) 协议,通过虚拟 IP(VIP)的切换来确保服务的连续性,同时可以与 LVS(Linux Virtual Server) 集成,提供负载均衡功能。

5.3 keepalive的功能

  1. 基于vrrp协议完成地址流动

  2. 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

  3. 为ipvs集群的各RS做健康状态检测

  4. 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

5.4 keepalive架构

  1. vrrp stack:VIP消息通告 虚拟ip

  2. checkers:监测real server(简单来说 就是监控后端真实服务器的服务)是否存活

  3. system call:实现 vrrp 协议状态转换时调用脚本的功能

  4. SMTP:邮件组件(报警邮件)

  5. IPVS wrapper:生成IPVS规则(直接生成ipvsadm)

  6. Netlink Reflector:监控网络接口状态变化

  7. WatchDog:监控进程(整个架构是否有问题)

六. 安装keepalive

6.1 centos7-yum安装

yum  install   keepalived  -y

vim /etc/keepalived/keepalived.conf

#修改 interface eth0 为
interface ens33 

systemctl start keepalived.service

systemctl status keepalived.service

6.2 Ubuntu-apt安装

apt update

apt install keepalived -y

cp /usr/share/doc/keepalived/samples/keepalived.conf.sample  /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

#修改interface eth0为
interface ens33

systemctl start keepalived

systemctl status keepalived

6.3 centos7-编译安装

yum install gcc curl openssl-devel libnl3-devel net-snmp-devel  -y
# 安装依赖包环境

https://keepalived.org/download.html
# 官网下载安装包

mkdir -p /data/

cd /data/

wget https://keepalived.org/software/keepalived-2.2.2.tar.gz

tar  xf   keepalived-2.2.2.tar.gz

cd   keepalived-2.2.2/

./configure --prefix=/usr/local/keepalived

make   &&  make  install

#编译好后起不来没有配置文件/etc/keepalived/keepalived.conf

mkdir    /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf

sed  -i   's/eth0/ens33/' /etc/keepalived/keepalived.conf

systemctl start keepalived

systemctl status keepalived

6.4 Ubuntu-编译安装

ubuntu尽可能安装比较新的keepalive安装包

cd /opt

apt update && apt -y install make gcc ipvsadm build-essential pkg-config automake autoconf libipset-dev libnl-3-dev libnl-genl-3-dev libssl-dev libxtables-dev libip4tc-dev libip6tc-dev libmagic-dev libsnmp-dev libglib2.0-dev libpcre2-dev libnftnl-dev libmnl-dev libsystemd-dev

https://keepalived.org/download.html
# 官网下载安装包

wget https://keepalived.org/software/keepalived-2.3.3.tar.gz

tar  xf   keepalived-2.3.3.tar.gz

cd   keepalived-2.3.3/

./configure --prefix=/usr/local/keepalived

make  -j2 &&  make  install

mkdir    /etc/keepalived
 
cp /usr/local/keepalived/etc/keepalived/keepalived.conf.sample  /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

#interface ent0改为
interface ens33

systemctl start keepalived

systemctl status keepalived

七. keepalived的相关文件

  • 软件包名:keepalived

  • 主程序文件:/usr/sbin/keepalived

  • 主配置文件:/etc/keepalived/keepalived.conf

7.1 配置组成

7.1.1 全局配置

global_defs {
   notification_email {
   root@localhost
   #keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写多个
   root@localhost
   360601212@qq.com 
}
 notification_email_from keepalived@localhost  
 #发邮件的地址

smtp_server 127.0.0.1     
#邮件服务器地址
 
smtp_connect_timeout 30   
#邮件服务器连接timeout

router_id   LVS01
#每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响
 
vrrp_skip_check_adv_addr  
#对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查

vrrp_strict 
#严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。

vrrp_garp_interval 0 
#gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟
 
vrrp_gna_interval 0 
#unsolicited NA messages (不请自来)消息发送延迟
 
vrrp_mcast_group4 225.0.0.18
#指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18 
 
vrrp_iptables        
#此项和vrrp_strict同时开启时,则不会添加防火墙规则,如果无配置vrrp_strict项,则无需启用此项配置
}

7.1.2 配置虚拟路由器

vrrp_instance <STRING> {
#<String>为vrrp的实例名,一般为业务名称
 配置参数
 ......
 }

#配置参数:
state MASTER|BACKUP
#当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP

interface IFACE_NAME 
#绑定为当前虚拟路由器使用的物理接口,如:eth0,bond0,br0,可以和VIP不在一个网卡

virtual_router_id VRID 
#每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一

priority 100 
#当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同

advert_int 1
#vrrp通告的时间间隔,默认1s


authentication { 
#认证机制

auth_type AH|PASS   
#AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
 
auth_pass <PASSWORD> 
#预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样
}

include    /etc/keealived/conf.d/*.conf
virtual_ipaddress { 
#虚拟IP,生产环境可能指定上百个IP地址

<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.100 
#指定VIP,不指定网卡,默认为,注意:不指定/prefix,默认为/32
 
192.168.200.101/24 dev eth1   
#指定VIP的网卡,建议和interface指令指定的岗卡不在一个网卡
 
192.168.200.102/24 dev eth2 label eth2:1 
#指定VIP的网卡label   ifconfig eth2:1   192.168.200.102/24
}

track_interface { 
#配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
eth0
eth1
 …
}

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

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

相关文章

Apache Pulsar 消息、流、存储的融合

Apache Pulsar 消息、流、存储的融合 消息队列在大层面有两种不同类型的应用&#xff0c;一种是在线系统的message queue&#xff0c;一种是流计算&#xff0c;data pipeline的streaming高throughout&#xff0c;一致性较低&#xff0c;延迟较差的过程。 存算分离 扩容和缩容快…

最优化方法Python计算:有约束优化应用——线性可分问题支持向量机

设问题的数据样本点 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi​,yi​)&#xff0c; x i ∈ R n \boldsymbol{x}_i\in\text{R}^n xi​∈Rn&#xff0c; y i 1 y_i\pm1 yi​1&#xff0c; i 1 , 2 , ⋯ , m i1,2,\cdots,m i1,2,⋯,m。由于标签数据 y i ∈ { − 1 , 1 } y_i\…

SpringBoot学习(上) , SpringBoot项目的创建(IDEA2024版本)

目录 1. SpringBoot介绍 SpringBoot特点 2. SpringBoot入门 2.1 创建SpringBoot项目 Spring Initialize 第一步: 选择创建项目 第二步: 选择起步依赖 第三步: 查看启动类 2.2 springboot父项目 2.3 测试案例 2.3.1 数据库 2.3.2 生成代码 1. SpringBoot介绍 Spring B…

【Redis 进阶】哨兵模式

思维导图&#xff1a; 一、哨兵模式概述 &#xff08;一&#xff09;传统主从复制模式的局限性 在传统的Redis主从复制架构中&#xff0c;若主节点发生故障&#xff0c;运维人员需手动执行故障转移操作&#xff0c;将一个从节点提升为新主节点&#xff0c;并逐一通知所有客户…

CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开

苹果公司近日针对macOS系统中新披露的CVE-2025-31258漏洞发布补丁&#xff0c;该漏洞可能允许恶意应用程序突破沙箱限制&#xff0c;获取未授权的系统资源访问权限。在安全研究员Seo Hyun-gyu公开概念验证&#xff08;PoC&#xff09;利用代码后&#xff0c;该漏洞已在macOS Se…

武汉大学无人机视角下的多目标指代理解新基准!RefDrone:无人机场景指代表达理解数据集

作者&#xff1a;Zhichao Sun, Yepeng Liu, Huachao Zhu, Yuliang Gu, Yuda Zou, Zelong Liu, Gui-Song Xia, Bo Du, Yongchao Xu 单位&#xff1a;武汉大学计算机学院 论文标题&#xff1a;RefDrone: A Challenging Benchmark for Drone Scene Referring Expression Compreh…

【递归、搜索和回溯】二叉树中的深搜

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 前言1 2331. 计算布尔二叉树的值1.1 分析1.2 代码 2 129. 求根节点到叶节点数字之和2.1 分析2.2 代码 3 814. 二叉树剪枝3.1 分析3.2 代码 4 98. 验证…

Algolia - Docsearch的申请配置安装【以踩坑解决版】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

Linux513 rsync本地传输 跨设备传输 一

ping节点bPing通 仅主机模式不需要设置网关节点a也可以Ping通节点b 同步成功 下载文件夹成功 今日源码 节点a 节点b

leetcode 383. Ransom Note

题目描述 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {vector<int> table(26,0);for(char ch : magazine){table[ch-a];}for(char ch : ransomNote){table[ch-a]--;if(table[ch-a] < 0)return false;}return true;} };

Skyvern:用 AI+视觉驱动浏览器自动化

Skyvern&#xff1a;用 AI视觉驱动浏览器自动化 一、前言二、项目概览2.1 Skyvern 项目简介2.2 代码结构与模块划分 三、环境搭建与快速上手3.1 环境准备3.1.1 系统与依赖3.1.2 克隆项目3.1.3 安装 Python 依赖3.1.4 配置环境变量3.1.5 启动服务 3.2 验证安装 四、核心功能与实…

数据库原理期末考试速成--最后附带两套题

引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…

数据结构基础--蓝桥杯备考

1.优缺点总述 STL中各容器对比图 各类线性数据结构优缺点 1.数组 1.优点 1.简单&#xff0c;容易理解 2.访问快捷&#xff0c;只需要用下标就可以 3.有某些应用场景直接对应&#xff0c;例如二维数组对应平面 2.缺点 删除和插入数据非常耗时 2.链表 1.优点 插入和删…

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析

今天给大家分享几款2.4GHz无线通信芯片方案&#xff1a; 一、集成SOC芯片方案 XL2407P&#xff08;芯岭技术&#xff09; 集成射频收发机和微控制器&#xff08;如九齐NY8A054E&#xff09; 支持一对多组网和自动重传 发射功率8dBm&#xff0c;接收灵敏度-96.5dBm&#xff08…

Unity_JK框架【5】音效系统实现

在游戏开发中&#xff0c;音频是不可或缺的一部分&#xff0c;它能够极大地增强游戏的沉浸感和趣味性。今天&#xff0c;我们就用JK框架 探讨一下如何在Unity中实现一个强大的音频系统&#xff0c;并且通过实际的测试脚本来验证其功能&#x1f44f;。 一、音频模块类&#xff1…

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件

打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口&#xff0c;使用的模型是 Stage 模型 在项目文件里&#xff0c;新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行&#xff0c;这里是第一步创建的文件…

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景

长短期记忆网络&#xff08;LSTM&#xff09;作为循环神经网络&#xff08;RNN&#xff09;的重要变体&#xff0c;通过门控机制有效解决了传统RNN的梯度消失问题&#xff0c;成为时序数据处理的核心技术。本文从理论起源、数学建模、网络架构、工程实现到行业应用&#xff0c;…

c语言第一个小游戏:贪吃蛇小游戏02

接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键&#xff0c;也就是键盘快捷键&#xff0c;不是q、r、t&#xff0c;是 上下左右、F1、F2等等的键&#xff0c;我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…

Android架构之自定义native进程

在Android五层架构中&#xff0c;native层基本上全是c的世界&#xff0c;这些c进程基本上靠android世界的第一个进程init进程创建&#xff0c;init通过rc配置文件&#xff0c;创建了众多的c子进程&#xff0c;也是这众多的c进程&#xff0c;构建了整个android世界的native层。 …

《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》

目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…