当前位置: 首页 > article >正文

【Prometheus】MySQL主从搭建,以及如何通过prometheus监控MySQL运行状态

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生k8s,Prometheus监控,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:Prometheus监控系统零基础到进阶
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • prometheus监控mysql主从
    • 1、安装并配置mysql_master
      • 1)安装MySQL
      • 2)配置MySQL,并启动
    • 2、从服务器相关配置
    • 3、监控主从数据库
      • 1)主库和从库分别创建一个 mysql_exporter 专属的监控账户
      • 2)安装并配置mysqld_exporter
    • 4、配置prometheus
      • 1)修改prometheus配置
      • 2)重新加载prometheus配置文件
      • 3)检查Prometheus的Status->Targets页面,验证 mysqld_exporter 是否已经成功纳入监控中
    • 5、MySQL常用指标与示例
      • 1)MySQL健康状态指标
      • 2)MySQL线程连接数相关
      • 3)MySQL InnoDB内存相关指标
      • 4)MySQL的QPS、QTS相关指标
      • 5)MySQL文件描述符相关指标
      • 6)MySQL主从复制相关指标
    • 6、MySQL告警规则文件
      • 1)编写MySQL告警规则文件
      • 2)检查告警规则
    • 7、导入mysql图形

prometheus监控mysql主从

要使用Prometheus 监控 MySQL,则需要 MySQL 服务器上部署对应的mysqld_exporter。
如果需要监控多个MySQL实例,则需要在每个MySQL实例上都部署一个mysqld_exporter,
因为每个 mysqld_exporter 只能连接并抓取一个MySQL 的指标数据。

1、安装并配置mysql_master

1)安装MySQL

主从数据可都安装 jingtian03设置为主节点,jingtian04设置为从节点

yum install mysql mysql-server -y

在这里插入图片描述

这种方式安装的MySQL默认密码为空
直接mysql就可以进去
在这里插入图片描述

2)配置MySQL,并启动

搭建过程
主服务器(Master)
启用二进制日志 log-bin;
设置一个全局唯一的 server_id;
提前准备好一个有复制权限(replication slave,replication client)的用户。

从服务器(Slave)
启动中继日志 relay-log;
设置一个全局唯一的 server_id;
使用主服务器提供的有复制权限的用户连接至 Master;
启动复制线程。
主服务器相关配置(基于bin-log的主从同步)

主节点配置文件:
主节点打开log-bin

vim /etc/my.cnf.d/mysql-server.cnf

末尾添加:

log-bin=master-a-bin
server-id=1

重启mysql
在这里插入图片描述

查看主节点的server id

show global variables like '%server%';

在这里插入图片描述

登录主库查看主库的状态

mysql> show master status;

在这里插入图片描述

mysql8.4查看主库状态

show binary log status;

在这里插入图片描述

在主库创建一个专门用来复制的数据库用户,这样所有从库都可以用这个用户来连接主库,也可以确保这个用户只有复制的权限

新增一个用户为‘copy’

create user 'copy'@'%' identified with mysql_native_password by 'Jingtian31357!';

为该用户授权

grant REPLICATION SLAVE on *.* to 'copy'@'%' with grant option;
grant REPLICATION CLIENT on *.* to 'copy'@'%' with grant option;

刷新权限

flush privileges;

在这里插入图片描述

填坑 Plugin ‘mysql_native_password’ is not loaded
mysql8.4,部分场景出现以下错误提示:
Plugin ‘mysql_native_password’ is not loaded

原因是:mysql_native_password 插件(模式)在新版本中被弃用了,新模式为 caching_sha2_password,需要启用一下旧模式。

解决步骤:
1.连接到数据库后,用命令 SHOW PLUGINS 查看插件列表
可以看到插件【mysql_native_password】的状态为【DISABLED】
在这里插入图片描述

我们的需要将其状态改为【ACTIVE】,修改步骤在后面。

2.Windows找到配置文件 my.ini 进行修改
配置文件位置举例:C:\ProgramData\MySQL\MySQL Server 8.4\my.ini
linux系统在/etc/my.cnf

在my.cnf最后一行添加:

mysql_native_password=ON

在这里插入图片描述

然后就可以创建用户密码了

从数据库验证远程连接主库是否正常,建议一定要检查一下

从库用在主库新增的用户远程登录
[root@node1 ~ ]#mysql -ucopy -h10.10.0.32 -pJingtian31357!

2、从服务器相关配置

在从服务器MySQL配置文件/etc/my.cnf.d/mysql-server.cnf下新增

relay-log=relay-log
server-id=2
log-slave-updates=ON
read-only=ON

在这里插入图片描述

改完MySQL配置文件后重启服务

service mysqld restart

在从库上建立主从连接关系,即从库指定主库的日志信息和链接信息

登录mysql
mysql -uroot -p

连接主服务器

change master to master_host='10.10.0.32', master_port=3306, master_user='copy', master_password='Jinghao31357!', master_log_file='master-a-bin.000003', master_log_pos=157;

在这里插入图片描述

/MASTER_LOG_FILE对应主库通过show master status查询的file,MASTER_LOG_POS对应主库的Position/
在这里插入图片描述

启动slave
start slave;
在这里插入图片描述

查看slave的状态,在从库查询
show slave status\G (注意没有分号)
在这里插入图片描述

我们主要关注 IO线程和SQL线程是否正常,还有Seconds_Behind_Master 落后主库多少秒
在这里插入图片描述

至此,主从数据库搭建完成,然后开始着手监控工作

mysql8.4使用这个命令创建主从

查看主库查看当前位置

SHOW BINARY LOG STATUS;

在这里插入图片描述

连接主服务器,启动复制

change replication source to source_host='10.10.0.32', source_port=3306, source_user='copy', source_password='Jingtian31357!', source_log_file='master-a-bin.000011', source_log_pos=537;

启动slave同步进程:
mysql>start replica;
4.查看slave状态:
mysql> show replica status \G

3、监控主从数据库

1)主库和从库分别创建一个 mysql_exporter 专属的监控账户

create user 'exporter'@'localhost' identified by 'Jingtian.net' WITH MAX_USER_CONNECTIONS 3;grant process,replication client,select on *.* to 'exporter'@'localhost';

刷新权限

flush privileges;

查看所有用户

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

在这里插入图片描述

2)安装并配置mysqld_exporter

  1. 访问mysqld_exporter的github地址, https://github.com/prometheus/mysqld_exporter
    下载mysqld-exporter
    在这里插入图片描述

进入release,下载最新版本
在这里插入图片描述

  1. 解压mysqld_exporter
[root@jingtian03 mysqlexport ]#tar xf mysqld_exporter-0.16.0.linux-amd64.tar.gz  -C /etc/
[root@jingtian03 mysqlexport ]#ln -s /etc/mysqld_exporter-0.16.0.linux-amd64/ /etc/mysqld_exporter

看下mysqld_exporter可以搜集哪些数据
在这里插入图片描述

  1. 新版的mysqld_exporter进行过重大变更。不再支持 DATA_SOURCE_NAME 环境变量方式注入MySQL用户和密码信息。
    但可以使用如下两种方式:
    1、使用 --config.my-cnf=“my.cnf” 指定MySQL用户和密码的保存文件路径,来连接MySQL服务
    2、使用 --mysqld.address 地址、 --mysqld.username 用户名、最后使用MYSQLD_EXPORTER_PASSWORD 环境变量定义传递密码。
    我们使用第二种,测一下
[root@jingtian03 mysqld_exporter ]#export MYSQLD_EXPORTER_PASSWORD=Jingtian.net
[root@jingtian03 mysqld_exporter ]#/etc/mysqld_exporter/mysqld_exporter --mysqld.address=localhost:3306 --mysqld.username=exporter

可以看到运行成功,默认监听的端口是9104端口
在这里插入图片描述

我们访问该主机的9104端口的metrics就可以看到指标数据了
http://10.10.0.32:9104/metrics
在这里插入图片描述

  1. 编写mysqld_exporter启动文件
    mysqld_exporter默认有一些未启动的,我们将它启动。带no的都是默认未启动的
    在这里插入图片描述
[root@jingtian03 mysqld_exporter ]#cat /usr/lib/systemd/system/mysqld_exporter.service 
[Unit]
Description=mysqld_exporter
Documentation=https://github.com/prometheus/mysqld_exporter
After=network.target
[Service]
Environment='MYSQLD_EXPORTER_PASSWORD=Jingtian.net'
ExecStart=/etc/mysqld_exporter/mysqld_exporter \--mysqld.address=localhost:3306 \--mysqld.username=exporter \--web.listen-address=":9104" \--web.telemetry-path="/metrics" \--collect.info_schema.processlist \--collect.info_schema.innodb_tablespaces \--collect.info_schema.innodb_metrics \--collect.info_schema.query_response_time \--collect.info_schema.userstats \--collect.info_schema.tables \--collect.global_status \--collect.global_variables \--collect.slave_status \--collect.binlog_size \--collect.engine_innodb_status
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
Restart=always
[Install]
WantedBy=multi-user.target
  1. 启动mysqld_exporter,并检查服务
ystemctl daemon-reload
systemctl enable mysqld_exporter.service --now

在这里插入图片描述

  1. 测试mysqld_exporter能否获取到对应的指标
    在这里插入图片描述

从库也把mysqld_exporter起来
在这里插入图片描述
在这里插入图片描述

4、配置prometheus

1)修改prometheus配置

一主一从,我们将他们俩放到同一个job_name中,如果我们像之前那样,将他俩写到同一个targets的列表中,则无法得知谁是主,谁是从。因此我们可以使用功能不同的targets 配置不同的标签label

vim /etc/prometheus/prometheus.yml- job_name: "mysqld_exporter"static_configs:- targets: ["jingtian03:9104"]labels:service: databaserole: master- targets: ["jingtian04:9104"]labels:service: databaserole: slave

2)重新加载prometheus配置文件

curl -X POST http://localhost:9090/-/reload

3)检查Prometheus的Status->Targets页面,验证 mysqld_exporter 是否已经成功纳入监控中

在这里插入图片描述

查看指标
在这里插入图片描述

5、MySQL常用指标与示例

对于MySQL数据库服务,通常会采用Google的四个黄金指标进行如下维度的监控:
延迟:MYSQL查询的响应时间。
流量:每秒查询数QPS、每秒事物数TPS。
错误:错误的查询数、连接失败次数。
饱和度:连接数饱和度、连接池饱和度。

1)MySQL健康状态指标

在这里插入图片描述

案例1:检查MySQL是否存活
mysql_up == 1

案例2:检查MySQL是否出现过重启,只需要判断启动时间是否小于1分钟即可。
mysql_global_status_uptime < 60

2)MySQL线程连接数相关

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

案例1:查询MySQL最近5分钟,当前打开的所有线程数,占总连接的比率。
计算公式:( max_over_time(5分钟打开的线程) / 最大连接)* 100

max_over_time(mysql_global_status_threads_connected[5m]) / mysql_global_variables_max_connections * 100

在这里插入图片描述

案例2:查询MySQL的最近5分钟平均活跃的线程数,占总连接的比率。
计算公式:( avg_over_time( 活跃线程数) /最大连接 * 100 ) 有可能MySQL
有大量的连接,但不是每个连接它都是活跃的。假设:配置的最大连接是
100,目前80个连接意味着会有80个线程,但活跃的就20个线程,因此打开的线程数超过了80%,但活跃线程才20%

avg_over_time(mysql_global_status_threads_running[5m]) / mysql_global_variables_max_connections * 100

在这里插入图片描述

3)MySQL InnoDB内存相关指标

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

案例:计算缓冲池使用率:计算公式:( 内存缓冲池数据大小 / InnoDB 内存缓冲池的总大小 * 100 )

mysql_global_status_innodb_buffer_pool_bytes_data / mysql_global_variables_innodb_buffer_pool_size * 100

在这里插入图片描述

4)MySQL的QPS、QTS相关指标

在这里插入图片描述

案例1:查询MySQL最近5分钟的,每秒的查询数(QPS)

irate(mysql_global_status_queries[5m])

在这里插入图片描述

案例2:查询MYSQL最近5分钟的,平均的每秒事物数(TPS)。计算公式:( TPS = ( Commits + Rollbacks ) / Time )

mysql_global_status_commands_total{command=“commit”} 每个成功执行的commit都表示一个事务已经完成。
mysql_global_status_commands_total{command=“rollback”} rollback 发生的情况通常表明事务没有成功完成。

rate(mysql_global_status_commands_total{command=~"commit|rollback"}[5m])

在这里插入图片描述

5)MySQL文件描述符相关指标

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

案例:计算MySQL打开的文件数,占比最大文件数的比率。计算公式:( 打开的文件数 / 配置最大的数量 * 100 )

mysql_global_status_open_files / mysql_global_variables_open_files_limit *100

在这里插入图片描述

6)MySQL主从复制相关指标

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

MySQL8.4的指标
从数据库IO线程
mysql_slave_status_replica_io_running
在这里插入图片描述

从数据库sql线程
mysql_slave_status_replica_sql_running
在这里插入图片描述

从库落后于主库秒数
mysql_slave_status_seconds_behind_source
在这里插入图片描述

从服务器上人为配置的SQL延迟秒数,通常用于故障转移或其他特定的复制策略。
在这里插入图片描述

8.4设置从库延迟

change replication source to source_delay=30;

在这里插入图片描述

查看延迟生效

show replica status\G

在这里插入图片描述

案例1:确保MySQL从服务器的IO线程和SQL线程都是正常的。

mysql_slave_status_slave_io_running ==0 or and mysql_slave_status_slave_sql_running == 0

#mysql8.4版本指标

mysql_slave_status_replica_io_running == 0 or mysql_slave_status_replica_sql_running ==0 

案例2:从服务落后主服务器时间不能超过5s,
计算公式:( 实际落后时间=Seconds_Behind_Master - SQL_DELAY)
mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay > 5
#mysql8.4版本指标
mysql_slave_status_seconds_behind_source - mysql_slave_status_sql_delay > 5

6、MySQL告警规则文件

1)编写MySQL告警规则文件

8.0.22之前版本

groups:
- name: mysql告警规则rules:- alert: MySQL主库实例宕机expr: mysql_up{role="master"} == 0for: 0mlabels:severity: criticalannotations:summary: "MySQL实例宕机, 实例: {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 已经宕机。"- alert: MySQL从库实例宕机expr: mysql_up{role="slave"} == 0for: 0mlabels:severity: criticalannotations:summary: "MySQL实例宕机, 实例: {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 已经宕机。"- alert: MySQL实例重启expr: sum(mysql_global_status_uptime) by (instance,job,service,role)< 60for: 0mlabels:severity: warningannotations:summary: "MySQL实例重启, 实例 {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 运行时间小于60s。当前值 {{ $value }}s"- alert: MySQL连接数使用率超过80%expr: max_over_time(mysql_global_status_threads_connected[5m]) / mysql_global_variables_max_connections * 100 > 80for: 1mlabels:severity: warningannotations:summary: "MySQL连接数过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的连接数在过去5分钟内超过了最大连接数的80%, 当前值 {{ $value }}%。"- alert: MySQL活跃线程数高expr: avg_over_time(mysql_global_status_threads_running[5m]) / mysql_global_variables_max_connections * 100 > 60for: 1mlabels:severity: warningannotations:summary: "MySQL活跃线程数过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的活跃线程数在过去5分钟内持续超过了最大连接数的60%, 当前值 {{ $value }}%。"- alert: MySQL查询率(QPS)过高expr: irate(mysql_global_status_queries[5m]) > 1000for: 1mlabels:severity: warningannotations:summary: "MySQL查询率(QPS)超标, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的查询率(QPS)在过去5分钟内超过1000, 当前值 {{ $value }}。"- alert: MySQL事务率(TPS)过高expr: sum(rate(mysql_global_status_commands_total{command=~"(commit|rollback)"}[5m])) without (command) > 100for: 1mlabels:severity: warningannotations:summary: "MySQL事务率(TPS)超标, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的事务率(TPS)在过去5分钟内超过100, 当前值 {{ $value }}。"- alert: MySQL文件描述符使用率过高expr: mysql_global_status_open_files / mysql_global_variables_open_files_limit * 100 > 80for: 5mlabels:severity: warningannotations:summary: "MySQL文件描述符使用率过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} ⻆⾊: {{ $labels.role }}"description: "该实例MySQL的文件描述符使用率超过80%,当前值 {{ $value }}%可能需要增加文件描述符限制。"- alert: Mysql从库IO线程未运行expr: mysql_slave_status_slave_io_running == 0for: 1mlabels:severity: warningannotations:summary: "MySQL从库IO线程已停止, 实例 {{ $labels.instance }}"description: "该MySQL实例IO线程已停止,当前值 {{ $value }}"- alert: Mysql从库SQL线程未运行expr: mysql_slave_status_slave_sql_running == 0for: 1mlabels:severity: warningannotations:summary: "MySQL从库SQL线程已停止, 实例 {{ $labels.instance }}"description: "该MySQL实例SQL线程已停止,当前值 {{ $value }}"- alert: Mysql从库复制延迟过高expr: mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay > 5for: 1mlabels:severity: warningannotations:summary: "MySQL从库复制延迟过高, 实例 {{ $labels.instance }}"description: "该实例MySQL的复制延迟超过5s,当前值 {{ $value }}s"

MySQL8.0.22之后版本

groups:
- name: mysql告警规则rules:- alert: MySQL主库实例宕机expr: mysql_up{role="master"} == 0for: 0mlabels:severity: criticalannotations:summary: "MySQL实例宕机, 实例: {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 已经宕机。"- alert: MySQL从库实例宕机expr: mysql_up{role="slave"} == 0for: 0mlabels:severity: criticalannotations:summary: "MySQL实例宕机, 实例: {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 已经宕机。"- alert: MySQL实例重启expr: sum(mysql_global_status_uptime) by (instance,job,service,role)< 60for: 0mlabels:severity: warningannotations:summary: "MySQL实例重启, 实例 {{ $labels.instance }}"description: "服务:{{ $labels.service }} 角色: {{ $labels.role }} 运行时间小于60s。当前值 {{ $value }}s"- alert: MySQL连接数使用率超过80%expr: max_over_time(mysql_global_status_threads_connected[5m]) / mysql_global_variables_max_connections * 100 > 80for: 1mlabels:severity: warningannotations:summary: "MySQL连接数过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的连接数在过去5分钟内超过了最大连接数的80%, 当前值 {{ $value }}%。"- alert: MySQL活跃线程数高expr: avg_over_time(mysql_global_status_threads_running[5m]) / mysql_global_variables_max_connections * 100 > 60for: 1mlabels:severity: warningannotations:summary: "MySQL活跃线程数过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的活跃线程数在过去5分钟内持续超过了最大连接数的60%, 当前值 {{ $value }}%。"- alert: MySQL查询率(QPS)过高expr: irate(mysql_global_status_queries[5m]) > 1000for: 1mlabels:severity: warningannotations:summary: "MySQL查询率(QPS)超标, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的查询率(QPS)在过去5分钟内超过1000, 当前值 {{ $value }}。"- alert: MySQL事务率(TPS)过高expr: sum(rate(mysql_global_status_commands_total{command=~"(commit|rollback)"}[5m])) without (command) > 100for: 1mlabels:severity: warningannotations:summary: "MySQL事务率(TPS)超标, 实例 {{ $labels.instance }},服务:{{ $labels.service }} 角色: {{ $labels.role }}"description: "该实例MySQL的事务率(TPS)在过去5分钟内超过100, 当前值 {{ $value }}。"- alert: MySQL文件描述符使用率过高expr: mysql_global_status_open_files / mysql_global_variables_open_files_limit * 100 > 80for: 5mlabels:severity: warningannotations:summary: "MySQL文件描述符使用率过高, 实例 {{ $labels.instance }},服务:{{ $labels.service }} ⻆⾊: {{ $labels.role }}"description: "该实例MySQL的文件描述符使用率超过80%,当前值 {{ $value }}%可能需要增加文件描述符限制。"- alert: Mysql从库IO线程未运行expr: mysql_slave_status_replica_io_running == 0for: 1mlabels:severity: warningannotations:summary: "MySQL从库IO线程已停止, 实例 {{ $labels.instance }}"description: "该MySQL实例IO线程已停止,当前值 {{ $value }}"- alert: Mysql从库SQL线程未运行expr: mysql_slave_status_replica_sql_running == 0for: 1mlabels:severity: warningannotations:summary: "MySQL从库SQL线程已停止, 实例 {{ $labels.instance }}"description: "该MySQL实例SQL线程已停止,当前值 {{ $value }}"- alert: Mysql从库复制延迟过高expr: mysql_slave_status_seconds_behind_source - mysql_slave_status_sql_delay > 5for: 1mlabels:severity: warningannotations:summary: "MySQL从库复制延迟过高, 实例 {{ $labels.instance }}"description: "该实例MySQL的复制延迟超过5s,当前值 {{ $value }}s"

2)检查告警规则

在这里插入图片描述

7、导入mysql图形

导入一个MySQL的Grafana模板。Dashboard ID为 7362、9625 ,而监控MySQL主从的Dashboard可以使用 11323
在这里插入图片描述

相关文章:

【Prometheus】MySQL主从搭建,以及如何通过prometheus监控MySQL运行状态

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

上传文件防木马函数

项目环境&#xff1a;TP6、TP5 问题&#xff1a;解决旧项目中上传上来的文件校验不严格。导致会有木马文件入侵的情况发生。除了上篇博文中提及的限制上传文件存储的目录不可执行php文件外。仍需在入口处严格检验上传文件的类型&#xff0c;排除php类可执行文件上传。 解决&a…...

百问网imx6ullpro调试记录(linux+qt)

调试记录 文章目录 调试记录进展1.开发板相关1.1百问网乌班图密码 1.2 换设备开发环境搭建串口调试网络互通nfs文件系统挂载 1.3网络问题1.4系统启动1.5进程操作 2.QT2.1tslib1.获取源码2.安装依赖文件3.编译 2.2qt移植1.获取qt源码2.配置编译器3.编译 2.3拷贝到开发板1.拷贝2.…...

人脸识别与人脸检测技术

人脸识别技术,作为一种基于人的脸部特征信息进行身份识别的生物识别技术,近年来在人工智能和计算机视觉技术的推动下取得了显著进展。它利用摄像机或摄像头采集含有人脸的图像或视频流,自动在图像中检测和跟踪人脸,进而对检测到的人脸进行一系列计算和分别判断。这一技术不…...

前端性能分析常见内容

前端性能分析是前端开发中的重要部分&#xff0c;以下是对前端常考性能分析题目的详解&#xff1a; 一、性能指标 前端性能优化的核心目标是提升用户体验&#xff0c;常见的性能指标包括&#xff1a; 加载时间&#xff08;Load Time&#xff09;&#xff1a;指从用户发出请求…...

ZEMAX POPD操作数

在Zemax中&#xff0c;POPD&#xff08;Physical Optics Propagation Data&#xff09; 是一个用于物理光学传播&#xff08;POP&#xff09;分析的关键操作数&#xff0c;主要用于优化或分析光束的物理特性&#xff08;如束腰、发散角、M因子等&#xff09;。以下是对其使用方…...

ansible使用学习

一、查询手册 1、官网 ansible官网地址&#xff1a;https://docs.ansible.com 模块查看路径&#xff1a;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin 2、命令 ansible-doc -s command二、相关脚本 1、服务…...

VS2022中cmath.h头文件功能介绍

在C语言的世界里&#xff0c;数学运算一直是程序开发中不可或缺的一部分。无论是进行简单的数值计算&#xff0c;还是处理复杂的科学工程问题&#xff0c;都需要借助数学函数来实现。在Visual Studio 2022&#xff08;VS2022&#xff09;中&#xff0c;cmath.h&#xff08;在C语…...

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务&#xff1a;从数据准备到模型训练与测试 1. 引言 在计算机视觉领域&#xff0c;图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始&#xff0c;逐步构建模型、训练模型&#xff0c;并在测试…...

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计FIR数字滤波器&#xff08;保姆级教程&#xff09; 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner"&#xff0c;接着就会跳出以下界面&#xf…...

如何在本地部署deepseek?

1、打开ollama官网&#xff0c;点download&#xff08;下载需要翻墙 https://ollama.com/ 2、双击下载好的OllamaSetup.exe&#xff0c;一直点下一步即可。 3、winR 输入cmd&#xff0c;打开命令提示符&#xff0c;输入ollama。有以下提示即安装完成。 4、可以根据 nvidia-…...

AJAX项目——数据管理平台

黑马程序员视频地址&#xff1a; 黑马程序员——数据管理平台 前言 功能&#xff1a; 1.登录和权限判断 2.查看文章内容列表&#xff08;筛选&#xff0c;分页&#xff09; 3.编辑文章&#xff08;数据回显&#xff09; 4.删除文章 5.发布文章&#xff08;图片上传&#xff0…...

MarsCode AI插件在IntelliJ IDEA中使用

文章目录 前言一、MarsCode是什么&#xff1f;二、下载三、使用1、登录2、操作界面3、生成代码4、解释代码5、注释代码6、生成单测7、智能修复8、代码补全 总结 前言 随着 AI 技术浪潮席卷而来&#xff0c;各类 AI 工具呈爆发式涌现&#xff0c;深度融入我们的日常与职场&…...

如何将网站提交百度收录完整SEO教程

百度收录是中文网站获取流量的重要渠道。本文以我的网站&#xff0c;www.mnxz.fun&#xff08;当然现在没啥流量&#xff09; 为例&#xff0c;详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…...

基于 SVPWM 的异步电机直接转矩控制系统的研究与仿真

标题:基于 SVPWM 的异步电机直接转矩控制系统的研究与仿真 内容:1.摘要 摘要&#xff1a;本文主要研究了基于 SVPWM 的异步电机直接转矩控制系统。首先&#xff0c;介绍了异步电机直接转矩控制的基本原理和 SVPWM 技术的特点。然后&#xff0c;详细阐述了系统的设计方法&#…...

C# OpenCV机器视觉:SoftNMS非极大值抑制

嘿&#xff0c;你知道吗&#xff1f;阿强最近可忙啦&#xff01;他正在处理一个超级棘手的问题呢&#xff0c;就好像在一个混乱的战场里&#xff0c;到处都是乱糟糟的候选框&#xff0c;这些候选框就像一群调皮的小精灵&#xff0c;有的重叠在一起&#xff0c;让阿强头疼不已。…...

生信云服务器:让生物信息学分析更高效、更简单【附带西柚云优惠码】

随着生物信息学的快速发展&#xff0c;基因组测序、单细胞分析等复杂任务逐渐成为研究者们的日常工作。然而&#xff0c;个人电脑在处理这些任务时往往面临性能瓶颈&#xff0c;如内存不足、运算速度慢等问题&#xff0c;导致分析任务频繁失败或崩溃。为了解决这一难题&#xf…...

【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面

【清晰教程】本地部署DeepSeek-r1模型-CSDN博客 目录 安装Docker 配置&检查 Open WebUI 部署Open WebUI 安装Docker 完成本地DeepSeek-r1的部署后【清晰教程】本地部署DeepSeek-r1模型-CSDN博客&#xff0c;通过Docker为本地DeepSeek-r1部署WebUI界面。 访问Docker官…...

AI知识库和全文检索的区别

1、AI知识库的作用 AI知识库是基于人工智能技术构建的智能系统&#xff0c;能够理解、推理和生成信息。它的核心作用包括&#xff1a; 1.1 语义理解 自然语言处理&#xff08;NLP&#xff09;&#xff1a;AI知识库能够理解用户查询的语义&#xff0c;而不仅仅是关键词匹配。 …...

Flink-序列化

一、概述 几乎每个Flink作业都必须在其运算符之间交换数据&#xff0c;由于这些记录不仅可以发送到同一JVM中的另一个实例&#xff0c;还可以发送到单独的进程&#xff0c;因此需要先将记录序列化为字节。类似地&#xff0c;Flink的堆外状态后端基于本地嵌入式RocksDB实例&…...

快速部署 DeepSeek R1 模型

1. DeepSeek R1 模型的介绍 DeepSeek R1 模型是专为自然语言处理&#xff08;NLP&#xff09;和其他复杂任务设计的先进大规模深度学习模型 &#xff0c;其高效的架构设计是一大亮点&#xff0c;能够更高效地提取特征&#xff0c;减少冗余计算。这意味着在处理海量数据时&…...

Java全栈项目实战:在线课程评价系统开发

一、项目概述 在线课程评价系统是一款基于Spring Boot Vue3的全栈应用&#xff0c;面向高校师生提供课程评价、教学反馈、数据可视化分析等功能。系统包含Web管理端和用户门户&#xff0c;日均承载10万课程数据&#xff0c;支持高并发访问和实时数据更新。 项目核心价值&…...

数据库系统概念第六版记录 四

1.sql组成 SQL 是最有影响力的商用市场化的关系查询语言。SQL 语言包括几个部分: 数据定义语言(DDL) &#xff0c;它提供了定义关系模式、删除关系以及修改关系模式的命令。 数据操纵语言(DML) &#xff0c;它包括查询语言&#xff0c;以及往数据库中插入元组、从数据库中删…...

无人机飞行试验大纲

‌无人机飞行试验大纲‌ ‌编制日期‌&#xff1a;2025年02月11日 ‌一、试验目的与背景‌ 本次无人机飞行试验旨在验证无人机的飞行性能、控制系统稳定性、机体结构强度以及各项任务执行能力。随着无人机技术在各个领域的广泛应用&#xff0c;对其性能进行全面、系统的测试显得…...

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展&#xff0c;以DeepSeek为代表的大语言模型&#xff08;LLM&#xff09;正在逐步渗透到传统硬件开发领域。在FPGA&#xff08;现场可编程门阵列&#xff09;和IC&#xff08;集成电路&#xff09;开发这一技术密集型行业中&#xff0c;DeepSeek凭借其…...

DeepSeek-V3 的核心技术创新

DeepSeek-V3 的核心技术创新 flyfish DeepSeek-V3 的核心技术创新主要体现在其架构设计和训练目标上&#xff0c;通过 多头潜在注意力&#xff08;MLA&#xff09;、DeepSeekMoE 架构、无辅助损失的负载均衡策略 和 多 Token 预测训练目标&#xff08;MTP&#xff09; 1. 多…...

函数指针(Function Pointer)与 typedef int (*FuncPtr)(int, int);typedef与using(更推荐)

C 函数指针&#xff08;Function Pointer&#xff09;详解 函数指针是指向函数的指针&#xff0c;它可以存储函数地址&#xff0c;并通过该指针调用函数。函数指针在回调函数、策略模式、动态函数调用等场景中非常有用。 1. 什么是函数指针&#xff1f; 函数指针是一个指向函…...

【AI时代】以聊天框的模式与本地部署DeepSeek交互 (Docker方式-Open WebUI)

一、本地部署DeepSeek 参考地址&#xff1a;(含资源下载) https://blog.csdn.net/Bjxhub/article/details/145536134二、安装Docker https://www.docker.com/ 三、拉取Open WebUI 镜像 docker pull ghcr.io/open-webui/open-webui:main 四、启动并验证 启动: docker run …...

【Elasticsearch】监控与管理:集群监控指标

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.

鸿蒙项目接入支付宝后&#xff0c;运行提示error: install parse native so failed. 该问题可能由于设备支持的 Abi 类型与 C 工程中的不匹配导致. 官网error: install parse native so failed.错误解决办法 根据官网提示在模块build-profile.json5中添加“x86_64”依然报错 问…...