Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)

news2024/11/28 4:34:51

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

Zabbix 企业级高级应用
技能目标:
- 掌握 Zabbix 自定义 key
- 掌握 Zabbix 监控 MySQL 主从
- 掌握 Zabbix 创建触发器
- 掌握 Zabbix 监控网站关键词
Zabbix简介
Zabbix 是一个开源的 IT 基础设施监控解决方案,它提供了对网络设备、服务器、应用程序等多种对象的监控功能。在企业级应用中,Zabbix 不仅能够满足基本的监控需求,还支持高级功能,如自定义监控项、触发器配置、以及复杂的告警和通知机制等,这些功能对于需要精细管理和优化 IT 基础设施的企业来说至关重要。因此,Zabbix 能够准确反映其在企业环境中的高级应用和复杂功能。

3.1 案例分析

3.1.1 案例概述

现阶段公司有很多服务,包括 Nginx-LBMySQL 主从等一些重要的服务,Zabbix

key 值不能满足现有的业务,所以需要添加自定义 key 值来监控 Nginx 关键词检索、

MySQL 主从状态,并把服务的工作状态添加进邮件就能够邮件报警及时发现问题。

3.1.2 案例前置知识点

本案例主要介绍 Zabbix 的自定义 key 值来监控服务状态。

1. Zabbix 自定义 key 值

Zabbix 有很多自带的 item key,但是自带的 key 值不能满足工作中其他重要的业务需

求,例如:MySQL 主从、Nginx 详细状态等业务的监控。

自 定 义 key 值 监 控 项 需 要 在 Agent 端 开 启 UnsafeUserParameters 参 数 、 在

UserParameter 参数中定义参数类型中指定脚本或直接填写 shell 命令,并在 Web 管理界

面创建模板,添加监控项及触发器,再关联到主机来达到监控服务的效果。

2. 触发器

Zabbix 触发器作用是监控服务报警。当服务达到自定义的值时,触发设定的警告,从

而实现邮件报警等操作。

3. 监控网站关键词

在生产环境中可能有论坛或者首页上出现违反国家网络信息安全规定的词语,例如黄赌

毒等词语。为了避免这些违法事情发生,需要运维人员定义关键词检索,及时发现并处理。

3.1.3 案例环境

1. 本案例环境

本案例环境如表 3-1 所示。

3-1 本案例的实验环境

主机

操作系统

主机名/IP 地址

主要软件及版本

服务器

CentOS 7.3

zabbix/192.168.9.168

Zabbix-Server

服务器

CentOS 7.3

mysql/192.168.9.237

Zabbix-AgentMySQL

服务器

CentOS 7.3

nginx/192.168.9.229

Zabbix-AgentNginxMySQL

2. 案例拓扑图

本案例实验使用的服务器之间关系,如图 3.1 所示。

3.1 案例拓扑图

3. 案例需求

1)创建自定义 key 值监控项。

2)使用 Zabbix 监控 MySQL 主从状态。

3)创建报警触发器。

4)使用 Zabbix 监控网站关键词。

4. 案例实现思路

1)安装 Zabbix

2)自定义 key 值监控项。

3)添加 MySQL 主从状态监控项。

4)创建报警触发器。

5)利用 Zabbix 监控网站关键词。

3.2 案例实施

完成本案例,需要在 Agent 端开启自定义 key 值,添加被监控模块,添加监控脚本,然

后在 Server 端执行测试,并完成 key 值相关配置。

3.2.1 Zabbix 自定义 key 值

自定义 key 值是在 Zabbix-Agent 端操作,本案例服务器需要将 Zabbix-Server 服务端、

Zabbix-Agent 客户端软件安装到服务端,并且自定义监控 Nginx 服务。所需软件安装方法

在之前章节都有讲解,这里不再赘述。

1. 客户端开启自定义 key 值

使用自定义 key 值需要在 Agent 端开启支持。

[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.conf

......

UnsafeUserParameters=1

//去除#号设置值为 1,开启

......

UserParameter=nginx_status[*],/etc/zabbix/nginx-status.sh $1

//去掉注释#号,添写自定义脚本

路径,nginx_status key 值名称。[*]里写脚本参数,没有可以不写。/etc/zabbix/nginx-status.sh $1

路径为脚本所在路径

2. 添加 Nginx 模块支持

下面添加 Nginx 的状态模块和访问权限。

[root@nginx ~]# vim /etc/nginx/nginx.conf

......

location /nginx_status {

//添加 nginx 状态模块

stub_status on;

access_log off;

allow 192.168.9.0/24;

//添加权限

allow 127.0.0.1;

deny all;

}

......

[root@nginx ~]# nginx –t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@nginx ~]# systemctl restart nginx

3. 测试是否能够获取到 Nginx 状态

执行如下命令测试是否能获取到 Nginx 的状态。

[root@nginx ~]# curl http://127.0.0.1/nginx_status

Active connections: 1

server accepts handled requests

16449 16449 15422

Reading: 0 Writing: 1 Waiting: 0

执行以上命令得到握手数(handled)为 16449,接受连接数(accepts)为 16449

因此,请求丢失数=(握手数-接受连接数)=16449-16449=0,可以看出本次状态显示没有丢

失请求。

上述命令执行结果中,可以获得对 Nginx 状态的解释如下:

Active connections

Nginx 正处理的活动链接数 1 个。

server

Nginx 启动到现在共处理了 16449 个连接。

accepts

Nginx 启动到现在共成功创建 16449 次握手。

handled requests

Nginx 总共处理了 15422 次请求。

Reading

Nginx 读取到客户端的 Header 信息数。

Writing

Nginx 返回给客户端的 Header 信息数。

Waiting

Nginx 已经处理完正在等候下一次请求指令的驻留链接,开启。

4. 添加监控脚本

在之前 zabbix_agentd.conf 中指定的路径下,创建 Nginx 状态监控脚本文件,用来监

Nginx 工作状态。Shell 脚本在之前章节有介绍,这里不再赘述脚本含义。

[root@nginx ~]# vim /etc/zabbix/nginx-status.sh

#/bin/bash

NGINX_PORT=80

NGINX_COMMAND=$1

nginx_active(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'

}

nginx_reading(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'

}

nginx_writing(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'

}

nginx_waiting(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'}

nginx_accepts(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'

}

nginx_handled(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'

}

nginx_requests(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'

}

case $NGINX_COMMAND in

active)

nginx_active;

;;

reading)

nginx_reading;

;;

writing)

nginx_writing;

;;

waiting)

nginx_waiting;

;;

accepts)

nginx_accepts;

;;

handled)

nginx_handled;

;;

7 页 共 27 requests)

nginx_requests;

;;

*)

echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"

esac

执行完上面配置后,重启 Zabbix-Agent,命令如下:

[root@nginx ~]# systemctl restart zabbix-agent

5. Zabbix_get 测试

重启 Zabbix-Agent,并在 Server 端使用 Zabbix_get 测试。

[root@nginx ~]# chmod +x /etc/zabbix/nginx-status.sh

[root@zabbix ~]# zabbix_get -s 192.168.9.229 -k nginx_status

USAGE:/etc/zabbix/nginx-status.sh {active|reading|writing|waiting|accepts|handled|requests}

//由于脚本中定义了参数,所以在测试的时候需要加入参数

[root@zabbix ~]#zabbix_get -s 192.168.9.229 -k nginx_status[accepts]

16733

6. Zabbix Web 端添加监控

登录 Zabbix Web 界面,点击“配置”按钮,再点击“模板”选项,然后点击“创建

模板”按钮后,弹出如图 3.2 所示界面。在此界面下,创建一个名为 Nginx 状态的模板,并

把需要监控的主机添加进去,输入模板名称,再输入可见的名称,添加被监控的组和主机,

完成模板创建。

3.2 配置模板信息

创建模板后添加监控项,点击“配置”,再点击“模板”选项后,找到刚刚创建名为 Nginx

状态的模板,点击“监控项”后,再点击“创建监控项”按钮,如图 3.3 所示。

3.3 创建监控项

添加监控项名称“nginx active”,再输入键值“nginx_status[active]”,如图 3.4 所示。

3.4 创建 nginx 监控项

然 后 , 把 剩 余 监 控 项 按 照 上 面 方 法 添 加 , 监 控 项 “nginx reading” 的 键 值 为

“nginx_status[reading]”,监控项“nginx writing”键值为“nginx_status[writing]”,监控项“nginx

waiting” 键 值 为 “nginx_status[waiting]” , 监 控 项 “nginx accepts” 键 值 为

“nginx_status[accepts]”,监控项“nginx handled”键值为“nginx_status[handled]”,监控项

“nginx requests”键值为“nginx_status[requests]”,如图 3.5 所示。

3.5 创建 nginx 监控项 2

7. 验证自定义监控

点击监测中按钮,点击最新数据选项。在名称中输入“Nginx”,点击应用按钮检索,

可以看到刚刚添加的 7 Nginx 监控项,如图 3.6 所示。

3.6 检索 nginx 监控项

点击图 3.6 中右侧的图形选项,即可看到图形化展示的数据,如图 3.7 所示。

3.7 查看图形展示数据

3.2.2 监控 MySQL 主从复制

监控 MySQL 主从复制,主要使用编写的脚本获取同步的状态是否为 yes。即下面
Slave_IO_RunningSlave_IO_Running两项状态均为“Yes”MySQL 主从的搭建在之
前章节已经讲解这里不再赘述。MySQL 主从复制状态检测命令,如下:
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
…………
Relay_Log_Pos: 408
Relay_Master_Log_File: mysql-bin.000031
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…………

1. MySQL-slave 端开启自定义 key 值并设置

MySQL-slave 端编辑 zabbix_agentd.conf 文件,添加自定义 key 值。
[root@mysql-slave ~]# vim /etc/zabbix/zabbix_agentd.conf
......
UnsafeUserParameters=1
......
UserParameter=mysql.slave[*],/etc/zabbix/mysql-slave.sh
......

2. 编写脚本获取数据

MySQL-slave 端编写脚本,并修改执行权限。
[root@mysql-slave ~]# vim /etc/zabbix/mysql-slave.sh
#!/bin/bash
/usr/bin/mysql
-uroot
-p123.com
-e
'show
slave
status\G'
|grep
-E
"Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
//注意实验时修改用户名密码。
[root@mysql-slave ~]# chmod +x mysql-slave.sh

3. Zabbix_get 测试

Server 端使用 Zabbix_get 测试。
[root@zabbix ~]#zabbix_get -s 192.168.9.237 -k mysql.slave[*]
2
//Slave_IO_Runningt Slave_SQL_Running 返回的 yes 值为 2

4. Web 端添加监控

登录 Zabbix Web 端,点击配置按钮,然后点击模板选项,再点击创建模板按钮,
进行创建模板操作,如图 3.8 所示。
3.8 创建模板
在图 3.9 中,按图所示,添加模板信息,然后点击添加”按钮。
3.9 添加模板信息
“mysql 主从模板创建完成,如图 3.10 所示,
3.10 模板创建完成
接下来,配置监控项,在图 3.10 中,点击监控项按钮。在图 3.11 界面中,添加监控
信息,名称输入“mysql-slave”,键值输入“mysql.slave[*]”,然后点击添加按钮。
图 3.11 添加监控项信息
监控项创建完成,如图 3.12 所示。
图 3.12 监控项创建完成

5. 验证

选择监测中→最新数据,名称输入“mysql”然后点击“应用”按钮,在下方的界面中
15 页 共 27 出现“mysql 备”主机,如图 3.13 所示。
3.13 筛选 MySQL 监控项
在图 3.13 中点击右边的“图形”按钮,会打开到“图形”界面,可以看到 MySQL
从的状态,当出现同步故障时则断开,如图 3.14 所示。
3.14 MySQL 图形监控界面

3.2.3 创建触发器及邮件报警测试

在前面案例的基础上,为 Nginx MySQL 创建触发器。

1. 添加 nginx 触发器

登录 Zabbix Web 端,点击“配置”按钮,再点击“模板”选项,然后点击“Nginx
状态”模板,选择“触发器”选项,点击“创建触发器”按钮,如图 3.15 所示。
3.15 创建触发器
添加触发器名称,严重性选项选择“警告”,再点击“添加”按钮,如图 3.16 所示。
图 3.16 配置触发器
添加表达式,点击“添加”按钮,在弹出界面里监控项选择 192.168.9.229 的“nginx active
监控项,功能选择“最新的 T 值大于 N”,N 填写“5”,再点击“插入”按钮。这里指当
Nginx 的活动连接大于 5 时,触发报警,如图 3.17 所示。
注意:由于是实验环境,这里 N 5,在生产环境中可以根据需求更改。
3.17 添加表达式
完成表达式添加后,点击下方“添加”按钮,完成触发器的创建,如图 3.18 所示。
图 3.18 触发器创建完成

2. 测试触发器是否成功

用多个浏览器访问 Nginx 服务器,当连接数超过 5 个时,将触发报警。
点击“监测中”按钮,再点击“仪表盘”选项,可以看到报警信息,如图 3.19 所示。
图 3.19 仪表盘报警信息
稍等几分钟,就会收到邮件报警,如图 3.20 所示。
图 3.20 邮件警告信息

当连接数恢复后,会自动收到恢复邮件。

3. 添加 MySQL 主从触发器

步骤与 Nginx 相同,点击“配置”按钮,再点击“模板”按钮。然后在“MySQL 主从”
模板中,点击“触发器”选项,如图 3.21 所示。
3.21 准备创建触发器
在图 3.22 中,点击“创建触发器”按钮。
图 3.22 点击创建触发器按钮
在触发器的配置界面,输入名称。然后在表达式项,点击右侧“添加”按钮,如图
3.23 所示。
3.23 配置触发器
在弹出的 3.24 界面中,在监控项中点击选择按钮,选择前面创建的 mysql-slave 监控
项,在功能处点击下拉菜单,选择最新的 T <N”下面 N 中输入 2,然后点击插入按钮。
3.24 配置表达式
插入完成后,在图 3.25 中,可以看到插入的表达式,即当“mysql.slave[*]”的返回值小
2 时触发报警,说明 MySQL 的主从复制出了问题。点击完成按钮,完成触发器配置。
3.25 触发器配置完成
4. 验证 MySQL 主从触发器及报警
进入 slave 数据库,执行“stop slave,关闭同步。打开监测面板查看是否报警,如图
3.26 所示。
图 3.26 MySQL 警报界面
查看报警邮件信息,如图 3.27 所示。
3.27 报警邮件信息
3.2.4 监控网站关键词
监控网站关键词与监控 Nginx 大致相同,都是编写检索字段的脚本,然后 Web 端添
加监控。
1. 编写检索脚本
[root@nginx ~]#vim /etc/zabbix/gjc.sh
#/bin/bash
curl -s http://192.168.9.229/index.html | grep -e -e -e | wc –l
//检索首页中是否存在黄、赌、毒字段,生产环境中可以定义更多字段。
2. 开启 Agent 的自定义 key 值
[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.conf
......
UnsafeUserParameters=1
......
UserParameter=nginx_gjc[*],/etc/zabbix/gjc.sh
......
[root@nginx ~]# systemctl restart zabbix-agent
3. ZabbixWeb 管理界面添加监控
点击配置按钮,再点击模板按钮,再点击创建模板按钮后,创建模板界面,如图
3.28 所示。在此界面配置关键词检索模板,添加模板相关信息。
图 3.28 添加网站关键词模板信息
选择刚刚创建的网站关键词模板,添加监控项,名称输入“gjc”,键值输入自定义的
“nginx_gjc”,完成监控项配置,如图 3.29 所示。
3.29 配置监控项
配置触发器,如图 3.30 所示。
图 3.30 配置触发器
4. 验证关键词检索
编写 index.html 文档,添加脚本中定义的关键词。
[root@nginx ~]# vim /usr/share/nginx/html/index.html
<html>
<body>
<h1>kgc kgc</h1>
<p>kgc kgc</p>
</body>
</html>
Web 仪表盘查看是否有报警,如图 3.31 所示。
图 3.31 查看报警状态
查看是否有报警邮件,如图 3.32 所示。
3.32 查看报警邮件
以上是 zabbix 自定义键值在企业中的实际应用效果,在后面的章节中,将进一步介绍
zabbix 在企业中的其他应用场景。

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

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

相关文章

备忘录1【java环境变量手动更改】

B站视屏链接&#xff1a;https://www.bilibili.com/video/BV1cV8BeCESA?vd_source3e4562475feb55327a8adde111050d4e 1.电脑设置 2.系统-------系统信息 3.高级系统设置 4.环境变量 5.系统变量中&#xff0c;更改之前创建好的JAVA_HOME 版本可以将1.8改成本机安装的其他版本…

Java进阶13讲__第九讲

Stream流 1. 案例初体验 package cn.hdc.oop9.stream.using;import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream;public class t1 {public static void main(String[] args) {LinkedList<String&g…

认知杂谈30

今天分享 有人说的一段争议性的话 I I 《豁然开朗&#xff1a;男性成长的关键转折》 在男人的人生旅程当中啊&#xff0c;最金贵的可不是那些让人眼馋的钱财啥的&#xff0c;也不是啥惊天动地的事儿&#xff0c;更不是偶尔碰到的贵人帮忙。真正无价的宝贝呢&#xff0c;是在…

培训第四十一天(docker-compose一键部署项目,haproxy容器代理多个web或java容器)

# 创建脚本&#xff0c;可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar 一、思路分析&#xff1a; &#xff08;1&#xff09;nginx 1、下载镜像&#xff0c;将本地的dist项目的目录挂载在容器的/usr/share/nginx/html…

论文解读:Visual Prompt Tuning

Comment: ECCV2022 摘要 当前调整预训练模型的方法需要更新backbone的全部参数&#xff0c;即完全微调。本文提出了一种高效的方法VPT&#xff0c;成为视觉中大规模transformer模型完全微调的替代方案。从微调大规模语言模型中吸取经验&#xff0c;VPT仅在输入空间中引入少数…

【C语言】通讯录的实现(详解)

通讯录的实现 主要用到的知识&#xff1a; 1.结构体相关知识 2.枚举 3.多文件 在学习完结构体和枚举后就可以利用学过的知识去实现一个通讯录了 1.通讯录要求 用C语言所学知识实现下面这样一个通讯录 1.通讯录100个联系人 2.姓名 性别 年龄 电话 地址 3.添加联系人 4.删除指…

SQL server数据库实现远程跨服务器定时同步传输数据

项目背景 公司新建项目&#xff0c;需要访问生产数据&#xff0c;但是规定不能直接访问生产数据库服务器&#xff0c;所以得考虑通过中间库的形式实现。经过评估项目需求 &#xff0c;以及当前拥有的环境。 需求&#xff1a; 1.用户不需要实时获取生产数据 2.用户只需要指定的…

Python青少年简明教程:函数

Python青少年简明教程&#xff1a;函数 在Python中&#xff0c;函数是一段可重用的代码块&#xff0c;用于执行特定的任务。函数能够接受输入参数&#xff0c;执行特定的操作&#xff0c;并返回结果。 Python提供了许多内置函数&#xff0c;如print()、len()、eval()等&#x…

Java基于微信小程序的校园兼职小程序

博主介绍&#xff1a;✌stormjun、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

shadertoy-sdf 操作

vec3 col getBackgroundColor(uv); float d1 sdCircle(uv, 0.1, vec2(0., 0.)); float d2 sdSquare(uv, 0.1, vec2(0.15, 0));float res; // result1、union res min(d1, d2); // union2、intersection res max(d1, d2); // intersection3、subtraction res max(-d1, d…

Python实战案例数据合并订单表和商品价格表数据

有如下数据&#xff0c;订单表和商品价格表&#xff0c;进行数据合并&#xff0c;输出客户需要的效果。 数据样例&#xff1a;&#x1f447; 订单表: 商品价格表: 最终效果&#xff1a; 01实现思路 目的是将订单数据和商品价格数据按照商品id和时间进行匹配&#xff0c;以…

基于nodejs+vue+uniapp的学习资料销售平台小程序

开发语言&#xff1a;Nodejs框架&#xff1a;expressuniapp数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;VS Code 系统展示 管理员登录 管理员主界面 用户管理 学习资料管理 订单管理 系统管理 用户…

未来已来:2024年远程控制行业的新星工具推荐

个人用户对于设备管理的便捷需求&#xff0c;远程控制软件都以其独特的优势&#xff0c;搭建起一座座沟通的桥梁。今天&#xff0c;我们就来探索一款集高效性、安全性与易用性于一体的远程控制软件。为了软件得到的方便我会介绍比如能从向日葵远程控制官网、TD官网、GH官网能直…

用RPC Performance Inspector 优化你的区块链

目录 什么是RPC&#xff1f; RPC Performance Inspector 是做什么的&#xff1f; 为什么需要这个工具&#xff1f; 如何使用它&#xff1f; 适合谁用&#xff1f; 如何使用&#xff1f; 什么是RPC&#xff1f; RPC Performance Inspector 是一个专门用于测试和分析RPC性能…

C语言 动态内存管理 #动态内存函数的介绍 #常见的动态内存错误 #C\C++ 程序的内存开辟 #柔性数组

文章目录 前言 一、为什么存在动态内存分配 二、动态内存函数的介绍 1、malloc 2、free 3、calloc 4、realloc realloc 的工作原理&#xff1a; 三、常见的动态内存错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、对非动态开辟的空间使用 free 来释…

数学建模强化宝典(8)粒子群算法

前言 粒子群算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体智能的优化算法&#xff0c;它源于对鸟群捕食行为的研究。通过模拟鸟群中的个体相互协作和信息共享来寻找最优解&#xff0c;粒子群算法已被广泛应用于函数优化、神经网络训练、模糊系统…

跨地域工作利器:深度解析2024年远程控制软件的新特性

无论是跨地域的团队协作、技术支持&#xff0c;使用远程控制工具可以让距离不再是障碍。这次我介绍一些可以直接下载使用的远程工具&#xff0c;比如从向日葵远程控制官网&#xff0c;EV官网、TV官网等就能直接下载使用的工具。 1.向日葵远程控制 链接直通车&#xff1a;http…

微服务--Nacos

一、Nacos简介 Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它致力于帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos支持几乎所有主流类型的服…

惠中科技智能高效综合光伏清洗技术

惠中科技综合光伏清洗技术&#xff1a;&#xff0c;引领绿色清洁新时代 随着全球对可再生能源需求的不断增长&#xff0c;光伏产业作为绿色能源的重要组成部分&#xff0c;正迎来前所未有的发展机遇。然而&#xff0c;光伏电站的广泛应用也带来了光伏板清洁维护的挑战。灰尘、…

SprinBoot+Vue问卷调查微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…