zabbix-proxy配置及邮件配置

一、下载配置server,agent端

下载zabbix-server,server客户端

# 备注:zabbix源不能和epel源同时存在,要给epel源注释了
# 更新下载zabbix源
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

# 更新yum仓库
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum repolist

# 安装
安装 zabbix rpm 源,鉴于国内网络情况,使用阿里云 zabbix 源
# 更换源
[root@zabbix-server ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

# 下载软件包
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
[root@zabbix-server ~]# yum install -y zabbix-get.x86_64  #安装zabbix命令工具
Shell
安装数据库

# 1、安装数据库
# 安装 mariadb.repo
[root@zabbix-server ~]# yum install -y mariadb mariadb-server
# 2、启动数据库
[root@zabbix-server ~]# systemctl restart mariadb
[root@zabbix-server ~]# systemctl enable mariadb
[root@zabbix-server ~]# mysqladmin -u root password 'zabbix'    #设置root密码

# 3、创建数据库并授权账号
[root@zabbix-server ~]# mysql -uroot -p'zabbix'
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  # 创建zabbix数据库
MriaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';                                        # 注意授权网段
MariaDB [(none)]> flush privileges;           # 刷新授权
MariaDB [(none)]> \q   #退出

# 4、导入数据
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:                   #输入密码
Shell
配置 server 端

[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
 DBHost=localhost            #数据库对外的主机
 DBName=zabbix               #数据库名称
 DBUser=zabbix               #数据库用户
 DBPassword=zabbix           #数据库密码
 
 # 启动zabbix-server
 [root@zabbix-server zabbix]# systemctl start zabbix-server
[root@zabbix-server zabbix]# systemctl enable zabbix-server

# 验证10051端口有没有起来
[root@zabbix-server zabbix]# netstat -lntp | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1574/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      1574/zabbix_server

# 配置 web GUI
1.启用zabbix前端源,修改vim /etc/yum.repos.d/zabbix.repo,将[zabbix-frontend]下的 enabled 改为 1
[root@zabbix-server zabbix]# vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
gpg--》都改成0

2.安装 Software Collections,便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4 过低
[root@zabbix-server zabbix]# yum install centos-release-scl -y
3.安装 zabbix 前端和相关环境
[root@zabbix-server zabbix]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y

# 为Zabbix前端配置PHP
[root@zabbix-server ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf   #设置时区
#里面基本不用动。只需要添加一行时区即可
php_value[date.timezone] = Asia/Shanghai       ---添加如下

# 启动`httpd`服务
[root@zabbix-server ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zabbix-server ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

#验证:打开游览器访问
`192.168.246.228/zabbix`,第一次访问时需要进行一些初始化的设置
# 初始账户及密码
user=Admin
password=zabbix
Shell
配置agent端

# agent端可以是多台
[root@zabbix-node1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix-node1 ~]# yum install zabbix-agent zabbix-sender -y

# 备份配置文件
[root@zabbix-node1 ~]# cd /etc/zabbix/
[root@zabbix-node1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix-node1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-node1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.conf.bak  zabbix_agentd.d

# 修改配置文件
[root@zabbix-node1 zabbix]# vim zabbix_agentd.conf   ----修改如下
Server=192.168.246.228 zabbix服务器的地址 
ServerActive=192.168.246.228 主动模式 zabbix-server-ip 
Hostname=zabbix-node1 
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符,是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.

# 启动agent服务
[root@zabbix-node1 zabbix]# systemctl start zabbix-agent
[root@zabbix-node1 zabbix]# systemctl enable zabbix-agent

# 验证10050端口有没有起来
[root@zabbix-node1 zabbix]# netstat -lntp | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      9000/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      9000/zabbix_agentd
Shell
配置完成,此时可以在网址上做配置设置了

修改语言--中文版

点开Administration-->Users-->Admin-->Language(选择chinese)
# 现在界面是中文版的了
Shell
界面创建流程

监控方面,先创建一个主机(host),在创建一个监控项(item)用于采集数据。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)
Shell
二、自定义key

# 修改配置文件,把查找参数的命令设为用户参数
[root@zabbix-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-node1 zabbix_agentd.d]# vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
UserParameter=定义的key,查看的命令语句

# 重启agent服务
[root@zabbix-node1 zabbix_agentd.d]# systemctl restart zabbix-agent.service

# 在zabbix-server 端,查询
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.used"
如果可以验证到结果,就可以到web界面去设置参数,启动监控了
Shell
# 也可以指定参数--传参
[root@zabbix-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-node1 zabbix_agentd.d]# vim memory_usage.conf
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'     --添加到文件中注意去掉反斜杠

# 重启agent服务
[root@zabbix-node1 zabbix_agentd.d]# systemctl restart zabbix-agent.service

# 在zabbix-server 端,查询使用这个用户参数的key
传参:
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[MemTotal]"
999696
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Cache]"
243832
[root@zabbix-server fonts]# zabbix_get -s 192.168.246.226 -p 10050 -k "memory.stats[Buffer]"
2108
Shell
三、网络发现(自动发现)

# 安装agent 段的包
[root@zabbix-node2 ~]# yum -y install zabbix-agent zabbix-sender

# 设置agent 配置,可以把之前设置好的node1的配置传过来
[root@zabbix-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Hostname=zabbix-node2 #只需修改hostname

# visudo赋予权限
[root@zabbix-node2 ~]# visudo       #修改sudo的配置,添加如下信息
#Defaults !visiblepw

93 zabbix ALL=(ALL) NOPASSWD: ALL

# 启动服务
[root@zabbix-node2 ~]# systemctl start zabbix-agent

# 在server端验证
[root@zabbix-server ~]# zabbix_get -s 192.168.246.227 -p 10050 -k "system.hostname"
zabbix-agent-none2

# 到web网址界面操作
配置--自动发现--自动发现规则--。。。
Shell
四、zabbix-proxy分布式监控

# 需要对时,保证两台机器的时间一致
- ntpdate 192.168.198.156 制作时间服务器
[root@zabbix-server ~]# yum install -y ntp
[root@zabbix-server ~]# vim /etc/ntp.conf  #有4行server的位置,把那4行server行注释掉,填写以下两行
server 127.127.1.0 # local clock
fudge  127.127.1.0 stratum 10
[root@zabbix-server ~]#  systemctl start ntpd
[root@zabbix-server ~]#  systemctl enable ntpd
同步时间
[root@zabbix-proxy ~]# yum install -y ntpdate
[root@zabbix-proxy ~]# ntpdate 192.168.198.156

[root@zabbix-node2 ~]# yum install -y ntpdate
[root@zabbix-node2 ~]# ntpdate 192.168.198.156

- 关闭防火墙,selinux
- 设置主机名 hostnamectl set-hostname zabbix-proxy
[root@localhost ~]# hostnamectl set-hostname zabbix-proxy

- vim /etc/hosts 每个机器都设置hosts,以解析主机名;
监控端
[root@zabbix-server ~]# cat /etc/hosts
192.168.198.156 zabbix-server
192.168.198.158 zabbix-node2
192.168.198.159 zabbix-proxy

代理端
[root@zabbix-proxy ~]# cat /etc/hosts
192.168.198.156 zabbix-server
192.168.198.158 zabbix-node2
192.168.198.159 zabbix-proxy

被监控端
[root@zabbix-node2 ~]# cat /etc/hosts
192.168.198.156 zabbix-server
192.168.198.158 zabbix-node2
192.168.198.159 zabbix-proxy

| 机器名称      | IP配置          | 服务角色  |
| ------------- | --------------- | --------- |
| zabbix-server | 192.168.198.156 | 监控      |
| zabbix-node1  | 192.168.198.157 | 被监控端  |
| zabbix-node2  | 192.168.198.158 | 被监控端  |
| zabbix-proxy  | 192.168.198.159 | 代理proxy |

# 在 zabbix-proxy 上配置 mysql
[root@zabbix-proxy ~]# yum install -y mariadb mariadb-server
[root@zabbix-proxy ~]# systemctl start mariadb
[root@zabbix-proxy ~]# mysqladmin -uroot password 'zabbix'
[root@zabbix-proxy ~]# mysql -uroot -p'zabbix'
MariaDB [(none)]> create database proxydb character set 'utf8';
MariaDB [(none)]> grant all on proxydb.* to 'proxy'@'localhost' identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q

# 在 zabbix-proxy上下载zabbix 相关的包,主要是代理proxy的包
[root@zabbix-server ~]# scp /etc/yum.repos.d/zabbix.repo 192.168.198.159:/etc/yum.repos.d/
编辑zabbix.repo源将里面的gpgcheck关闭
[root@zabbix-proxy ~]# yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender

# 将zabbix-proxy-mysql包里面的数据导入数据库中
[root@zabbix-proxy ~]# cp /usr/share/doc/zabbix-proxy-mysql-5.0.3(版本号)/schema.sql.gz ./
[root@zabbix-proxy ~]# ls
anaconda-ks.cfg  schema.sql.gz
[root@zabbix-proxy ~]# gzip -d schema.sql.gz 
[root@zabbix-proxy ~]# ls
anaconda-ks.cfg  schema.sql
[root@zabbix-proxy ~]# mysql -uroot -p proxydb < schema.sql 
Enter password:

# 配置proxy端
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
# proxyMode=0  #默认是主动模式(0是主动模式,1是被动模式)
Server=192.168.198.156        # server端 的IP
ServerPort=10051             # server端 的端口

Hostname=zabbix-proxy        # 主机名
ListenPort=10051             # proxy自己的监听端口
EnableRemoteCommands=1       # 允许远程命令
LogRemoteCommands=1          # 记录远程命令的日志

# 数据的配置
DBHost=localhost
DBName=proxydb
DBUser=proxy
DBPassword=zabbix

ConfigFrequency=30      # 多长时间,去服务端拖一次有自己监控的操作配置;为了实验更快的生效,这里设置30秒,默认3600s
DataSenderFrequency=1   # 每一秒向server 端发一次数据,发送频度

# 启动proxy服务
[root@zabbix-proxy ~]# systemctl start zabbix-proxy

[root@zabbix-proxy ~]# netstat -lntp | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      15798/zabbix_proxy  
tcp6       0      0 :::10051                :::*                    LISTEN      15798/zabbix_proxy

# 配置agent端允许proxy代理监控
[root@zabbix-agent ~]#  vim /etc/zabbix/zabbix_agentd.conf---添加proxy的ip地址
Server=192.168.198.156,192.168.198.159
ServerActive=192.168.198.156,192.168.198.159
Hostname=zabbix-node2
[root@zabbix-agent ~]#  systemctl restart zabbix-agent #启动服务

# 在web网址上配置
管理--agent代理程序--agent代理程序(要与配置文件中应以的一样)--添加--配置--主机--选好主机名称--已启用那里打开zabbix proxy
Shell
五、配置发送邮件

##server服务器端
安装MUA软件:mailx
[root@zabbix-server ~]#  yum install mailx -y
[root@zabbix-server ~]# mailx -V 
12.5 7/5/10
注:使用新的方式--利用公网邮件服务器发送报警,需要关闭postfix服务
[root@zabbix-server ~]# systemctl stop postfix

# 配置公网邮箱信息:
[root@zabbix-server ~]# vim /etc/mail.rc  ---在最后添加如下:
set from=12345678@163.com(邮箱地址) 
 set smtp=smtp.163.com(smtp服务器) 
 set smtp-auth-user=12345678@163.com(用户名) 
 set smtp-auth-password=qf123456(这里是邮箱的授权密码) 
 set smtp-auth=login
 
 # 阿里云服务器--需要配置证书
 # 一、请求数字证书
mkdir -p /root/.certs/ ####创建目录,用来存放证书
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt ####向163请求证书
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt ####添加一个SSL证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt ####添加一个Global 证书到证书数据库中
certutil -L -d /root/.certs ####列出目录下证书

# 二、配置发件人
[root@zabbix-server ~]# vim /etc/mail.rc  ---在最后添加如下:
set bsdcompat
set from=xxxxxx@163.com
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=xxxxxx@163.com
set smtp-auth-password=xxxxxxx #此密码为第三方登录密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs

# 三、测试
echo “test” | mail -s “zabbix” xxxxxxx@qq.com
登陆收件人邮箱查看
看似成功但是linux中报错:证书不被信任

# 四、解决最后一个问题-----证书不被信任
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt

# 成功标志:
Notice: Trust flag u is set automatically if the private key is present.


## 发送邮箱方式
方式1:echo "正文内容" | mailx -s "邮件标题" 收件箱Email
方式2:mailx -s "邮件标题" 收件箱Email,回车按CTRL+D发送
参数:
-v :显示发送的详细信息

手动发送邮件测试:
[root@zabbix-server ~]# mailx -v -s 'hello' 'zhangsan@163.com'
手写邮件内容 (回车,然后ctrl+D正常结束)
[root@zabbix-server ~]# mailx -v -s 'hello' 'zhangsan@163.com'
nihao
EOT
Resolving host smtp.163.com . . . done.
Connecting to 123.126.97.2:smtp . . . connected.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
>>> EHLO zabbix-server
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN 
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFeF38eUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
>>> AUTH LOGIN
334 dXNlcm5hbWU6
>>> bHd4MTgzNjYwMTkzNTZAMTYzLmNvbQ==
334 UGFzc3dvcmQ6
>>> bHd4MTgzNjYwMTkzNTY=
235 Authentication successful
>>> MAIL FROM:<lwx18366019356@163.com>
250 Mail OK
>>> RCPT TO:<lwx18366019356@163.com>
250 Mail OK
>>> DATA
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Mail OK queued as smtp2,GtxpCgDXkqTEFERdskSAAA--.825S2 1564742867
>>> QUIT
221 Bye

# 此时终端配置完成,在web网址上操作
配置 zabbix 的邮件报警功能需要以下三个角色的参与
注:脚本名称任意,存放于/usr/lib/zabbix/alertscripts ----路径可以改

名称:sendmail                   //名称任意
类型:脚本
脚本名称:sendmail.sh      
脚本参数:                          //一定要写,否则可能发送不成功
    {ALERT.SENDTO}              //照填,收件人变量
    {ALERT.SUBJECT}             //照填,邮件主题变量,变量值来源于‘动作’中的‘默认接收人’
    {ALERT.MESSAGE}           //照填,邮件正文变量,变量值来源于‘动作’中的‘默认信息’

配置完成后,不要忘记点击存档,保存你的配置。       

# 步骤
管理--报警媒介类型--名称(邮件报警)--类型(脚本)--脚本名字(要和终端上脚本名称的一致)--脚本参数(3个,上面模板)--添加

# 修改zabbix服务端配置文件&编写脚本:指定脚本的存储路径:
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts  #打开注释,核对路径,也可以修改路径

`编写邮件脚本:`
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim sendmail.sh   
#!/bin/sh 
#export.UTF-8
echo "$3" | sed s/'\r'//g | mailx -s "$2" $1

$1:接受者的邮箱地址:sendto
$2:邮件的主题:subject
$3:邮件内容:message

# 修改权限 及更用户和组:
[root@zabbix-server alertscripts]# chmod u+x sendmail.sh && chown zabbix.zabbix sendmail.sh

# 返回web界面操作
管理--用户--Admin--报警媒介--添加类型(邮件报警)--填写收件人--点击更新------触发器(填写名称,严重性,表达式)--点添加------动作--点触发动作--填写名称--触发条件(触发器)--点操作--选择时间--标题及内容(填写西面的模板)

默认信息:邮件的主题

Problem:{TRIGGER.NAME}

故障恢复: {TRIGGER.NAME}

主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目:{TRIGGER.KEY1} 
事件ID:{EVENT.ID}
Shell
六、配置钉钉报警

# 钉钉需要创建公司名称,建团队群
Shell
 

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

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

相关文章

c#委托学习笔记1

委托三步骤 第一步&#xff1a;定义委托 //第一步&#xff1a;1 声明委托(定义委托) //对于声明委托的解释如下&#xff1a; //解释a&#xff1a;函数指针 //解释b&#xff1a;委托就是定义函数的形状&#xff08;形态&#xff09; // 即&#xff1a;返回值类型&#x…

【AI-1】卷积神经网络

分享些AI的知识点&#xff0c;主要聊一下深度学习中的卷积神经网络。 机器学习分哪些分支&#xff1f; 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a;在监督学习中&#xff0c;模型通过使用带有标签的训练数据来学习输入和输出之间的映射关系。监督学习的…

strace 用法

按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互&#xff0c;比如系统调用、信号传递、进程状态变更等。 常用用法&#xff1a;查看文件的系统调用 -o 文件名 将跟踪输出写入指定的文件而不是st…

宝塔面板 -- 创建第一个自己的网站

文章目录 前言 一、安装宝塔面板 二、注册宝塔面板 三、安装nginx 四、第一个hello world运行 五、总结 文章目录 前言一、安装宝塔面板二、注册宝塔面板三、安装nginx四、第一个hello world运行五、总结 前言 阿里云最近对在校大学生免费每人赠送一台服务器&#xff0c…

展望2023年CSDN博客之星评选

目录 1 前言2 博客的意义3 人工智能对博客的影响4 AI 技术下的成长与分享5 技术的探索6 博客之星评选对于技术人的激励作用7 结语 1 前言 当我们回顾过去&#xff0c;博客不仅仅是一种记录生活、分享经验的方式&#xff0c;更是一个见证自我成长与进步的平台。站在2023年度 CS…

uniapp实战 -- 个人信息维护(含选择图片 uni.chooseMedia,上传文件 uni.uploadFile,获取和更新表单数据)

效果预览 相关代码 页面–我的 src\pages\my\my.vue <!-- 个人资料 --><view class"profile" :style"{ paddingTop: safeAreaInsets!.top px }"><!-- 情况1&#xff1a;已登录 --><view class"overview" v-if"membe…

离散型制造企业为什么要注重MES管理系统的实施

离散型制造企业经常面临三个核心问题&#xff1a;生产什么、生产多少以及如何生产。尽管许多企业都实施了ERP系统&#xff0c;但仍然绕不开MES管理系统的话题。本文将从三个方面详细解释为什么离散型企业需要实施MES管理系统。 一、生产线经常出现的问题 在离散型企业中&#…

Leetcode 45 跳跃游戏 II

题意理解&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。 还是从初始坐标i0的位置到达最后一个元素&#xff0c;但是问题不是能不能跳到&#xff0c;而是最少几步能跳到最后一个元素。 目标&…

Javascript:DOM对象

Javascript&#xff1a;DOM-获取对象 DOM与JavaScript的关系什么是DOMDOM相关概念DOM 树DOM 节点DOM对象 获取DOM对象通过CSS选择器来获取DOM对象其他方式 操作DOM对象控制DOM对象内容控制DOM对象属性控制HTML标签属性控制CSS样式通过style属性操作CSS通过类名(className) 操作…

详解KMP算法

KMP算法应该是每一本《数据结构》书都会讲的&#xff0c;算是知名度最高的算法之一了&#xff0c;但很可惜&#xff0c;我大二那年压根就没看懂过~~~ 之后也在很多地方也都经常看到讲解KMP算法的文章&#xff0c;看久了好像也知道是怎么一回事&#xff0c;但总感觉有些地方自己…

【QT八股文】系列之篇章1 | QT的基础知识及事件/机制

【QT八股文】系列之篇章1 | QT的基础知识及事件/机制 前言0. 基础Qt/PyQt5介绍/关联Qt的优缺点&#xff08;为什么要用qt来做界面&#xff09;Qt 的核心机制请简要介绍一下Qt中的主窗口&#xff08;MainWindow&#xff09;类&#xff0c;它有哪些重要的函数和成员变量&#xff…

【ArduinoOTA无线(OTA)更新的EASY指南】

【ArduinoOTA无线&#xff08;OTA&#xff09;更新的EASY指南】 1. 前言2. 了解 ESP32 的 ArduinoOTA3. 无线更新案例4. ArduinoOTA入门5. 安装必备组件6. 设置硬件7. ESP32 OTA 的最低代码8. 按照我们的流程学习Arduino编程➜9. 这对OTA来说非常重要10. 通过无线方式将草图上传…

携手河南恩坤德,共创养殖新篇章

在这个充满机遇与挑战的时代&#xff0c;养殖业正在经历一场前所未有的变革。作为养殖户&#xff0c;您需要一个能够与您共同应对变革、共创未来的合作伙伴。河南恩坤德农业正是这样一个值得信赖的伙伴&#xff0c;我们携手共创养殖新篇章。 河南恩坤德农业以客户需求为导向&am…

Registry存储helm OCI图像 和自签名证书

Registry存储helm OCI图像 和自签名证书 官网 # https://github.com/distribution/distribution## helm https://helm.sh/zh/docs/topics/registries/ 先决条件 helm oci 模式是基于 https上传,所以我们能需要对仓库添加https,并添加证书的信任。 生成Nginx的自签名证书 文章…

Ai图片处理

Ai也可以直接导入PS文件&#xff0c;只不过需要进行一个相关的选择&#xff0c;一般来说是将图层转化为对象 第二个为图层拼合为单个图像&#xff08;不常用&#xff09; 第三个则是将隐藏的图片也进行显示 如果你觉得图片的信息的过少好想插入其他的图片&#xff0c;可以选择…

【mongoose】 Model.create() no longer accepts a callback 报错解决

在最新版的 mongoose 操作 MongoDB 数据库的时候&#xff0c;当我们插入一条数据时候&#xff0c;会报错 &#xff1a;Model.create() no longer accepts a callback&#xff0c;看了很多文章都说是&#xff0c;版本太高&#xff0c;都妥协选择了降低回旧版本&#xff0c;但我就…

消息队列之关于如何实现延时队列

一、延时队列的应用 1.1 什么是延时队列&#xff1f; 顾名思义&#xff1a;首先它要具有队列的特性&#xff0c;再给它附加一个延迟消费队列消息的功能&#xff0c;也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的&#xff0c;尤其像…

设计模式之-模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

【matlab】绘制竖状单组渐变柱状图

【matlab】绘制竖状单组渐变柱状图 % matlab绘制渐变柱状图 clear;clc;close all; x1:100; a[]; for i1:length(x) if mod(i,2)0 i-i; end a[a i]; end close all; b0.8; for nm3:69 cmapload([‘D:\m…

机器学习笔记 - Swish激活函数的定义和优势

一、Swish激活函数简述 首先,Swish 是像 ReLU、sigmoid 和 tanh 一样的非线性函数,使神经网络能够对输入和输出之间的复杂关系进行建模。非线性函数对于深度学习的工作至关重要,因为它们能够捕获和表示复杂的模式。 与 ReLU 等其他常用激活函数相比,Swish 具有独特的形状。…