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.mzph.cn/news/782477.shtml

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

相关文章

Linux内核之Binder驱动container_of进阶用法(三十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

小小狠招:巧妙使用HANA数据库的jdbc driver

SAP旗下的HANA数据库&#xff0c;实际上是分为两个系列进行发布&#xff0c;一种是基于本地部署的称之为HANA Platform。另一种是面向Cloud平台的&#xff0c;称之为HANA Cloud。 在实际使用当用&#xff0c;因为两者基本上共用同一代码库&#xff0c;除个别地方略有差异以外&…

车载电子电器架构 —— 电气架构释放检查

车载电子电器架构 —— 电气架构释放检查 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

Sql注入---基础

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Sql注入概述 攻击者通过构造恶意的SQL查询语句&#xff0c;将其注入到应用程序的数据库查询中&#xff0c;以执行未经授权的操作或者获取敏感信息。 假设如下场景&#xff0c;当你想要知道对…

【c++】简单的日期计算器

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好啊&#xff0c;在我们学习了默认成员函数后&#xff0c;我们本节内容来完成知识的实践&#xff0c;来实现一个简易的日期计算器 目录 头文件声明函数函数的实现1.全缺省默认构…

每日一博 - 关于日志记录的最佳实践

文章目录 概述选择合适的日志等级打印函数的入参、出参打印日志对象要做判空处理&#xff0c;避免阻断流程推荐使用 Slf4j不用e.printStackTrace()打印日志低级别的日志输出&#xff0c;必须进行日志级别开关判断不打印重复日志打印全部的异常信息&#xff0c;方便定位问题核心…

cocos2.x => node 属性修改

简介 与节点属性相关的几个核心变量_trs、_matrix、_worldMatrix、_localMatDirty、_worldMatDirty。 _trs&#xff1a;存储节点的position、rotation、scale _matrix&#xff1a;存储节点的缩放、位移、旋转三者合一的变化矩陈&#xff08;仿射矩陈&#xff09; _worldMat…

python多方式操作elasticsearch介绍

python多方式操作elasticsearch介绍 1. requests模块操作ES ​ requests 是一个 Python HTTP 库&#xff0c;它简化了发送 HTTP 请求和处理响应的过程。通过 requests 模块&#xff0c;开发人员可以轻松地与 Web 服务进行通信&#xff0c;包括获取网页内容、执行 API 请求等。…

Qt for WebAssembly 环境搭建 - Windows新手入门

Qt for WebAssembly 环境搭建 - Windows新手入门 一、所需工具软件1、安装Python2、安装Git2.1 注册Github账号2.2 下载安装Git2.2.1配置Git&#xff1a;2.2.2 配置Git环境2.2.3解决gitgithub.com: Permission denied (publickey) 3 安装em编译器 二、Qt配置编译器三、参考链接…

怎么让ChatGPT批量写作原创文章

随着人工智能技术的不断发展&#xff0c;自然语言处理模型在文本生成领域的应用也日益广泛。ChatGPT作为其中的佼佼者之一&#xff0c;凭借其强大的文本生成能力和智能对话特性&#xff0c;为用户提供了一种高效、便捷的批量产出内容的解决方案。以下将就ChatGPT批量写作内容进…

厦门攸信技术亮相新技术研讨会,展现物流自动化解决方案新高度!

今日&#xff0c;厦门攸信信息技术有限公司受邀参加了一场备受行业关注的电子制造高端盛会——一步步新技术研讨会&#xff0c;凭借卓越的智能制造与物流自动化技术在会议中大放异彩。作为一家引领行业发展的企业&#xff0c;厦门攸信技术不仅展示了其深厚的技术底蕴&#xff0…

算法系列--动态规划--背包问题(4)--完全背包拓展题目

&#x1f495;"这种低水平质量的攻击根本就不值得我躲&#xff01;"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

《web应用技术》第一次课后练习

上机任务&#xff08;利用好chatgpt&#xff0c;文心一言等工具。&#xff09;&#xff1a; 1、下载软件&#xff0c;并安装。相关安装文件已上传至群文件。 JDK,TOMCAT&#xff0c;IDEA 2、学会用记事本编写jsp文件&#xff0c;并放进tomcat的相关目录下&#xff0c;运行。 …

使用Windows自带服务(BitLocker)加密U盘

第一步&#xff1a;启用 BitLocker 服务 1.1快捷键&#xff1a;WinR 调出运行框&#xff0c;输入services.msc 1.2找到服务列表中的BitLocker Drive Encryption Service&#xff0c;启动此项 第二步&#xff1a;加密U盘 把你的U盘插入电脑&#xff0c;打开“我的电脑”&#…

EFCore的空迁移(EFCore操作已存在的数据库表,不影响其中的数据)

背景&#xff1a;EFCore默认的会自动创建数据表&#xff0c;但是有时又是DBFirst&#xff0c;数据库写好了要用现成的表。这个时候就需要进行一些特殊的操作了 1、写出跟要对接数据库的实体类 比如我的表是这样创建的 create table mail_test (user_id bigint auto_increment …

OSCP靶场--Twiggy

OSCP靶场–Twiggy 考点(CVE-2020-11651[RCE]) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.216.62 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-30 06:43 EDT Nmap scan report for 192.168.216.62 Host i…

基础拓扑排序

前言 拓扑排序是一种针对“有向无环图”的算法&#xff0c;用于解决一些有“依赖关系”的问题。 拓扑排序保证了当处理到某个电时&#xff0c;其所有的如电都已经处理过了。 例如右边这个图&#xff0c;拓扑序可以保证处理点2之前&#xff0c;点4和点6都处理过了、处理点3之…

IDEA的使用(概念,安装,配置,)以及什么是字符集,模版

目录 Intellij IDEA IDE的概念 IntelliJ IDEA的安装 IntelliJ IDEA的使用 基本配置 JDK配置 创建Module 基本用法 字体配置 主题配置 字符集 设置IDEA默认字符集 注释模板 字符集 字符集简介 常见字符集 Intellij IDEA 我们不可能一直使用记事本之类变成&#…

何恺明重提十年之争——模型表现好是源于能力提升还是捕获数据集偏置?

想象一下&#xff0c;如果把世界上所有的图片都找来&#xff0c;给它们放到一块巨大的空地上&#xff0c;其中内容相似的图片放得近一些&#xff0c;内容不相似的图片放得远一些&#xff08;类比向量嵌入&#xff09;。然后&#xff0c;我随机地向这片空地撒一把豆子&#xff0…

【C#】知识点速通

前言&#xff1a; 笔者是跟着哔站课程&#xff08;Trigger&#xff09;学习unity才去学习的C#&#xff0c;并且C语言功底尚存&#xff0c;所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解&#xff0c;然后在后期unity学习过程中加以深度学习。如需完善的C#知识…