ubuntu2204配置zabbix6.4高可用

zabbix6.4-HA

    • 配置keepalived
    • 配置haproxy
    • 数据库高可用
    • 配置zabbix-server
    • 配置proxy
    • 配置客户端agent

本实验VMware搭建zabbix6.4高可用集群,搭配haproxy+keepalived。

master,node节点搭建haproxy+keepalibed主备并配置vip地址

三台控制节点搭建数据库高可用

三台zabbix节点搭建zaabix-server高可用

节点IP配置
master192.168.200.1522C_4V_100G
node192.168.200.1532C_4V_100G
VIP192.168.200.154虚拟ip
controller01192.168.200.1552C_4V_100G
controller02192.168.200.1562C_4V_100G
controller03192.168.200.1572C_4V_100G
zabbix01192.168.200.1582C_4V_100G
zabbix02192.168.200.1592C_4V_100G
zabbix03192.168.200.1602C_4V_100G

Zabbix 是一个企业级开源分布式监控解决方案,可以监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的运行状况和完整性。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和捕获。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于网络的前端确保可以从任何位置评估您的网络状态和服务器的运行状况。如果配置正确,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。对于拥有少量服务器的小型组织和拥有大量服务器的大公司来说同样如此。

所有系统环境初始化(全部节点执行)

#!/bin/bash# 定义节点信息
NODES=("192.168.200.152 master root" "192.168.200.153 node root" "192.168.200.155 controller01 root" "192.168.200.156 controller02 root" "192.168.200.157 controller03 root" "192.168.200.158 zabbix01 root" "192.168.200.159 zabbix02 root" "192.168.200.160 zabbix03 root")# 定义当前节点的密码(默认集群统一密码)
HOST_PASS="000000"# 时间同步的目标节点
TIME_SERVER=zabbix01# 时间同步的地址段
TIME_SERVER_IP=192.160.200.0/24# 欢迎界面
cat > /etc/motd <<EOF#################################    Welcome  to  zabbix       #################################
EOF# 修改主机名
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')# 获取当前节点的主机名和 IPcurrent_ip=$(hostname -I | awk '{print $1}')current_hostname=$(hostname)# 检查当前节点与要修改的节点信息是否匹配if [[ "$current_ip" == "$ip" && "$current_hostname" != "$hostname" ]]; thenecho "Updating hostname to $hostname on $current_ip..."hostnamectl set-hostname "$hostname"if [ $? -eq 0 ]; thenecho "Hostname updated successfully."elseecho "Failed to update hostname."fibreakfi
done# 遍历节点信息并添加到 hosts 文件
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')# 检查 hosts 文件中是否已存在相应的解析if grep -q "$ip $hostname" /etc/hosts; thenecho "Host entry for $hostname already exists in /etc/hosts."else# 添加节点的解析条目到 hosts 文件sudo sh -c "echo '$ip $hostname' >> /etc/hosts"echo "Added host entry for $hostname in /etc/hosts."fi
doneif [[ ! -s ~/.ssh/id_rsa.pub ]]; thenssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q -b 2048
fi# 检查并安装 sshpass 工具
if ! which sshpass &> /dev/null; thenecho "sshpass 工具未安装,正在安装 sshpass..."sudo apt-get install -y sshpass
fi# 遍历所有节点进行免密操作
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')user=$(echo "$node" | awk '{print $3}')# 使用 sshpass 提供密码,并自动确认密钥sshpass -p "$HOST_PASS" ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub "$user@$hostname"
done# 时间同步
apt install -y chrony
if [[ $TIME_SERVER_IP == *$(hostname -I)* ]]; then# 配置当前节点为时间同步源sed -i '20,23s/^/#/g' /etc/chrony/chrony.confecho "server $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.confecho "allow $TIME_SERVER_IP" >> /etc/chrony/chrony.confecho "local stratum 10" >> /etc/chrony/chrony.conf
else# 配置当前节点同步到目标节点sed -i '20,23s/^/#/g' /etc/chrony/chrony.confecho "pool $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.conf
fi# 重启并启用 chrony 服务
systemctl restart chronyd
systemctl enable chronydecho "###############################################################"
echo "#################      集群初始化成功     #####################"
echo "###############################################################"

任一节点查看

root@master:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 huhy# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.200.152 master
192.168.200.153 node
192.168.200.154 VIP
192.168.200.155 controller01
192.168.200.156 controller02
192.168.200.157 controller03
192.168.200.158 zabbix01
192.168.200.159 zabbix02
192.168.200.160 zabbix03

配置keepalived

Keepalived 是一个功能强大且易于使用的工具,可用于构建高可用性和可靠性的网络架构,保障服务的连续性和稳定性。它被广泛应用于各种网络环境中,特别是用于提供网络服务的关键应用场景。
mastere,node双节点安装,这里双节点使用抢占模式(如果需要快速故障转移和服务恢复,则可以选择抢占模式;如果希望减少不必要的 IP 地址切换和服务中断,则可以选择非抢占模式。

apt install keepalived -y

配置抢占模式,master节点

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.154/24}
}

backup节点

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.154/24}
}

双节点重启

systemctl restart keepalived

验证查看虚拟ip应在master节点上

root@master:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:d1:04:39 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.200.152/24 brd 192.168.200.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.200.154/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fed1:439/64 scope linkvalid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:d1:04:43 brd ff:ff:ff:ff:ff:ffaltname enp2s2inet6 fe80::20c:29ff:fed1:443/64 scope linkvalid_lft forever preferred_lft forever
root@master:~#

配置haproxy

HAProxy 是一个功能强大且灵活的负载均衡器,可以帮助构建高性能、高可用性的应用架构,并提供了丰富的功能来应对不同的网络场景和需求。感兴趣可去官网

master,node双节点配置haproxy,只要保持双节点的haproxy配置相同,两台节点的haproxy就能负载均衡

apt install haproxy -y
vim /etc/sysctl.d/haproxy.confnet.ipv4.ip_nonlocal_bind=1
sysctl --system
systemctl restart haproxy

数据库高可用

采用galera方式,三台controller节点安装

apt install -y mariadb-server

三节点停止数据库

systemctl stop mariadb

三台节点修改配置文件

vim /etc/mysql/mariadb.conf.d/99-zabbix.cnf
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://controller01,controller02,controller03"
default_storage_engine = InnoDB
binlog_format = row
innodb_autoinc_lock_mode = 2

在一个节点上启动Galera(默认01)

 galera_new_cluster

其它两个节点重启数据库

systemctl restart mariadb

设置密码并查看验证

mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '000000';"
root@controller01:~# mysql -uroot -p000000 -e "show status like 'wsrep_cluster_size';"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
root@controller01:~#

任一节点配置zabbix数据库和用户

mysql -uroot -p000000 -e "create database zabbix character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p000000 -e "create user zabbix@localhost identified by '000000';"
mysql -uroot -p000000 -e "CREATE USER 'zabbix'@'%' IDENTIFIED BY '000000';"
mysql -uroot -p000000 -e "grant all privileges on zabbix.* to zabbix@localhost;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%';"
mysql -uroot -p000000 -e "set global log_bin_trust_function_creators = 1;"
#设置为 1 时,MySQL 将信任函数的创建者,允许任何用户创建函数,而不受 SUPER 权限或 CREATE ROUTINE 
#权限的限制。这样可以方便一些用户在没有超级用户权限的情况下创建和使用函数。

配置haproxy,master,node节点文件追加以下内容

cat >> /etc/haproxy/haproxy.cfg << eof
listen openstack_mariadb_galera_clusterbind 192.168.200.154:3306balance  sourcemode    tcpserver controller01 192.168.200.155:3306 check inter 2000 rise 2 fall 5server controller02 192.168.200.156:3306 check inter 2000 rise 2 fall 5server controller03 192.168.200.157:3306 check inter 2000 rise 2 fall 5
eof

双节点重启haproxy

systemctl restart haproxy

配置zabbix-server

安装zabbix仓库,三台zabbix节点执行

wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update

三台节点安装Zabbix server,Web前端,agent

apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 zabbix-agent2-plugin-* -y

任一zabbix节点测试访问远程zabbix用户,注意此时使用vip地址访问数据库集群

root@zabbix01:~# mysql -h vip -uzabbix -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29677
Server version: 5.5.5-10.11.6-MariaDB-0ubuntu0.23.10.2 Ubuntu 23.10Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

任一zabbix节点导入初始架构和数据,系统将提示输入新创建的密码(默认000000)

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix -h vip

使用01节点初始化

root@zabbix01:~# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix -h vip
Enter password:
root@zabbix01:~#

zabbix-serverHA配置,启动原生HA模式,官网介绍

服务器配置中需要两个参数才能将 Zabbix 服务器作为集群节点启动:
必须为将成为 HA 集群节点的每个 Zabbix 服务器指定HANodeName参数。
zabbix-node-01这是服务器将在代理和代理配置中引用的唯一节点标识符(例如)。如果不指定HANodeName,则服务器将以独立模式启动。
必须为每个节点指定NodeAddress参数。
Zabbix 前端将使用 NodeAddress 参数(地址:端口)连接到活动服务器节点。 NodeAddress 必须与相应 Zabbix 服务器的 IP 或 FQDN 名称匹配。
更改配置文件后重新启动所有 Zabbix 服务器。它们现在将作为集群节点启动。服务器的新状态可以在报告→系统信息中查看,也可以通过运行:

Zabbix server 支持高可用性(HA)集群是一个可选择的解决方案。本地HA解决方案被设计为易于使用,它可以跨站点工作,并且对Zabbix识别的数据库没有特定的要求。用户可以自由地使用本地Zabbix HA解决方案或第三方HA解决方案,这取决于什么最适合其环境中的高可用性需求。
该解决方案由多个zabbix_server实例或节点组成。
每一个节点: - 单独配置 - 使用相同的数据库 - 可能有几种模式: active, standby, unavailable, stopped
一次只能有一个节点处于活动状态(工作)。 备节点只运行一个进程——HA管理器。备用节点不进行数据收集、处理或其他常规server活动; 它不监听端口; 它们拥有最少的数据库连接。
主节点和备节点每5秒更新一次上次访问时间。每个备节点监控主节点的最后一次访问时间。如果主节点的最后一次访问时间超过了“故障转移延迟”秒,备用节点将自己切换为主节点,并将“不可用”状态分配给先前的主节点。
主节点监视自己的数据库连接—如果丢失超过“故障转移延迟-5”秒,它必须停止所有处理并切换到备用模式。主节点还监视备用节点的状态——如果备用节点的最后访问时间超过了“故障转移延迟”秒,备用节点将被分配为“不可用”状态。

zabbix三台节点配置server.conf文件参数官网详解:

vim /etc/zabbix/zabbix_server.conf
#默认localhost,此处填写为远程的数据库集群,使用vip地址
DBHost=192.168.200.154
#使用自己设置的密码
DBPassword=000000#注意修改每个节点对应的主机名和ip,文件末尾就是高可用介绍
HANodeName=zabbix01
NodeAddress=192.168.200.158:10051

三台节点启动Zabbix server和agent进程

systemctl enable zabbix-server zabbix-agent2 apache2
systemctl restart zabbix-server zabbix-agent2 apache2

每个节点查看集群状态

root@zabbix01:~# zabbix_server -R ha_status
Runtime commands can be executed only in active mode
root@zabbix01:~#
root@zabbix02:~# zabbix_server -R ha_status
Runtime commands can be executed only in active mode

活跃节点自动调度在03,01和02成为备用节点

root@zabbix03:~# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:#  ID                        Name                      Address                        Status      Last Access1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     3s2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          standby     0s3. cluazsurh0001dplr22qvt91j zabbix03                  192.168.200.160:10051          active      2s
root@zabbix03:~#

此时如果停掉或重启03节点,则自动调度在01或者03,测试如下

root@zabbix03:~# systemctl restart zabbix-server
root@zabbix02:~# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:#  ID                        Name                      Address                        Status      Last Access1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     2s2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          active      4s3. cluazsurh0001dplr22qvt91j zabbix03                  192.168.200.160:10051          standby     9s
root@zabbix02:~#

master,node配置haproxy文件

cat >> /etc/haproxy/haproxy.cfg << eoflisten zabbix_clusterbind 192.168.200.154:81balance sourcemode tcpserver zabbix01 192.168.200.158:80 check inter 2000 rise 2 fall 5server zabbix02 192.168.200.159:80 check inter 2000 rise 2 fall 5server zabbix03 192.168.200.160:80 check inter 2000 rise 2 fall 5
eof
systemctl restart haproxy.service

vip界面访问:http://192.168.200.154:81/zabbix

在这里插入图片描述

设置数据库密码(000000)和连接数据库集群vip地址

在这里插入图片描述

设置用户名huhy,时区和主题默认

在这里插入图片描述

登录(Admin/zabbix)

在这里插入图片描述

设置中文,三台节点安装软件包并重启

apt-get install language-pack-zh* -y
systemctl restart zabbix-server zabbix-agent2 apache2

选择并更新

在这里插入图片描述

web界面查看高可用信息

在这里插入图片描述

配置proxy

Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。
部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。
Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。
Zabbix proxy 需要使用独立的数据库。

在zabbix01节点上安装proxy,资源有限这里使用一台机器作为演示

apt install zabbix-proxy-mysql  zabbix-sql-scripts -y

controller01节点创建初始数据库

mysql -uroot -p000000 -e "create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'localhost' IDENTIFIED BY '000000' ;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY '000000' ;"
mysql -uroot -p000000 -e "GRANT SUPER ON *.* TO 'zabbix'@'localhost';"
mysql -uroot -p000000 -e "GRANT SUPER ON *.* TO 'zabbix'@'%';"

master节点导入初始架构和数据,系统将提示您输入连接的密码。

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h vip

主动代理 (Active Proxy):

在主动代理模式下,Zabbix Proxy 主动连接到 Zabbix 服务器,并定期发送监控数据。
Zabbix 服务器不需要为代理的连接做出响应,因为代理会自行建立连接并发送数据。
这种模式通常用于网络环境中的代理,其中代理可以连接到 Zabbix 服务器,但是 Zabbix 服务器不能直接连接到代理。
被动代理 (Passive Proxy):

在被动代理模式下,Zabbix Proxy 不会主动连接到 Zabbix 服务器,而是等待 Zabbix 服务器发送请求并获取数据。
Zabbix 服务器会定期轮询被动代理,并从代理处获取监控数据。
这种模式通常用于部署在受限网络中的代理,其中代理无法直接连接到 Zabbix 服务器,但是 Zabbix 服务器可以访问代理。
总的来说,主动代理适用于代理可以直接连接到 Zabbix 服务器的场景,而被动代理适用于代理无法直接连接到 Zabbix 服务器的场景,需要 Zabbix 服务器主动获取数据的情况。(默认主动式配置参数ProxyMode=0)

节点编辑配置文件 /etc/zabbix/zabbix_proxy.conf

vim /etc/zabbix/zabbix_proxy.conf
#数据库集群使用vip代理地址
DBHost=192.168.200.154#界面创建的proxy要与这里统一
Hostname=zabbix-proxy01DBPassword=000000Server=192.168.200.158;192.168.200.159;192.168.200.160

重启并开机自启

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

在这里插入图片描述

等待一会

在这里插入图片描述

配置客户端agent

使用master节点配置为客户端进行监控

apt install -y zabbix-agent2

配置文件

vim /etc/zabbix/zabbix_agent2.conf
ServerActive=192.168.200.158,192.168.200.159,192.168.200.160Hostname=agent01-masterServer=192.168.200.158,192.168.200.159,192.168.200.160
systemctl restart zabbix-agent2
systemctl enable --now zabbix-agent2

使用proxy作为中间代理转发给server

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch 下载失败原因

错误信息&#xff1a; ERROR: Could not find a version that satisfies the requirement torch (from versions: none) ERROR: No matching distribution found for torch 解决方案&#xff1a; 在官网看到&#xff0c;它需要python3.8-3.11的环境。过高和过低的版本都不…

微信小程序备案流程详细操作指南

自2023年9月1日起&#xff0c;所有新上架的微信小程序均需事先完成备案手续&#xff0c;方能成功上线。而对于已经上架的存量小程序&#xff0c;也需要在2024年3月31日前完成备案工作。若在规定时间内未完成备案&#xff0c;平台将依据备案相关规定&#xff0c;自2024年4月1日起…

金三银四面试题(八):JVM常见面试题(2)

今天我们继续探讨常见的JVM面试题。这些问题不比之前的问题庞大&#xff0c;多用于面试中​JVM部分的热身运动&#xff0c;开胃菜&#xff0c;但是大家已经要认真准备。 JRE、JDK、JVM 及JIT 之间有什么不同&#xff1f; JRE 代表Java 运行时&#xff08;Java run-time&#…

ESP8266 控制 LED 亮灭

一、引脚对应 二、按键控制 LED 亮灭 2.1样例1 #include <ESP8266WiFi.h>const int ledPin D2; // LED 连接到 D2 引脚 const int keyPin D4; // 按键连接到 D4 引脚volatile bool flag false; // 记录 LED 状态的标志// 外部中断处理函数 ICACHE_RAM_ATTR void han…

(原型与原型链)前端八股文修炼Day5

一 原型链的理解 原型链定义&#xff1a; 原型链是 JavaScript 中实现对象继承的关键机制之一&#xff0c;它是一种对象之间的关系&#xff0c;通过这种关系&#xff0c;一个对象可以继承另一个对象的属性和方法。 原型链的组成&#xff1a; 每个对象都有一个指向另一个对象的…

C# 微软官方学习文档

链接&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/csharp/ 在C#的学习过程中&#xff0c;我们可以参考微软官方的学习文档。它是一个免费的学习平台&#xff0c;提供了丰富的C#学习路径和教程&#xff08;如下图&#xff09;&#xff0c;对我们入门到高级应用开发都…

汇总:五个开源的Three.js项目

Three.js 是一个基于 WebGL 的 JavaScript 库&#xff0c;它提供了一套易于使用的 API 用来在浏览器中创建和显示 3D 图形。通过抽象和简化 WebGL 的复杂性&#xff0c;Three.js 使开发者无需深入了解 WebGL 的详细技术就能够轻松构建和渲染3D场景、模型、动画、粒子系统等。 T…

【自动装箱以及包装类的缓存】⭐️通过具体案例看下每种包装类的不同结果

目录 前言 一、自动装箱与拆箱&#xff08;以 Integer 包装类为例&#xff09; 二、再来看看几个示例 ​编辑三、Double ,Float 类型亦是如此吗&#xff1f; 前言 小伙伴们大家好&#xff0c;日常使用业务层方面的代码居多&#xff0c;但也不可忘了基本的一些代码格式以及原…

npm淘宝镜像源更新

目录 前情提要&#xff1a; 背景&#xff1a; 镜像源更新&#xff1a; 清楚缓存&#xff1a; 直接切换镜像源&#xff1a; 注&#xff1a;npm 补充&#xff1a; 错误解释&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 2024 /1 /22 &#xff0c;registry.npm…

理解游戏服务器架构-逻辑底层架构

目录 前言 什么是逻辑底层架构 逻辑底层架构的职责 1&#xff09;Thread-线程 线程管理 线程通讯 线程安全锁机制 2&#xff09;Network-网络 网络模型 网络消息协议 断线重连 网络安全 防范重复消息 防范篡改消息内容 防范篡改内存数据 网络承载 3&#xff0…

HarmonyOS 应用开发之FA模型启动Stage模型UIAbility

本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。 PageAbility启动UIAbility 在PageAbility中启动UIAbility和在PageAbility中启动PageAbility的方式完全相同。 import featureAbility from ohos.ability.featureAbility; import { BusinessError } from oh…

阿里云2核4G服务器租用价格,支持多少人在线?

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

YOLOv9改进策略 :主干优化 | ConvNeXtV2:适应自监督学习,让 CNN “再一次强大”?

💡💡💡本文改进内容:完全卷积掩码自编码器框架 ConvNeXt V2,它显著提高了纯convnet在各种识别基准上的性能,包括ImageNet分类,COCO目标检测和ADE20k分割。还提供了各种尺寸的预训练ConvNeXt v2模型,从而在ImageNet上具有76.7%精度的3.7M Atto model和88.9%精度的650…

理解游戏服务器架构-部署架构

目录 前言 我所理解的服务器架构 什么是否部署架构 部署架构的职责 进程业务职责 网络链接及通讯方式 与客户端的连接方式 服务器之间连接关系 数据落地以及一致性 数据库的选择 数据访问三级缓存 数据分片 读写分离 分布式数据处理 负载均衡 热更新 配置更新 …

Unity 基于Rigidbody2D模块的角色移动

制作好站立和移动的动画后 控制器设计 站立 移动 角色移动代码如下&#xff1a; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class p1_c : MonoBehaviour {// 获取动画组件private Animator …

zabbix主动发现,注册及分布式监控

主动发现 结果 主动注册 结果 分布式监控 服务机&#xff1a;132 代理机&#xff1a;133 客户端&#xff1a;135 代理机 数据库赋权&#xff1a; 代理机配置 网页上配置代理 客户端配置 网页上配置主机 重启代理机服务 网页效果

牛客周赛 Round 38(A,B,C,D,E,F,G)

比赛链接 官方讲解&#xff08;不分P不分段直接两小时怼上来是坏文明 &#xff09; 这场的题很棒&#xff0c;思维有难度&#xff0c;考察的知识点广泛&#xff0c;有深度&#xff0c;很透彻。感觉学到了很多。建议补题。 A 小红的正整数自增 思路&#xff1a; 签到。 可以…

使用 golang 以及 Gin 框架,将上传的图片在不保存至本地的情况下添加水印,并上传至阿里云 OSS

正如标题所述&#xff0c;使用golang对上传图片添加水印&#xff0c;以及将图片上传到阿里云OSS&#xff0c;网上一搜索&#xff0c;便有你想要的结果了&#xff0c;可是&#xff0c;他们却先将上传图片添加水印后保存在本地&#xff0c;而后再将添加了水印的图片上传到阿里云O…

【I.MX6ULL移植】Ubuntu-base根文件系统移植

1.下载Ubuntu16.04根文件系统 http://cdimage.ubuntu.com/ 1 2 3 4 5 2.解压ubuntu base 根文件系统 为了存放 ubuntu base 根文件系统&#xff0c;先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录&#xff0c;命令如下&#xff1a; 【注意&…

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM 3D-GS 与 Nerf 和 Gaussian Splatting1. 开山之作 Nerf2. 扛鼎之作 3D Gaussian Splatting2.1 什么是3D高斯?高斯由1D推广到3D的数学推导2.2 什么是光栅化?2.3 什么是Splatting?2.4 什么是交叉优化?…