Linux云计算 |【第二阶段】SECURITY-DAY2

news2024/11/25 14:51:11

主要内容:

Zabbix报警机制(创建触发器、设置邮箱、执行动作),Zabbix进阶操作(主动发现、主被动监控模式、拓扑图、聚合图形)、监控案例(监控Nginx服务状态、监控TCP连接状态)

一、Zabbix报警机制概念

- 自定义的监控项默认不会自动报警,首页也不显示报警错误提示,需要配置触发器与报警动作才可实现自动报警,如图所示:

1)触发器(Trigger)

创建触发器时,需要定义表达式(Expression)

当触发条件发生后,会导致一个触发事件,触发事件会执行某个动作;(例如:内存不足300M、用户超过30个等)

触发器表达式格式:

{<server>:<key>.<function>(<parameter>)}<operator><constant>

解释:{主机: key.函数(参数)}常数

Expression表达式示例:

① {web1:system.cpu.load[all,avg1].last(0)}>5 //0为最新数据

解释:如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem

② {vfs.fs.size[/,free].max(5m)}

解释:根分区,最近5分钟的最大容量小于10G,则状态进入Problem

③ {vfs.file.cksum[/etc/passwd].diff(0)}>0    //0为最新数据

解释:最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem

补充:大多数函数使用秒作为参数,可以使用#来表示其他含义

avg, count, last, min and max 等函数支持额外的第二个参数time_shift(时间偏移量),这个参数允许从过去一段时间内引用数据;

2)动作(Action)

触发器的条件被触发后的行为(执行动作)(例如:发送邮件、重启某个服务等)


案例1:实现Zabbix报警功能

案例要求:沿用前面的Zabbix练习环境,使用Zabbix实现报警功能,实现以下目标:

  • 1)监控Linux服务器系统账户数量
  • 2)创建Media,设置邮件服务器及收件人邮箱
  • 3)当系统账户数量超过21人时发送报警邮件

整体思路:

  • 1)创建触发器并定义表达式
  • 2)设置Media报警媒介-邮箱(发件人,收件人)
  • 3)创建并设置Action动作

步骤1:创建触发器规则

1)创建触发器(当系统账户数量超过21人,发送报警)

注意:创建触发器时,建议使用英文语言环境;

通过【Configuration配置】—>【Templates模板】,找到创建的<count.line.passwd模板>,点击模板后面的<triggers触发器>,打开触发器的页面

点击<Create triggers创建触发器>按钮,创建触发器;

2)触发器表达式

填写【name触发器名称】(可任意),定义【serverity触发器报警级别】;

  • 触发器名称:passwd_line-gt-21
  • 触发器报警级别:Warning

触发器报警级别:

  • ① 未分类Not classified
  • ② 一般信息Information
  • ③ 一般告警Warning
  • ④ 危险告警Average
  • ⑤ 高危告警High
  • ⑥ 灾难告警Disaster

定义【表达式Expression】,表达式是触发异常的条件,点击<add添加>自动定义表达式(填写表达式:监控项、功能、账户数量大于21),当自定义完成后,点击<iburst插入>;

  • item监控项:count_line_passwd_item  //监控项
  • Function功能:Last (most recent) T value is > N   //最新数据>N
  • N:21   //N为21

生成表达式:{count.line.passwd:count.line.passwd.last()}>21

解释:当系统的用户数量(监控项)的最新数据大于21,则触发条件;执行Action动作;

步骤2:设置邮件

1)创建Media报警媒介(设置发件人信息)

通过【Administration管理】—>【Media Type报警媒体类型】—>【选择Email邮件】

设置邮件服务器信息,设置邮件服务器及发件人邮件账户信息;

  • SMTP服务器:localhost     //Localhost指192.168.2.5
  • SMTP电邮:root@localhost    //以什么身份发送邮件

在Zabbis服务器检查postfix发邮件服务,保证postfix服务安装并开启(端口25)

[root@zabbixserver ~]# yum -y install postfix
[root@zabbixserver ~]# systemctl enable postfix --now
[root@zabbixserver ~]# ss -nlptu | grep :25
tcp    LISTEN     0      100    127.0.0.1:25                    *:*                   users:(("master",pid=12643,fd=13))

2)为用户添加Media报警媒介(设置收件人信息)

在【Administration管理】—>【Users用户】中找到并选择【Admin】账户

在弹出的界面中选择【Media报警媒介】—>点击【Add添加】报警媒介

点击【Add添加】后,在【Meida Type类型】中填写报警媒介类型,收件人,时间等信息

  • 类型:Email
  • 收件人:root@localhost     //实验中收件人为本机的root
  • 当启时间:1-7,00:00-24:00      //周一至周日的0小时-24小时
  • 如果存在严重性则使用:全部勾选    //针对哪些警告进行邮件通知

步骤3:创建Action动作

1)Action动作

Action(动作)是定义当触发器被触发时,执行的行为;

通过【Configuration配置】—>【Actions动作】—>【Actions Event source事件源:触发器】—>【Create action创建动作】

注意:事件源选择触发器

2)配置Action动作的触发条件

填写Action动作的名称(可任意);配置什么触发器被触发会执行本Action动作

  • - 动作名称:report_problem
  • - 新的触发条件:触发器 = passwd_line-gt-21   //系统账户数量大于21

<选择>并<添加>触发器 = passwd_line-gt-21;

3)配置Action动作的具体行为

配置动作的具体操作行为(发送信息或执行远程命令),当触发条件,无限次数发送邮件,60秒1次,发送给Admin用户;点击<新的>,在操作细节里填写步骤(发送信息多少次)、持续时间、操作类型、发送邮件到用户Admin、报警媒介类型,最后完成<添加>;

  • - 步骤:1 - 0        //1 - 1表示只发一封,0表示无穷大
  • - 操作类型:发送消息
  • - 步骤持续时间:60    //单位秒
  • - 发送到用户:Admin   //发送信息的用户
  • - 仅送到:Email    //报警媒介类型

最终效果:

4)测试效果

在被监控主机创建账户(让账户数量大于21),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间)

[root@web1 ~]# useradd aa
[root@web1 ~]# cat /etc/passwd | wc -l
22

在监控服务器上使用mail命令查收报警邮件

[root@zabbixserver ~]# yum -y install mailx    //安装mail收邮件服务
[root@zabbixserver ~]# mail      //查看报警邮件
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 3 messages 3 new
>N  1 root@localhost.local  Fri May  7 16:52  20/836   "Problem: passwd_line_g"
 N  2 root@localhost.local  Fri May  7 16:53  20/836   "Problem: passwd_line_g"
 N  3 root@localhost.local  Fri May  7 16:54  20/836   "Problem: passwd_line_g"
&

补充:如果没有mail命令,则需要安装mailx软件包

二、自动发现(Discovery)

当Zabbix需要监控的设备越来越多,手动添加监控设备麻烦,此时可考虑使用自动发现功能,自动添加被监控主机,实现自动批量添加一组监控主机。

自动发现实现功能:

  • ① 自动发现主机、添加主机、自动添加主机到组;
  • ② 自动链接模板到主机,自动创建监控项目与图形等。

自动发现流程:

  • 1)创建自动发现规则;
  • 2)创建Action动作,发现主机后自动执行的动作;
  • 3)通过动作,执行添加主机,链接模板到主机等操作;


案例:Zabbix自动发现

案例要求:沿用案例,配置Zabbix的自动发现机制,实现以下目标:

  • 1)创建自动发现的规则(发现192.168.4.1-254网段的主机)
  • 2)创建自动发现的动作(添加主机、为主机链接模板)

步骤1:自动发现规则

1)创建自动发现规则

通过【Configuration配置】—>【Discovery自动发现】—>【Create discovery rule创建发现规则】,创建发现规则;

2)配置自动发现规则

填写自动发现的规则名称(可任意)、IP范围(使用逗号隔开,可写多个IP)、更新间隔为多久做一次自动发现(默认为1小时)、点击,配置检查的方式:Ping、HTTP、FTP、Agent的自定义key等检查;

  • 规则名称:web_discovery_rule
  • IP范围:192.168.2.150-254
  • 更新间隔:1m    //1分钟扫描IP范围(生产环境不建议设置间隔太短,浪费计算机资源)
  • 检查:SSH(发现条件是ssh,端口22能连接上 1分钟做一次扫描)

步骤2:创建动作

1)创建Action动作

通过【Configuration配置】—>【Actions动作】—>【Actions Event source事件源:自动发现Discovery】—>【Create action创建动作】

注意:事件源选择自动发现

2)配置Action动作具体行为

配置动作,填写动作名称,添加触发动作的条件;

  • - 动作名称:add_web
  • - 新的触发条件:主机IP地址 = 192.168.2.150-254

触发条件后要执行的操作指令,点击【操作】,在操作细节中选择操作类型:添加主机到组,主机群组:Linux servers与模板链接(HTTP模板),完成后进行

步骤3:验证结果

登陆Zabbix服务器的Web页面,等待1分钟,查看主机列表,确认新添加的主机是否被自动加入监控主机列表;

补充:当Zabbix服务器配置了域名解析,则自动发现的主机以域名的形式显示在主机列表

三、主被动监控模式

主动和被动都是对被监控端主机而言(默认zabbix采用的是被动监控)

  • ① 被动监控:Server向Agent发起连接,索取监控数据;
  • ② 主动监控:Agent向Server发起连接,Agent周期性地收集数据发送给Server;

区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可;

补充:由于监控数据为实时监控,相对的被动监控数据流量大(“请求、回复”)、主动监控数据流量小(“回复”),当监控主机达到一定量级后,Zabbix服务器的资源占用也会逐步增大,导致效率变慢,所以可考虑主动监控来释放服务器的压力;(Zabbix也可支持分布式监控)


案例:Zabbix主动监控

案例要求:沿用前面案例,配置Zabbix主动监控,实现以下目标:

  • 1)修改被监控主机agent为主动监控模式
  • 2)克隆模板,修改模板为主动监控模板
  • 3)添加监控主机,并链接主动监控模板

步骤1:部署被监控主机Zabbix Agent(web2)

1)设置防火墙与SELinux限制

[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# setenforce 0
[root@web1 ~]# sed -i  '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)源码安装部署Zabbix agent

[root@web1 ~]# useradd -s /sbin/nologin zabbix   //创建zabbix用户
[root@web1 ~]# id zabbix
uid=1000(zabbix) gid=1000(zabbix) 组=1000(zabbix)
[root@web2 ~]# yum -y install gcc make pcre-devel autoconf    //安装依赖包
[root@web2 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 zabbix-3.4.4]# ./configure --enable-agent   //配置,加载agent模块
[root@web2 zabbix-3.4.4]# make && make install      //编译安装
[root@web2 zabbix-3.4.4]# ls /usr/local/sbin/

3)修改Zabbix_agent配置文件,启动Zabbix_agent服务

将agent监控模式修改为:主动模式(注释被动监控模式、关闭10050端口)

补充:主动监控模式要求关闭10050端口(开启端口是为了提供Server连接并获取监控信息,属于被被动监控模式);且发送监控数据必须指定server监控服务器IP,不能有127.0.0.1

[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
 93 # Server=127.0.0.1     //注释(不注释,默认使用被动监控模式)
118 StartAgents=0       //禁止被动监控,不启动Zabbix_agent服务和10050端口
134 ServerActive=192.168.2.5    //监控服务器IP,注意:一定要取消127.0.0.1
145 Hostname=web2    //被监控服务器主机名
183 RefreshActiveChecks=120   //默认120秒检测一次
280 UnsafeUserParameters=1   //允许自定义监控传参
264 Include=/usr/local/etc/zabbix_agentd.conf.d/   //存放自定义key的目录

解释说明:

# Server=监控服务器IP地址  //被动监控模式,允许哪些主机监控本机及获取监控信息

# StartAgents=0   //被动监控时启动几个Agent进程监听10050端口;设置为0则禁止被动监控,不启动服务和端口;

# ServerActive=监控服务器IP地址  //主动监控模式,允许哪些主机监控本机及获取监控信息

# Hostname=被监控服务器主机名   //告诉监控服务器是谁发的数据信息(一定要与Zabbix服务器配置的监控主机名称一致)

# RefreshActiveChecks=120   //监控数据默认120秒检测一次

# UnsafeUserParameters=1    //允许自定义监控传参

# Include=/usr/local/etc/zabbix_agentd.conf.d/    //存放自定义key的目录

编写zabbix_agentd的service文件,通过systemd管理服务

[root@web2 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@web2 ~]# systemctl enable zabbix_agentd.service --now    //重启服务
[root@web2 ~]# ss -nlptu | grep zabbix_agentd  //查看不到任何端口信息(已关闭10050端口)

常见报错:启动服务失败,没有zabbix用户

步骤2:创建主动监控的监控模板

1)克隆Zabbix的监控模板(全克隆)

Zabbxi自带模板都是被动模式,通过克隆系统自带模板(在此基础上修改为主动模式)

通过【Configuration配置】—>【Templates模板】—>选择<Template OS Linux>模板,点击<全克隆>,克隆该模板并进行配置修改;

新模板名称:Template OS Linux Server Active

2)修改克隆模板的监控模式

克隆的模板的所有监控项目默认是被动监控模式,需全部修改为主动监控模式

通过【Configuration配置】—>【Templates模板】—>选择新克隆的模板,点击【items监控项】—>勾选所有监控项目,点击<批量更新>,将类型修改为:Zabbix Agent(主动模式)

类型:Zabbix Agent(主动模式)

3)禁用部分监控项目

批量修改监控项的监控模式后,并非所有监控项都支持主动模式;需要将不支持主动模式的监控项目状态关闭(点击类型可排序)

步骤3:添加监控主机(web2)

1)手动添加监控主机(主动模式监控)

在Zabbix监控服务器,添加被监控的主机,设置主机名称为web2 (必须与被监控端的zabbix_agentd.conf配置文件中的Hostname一致),将主机添加到Linux servers组,IP地址修改为0.0.0.0,端口设置为0;

  • 主机名称:web2    //必须与被监控端的zabbix_agentd.conf配置文件中的Hostname一致
  • 主机组:Linux servers
  • IP地址:0.0.0.0   //因Agent采用主动监控模式,主动上传监控数据给Server,所以Server不需要指定被监控服务器的IP和端口
  • 端口:0

步骤4:为主机添加监控模板

选择克隆的模板(主动监控模式),添加链接的模板到web2主机

验证:

通过【Monitoring监控中】—>【Latest最新数据】菜单,选择需要查看的主机组、主机以及图形,查看监控效果(需要等待120秒主动监控数据监测)

四、拓扑图与聚合图形

熟悉zabbix拓扑图与聚合图形,实现以下目标:

  • 1)创建修改拓扑图
  • 2)创建聚合图形

步骤1:创建拓扑图

1)创建拓扑

绘制拓扑图可以快速了解服务器架构,通过【Monitoring监控中】—>【Maps拓扑图】,默认有【Local network拓扑图】,点击<创建拓扑图>,新建拓扑图

可设置拓扑图的名称、拓扑图的宽高(显示页大小)

2)编辑拓扑图

选择创建的拓扑图,点击,进入编辑界面;

拓扑图图表说明:

- Icon(图标),添加设备图标(可以点击图标修改属性)

- Shape(形状),方形、椭圆、线

- Link(连线),使用Ctrl选择两个图标,进行连线

完成后,点击Update(更新)

创建完拓扑图,效果如图所示:

步骤2:创建聚合图形

1)创建聚合图形

聚合图形可以在一个页面显示多个数据图表,方便了解多组数据。

通过【Monitoring监控中】-->【Screens聚合图形】-->【Create screen创建聚合图形】,创建聚合图形;

创建聚合图形参数如下:

  • - Owner所有者:使用默认的Admin用户
  • - Name名称:JUHE
  • - Columns列:列数设置为2列
  • - Rows行:行数设置为2行

2)编辑聚合图形

选择创建的聚合图形,点击【编辑聚合图形】-->点击<更改>,添加监控图形;

添加的监控图形信息内容:图形(监控项)、宽高比例

完成聚合图形,效果如图所示:

五、自定义监控案例

案例要求:沿用前面的练习,使用自定义key监控常用监控项目,实现以下目标:

  • 1)监控Nginx状态(实时并发量、总连接数、等待连接数)
  • 2)监控TCP连接状态

案例1:监控Nginx服务状态

1)源码安装nginx

[root@web1 ~]# yum -y install gcc make pcre-devel openssl-devel
[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web1 ~]# cd nginx-1.12.2/
[root@web1 nginx-1.12.2]# ./configure --with-http_stub_status_module
[root@web1 nginx-1.12.2]# make && make install

2)修改配置文件(开启status模块)

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
...
        location /status {
                stub_status on;
        }
...
[root@web1 ~]# /usr/local/nginx/sbin/nginx   //启动服务

测试:

[root@web1 ~]# curl http://192.168.2.100/status
Active connections: 2
server accepts handled requests
 2 2 3
Reading: 0 Writing: 1 Waiting: 1

3)编写监控脚本(实时并发量、总连接数、等待连接数)

[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
   curl -s http://192.168.2.100/status | awk '/Active/{print $NF}';;  //实时并发量
accepts)
   curl -s http://192.168.2.100/status | awk 'NR==3{print $2}';;  //总连接数
waiting)
   curl -s http://192.168.2.100/status | awk '/Waiting/{print $NF}';; //等待连接数
esac
[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh    //赋予执行权限

4)创建自定义key

  • 格式:UserParameter=key,command
  • 格式:UserParameter=key[*],command $1

[*]和$1为固定格式,将key的[所有参数],传递给后面命令作为位置变量

注意:配置文件需允许自定义监控传参:Include=/usr/local/etc/zabbix_agentd.conf.d/

[root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@web1 zabbix_agentd.conf.d]# vim nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
[root@web1 ~]# systemctl restart zabbix_agentd.service     //重启服务

验证:

[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[active]'
1
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'
4
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[waiting]'
0
[root@web1 ~]# curl http://192.168.2.100/status
Active connections: 1 
server accepts handled requests
 2 4 3
Reading: 0 Writing: 1 Waiting: 0 

[-s]指定被监控的服务器,[-k]调用自定义key(调用该案例key时,需添加参数)

常见报错:未有赋予监控脚本执行权限

[root@web1 ~]# zabbix_get  -s 127.0.0.1 -k 'net.status[waiting]'
sh: /usr/local/bin/net_status.sh: Permission denied

5)创建监控项目item,监控自定义key(nginx.status)

通过【Configuration配置】—>【Hosts主机】,选择web1(使用被动监控模式),点击主机后面的【items监控项】,点击;

  • 监控项名称:nginx_status_item
  • 类型:Zabbix_客户端(被动监控模式)
  • 键值:nginx.status[accpets]
  • 信息类型:数字(无正负)

6)查看监控数据

查看监控数据,通过首页栏【Monitoring监控中】—>【Latest data最新数据】,在过滤器中填写过滤条件,根据监控【主机群组】和监控【主机】选择需要查看哪些监控数据;例如:nginx_status_item自定义key的监控项;

找到需要监控的数据后,可以点击后面的【Graph图形】查看监控图形;

案例2:监控TCP连接状态

参考:https://www.cnblogs.com/jessezeng/p/5617105.html

- TCP三次握手

- TCP连接的四次断开

- ESTABLISHED:表示两台机器正在传输数据

- CLOSE-WAIT:客户端发来的连接中断请求,服务端TCP接到FIN后,就发出ACK回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT;

- TIME-WAIT:客户端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认。

1)通过ss命令查看网络连接状态

模拟多人并发连接(如果没有ab命令,则安装httpd-tools软件包)

[root@web1 ~]# ab -c 100 -n 1000 http://192.168.2.100/
[root@web1 ~]# ss -antp
ESTAB      0      0      192.168.2.100:22                 192.168.2.254:49946               users:(("sshd",pid=7969,fd=3))
TIME-WAIT  0      0      192.168.2.100:10050              192.168.2.5:53516   

解释说明:

#-a显示所有

#-t显示TCP连接状态

#-u显示UDP连接状态

#-n以数字形式显示端口号和IP地址

#-p显示连接对应的进程名称

2)编写监控脚本

[root@web1 ~]# vim /usr/local/bin/net_status.sh
#!/bin/bash
case $1 in
estab)
   ss -antp | awk 'BEGIN{x=0} /^ESTAB/{x++} END{print x}';;
close_wait)
   ss -antp | awk 'BEGIN{x=0} /^CLOSE-WAIT/{x++} END{print x}';;
time_wait)
   ss -antp | awk 'BEGIN{x=0} /^TIME-WAIT/{x++} END{print x}';;
esac
[root@web1 ~]# chmod +x /usr/local/bin/net_status.sh   //赋予执行权限

3)创建自定义key

  • 注意:被监控端修改配置文件,需要允许自定义key并设置Include参数
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.status
UserParameter=net.status[*],/usr/local/bin/net_status.sh $1
[root@web1 ~]# systemctl restart zabbix_agentd.service    //重启服务

测试:

[root@web1 ~]# zabbix_get  -s 127.0.0.1 -k 'net.status[time_wait]'
40

常见报错:未有赋予监控脚本执行权限

[root@web1 ~]# zabbix_get  -s 127.0.0.1 -k 'net.status[time_wait]'
sh: /usr/local/bin/net_status.sh: Permission denied

4)创建监控项目item,监控自定义key(net_status)

通过【Configuration配置】—>【Hosts主机】,选择web1(使用被动监控模式),点击主机后面的【items监控项】,点击<Create item创建监控项>;

  • 监控项名称:net_status
  • 类型:Zabbix_客户端(被动监控模式)
  • 键值:net.status[time_wait]
  • 信息类型:数字(无正负)

5)查看监控数据

查看监控数据,通过首页栏【Monitoring监控中】—>【Latest data最新数据】,在过滤器中填写过滤条件,根据监控【主机群组】和监控【主机】选择需要查看哪些监控数据;例如:net_status_自定义key的监控项;

找到需要监控的数据后,可以点击后面的【Graph图形】查看监控图形;

 思维导图:

小结:

本篇章节为 的学习【第二阶段】SECURITY-DAY2 笔记,这篇笔记可以初步了解到 Zabbix报警机制,Zabbix进阶操作、监控案例。除此之外推荐参考相关学习网址:

  • zabbix配置自动发现vmware Vcenter虚拟机_z vmbb xb-CSDN博客
  • Zabbix配置自动发现,实现批量添加主机_zabbix6.4自动发现接入主机-CSDN博客

Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

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

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

相关文章

C#开发基础之100个常用的C#正则表达式

前言 正则表达式是处理字符串的强大工具&#xff0c;特别是在文本搜索、替换和验证中。本文将100个常用的C#正则表达式进行分类&#xff0c;以帮助我们更快速地找到适合的正则表达式解决方案。 1. 基础匹配 这些正则表达式用于匹配一些基本的字符或字符串模式。 匹配任意字…

MATLAB-PSO-BiTCN-BiLSTM-Attention多变量分类

一、数据集 数据特征&#xff1a;12个多分类&#xff1a;4分类 ​ 二、PSO-BiTCN-BiLSTM-Attention网络 PSO-BiTCN-BiLSTM-Attention 网络是一种结合了多种深度学习技术和优化算法的复杂模型&#xff0c;用于处理时序数据任务&#xff0c;如时间序列预测、分类或其他相关问题…

IntelliJ IDEA ideaIU-2024.2.0.2.exe 启动 IDE 失败

以下是一些可能会导致 IDE 启动失败的问题的情况和解决方案&#xff1a; 启动 IDE 时弹出 Start Failed 的对话框&#xff0c;并且对话框内的信息中含有 crack 相关的内容 请在以下位置找到 .vmoptions 文件&#xff0c;打开并查看有没有 -javaagent 这行内容&#xff0c;如果…

gpt-4o-mini 等大模型的第三方中转API接口教程

How to use gpt-4o-mini by Python 文章目录 1 python环境安装1.1 anaconda 添加到系统变量1.2 anaconda 创建新的python虚拟环境 2 langchain 与 openai python包安装3 openai API 接入3.1 第三方API站点3.2 windows配置3.3 大模型API调用消费估算 4 相关教程重要事项 1 pyth…

【六】阿伟开始搭建Kafka学习环境

阿伟开始搭建Kafka学习环境 概述 上一篇文章阿伟学习了Kafka的核心概念&#xff0c;并且把市面上流行的消息中间件特性进行了梳理和对比&#xff0c;方便大家在学习过程中进行对比学习&#xff0c;最后梳理了一些Kafka使用中经常遇到的Kafka难题以及解决思路&#xff0c;经过上…

PDPS软件 那智机器人 (丰田版)离线程序导出处理

在PDPS仿真软件中导出的那智机器人离线程序&#xff0c;一般是无法直接给TFD控制装置-那智机器人&#xff08;丰田式样版&#xff09;导入及识别使用。因此要对导出的程序进行转换编译处理&#xff0c;才能给TFD那智机器人&#xff08;丰田式样版&#xff09;导入离线程序。以下…

comfyUI工作流-Flux大模型应用/黑神话悟空角色生成(附lora)

​ 是什么让悟空开始搬砖&#xff0c;这莫不是新的副本 其实我们用AI就能生成这种黑神话悟空的衍生图片 让悟空做ceo&#xff0c;做老师&#xff0c;上工地搬砖 七十二变&#xff0c;体验人生百态 操作很简单&#xff0c;只需要一个comfyUI工作流&#xff0c;你就能任意生成…

Studying-CodeTop | 3. 无重复字符的最长子串、206. 反转链表、146. LRU 缓存

目录 3. 无重复字符的最长子串 206. 反转链表 146. LRU 缓存 解题过程&#xff1a; 3. 无重复字符的最长子串 题目&#xff1a;3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 学习&#xff1a;本题题意很好理解&#xff0c;我们需要从所有不含有重复…

Linux 软件编程学习第十七天

1.select的缺点&#xff1a; 1.select监听的文件描述符集合是一个数组&#xff0c;有上限&#xff08;1024个&#xff09; 2.select监听的文件描述符集合在应用层&#xff0c;内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…

数据复制一(主从复制详解)

目录 一、主从复制 二、同步复制和异步复制 三、节点失效处理方案 四、复制日志的实现 五、复制滞后问题 读自己的写 单调读 前缀一致读 数据复制就是相同的数据在多台机器上传输&#xff0c;多台机器可以在一个机房也不可以跨区域。通过数据复制有以下好处&#xff1a…

「数组」希尔排序 / 区间增量优化(C++)

目录 概述 思路 核心概念&#xff1a;增量d 算法过程 流程 Code 优化方案 区间增量优化 Code(pro) 复杂度 概述 我们在「数组」冒泡排序|选择排序|插入排序 / 及优化方案&#xff08;C&#xff09;中讲解了插入排序。 它有这么两个特点&#xff1a; ①待排序元素较…

<数据集>无人机航拍不同高度牧羊识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;6065张 标注数量(xml文件个数)&#xff1a;6065 标注数量(txt文件个数)&#xff1a;6065 标注类别数&#xff1a;1 标注类别名称&#xff1a;[sheep] 序号类别名称图片数框数1sheep6065149785 使用标注工具&…

【Spring】初识Spring MVC

文章目录 前言一、MVC是什么&#xff1f;二、学习Spring MVC建立连接RequestMapping注解注解的使用细节 三、传递参数的情况传递单个参数1.传递String2.传递包装类/基本类型3.参数重命名(RequestParam) 传递多个参数传递对象传递数组传递集合参数为变量传递文件小细节 四、JSON…

MCAL--MCU (S32K144)

AutoSAR中MCU Driver主要提供了用于基本的控制器初始化、下电、复位功能的服务,同时也为其它MCAL层需要的功能提供对应的服务函数。通常来说在AutoSAR的架构中MCU主要支持以下几个功能: 1.初始化控制器的外设时钟、系统时钟、PLL等,对所有控制器内各个外设模块用到的时钟提供…

Spring之@Bean注解

1. 使用方式 1.1 Configuration Bean 1.1.1 创建实体类 User Data NoArgsConstructor public class User {private String name;public User(String name) {this.name name;} } 1.1.2 创建配置类 UserConfig Configuration public class UserConfig {Beanpublic User us…

Web客户端软件测试

目录 1.测试分类 按照软件产生的阶段划分 按照代码可见度划分 其他测试 2.质量模型&#xff1a;衡量一个软件质量的维度 3.软件测试 1.单功能测试 等价类划分法&#xff1a;一种用少量数据获得较好测试效果的工具 边界值分析法&#xff1a;一个边界范围限制选取测试数…

最近云计算领域有哪些重大进展?

在云计算领域&#xff0c;近期确实涌现出了一系列令人瞩目的重大进展。以下是一些关键点&#xff0c;为您概述了当前的科技动态&#xff1a; 中国云计算市场迅猛发展&#xff1a; 中国云计算市场正处于快速发展期&#xff0c;年复合增长率超过40%。公有云市场规模增长49.3%至32…

深信达反向沙箱:构筑内网安全与成本效益的双重防线

# 深信达反向沙箱&#xff1a;内网安全与成本控制的双重保障 在数字化时代&#xff0c;企业面临着日益复杂的网络安全挑战。内网安全尤其关键&#xff0c;因为它涉及到企业的核心数据和运营。深信达的反向沙箱技术&#xff0c;作为一种创新的安全解决方案&#xff0c;为政企单…

厦门凯酷全科技有限公司:抖音小店前沿的探索者与引领者

在数字经济浪潮席卷全球的今天&#xff0c;电商平台已成为推动消费升级、激发市场活力的关键力量。其中&#xff0c;抖音作为短视频与直播电商的佼佼者&#xff0c;正以其独特的内容生态和庞大的用户基础&#xff0c;重新定义着零售行业的边界。在这一背景下&#xff0c;厦门凯…

学习记录——day33 HTTP

目录 一、HTTP相关概念 二、客服端请求 1、请求首部 2、 响应首部 三、线程实现HTTP并发服务器 一、HTTP相关概念 1、HTTP&#xff0c;全称Hyper Text Transfer Protocol&#xff0c;用于万维网&#xff08;world wide web&#xff09;进行超文本学习的传输协议 2、HTTP属…