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

MySQL性能优化

目录

一、索引优化

1、慢查询日志分析

2、EXPLAIN 执行计划分析

3、索引类型选择

4、索引使用原则

5、常见索引失效场景

二、SQL语句优化

1、避免低效操作符

2、减少数据扫描量

3、子查询优化

4、其他高频优化技巧

三、表设计优化

1、数据类型优化

四、架构设计优化

1、读写分离

2、分库分表

3、缓存整合

五、硬件与配置优化

1、磁盘优化

2、内存配置

3、连接与线程相关

4、查询优化相关

5、日志与持久化

6、存储与I/O优化

7、其他关键参数

六、监控

1、关键监控指标

2、实时状态监控命令

3、开源监控工具

4、实战:Prometheus+Grafana监控MySQL


一、索引优化

1、慢查询日志分析

1> 开启慢查询日志

动态开启(无需重启MySQL)

-- 开启慢查询日志
SET GLOBAL slow_query_log = 'ON';-- 设置慢查询日志文件路径(默认在数据目录下,名为hostname-slow.log)
SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log';-- 设置慢查询时间阈值(单位:秒,默认10秒)
SET GLOBAL long_query_time = 1;-- 记录未使用索引的查询(可选)
SET GLOBAL log_queries_not_using_indexes = 'ON';

永久生效(修改配置文件)

修改MySQL配置文件 my.cnf(Linux)或 my.ini(Windows),在 [mysqld] 段添加:

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1

重启MySQL服务使配置生效:

# Linux
systemctl restart mysqld# Windows(服务名可能不同)
net stop mysql
net start mysql

2> 查看慢查询日志

直接查看日志文件:

# 查看慢查询日志内容
cat /var/lib/mysql/slow.log# 或使用分页工具
more /var/lib/mysql/slow.log

使用 mysqldumpslow 工具分析:

MySQL内置工具 mysqldumpslow 可统计慢查询日志中的高频SQL:

# 按执行时间排序
mysqldumpslow -s t /var/lib/mysql/slow.log# 按出现次数排序
mysqldumpslow -s c /var/lib/mysql/slow.log# 显示前10条最慢的查询
mysqldumpslow -t 10 /var/lib/mysql/slow.log

通过 information_schema 表查询(需开启日志记录到表):

如果启用了 log_output = 'TABLE',可通过以下SQL查询:

-- 查看慢查询记录
SELECT * FROM mysql.slow_log;

3> 关键参数说明

参数名作用默认值
slow_query_log是否开启慢查询日志(ON/OFFOFF
slow_query_log_file慢查询日志文件路径主机名-slow.log
long_query_time慢查询时间阈值(单位:秒),超过此时间的SQL会被记录10
log_queries_not_using_indexes是否记录未使用索引的查询(ON/OFFOFF
min_examined_row_limit设置需要检查的最小行数阈值,低于此值的查询不会被记录0
log_output日志输出方式(FILE/TABLE/NONEFILE

2、EXPLAIN 执行计划分析

在执行SQL语句时,MySQL会对SQL进行解析、优化、执行三个步骤。在优化阶段,MySQL查询优化器会生成一个执行计划,该计划被称为查询计划或执行计划。执行计划告诉MySQL执行SQL语句的具体步骤,包括表的连接方式、扫描方式、过滤条件等。

查看sql执行计划的sql

-- EXPLAIN 查询sql
EXPLAIN SELECT * FROM table_name WHERE conditions;

  使用EXPLAIN ANALYZE(MySQL 8.0+):获取实际执行时间和详细步骤

执行计划中的核心字段

1> id:标识查询中每个SELECT子句的执行顺序。

  • 相同id:按顺序执行(如多表JOIN)。

  • 不同id:id值越大,优先级越高(如子查询)。

  • 包含UNION时,可能出现<unionM,N><derivedN>

    2> select_type:表示查询类型。

    • SIMPLE:简单查询(无子查询或UNION)。

    • PRIMARY:外层主查询。

    • SUBQUERY:子查询中的第一个SELECT。

    • DERIVED:FROM子句中的派生表。

    • UNION:UNION中的第二个或后续查询。

    • UNION RESULT:UNION的结果集。

    3> table:当前行操作的表名。

    4> type:表示表的访问类型,,包括ALL(全表扫描)、index(索引扫描)、range(索引范围扫描)、ref(非唯一索引扫描)、eq_ref(JOIN中通过主键或唯一索引关联)、const(通过主键或唯一索引查找,返回一行)等。

    • 性能排序(从优到劣):system > const > eq_ref > ref > range > index > ALL

    5> possible_keys & key:可能用到的索引 & 实际使用的索引。

    6> rows:预估扫描的行数。值越小越好。

    7> Extra:包含MySQL执行计划中的其他信息,例如是否使用了临时表、是否使用了文件排序等。

    • Using index:覆盖索引(无需回表)。

    • Using where:存储引擎检索后过滤。

    • Using temporary:使用临时表(常见于GROUP BY)。

    • Using filesort:额外排序(需优化ORDER BY)。

    • Using join buffer:使用连接缓存。

    • Using index condition:触发索引下推(将部分 WHERE 条件提前到存储引擎层处理,减少回表次数

    重点关注

    • type:访问类型(至少达到range级别)

    • key:实际使用的索引

    • rows:扫描行数

    • Extra:是否出现Using filesortUsing temporary

    3、索引类型选择

    按数据结构分类:

    类型特点适用场景
    B+Tree默认索引类型,支持范围查询、排序、最左前缀匹配绝大多数场景
    Hash仅支持精确查询(=、IN),无法排序或范围查询等值查询且数据离散度高
    FullText全文检索(关键词匹配)文本内容的模糊搜索
    R-Tree空间索引,支持地理数据查询GIS数据存储与查询

    MySQL主要用的是B+树索引。B+树索引的结构特点如下:

    • 叶子节点存储完整数据行(聚簇索引)或主键值+索引列(非聚簇索引)。

    • 所有叶子节点形成有序链表,支持高效范围查询。

    • 非叶子节点仅存储索引键和指针,降低树的高度。

    按逻辑功能分类

    • 主键索引(PRIMARY KEY):唯一且非空,表的主键自动成为聚簇索引。

    • 唯一索引(UNIQUE):确保列值的唯一性,允许NULL值。

    • 普通索引(INDEX):最基本的加速查询索引。

    • 联合索引(Composite Index):多列组合索引,遵循最左前缀原则

    • 覆盖索引(Covering Index):索引包含查询所需全部字段,无需回表。

    -- 创建普通索引
    CREATE INDEX idx_name ON table(column);-- 创建唯一索引
    CREATE UNIQUE INDEX idx_name ON table(column);-- 创建联合索引:多列组合索引,遵循最左前缀原则
    CREATE INDEX idx_name ON table(col1, col2, col3);-- 创建全文索引(仅适用于InnoDB/MyISAM)
    ALTER TABLE table ADD FULLTEXT INDEX idx_name(content);-- 查看索引
    SHOW INDEX FROM table_name;-- 删除索引
    DROP INDEX idx_name ON table;-- 查看索引使用情况(Handler_read_key表示索引命中次数)
    SHOW STATUS LIKE 'Handler_read%';-- 索引碎片整理
    -- 优化表重建索引(InnoDB)
    ALTER TABLE table_name ENGINE=InnoDB;
    -- 或使用OPTIMIZE TABLE
    OPTIMIZE TABLE table_name;

    4、索引使用原则

    • 选择性原则:选择区分度高的列建索引(如COUNT(DISTINCT col)/COUNT(*)接近1)

    • 最左前缀原则:联合索引必须从最左列开始使用(如索引(a,b,c),查询条件需包含aa,b等)

    • 覆盖索引优先:索引包含查询所需字段,避免回表

    • 短索引原则:对长字符串使用前缀索引(如INDEX(email(10))

    5、常见索引失效场景

    场景示例解决方法
    对索引列使用函数或运算WHERE YEAR(create_time) = 2023改写为范围查询
    隐式类型转换WHERE id = '100'(id为INT类型)保持类型一致
    OR条件未全索引覆盖WHERE a=1 OR b=2(仅a有索引)改用UNION或单独索引
    LIKE以通配符开头WHERE name LIKE '%abc%'改用全文索引或倒序存储
    联合索引未遵循最左前缀索引(a,b,c),查询条件只有b=1 AND c=2调整查询条件或索引顺序

    二、SQL语句优化

    1、避免低效操作符

    • OR条件:改用UNION ALL,例如SELECT id FROM t WHERE num=10 OR num=20优化为分两次查询合并。

    • IN和 NOT IN:连续数值用BETWEEN代替(连续数值范围查询更高效),或使用EXISTS替代子查询。IN适合子查询结果集较小的情况。EXISTS 适用于子查询结果集可能很大的情况。

    当使用 IN 时,MySQL 会首先执行子查询,然后将子查询的结果集用于外部查询的条件。这意味着子查询的结果集需要全部加载到内存中。

    而 EXISTS 会对外部查询的每一行,执行一次子查询。如果子查询返回任何行,则 EXISTS 条件为真。EXISTS 关注的是子查询是否返回行,而不是返回的具体值。

    -- 低效,IN 的临时表可能成为性能瓶颈
    SELECT num FROM a WHERE num IN (SELECT num FROM b);
    -- 高效,EXISTS 可以利用关联索引
    SELECT num FROM a WHERE EXISTS (SELECT 1 FROM b WHERE b.num = a.num);
    • 模糊查询:避免左模糊(LIKE '%abc%'),改用右模糊(LIKE 'abc%')或全文检索

    • 避免 WHERE 子句中的函数:如 WHERE DATE(create_time) = '2023-01-01' 改为范围查询

    • 避免字段计算

    -- 低效
    SELECT * FROM t WHERE num/2 = 100;
    -- 高效
    SELECT * FROM t WHERE num = 100 * 2; :cite[1]:cite[5]

    2、减少数据扫描量

    • SELECT *:仅查询必要字段,减少数据传输和I/O开销。

               SELECT * 可能导致覆盖索引失效,增加回表开销。

    • 分页优化:使用游标分页(WHERE id > 1000 LIMIT 10 代替 LIMIT 1000,10)或 使用子查询或覆盖索引(如 WHERE id > (SELECT id FROM table LIMIT 100000, 1)

               分页偏移量过大时,LIMIT M,N 需要扫描 M+N 行,子查询通过索引覆盖减少扫描范围

    3、子查询优化

    使用JOIN代替子查询,避免临时表创建

    4、其他高频优化技巧

    • 优化 COUNT(*):对 InnoDB 表,可通过维护统计表或缓存近似值替代直接查询。

    • 排序优化:利用索引排序(如 ORDER BY 字段与索引顺序一致),避免 filesort

    • 减少锁竞争:使用 InnoDB 行锁,避免批量更新导致锁升级为表锁

    三、表设计优化

    1、数据类型优化

    1> 最小化存储原则

    • 使用 TINYINT 代替 INT 存储状态值(0-255)

    • DATETIME(6) 保留微秒时优先于 VARCHAR 存储时间

    • 金额字段使用 DECIMAL(18,2) 而非 DOUBLE 避免精度丢失

    2> 字符串优化

    • 固定长度用 CHAR(32)(如MD5值)

    • 变长字段用 VARCHAR(255) 并避免过度预留长度

    • 大文本分离到单独表,主表存储 TEXT 的指针

    3> 时间类型选择

    • 未来时间用 DATETIME(支持范围更大),DATETIME 的默认值为 null,占用 8 个字节

    • 更新时间戳用 TIMESTAMP(自动更新特性),TIMESTAMP 的默认值为当前时间,占 4 个字节

    4> 主键设计

    • 自增ID:BIGINT UNSIGNED AUTO_INCREMENT

    • 业务主键:订单号使用 CHAR(24) 包含时间戳+随机数

    • 禁用UUID无序主键(导致页分裂)

    5> 范式与反范式平衡

    • 冗余设计:用户表增加 order_count 字段避免实时COUNT

    • 预计算:商品表添加 avg_rating 字段定期更新

    6> 字段约束

    • NOT NULL 字段默认值:

      • status TINYINT NOT NULL DEFAULT 0

      • gmt_create DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

    7> 注释规范

    • COMMENT '0-未支付 1-已支付 2-已取消'

    • COMMENT '单位:分'

    四、架构设计优化

    1、读写分离

    • 主从复制:主库处理写操作,从库处理读请求。

    • 中间件:使用ShardingSphere、MyCat实现自动路由。

    2、分库分表

    • 垂直分库:按业务拆分(用户库、订单库)。

    • 水平分表:按分片键(如用户ID哈希)拆分到多张表。

    • 工具选择:推荐ShardingSphere(Java友好,无需代理)。

    3、缓存整合

    • 本地缓存:Caffeine(本地缓存库)缓存静态数据(如配置表)。

    • 分布式缓存:Redis缓存热点数据(如商品详情)。

    五、硬件与配置优化

    1、磁盘优化

    • 使用SSD替代机械硬盘,提升随机IO性能。

    • 调整RAID级别(如RAID 10)或使用NVMe SSD。

    2、内存配置

    1> innodb_buffer_pool_size

    • 作用:InnoDB 存储引擎的核心缓存,用于缓存表数据、索引和事务日志。

    • 推荐值:通常设置为物理内存的 70-80%(如果服务器专用于 MySQL)。

    • 影响:增大此值可减少磁盘 I/O,显著提升查询性能。

    2> innodb_log_buffer_size

    • 作用:事务日志的缓冲区大小,用于暂存未写入磁盘的事务日志。是内存中的redo log buffer。

    • 推荐值:默认 16MB,高并发事务场景可调整为 64-256MB

    • 影响:减少日志写入磁盘的频率,提高事务处理速度。

    3、连接与线程相关

    1> max_connections

    • 作用:MySQL 允许的最大并发连接数。

    • 推荐值:根据业务需求调整(默认 151),避免过高导致内存耗尽。

    • 关联参数

      • thread_cache_size:缓存空闲线程数,减少线程创建开销。

      • wait_timeout 和 interactive_timeout:控制非活动连接的自动断开时间。

    2> back_log

    • 作用:在短时间内处理大量连接请求时,排队等待的请求数量。

    • 推荐值:高并发场景下可适当调高(如 500)。

    4、查询优化相关

    1> tmp_table_size 和 max_heap_table_size

    • 作用:控制内存临时表的最大大小,避免复杂查询频繁使用磁盘临时表(*.ibd)。

    • 推荐值:两者设为相同值(如 64M-256M)。

    2> sort_buffer_size 和 join_buffer_size

    • 作用:排序和连接操作的内存缓冲区。

    • 注意:默认值通常足够,过高可能导致内存浪费。建议按需调整。

    5、日志与持久化

    1> innodb_log_file_size

    • 作用:InnoDB 事务日志(redolog)文件大小。

    • 推荐值:通常设置为 1-4GB,较大的日志文件可减少磁盘写入频率。

    • 关联参数innodb_log_files_in_group(日志文件数量,默认 2)。

    2> sync_binlog

    • 作用:控制二进制日志(binlog)写入磁盘的频率。

    • 推荐值

      • 0:由系统决定(性能高,但可能丢失数据)。

      • 1:每次事务提交都同步(安全性高,性能较低)。

    3> innodb_flush_log_at_trx_commit

    • 作用:控制事务日志(redo log)的刷盘策略。

    • 推荐值

      • 1:每次提交都刷盘(ACID 安全,性能较低)。

      • 2:每秒刷盘(平衡性能与安全)。

      • 0:依赖系统刷盘(性能最高,风险最大)。

    6、存储与I/O优化

    1> innodb_io_capacity

    • 作用:InnoDB 后台进程(如刷脏页)的 I/O 吞吐量上限。

    • 推荐值:根据磁盘类型调整(如 HDD 设为 200,SSD 设为 2000-5000)。

    2> innodb_flush_method

    • 作用:控制 InnoDB 数据文件和日志文件的写入方式。

    • 推荐值

      • O_DIRECT:绕过操作系统缓存,直接写入磁盘(推荐用于专用服务器)。

      • fdatasync:默认方式,适合通用场景。

    3> innodb_file_per_table

    • 作用:每个 InnoDB 表使用独立的表空间文件(.ibd)。

    • 推荐值:设为 ON,便于管理和空间回收。

    7、其他关键参数

    1> max_allowed_packet

    • 作用:控制客户端发送的最大数据包大小(如大字段插入)。

    • 推荐值:根据业务需求调整(如 64M-256M)。

    2> innodb_lock_wait_timeout

    • 作用:事务等待行锁的超时时间(秒)。

    • 推荐值:默认 50,高并发场景可适当降低。

    六、监控

    1、关键监控指标

    • 性能指标:QPS、TPS、慢查询数、锁等待时间。

    • 资源利用:CPU使用率、内存缓冲池命中率、磁盘I/O吞吐量。

    • 复制状态:主从延迟(Seconds_Behind_Master)、复制线程状态。

    • 连接管理:活跃连接数(Threads_connected)、线程池利用率。

    2、实时状态监控命令

    1> SHOW PROCESSLIST

    • 作用:查看当前所有客户端连接和正在执行的 SQL 语句。

    SHOW FULL PROCESSLIST; -- 显示完整 SQL 语句
    • 关键字段

      • State:连接状态(如 Sending dataLocked)。

      • Time:查询已执行的时间(秒)。

      • Info:正在执行的 SQL(需 FULL 关键字显示完整内容)。

    2> SHOW ENGINE INNODB STATUS

    • 作用:查看 InnoDB 存储引擎的详细状态,包括锁、事务、缓冲池等。

    • 关键信息

      • TRANSACTIONS:当前活跃事务。

      • BUFFER POOL AND MEMORY:缓冲池使用情况。

      • ROW OPERATIONS:行级操作统计。

    3> SHOW GLOBAL STATUS

    • 作用:查看全局统计信息(如连接数、查询数、缓存命中率)。

    SHOW GLOBAL STATUS LIKE 'Threads_connected'; -- 当前连接数  
    SHOW GLOBAL STATUS LIKE 'Innodb_row_%';      -- InnoDB 行操作统计  
    SHOW GLOBAL STATUS LIKE 'Qcache%';           -- 查询缓存命中率(仅适用于旧版本)

    4> SHOW VARIABLES

    • 作用:查看 MySQL 配置参数(如 max_connectionsinnodb_buffer_pool_size)。

    SHOW VARIABLES LIKE 'innodb_log_file%'; -- 查看 InnoDB 日志文件配置

    3、开源监控工具

    工具名称核心功能适用场景
    Prometheus+Grafana时序数据采集+可视化,支持自定义仪表盘和告警规则;需配合MySQL Exporter采集指标。云原生环境、分布式架构监控
    Percona PMM专为MySQL/MariaDB设计,提供慢查询分析、InnoDB状态监控、复制延迟检测等深度功能。企业级性能优化与深度诊断
    Zabbix全栈监控(服务器+数据库),支持灵活告警和历史数据分析,需配置监控模板。中大型集群监控、多维度指标跟踪
    Nagios服务可用性监控,支持插件扩展(如MySQL连接数、进程状态),侧重告警及时性。基础服务存活监控与告警管理
    Percona Toolkit包含 pt-query-digest(慢查询分析)、pt-table-checksum(主从一致性校验)等工具。慢查询优化、数据一致性校验

    4、实战:Prometheus+Grafana监控MySQL

    1> 安装MySQL Exporter

    wget https://github.com/prometheus/mysqld_exporter/releases/latest/download/mysqld_exporter.tar.gz
    ./mysqld_exporter --config.my-cnf=/etc/mysql/my.cnf

    2> 配置Prometheusprometheus.yml):

    scrape_configs:- job_name: 'mysql'static_configs:- targets: ['localhost:9104']  # MySQL Exporter端口

    3> Grafana导入模板:使用ID 7362展示QPS、缓冲池命中率等指标

    相关文章:

    MySQL性能优化

    目录 一、索引优化 1、慢查询日志分析 2、EXPLAIN 执行计划分析 3、索引类型选择 4、索引使用原则 5、常见索引失效场景 二、SQL语句优化 1、避免低效操作符 2、减少数据扫描量 3、子查询优化 4、其他高频优化技巧 三、表设计优化 1、数据类型优化 四、架构设计优…...

    Mendix 中的XPath 令牌(XPath Tokens)详解

    在 Mendix 中&#xff0c;XPath 令牌&#xff08;XPath Tokens&#xff09; 是一种特殊的动态参数化查询技术&#xff0c;允许你在 XPath 表达式中使用变量或上下文相关的值&#xff0c;从而实现更灵活的查询逻辑。 1. 什么是 XPath 令牌&#xff1f; XPath 令牌是 Mendix 提…...

    Feign异步模式丢失上下文问题

    Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时&#xff0c;代码中使用了RequestContextHolder去获取上下文的数据&#xff0c;当我们执行原来可以执行的业务时发现报了空指针异常或数据为空&#xff0c;这是为什么呢&#xff1f; 原理解释 …...

    保姆教程-----安装MySQL全过程

    1.电脑从未安装过mysql的&#xff0c;先找到mysql官网&#xff1a;MySQL :: Download MySQL Community Server 然后下载完成后&#xff0c;找到文件&#xff0c;然后双击打开 2. 选择安装的产品和功能 依次点开“MySQL Servers”、“MySQL Servers”、“MySQL Servers 5.7”、…...

    BUFDS_GTE2,IBUFDS,BUFG缓冲的区别

    1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器&#xff08;SerDes/GTX/GTH/GTY&#xff09;参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号&#xff08;如LVDS、LVPECL等&#xff09;转换为FPGA内部的单端时钟信号&#xff0c;并保证信号的完整性和高…...

    FPGA: XILINX Kintex 7系列器件的架构

    本文将详细介绍Kintex-7系列FPGA器件的架构。以下内容将涵盖Kintex-7的核心架构特性、主要组成部分以及关键技术&#xff0c;尽量全面且结构化&#xff0c;同时用简洁的语言确保清晰易懂。 Kintex-7系列FPGA架构概述 Kintex-7是Xilinx 7系列FPGA中的中高端产品线&#xff0c;基…...

    c/c++的opencv的图像预处理讲解

    OpenCV 图像预处理核心技术详解 (C/C) 图像预处理是计算机视觉任务中至关重要的一步。原始图像往往受到噪声、光照不均、尺寸不一等多种因素的影响&#xff0c;直接用于后续分析&#xff08;如特征提取、目标检测、机器学习模型训练等&#xff09;可能会导致性能下降或结果不准…...

    索恩格汽车SEG Automotive EDI 需求分析

    SEG Automotive&#xff08;索恩格汽车&#xff09;是一家全球领先的汽车电气化系统供应商&#xff0c;专注于为传统内燃机和新能源车辆提供高效、可持续的动力解决方案。 EDI 在汽车行业的重要性 在汽车制造行业&#xff0c;高效的供应链是精益生产的核心。精益生产强调“按…...

    【简单模拟实现list】

    在C标准模板库&#xff08;STL&#xff09;中&#xff0c;list是一个非常强大的容器&#xff0c;它基于双向链表实现&#xff0c;支持高效的插入和删除操作。虽然我们可以直接使用STL中的list&#xff0c;但通过自己模拟实现一个list&#xff0c;可以更好地理解其背后的原理和数…...

    深入解析ZAB协议:ZooKeeper的分布式一致性核心

    引言 在分布式系统中&#xff0c;如何高效、可靠地实现多节点间的数据一致性是核心挑战之一。ZAB协议&#xff08;ZooKeeper Atomic Broadcast&#xff09;作为 ZooKeeper的核心算法&#xff0c;被广泛应用于分布式协调服务&#xff08;如Kafka、HBase、Dubbo等&#xff09;。…...

    交叉熵损失函数,KL散度, Focal loss

    交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09; 交叉熵损失函数&#xff0c;涉及两个概念&#xff0c;一个是损失函数&#xff0c;一个是交叉熵。 首先&#xff0c;对于损失函数。在机器学习中&#xff0c;损失函数就是用来衡量我们模型的预测结果与真实结果之间…...

    k8s部署实战-springboot应用部署

    在 Kubernetes 上部署 SpringBoot 应用实战指南 前言 本文将详细介绍如何将一个 SpringBoot 应用部署到 Kubernetes 集群中,包括制作镜像、编写部署文件、创建服务等完整步骤。 准备工作 1. 示例 SpringBoot 应用 假设我们有一个简单的 SpringBoot 应用,提供 REST API 服…...

    快速选择算法:优化大数据中的 Top-K 问题

    在处理海量数据时&#xff0c;经常会遇到这样的需求&#xff1a;找出数据中最大的前 K 个数&#xff0c;而不必对整个数据集进行排序。这种场景下&#xff0c;快速选择算法&#xff08;Quickselect&#xff09;就成了一个非常高效的解决方案。本文将通过一个 C 实现的快速选择算…...

    uniapp-商城-60-后台 新增商品(属性的选中和页面显示)

    前面添加了属性&#xff0c;添加属性的子级项目。也分析了如何回显&#xff0c;但是在添加新的商品的时&#xff0c;我们也同样需要进行选择&#xff0c;还要能正常的显示在界面上。下面对页面的显示进行分析。 1、界面情况回顾 属性显示其实是个一嵌套的数据显示。 2、选中的…...

    利用 Amazon Bedrock Data Automation(BDA)对视频数据进行自动化处理与检索

    当前点播视频平台搜索功能主要是基于视频标题的关键字检索。对于点播平台而言&#xff0c;我们希望可以通过优化视频搜索体验满足用户通过模糊描述查找视频的需求&#xff0c;从而提高用户的搜索体验。借助 Amazon Bedrock Data Automation&#xff08;BDA&#xff09;技术&…...

    项目QT+ffmpeg+rtsp(一)——Qt的安装和rtsp的测试

    文章目录 一、Qt安装二、插件配置tool与卸载三、下载ffmpeg四、查看能否使用(视频)五、代码复现5.1 rtsp申请5.2 rtsp在线测试5.3代码修改六、结果一、Qt安装 对于QT中5.12版本之后,都是使用在线版本,如果你想安装某一个的历史在线版本,一定要点击archive,不然显示不出来…...

    高速光耦在通信行业的应用(五) | 5Mbps通信光耦的特性

    针对5MBd速率光耦市场&#xff0c;晶台推出KL2200、KL2201和KL2202系列光耦 ,对标大部分国外品牌产品的应用&#xff1b;它分别由一个红外发射二极管和一个高速集成光电检测器逻辑门组成。 它采用 8 引脚 DIP 封装&#xff0c;并提供 SMD 选项。KL2200 的检测器具有一个三态输出…...

    #跟着若城学鸿蒙# web篇-运动和方向传感器监测

    前言 有些前端业务场景需要用到一些传感器&#xff0c;比如运动传感器和方向传感器来实现摇一摇功能。这就需要前端能够直接获取到相关数据&#xff0c;而不是通过 js 调用客户端代码来实现。 权限 还是需要在模块的module.json5文件中添加相关权限 {"name" : &qu…...

    【匹配】Hirschberg

    Hirschberg 文章目录 Hirschberg1. 算法介绍2. 公式及原理3. 伪代码 1. 算法介绍 背景与目标 Hirschberg 算法由 Dan Hirschberg 于1975年提出&#xff0c;是对 Needleman–Wunsch 全局比对的内存优化&#xff0c;通过分治策略将空间复杂度从 O ( m n ) O(mn) O(mn) 降到 O (…...

    如何在 Windows 上安装类似 Synaptic 的 Chocolatey GUI 包管理器

    如果你正在寻找类似 Linux 中 APT 的 Windows 包管理器&#xff0c;那么没有什么比 Chocolatey 更好的了。它是 Windows 10 上可用的最佳包管理器之一&#xff0c;可以通过命令行界面安装所有流行的软件和工具。然而&#xff0c;这并不意味着如果你不喜欢命令行&#xff0c;你就…...

    激活函数全解析:定义、分类与 17 种常用函数详解

    一、激活函数的定义与作用 定义&#xff1a; 激活函数是添加到人工神经网络中的函数&#xff0c;用于帮助网络学习数据中的复杂模式&#xff0c;决定神经元的输出。 核心作用&#xff1a; 为神经网络引入非线性&#xff0c;增强模型表达能力。需可微分&#xff08;或近似可微&…...

    1-10 目录树

    在ZIP归档文件中&#xff0c;保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时&#xff0c;可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。 输入格式: 输入首先给出正整数N&#xff08;≤104&#xff09;…...

    Python OOP核心技巧:如何正确选择实例方法、类方法和静态方法

    Python方法类型全解析&#xff1a;实例方法、类方法与静态方法的使用场景 一、三种方法的基本区别二、访问能力对比表三、何时使用实例方法使用实例方法的核心场景&#xff1a;具体应用场景&#xff1a;1. 操作实例属性2. 对象间交互3. 实现特定实例的行为 四、何时使用类方法使…...

    RK3588 ADB使用

    安卓adb操作介绍 adb&#xff08;Android Debug Bridge&#xff09;是一个用于与安卓设备进行通信和控制的工具。adb可以通过USB或无线网络连接安卓设备&#xff0c;执行各种命令&#xff0c;如安装和卸载应用&#xff0c;传输文件&#xff0c;查看日志&#xff0c;运行shell命…...

    ubuntu环境下 基于Python 打包的 批量命令行可视化操作工具 GUI

    文章目录 一.需求&#xff1a;二.原理支撑&#xff1a;三.简单Demo四.封装成GUI1.依赖库2.代码 五.打包成可执行文件六.命令行的配置七.运行效果 一.需求&#xff1a; 作为测试工程师&#xff0c;为了到现场高效的调试&#xff0c;部署工作&#xff0c;需要一个可视化的工具&a…...

    大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN

    写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

    SkyWalking的工作原理和搭建过程

    SkyWalking 是一个开源的 应用性能监控系统&#xff08;APM&#xff09;&#xff0c;专为云原生、微服务架构设计。其核心原理基于 分布式追踪&#xff08;Distributed Tracing&#xff09;、指标收集&#xff08;Metrics Collection&#xff09; 和 日志关联&#xff08;Log C…...

    CMS(plone / joomla 搭建测试)

    开源选择 wordpress 用得最多 也是最容易有漏洞被攻击 被挂木马的 joomla &#xff08;JMS多站点&#xff1a;商业扩展&#xff09; — 多站点需付费 Drupal ProcessWire Plone因其内置的强大安全特性和较少的用户基础&#xff08;相比 WordPress 和 Joomla&#xff09;&#…...

    基于 Flink 的实时推荐系统:从协同过滤到多模态语义理解

    基于 Flink 的实时推荐系统&#xff1a;从协同过滤到多模态语义理解 嘿&#xff0c;各位技术小伙伴们&#xff01;在这个信息爆炸的时代&#xff0c;你是不是常常惊叹于各大平台仿佛能 “读懂你的心”&#xff0c;精准推送你感兴趣的内容呢&#xff1f;今天&#xff0c;小编就…...

    Flink SQL、Hudi 、Doris在数据上的组合应用

    Flink SQL、Hudi 和 Doris 是大数据领域中不同定位的技术组件&#xff0c;各自解决不同的问题&#xff0c;以下从核心定位、关键特性和典型场景三个维度展开说明&#xff1a; 1. Flink SQL&#xff1a;流批统一的实时计算引擎 核心定位&#xff1a;Flink 是 Apache 顶级的流批…...

    Flink运维要点

    一、Flink 运维核心策略 1. 集群部署与监控 资源规划 按业务优先级分配资源&#xff1a;核心作业优先保障内存和 CPU&#xff0c;避免资源竞争。示例&#xff1a;为实时风控作业分配专用 TaskManager&#xff0c;配置 taskmanager.memory.process.size8g。 监控体系 集成 Prom…...

    VSCode + Cline AI辅助编程完全指南

    VSCode Cline AI辅助编程完全指南 在当今AI快速发展的时代&#xff0c;程序员可以通过AI工具极大地提高工作效率。本教程将详细介绍如何使用VSCode结合Cline&#xff08;Claude AI助手&#xff09;进行AI辅助编程&#xff0c;帮助你提高开发效率&#xff0c;解决复杂问题。 …...

    【源码级开发】Qwen3接入MCP,企业级智能体开发实战!

    Qwen3接入MCP智能体开发实战&#xff08;上&#xff09; 一、MCP技术与Qwen3原生MCP能力介绍 1.智能体开发核心技术—MCP 1.1 Function calling技术回顾 如何快速开发一款智能体应用&#xff0c;最关键的技术难点就在于如何让大模型高效稳定的接入一些外部工具。而在MCP技术…...

    回调函数应用示例

    回调函数是一种通过函数指针&#xff08;或引用&#xff09;调用的函数&#xff0c;它在特定事件或条件发生时被另一个函数调用。回调函数的核心思想是将函数作为参数传递&#xff0c;以便在适当的时候执行自定义逻辑&#xff0c;常用于异步编程、事件驱动架构等场景。 业务场景…...

    R语言如何解决导出pdf中文不显示的问题

    前言 以前绘图都默认英文&#xff0c;突然要求都改成中文&#xff0c;呆住。。。。。。。。。 标题代码实现 ### 导入工具包 ### library(readr) library(dplyr) library(corrplot)df <- read_csv("./clinical.csv") df <- df %>% select(-id, -label)##…...

    国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域

    ​ PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;Mips、LoogArch&#xff09;芯片架构。 在实际的Wor…...

    llamafactory SFT 从断点恢复训练

    背景 我使用llamafactory sft 微调模型的时候。gpu停止运行了。日志文件没有任何的报错信息。 显存还是占用状态。 查看llamafactory的进程是下述信息&#xff1a; 151312 151306 91 17:42 ? 03:58:10 [llamafactory-cl] 既然如此&#xff0c;那就只能从断点恢复训练了。 …...

    C#里使用Prism.Core的例子

    由于使用WPF来开发应用程序, 那么就会使用一些框架程序来加速开发,一般会使用Prism.Core来加速。 这个应用最后运行的显示如下: 第一步需要安装下面的包: <?xml version="1.0" encoding="utf-8"?> <packages><package id="Mi…...

    【MySQL】数据库三大范式

    目录 一. 什么是范式 二. 第一范式 三. 第二范式 不满足第二范式时可能出现的问题 四. 第三范式 一. 什么是范式 在数据库中范式其实就是一组规则&#xff0c;在我们设计数据库的时候&#xff0c;需要遵守不同的规则要求&#xff0c;设计出合理的关系型数据库&#xff0c;…...

    window 显示驱动开发-分页视频内存资源

    与 Microsoft Windows 2000 显示驱动程序模型不同&#xff0c;Windows Vista 显示驱动程序模型允许创建比可用物理视频内存总量更多的视频内存资源&#xff0c;然后根据需要分页进出视频内存。 换句话说&#xff0c;并非所有视频内存资源都同时位于视频内存中。 GPU 的管道中可…...

    炼丹学习笔记3---ubuntu2004部署运行openpcdet记录

    前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…...

    美创科技针对《银行保险机构数据安全管理办法》解读

    在数字化浪潮席卷下&#xff0c;银行保险业的运营模式发生了翻天覆地的变化&#xff0c;数据已然成为行业发展的核心驱动力。从客户基本信息、交易记录&#xff0c;到业务运营的关键数据、市场分析报告&#xff0c;海量数据背后潜藏巨大价值。然而&#xff0c;数据安全风险也随…...

    activeMq 限制用户接收topic范围

    1、在conf配置文件中找到jetty-realm.properties文件&#xff0c;添加用户信息 2、在broker标签中加入topic限制权限信息 <plugins><simpleAuthenticationPlugin><users><authenticationUser username"admin" password"admin" group…...

    LIIGO ❤️ RUST 12 YEARS

    LIIGO &#x1f496; RUST 12 YEARS 今天是RUST语言1.0发布十周年纪念日。十年前的今天&#xff0c;2015年的今天&#xff0c;Rust 1.0 正式发行。这是值得全球Rust支持者隆重纪念的日子。我借此机会衷心感谢Rust语言创始人Graydon Hoare&#xff0c;Mozilla公司&#xff0c;以…...

    增量学习:机器学习领域中的资源高效利用秘籍

    前言 在机器学习的广袤天地中&#xff0c;增量学习宛如一颗冉冉升起的新星&#xff0c;正逐渐展现出其独特的魅力和巨大的潜力。 它是一种能让 AI 模型像人类一样&#xff0c;逐步学习并不断强化自身知识&#xff0c;同时不会遗忘过往所学信息的学习方法。随着时代的飞速发展&a…...

    OpenCV 背景建模详解:从原理到实战

    在计算机视觉领域&#xff0c;背景建模是一项基础且重要的技术&#xff0c;它能够从视频流中分离出前景目标&#xff0c;广泛应用于运动目标检测、视频监控、人机交互等场景。OpenCV 作为计算机视觉领域最受欢迎的开源库之一&#xff0c;提供了多种高效的背景建模算法。本文将深…...

    makefile细节说明

    在 Makefile中&#xff0c;依赖关系的左右两部分有特定的名称&#xff1a; ​​左边部分&#xff08;冒号左侧&#xff09;​​ 称为 ​​目标&#xff08;Target&#xff09;​​ ​​右边部分&#xff08;冒号右侧&#xff09;​​ 称为 ​​依赖项&#xff08;Prerequisite…...

    计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图

    1. 法线贴图&#xff08;Normal Mapping&#xff09; 法线贴图是一种在3D图形渲染中广泛使用的表面细节增强技术。它通过存储每个像素的法线信息来模拟表面的细微凹凸细节&#xff0c;而无需增加实际的几何复杂度。 1.1. 工作原理 纹理存储 使用RGB通道存储法线向量的XYZ分量…...

    使用 OpenCV 将图像中标记特定颜色区域

    在计算机视觉任务中&#xff0c;颜色替换是一种常见的图像处理操作&#xff0c;广泛用于视觉增强、目标高亮、伪彩色渲染等场景。本文介绍一种简单而高效的方式&#xff0c;基于 OpenCV 检测图像中接近某种颜色的区域&#xff0c;并将其替换为反色&#xff08;对比色&#xff0…...

    Service Mesh

    目录 一、Service Mesh 的核心特点 二、Service Mesh 的典型架构 1. Sidecar 模式 2. 控制平面与数据平面分离 三、Service Mesh 解决的核心问题 四、典型应用场景 五、主流 Service Mesh 框架对比 六、挑战与局限性 七、未来趋势 总结 Istio 一、Istio 核心组件与…...