zabbix监控进程、日志、主从(状态、延迟)

news2024/9/20 16:42:29

环境:rocky Linux9虚拟机四台,zabbix端为服务端,node6为客户端,node4为mariadb主,node7为mariadb从

一、zabbix监控进程

httpd服务为例

1、客户端安装httpd

[root@node6 ~]# yum -y install httpd
[root@node6 ~]# systemctl restart httpd
[root@node6 ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

//查看httpd进程信息
[root@node6 ~]# ps -ef | grep httpd
root        1091       1  0 18:25 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      1092    1091  0 18:25 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      1093    1091  0 18:25 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      1094    1091  0 18:25 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      1095    1091  0 18:25 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root        1306     687  0 18:27 pts/0    00:00:00 grep --color=auto httpd

//只查看HTTPD进程信息,过滤掉grep进程信息,并统计httpd进程行数
[root@node6 ~]# ps -ef | grep httpd | grep -v grep | wc -l
5
[root@node6 ~]# ps -ef | grep -v grep | grep -c httpd
5

2、新建脚本存放目录

[root@node6 ~]# mkdir /etc/zabbix/script
[root@node6 ~]# cd /etc/zabbix/script/
[root@node6 script]# vim check_httpd.sh
//在文件中写入以下信息
#!/bin/bash 
count=$(ps -ef | grep -Ev "grep|$0" | grep -c httpd)
if [ $count -eq 0 ];then
echo '1'
else
echo '0'
fi

[root@node6 script]# chmod +x check_httpd.sh 
[root@node6 script]# chown -R zabbix.zabbix /etc/zabbix/script/

//测试脚本--0是httpd服务开启,1为关闭
[root@node6 script]# ./check_httpd.sh 
0
[root@node6 script]# systemctl stop httpd
[root@node6 script]# ./check_httpd.sh 
1

3、修改客户端zabbix配置文件

[root@node6 script]# vim /etc/zabbix/zabbix_agentd.conf
//找到下面这一行,并在其下面添加一行信息
 UserParameter=loginusers,who | wc -l
 UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh

//重启服务
[root@node6 script]# systemctl restart zabbix-agent

4、zabbxi平台配置

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

5、测试

在客户端将httpd服务停止

[root@node6 script]# systemctl stop httpd

在这里插入图片描述
在这里插入图片描述
恢复httpd服务运行

[root@node6 script]# systemctl restart httpd

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

二、自定义监控日志

下载log.py来协助我们进行测试,以httpd服务为例

1、上传配置log.py,

//下载log.py环境
[root@node6 script]# yum -y install python3
[root@node6 script]# rz -E
rz waiting to receive.
[root@node6 script]# ls
check_httpd.sh  log.py
[root@node6 script]# chmod +x log.py 
[root@node6 script]# chown zabbix.zabbix log.py 

//给zabbix用户对/val/log/httpd/目录及文件有读和执行的权限
[root@node6 script]# setfacl -m u:zabbix:r-x /var/log/httpd/
 log.py
 作用:检查日志文件中是否有指定的关键字
 第一个参数为日志文件名(必须有,相对路径、绝对路径均可)
 第二个参数为seek position文件的路径(可选项,若不设置则默认为/tmp/logseek文件。相对路径、绝对路径均可)
 第三个参数为搜索关键字,默认为 Error

2、修改zabbix配置文件

[root@node6 script]# vim /etc/zabbix/zabbix_agentd.conf 
//找到以下两行信息,在其下方添加一行信息
UserParameter=loginuser,who | wc -l
UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh
UserParameter=check_logs[*],/usr/bin/python3 /etc/zabbix/script/log.py $1 $2 $3

//重启zabbix-agentd服务
[root@node6 script]# systemctl restart zabbix-agent

3、测试脚本

[root@node6 script]# python3 log.py /var/log/httpd/error_log 
0
[root@node6 script]# echo 'Error' >> /var/log/httpd/error_log 
[root@node6 script]# python3 log.py /var/log/httpd/error_log 
1
[root@node6 script]# rm -rf /tmp/logseek

0为没有Error日志信息,1为有Error日志信息

测试完成后将写入的Error内容删除,而且因文件/tmp/logseek属于root账户,在web端写入写不进去,所以删除。

4、web监控配置

模板中配置监控项
在这里插入图片描述
模板做配置触发器
在这里插入图片描述

5、测试

//插入error信息

[root@node6 script]# echo Error >> /var/log/httpd/error_log

在这里插入图片描述

//删除Error信息
[root@node6 script]# rm -rf /tmp/logseek

在这里插入图片描述

三、监控主从

主从环境:node4为主,node7为从

1、配置/etc/hosts文件

[root@zabbix ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.115 zabbix.example.com zabbix
192.168.100.116 node6.example.com node6
192.168.100.114 node4.example.com node4
192.168.100.117 node7.example.com node7
~ 
[root@zabbix ~]# scp /etc/hosts root@192.168.100.114:/etc/hosts
[root@zabbix ~]# scp /etc/hosts root@192.168.100.116:/etc/hosts
[root@zabbix ~]# scp /etc/hosts root@192.168.100.117:/etc/hosts                                  

2、安装mariadb与时钟同步

两边操作都一样

yum -y install chrony mariadb mariadb-server lrzsz
systemctl restart chronyd
systemctl enable chronyd
hwclock -w
systemctl restart mariadb
systemctl enable mariadb

3、maridb初始化

两边操作都一样

[root@node4 ~]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y    //是否设置密码
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y   //是否移除匿名用户
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n    //是否允许root用户远程登录
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

4、更改mariadb配置文件

主库:

[root@node4 ~]# vim /etc/my.cnf
//在文件最末尾写入
[mysqld]
log_bin=mysql-bin
server_id=20

[root@node4 ~]# systemctl restart mariadb

从库

[root@node7 ~]# vim /etc/my.cnf
//在文件最末尾写入
[mysqld]
log_bin=mysql-bin
server_id=30

[root@node7 ~]# systemctl restart mariadb

4、配置主从

nide4主库端

[root@node4 ~]# mysql -uroot -predhat
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.22-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant all privileges  on *.* to root@'%' identified by "redhat";
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> grant replication slave on *.* to 'user'@'slave' identified by 'redhat';
Query OK, 0 rows affected (0.001 sec)

node7从库端

[root@node7 ~]# mysql -uroot -predhat
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.22-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant all privileges  on *.* to root@'%' identified by "redhat";
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> change master to master_host='master',master_user='user',master_password='redhat';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
                Slave_IO_State: Connecting to master
                   Master_Host: master
                   Master_User: user
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: 
           Read_Master_Log_Pos: 4
                Relay_Log_File: mariadb-relay-bin.000001
                 Relay_Log_Pos: 4
         Relay_Master_Log_File: 
             Slave_IO_Running: Connecting   //只需要看这两个参数
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 0
               Relay_Log_Space: 256
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: NULL
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 2005
                 Last_IO_Error: error connecting to master 'user@master:3306' - retry-time: 60  maximum-retries: 86400  message: Unknown server host 'master' (-2)
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 0
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: optimistic
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0
1 row in set (0.000 sec)

ERROR: No query specified

5、配置主从yum源,安装zabbix客户端

两者配置一样,从库也是同样操作

[root@node4 ~]# rz -E    
rz waiting to receive.    //将zabbix包文件拖进来
[root@node4 ~]# ls
anaconda-ks.cfg  zabbix-release-7.0-2.el9.noarch.rpm
//升级更新zabbix包文件
[root@node4 ~]# rpm -Uvh zabbix-release-7.0-2.el9.noarch.rpm 
warning: zabbix-release-7.0-2.el9.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID b5333005: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-release-7.0-2.el9         ################################# [100%]

vim /etc/yum.repos.d/epel.repo 
//[epel]这个标签的末尾加上一行信息,否则安装会报错
[epel]
......
excludepkgs=zabbix*

vim /etc/yum.repos.d/zabbix.repo
//将该文件内容替换为以下内容,使用阿里源
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/7.0/rocky/9/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-B5333005

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/9/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-08EFA7DD
gpgcheck=1

[zabbix-sources]
name=Zabbix Official Repository source code - $basearch
baseurl=https://repo.zabbix.com/zabbix/7.0/rocky/9/SRPMS
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-B5333005
gpgcheck=1

yum -y install zabbix-agent

6、更改zabbix配置文件,使其被监控

node4与node7主机均同样配置

[root@node4 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.100.115
ServerActive=192.168.100.115
Hostname=slave

[root@node4 ~]# systemctl restart zabbix-agent.service 
[root@node4 ~]# systemctl enable zabbix-agent.service 

7、添加主机到zabbix平台

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

8、在node7主机上配置脚本

[root@node7 ~]# cd /etc/zabbix/
[root@node7 zabbix]# mkdir script
[root@node7 zabbix]# cd script/
[root@node7 script]# vim mysql_slave_status.sh

#!/bin/bash
USER="root"
PASSWD="redhat"
NAME=$1

function IO {
        Slave_IO_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_IO_Running |awk '{print $2}'`
        if [ $Slave_IO_Running == "Connecting" ];then
                echo 0 
        else
                echo 1 
        fi
}

function SQL {
        Slave_SQL_Running=`mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_SQL_Running: |awk '{print $2}'`
        if [ $Slave_SQL_Running == "Yes" ];then
                echo 0
        else
                echo 1
        fi

}

case $NAME in
        io)
                IO
        ;;
        sql)
                SQL
        ;;
        *)
        echo -e "Usage: $0 [io | sql]"
esac


[root@node7 script]# chmod +x mysql_slave_status.sh 
[root@node7 script]# chown -R zabbix.zabbix /etc/zabbix/script/
//验证脚本
[root@node7 script]# ./mysql_slave_status.sh io
0
[root@node7 script]# ./mysql_slave_status.sh sql
0

9、编写一个自配置文件,里面指定上面编写的脚本的路径,然后重启服务

[root@node7 script]# cd /etc/zabbix/zabbix_agentd.d/
[root@node7 zabbix_agentd.d]# vim userparameter_mysql_slave.conf
//在文件内写入以下内容
UserParameter=mysql.slave[*],/etc/zabbix/script/mysql_slave_status.sh $1

[root@node7 zabbix_agentd.d]# systemctl restart zabbix-agent.service 

10、去zabbix server验证状态

[root@zabbix ~]# yum -y install zabbix-get
//验证的结果如果是0,为正常,如果为1,则异常
[root@zabbix ~]# zabbix_get -s 192.168.100.117 -k mysql.slave[sql]
0
[root@zabbix ~]# zabbix_get -s 192.168.100.117 -k mysql.slave[io]
0

11、给node7主机添加监控项触发器

在这里插入图片描述
在这里插入图片描述
触发器
在这里插入图片描述
在这里插入图片描述
验证

[root@node7 ~]# mysql -uroot -predhat
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 24
Server version: 10.5.22-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.002 sec)

在这里插入图片描述

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

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

相关文章

微服务Gateway服务⽹关

一、Gateway服务⽹关 1.1为什么需要⽹关 Gateway⽹关是我们服务的守⻔神,所有微服务的统⼀⼊⼝。 ⽹关的核⼼功能特性: 请求路由和负载均衡:⼀切请求都必须先经过gateway,但⽹关不处理业务,⽽是根据某种规则&…

专利写作笔记

最近又要写专利,每次写专利的时候都找不到之前的专利笔记,这次发到网站上记录一下。 专利文件:1.权利要求书、2.说明书、3.说明书附图、4.说明书摘要、5.摘要附图 明确三点:①和现有方案的区别点(哪个步骤不同&#x…

【02】ctf工具ECCTOOL工具的安装和使用

2.ECCTOOL工具的安装和使用 工具的介绍: 一款非常好用的计算ECC的工具,可以处理一些小数值的计算,点击就可以使用,非常方便实用,具体的使用方法可以参考下面图中的介绍,解决一定的ECC椭圆曲线的问题&…

4款在线视频压缩工具,帮你的视频文件 轻松“瘦身” 。

设备里面视频太多,内存不够怎么办?视频文件太大不好传输怎么办?视频文件大小受规则限制怎么办? 别担心!有了这4款视频压缩软件,轻轻松松帮你搞定这些问题。 1、福昕视频高效压缩 直通车:www.f…

进制转换计算幸运数出现次数(华为od机考题)

一、题目 1.原题 有位客人来自异国&#xff0c;在该国使用m进制计数。 该客人有个幸运数字n(n<m)&#xff0c;每次购物时&#xff0c; 其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。 问&#xff1a;当其购买一个在我国价值k的产品时&#xff0c;…

AI在医学领域:GluFormer一种可泛化的连续血糖监测数据分析基础模型

糖尿病是一种全球性的健康挑战&#xff0c;影响着各个年龄段和不同地理区域的人群。根据最新数据&#xff0c;全球糖尿病患者人数已超过5亿&#xff0c;且每年以惊人的速度增长&#xff0c;相关的医疗费用也居高不下。2型糖尿病&#xff08;T2DM&#xff09;作为最主要的糖尿病…

lit-llama代码笔记--LLaMA Model

代码来自&#xff1a;lit-llama modelscope模型下载 &#xff1a;llama-7b 下载后的模型需要转换为lit-llama使用的格式&#xff0c;详见 howto 文件夹下的 download_weights.md 文中代码为了方便说明&#xff0c;删减了一些内容&#xff0c;详细代码请查看源码。 generate …

u盘突然说要格式化才能访问?如何跳过格式化打开U盘

在日常使用U盘的过程中&#xff0c;有时我们会突然遇到U盘无法直接访问&#xff0c;系统提示需要格式化才能继续使用的情况。这往往让人措手不及&#xff0c;尤其是当U盘中存储着重要数据时。面对这样的困境&#xff0c;许多用户可能会感到焦虑和无助。然而&#xff0c;不必过于…

SQLserver中的触发器和存储过程

在 SQL Server 中&#xff0c;触发器是一种特殊的存储过程&#xff0c;它在指定的数据库表上发生特定的数据修改事件时自动执行。触发器可以用于执行各种任务&#xff0c;如数据验证、数据审计、自动更新相关表等。 触发器的类型 SQL Server 支持以下几种类型的触发器&#x…

如何构建基于Java SpringBoot的保险业务管理与数据分析系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

UE管理内容 —— FBX导入选项参考

目录 Static Mesh Options Skeletal Mesh Options Transform Miscellaneous Material Options Fbx File Information 命名规范 StaticMesh SkeletalMesh AnimationSequence MorphTarget 导入器将自动检测要导入的文件类型&#xff0c;并相应地调整其接口&#xff1…

Java学习_21_多线程JUC

文章目录 前言多线程并发与并行多线程的实现方式Thread类Runnable接口Callable接口和Future接口 Thread类的相关方法线程对象线程优先级守护线程出让线程/礼让线程插入线程/插队线程 线程的相关问题生命周期安全问题Lock锁死锁等待唤醒机制&#xff08;生产者和消费者&#xff…

微信服务号网页授权域名配置数不够方案验证

文章目录 问题说明方案验证涉及工具结论 问题说明 微信服务号网页授权域名只能配置两个&#xff0c;而又没法直接配置主域名的形式&#xff0c;目前只能选取其中的一个业务域名来进行统一跳转解决。 方案验证 服务号现有配置数量限制如下&#xff1a; 申请测试号验证&#…

数据仓库系列 5:什么是事实表和维度表,它们有什么作用?

目录 1. 引言&#xff1a;事实表与维度表的魔力2. 事实表&#xff1a;业务活动的数字足迹2.1 什么是事实表?2.2 事实表的特征2.3 事实表的类型2.4 事实表示例2.5 事实表的作用2.6 事实表的设计原则2.7 事实表的查询示例 3. 维度表&#xff1a;为数据赋予意义3.1 什么是维度表?…

Mysql语句性能优化

SQL查询过程 查询缓存&#xff1a; 执行查询语句的时候&#xff0c;会先查询缓存&#xff08;MySQL 8.0 版本后移除&#xff0c;因为这个功能不太实用&#xff09;。分析器&#xff1a; 没有命中缓存的话&#xff0c;SQL 语句就会经过分析器&#xff0c;分析器说白了就是要先看…

logistic方程求解和模拟

logistic规律可以用以下式子表示 N(t1)​k*N(t)*​(N-N(t)) 其中N(t)为t时刻种群的数量&#xff0c;N为环境最大容纳的的种群数 k的取值通常与N有关&#xff0c;大约在1/N和4/N之间 题目如下 假设一些参数后的代码如下 T100; T11:T; N11000; a13/N1; Q800; N2700; a2-0.2/…

洛谷 P10119 『STA - R4』踱步

题目来源于&#xff1a;洛谷 题目本质&#xff1a;动态规划及优化&#xff0c;单调队列 题目思路&#xff1a; 设 fi,k,op​ 表示对于前 i 个位置&#xff0c;强制在 i1 分钟初踱步&#xff0c;总共踱步 k 次&#xff0c;且第 i 分钟在屋内&#xff08;op0&#xff09;或屋外…

leetcode73. 矩阵置零,简单模拟

leetcode73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示…

Stable Diffusion之提示词指南(二)

在上一篇的文章中&#xff0c;我们讲解了Stable Diffusion提示词的基本用法&#xff0c;不了解的到可以去学习一下———Stable Diffusion之提示词指南(一)。这章我们再详细讲解一下其他高级用法和负提示词。 注意&#xff1a;部分语法只是适用于AUTOMATIC1111 Web UI(以下简称…

SpringBoot集成kafka-指定topic(主题)-partition(分区)-offset(偏移量)消费信息

SpringBoot集成kafka-指定topic-partition-offset消费信息 1、消费者2、生产者3、配置类4、配置文件5、实体类6、工具类7、测试类8、第一次测试&#xff08;读取到19条信息&#xff09;9、第二次测试&#xff08;读取到3条信息&#xff09; 1、消费者 指定消费者读取配置文件中…