MySQL面试必考:从入门到精通的20个问题

低级难度问题

  1. 问题:MySQL和SQL Server有什么区别?
    答案:MySQL是一个开源的关系数据库管理系统,而SQL Server是微软开发的一个商业数据库管理系统。它们在性能、安全性、功能和成本方面有所不同。
    案例:

    -- MySQL 分页查询
    SELECT * FROM users LIMIT 10 OFFSET 20;-- SQL Server 分页查询
    SELECT * FROM users ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
    
  2. 问题:什么是主键?
    答案:主键是一个字段(或字段的组合),它唯一标识表中的每一行。主键不能有NULL值,并且每个表只能有一个主键。
    案例:

    CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,student_id VARCHAR(20) UNIQUE
    );
    -- id列是主键,每插入一条记录会自动生成唯一的ID值
    
  3. 问题:如何在MySQL中创建一个数据库?
    答案:可以使用CREATE DATABASE database_name;命令来创建一个新的数据库。
    案例:

    CREATE DATABASE ecommerce;
    USE ecommerce;-- 创建支持中文的数据库
    CREATE DATABASE company 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci;
    
  4. 问题:什么是索引?它是如何工作的?
    答案:索引是数据库表的一个性能优化特性,它可以快速定位和访问表中的数据。索引类似于书籍的目录,它存储了指向表中数据的指针。
    案例:

    -- 创建普通索引
    CREATE INDEX idx_email ON users(email);-- 创建唯一索引
    CREATE UNIQUE INDEX idx_username ON users(username);-- 使用索引的查询(会快速定位)
    SELECT * FROM users WHERE email = 'user@example.com';
    
  5. 问题:如何备份MySQL数据库?
    答案:可以使用mysqldump工具来备份MySQL数据库,命令格式为mysqldump -u username -p database_name > backup_file.sql
    案例:

    # 备份整个数据库
    mysqldump -u root -p mydatabase > backup_20240520.sql# 只备份数据库结构
    mysqldump -u root -p --no-data mydatabase > structure_only.sql# 备份特定表
    mysqldump -u root -p mydatabase users orders > tables_backup.sql
    
  6. 问题:解释MySQL中的JOIN
    答案:JOIN用于结合两个或多个表的行,基于两个表之间的相关列之间的关系。
    案例:

    -- 创建示例表
    CREATE TABLE departments (id INT PRIMARY KEY,name VARCHAR(50)
    );CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),department_id INT
    );-- 使用JOIN查询
    SELECT e.name, d.name as department
    FROM employees e
    JOIN departments d ON e.department_id = d.id;
    
  7. 问题:如何在MySQL中删除一行数据?
    答案:可以使用DELETE FROM table_name WHERE condition;命令来删除表中满足条件的行。
    案例:

    -- 删除特定条件的行
    DELETE FROM users WHERE id = 100;-- 删除多个条件的行
    DELETE FROM orders 
    WHERE status = 'cancelled' AND created_at < '2024-01-01';-- 清空整个表(谨慎使用!)
    -- DELETE FROM temp_logs;
    
  8. 问题:什么是视图?
    答案:视图是一个虚拟表,它包含了一个或多个表中的数据。它是一个可以包含SQL语句的数据库对象,可以像表一样使用。
    案例:

    -- 创建视图
    CREATE VIEW active_users AS
    SELECT id, username, email, created_at
    FROM users 
    WHERE status = 'active' AND last_login > DATE_SUB(NOW(), INTERVAL 30 DAY);-- 使用视图就像使用普通表一样
    SELECT * FROM active_users ORDER BY created_at DESC;
    
  9. 问题:如何在MySQL中更新数据?
    答案:可以使用UPDATE table_name SET column1=value1, column2=value2,... WHERE some_column=some_value;来更新表中的数据。
    案例:

    -- 更新单个字段
    UPDATE users SET last_login = NOW() WHERE id = 1;-- 更新多个字段
    UPDATE products 
    SET price = 99.99, stock = stock - 1, updated_at = NOW()
    WHERE id = 100;-- 基于子查询更新
    UPDATE employees 
    SET salary = salary * 1.1 
    WHERE department_id IN (SELECT id FROM departments WHERE name = 'Engineering');
    
  10. 问题:解释NULL值。
    答案:NULL值表示缺失的或未知的数据。它与空字符串或零不同,是一个特殊的标记。
    案例:

    -- 创建包含NULL值的表
    CREATE TABLE contacts (id INT PRIMARY KEY,name VARCHAR(50) NOT NULL,phone VARCHAR(20),  -- 允许NULLemail VARCHAR(100)
    );-- 插入包含NULL的数据
    INSERT INTO contacts VALUES (1, '张三', '13800138000', NULL);
    INSERT INTO contacts VALUES (2, '李四', NULL, 'lisi@email.com');-- 查询NULL值(必须使用IS NULL)
    SELECT * FROM contacts WHERE phone IS NULL;-- 错误:这样查不到NULL值
    -- SELECT * FROM contacts WHERE phone = NULL;
    

中级难度问题

  1. 问题:解释MySQL中的GROUP BYHAVING子句的区别。
    答案:GROUP BY子句用于根据一个或多个列对结果集进行分组。HAVING子句则用于过滤GROUP BY后的结果集,它类似于WHERE子句,但是HAVING可以使用聚合函数。
    案例:

    -- 按部门分组统计员工数量和平均工资
    SELECT department_id,COUNT(*) as employee_count,AVG(salary) as avg_salary
    FROM employees
    GROUP BY department_id;-- 使用HAVING过滤分组后的结果
    SELECT department_id,COUNT(*) as employee_count,AVG(salary) as avg_salary
    FROM employees
    GROUP BY department_id
    HAVING COUNT(*) > 5 AND AVG(salary) > 5000;
    
  2. 问题:在MySQL中,如何优化一个慢查询?
    答案:优化慢查询的方法包括:使用EXPLAIN来分析查询计划,创建合适的索引,优化查询语句以减少不必要的数据处理,使用查询缓存,以及调整MySQL服务器配置。
    案例:

    -- 使用EXPLAIN分析查询
    EXPLAIN SELECT * FROM orders 
    WHERE customer_id = 100 
    AND order_date BETWEEN '2024-01-01' AND '2024-05-20';-- 优化前的慢查询
    SELECT * FROM products 
    WHERE UPPER(name) = 'LAPTOP';-- 优化后的查询(避免对字段使用函数)
    SELECT * FROM products 
    WHERE name = 'laptop';-- 创建合适的索引
    CREATE INDEX idx_customer_date ON orders(customer_id, order_date);
    CREATE INDEX idx_product_name ON products(name);
    
  3. 问题:解释MySQL中的LEFT JOINRIGHT JOIN
    答案:LEFT JOIN(左连接)返回左表中的所有记录,即使右表中没有匹配的记录。RIGHT JOIN(右连接)返回右表中的所有记录,即使左表中没有匹配的记录。
    案例:

    -- 左连接:获取所有员工,包括没有部门的员工
    SELECT e.name, d.name as department
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.id;-- 右连接:获取所有部门,包括没有员工的部门
    SELECT e.name, d.name as department
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.id;-- 全外连接(MySQL不支持FULL OUTER JOIN,但可以模拟)
    SELECT e.name, d.name as department
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.id
    UNION
    SELECT e.name, d.name as department
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.id;
    
  4. 问题:什么是复合索引?在什么情况下应该使用它?
    答案:复合索引是基于表中两个或多个列的索引。当查询条件经常涉及多个列时,使用复合索引可以提高查询性能。
    案例:

    -- 创建复合索引
    CREATE INDEX idx_user_status_date ON users(status, created_at);-- 以下查询会使用复合索引
    SELECT * FROM users 
    WHERE status = 'active' 
    AND created_at > '2024-01-01';-- 索引前缀也会被使用(只使用status)
    SELECT * FROM users WHERE status = 'inactive';-- 但以下查询可能不会充分利用复合索引(缺少前缀)
    SELECT * FROM users WHERE created_at > '2024-01-01';
    
  5. 问题:MySQL中的INEXISTS子句有什么区别?
    答案:IN子句用于检查列的值是否在一组指定的值中。EXISTS子句用于测试子查询是否返回任何行。通常,当子查询结果集较大时,EXISTSIN更高效。
    案例:

    -- 使用IN
    SELECT * FROM employees
    WHERE department_id IN (1, 2, 3, 4, 5);-- 使用IN与子查询
    SELECT * FROM employees
    WHERE department_id IN (SELECT id FROM departments WHERE location = 'Beijing'
    );-- 使用EXISTS(通常在大数据集时更高效)
    SELECT * FROM employees e
    WHERE EXISTS (SELECT 1 FROM departments d WHERE d.id = e.department_id AND d.location = 'Beijing'
    );
    
  6. 问题:解释MySQL中的事务隔离级别以及它们如何影响并发事务。
    答案:MySQL支持四种事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。隔离级别越高,事务之间的隔离程度越高,但可能会降低并发性能。
    案例:

    -- 设置事务隔离级别
    SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;-- 事务示例
    START TRANSACTION;-- 会话1:转账操作
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;-- 此时在不同隔离级别下,其他会话看到的数据不同:
    -- READ UNCOMMITTED: 可能看到未提交的修改(脏读)
    -- READ COMMITTED: 只能看到已提交的数据
    -- REPEATABLE READ: 同一事务中多次读取结果一致
    -- SERIALIZABLE: 完全隔离,避免所有并发问题COMMIT;
    
  7. 问题:如何在MySQL中实现分页查询?
    答案:在MySQL中,可以使用LIMITOFFSET子句来实现分页查询。例如,SELECT * FROM table LIMIT 10 OFFSET 20将返回从第21条记录开始的10条记录。
    案例:

    -- 第一页:每页10条记录
    SELECT * FROM products 
    ORDER BY created_at DESC 
    LIMIT 10 OFFSET 0;-- 第二页
    SELECT * FROM products 
    ORDER BY created_at DESC 
    LIMIT 10 OFFSET 10;-- 更高效的分页(对于大数据集)
    SELECT * FROM products 
    WHERE id > 100  -- 上一页最后一条记录的ID
    ORDER BY id 
    LIMIT 10;-- 获取分页信息
    SELECT COUNT(*) as total_count,CEIL(COUNT(*) / 10) as total_pages
    FROM products;
    
  8. 问题:解释MySQL中的INNER JOINOUTER JOIN的区别。
    答案:INNER JOIN返回两个表中匹配的行,而OUTER JOIN(包括LEFT JOINRIGHT JOINFULL JOIN)不仅返回匹配的行,还返回左表、右表或两个表中未匹配的行。
    案例:

    -- 创建示例数据
    INSERT INTO departments (id, name) VALUES (1, 'IT'), (2, 'HR'), (3, 'Finance');
    INSERT INTO employees (id, name, department_id) VALUES 
    (1, 'Alice', 1), (2, 'Bob', 1), (3, 'Charlie', NULL);-- INNER JOIN:只返回有匹配的记录
    SELECT e.name, d.name as department
    FROM employees e
    INNER JOIN departments d ON e.department_id = d.id;
    -- 结果:Alice-IT, Bob-IT-- LEFT JOIN:返回所有员工,包括没有部门的
    SELECT e.name, d.name as department
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.id;
    -- 结果:Alice-IT, Bob-IT, Charlie-NULL-- RIGHT JOIN:返回所有部门,包括没有员工的
    SELECT e.name, d.name as department
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.id;
    -- 结果:Alice-IT, Bob-IT, NULL-HR, NULL-Finance
    
  9. 问题:在MySQL中,如何处理死锁?
    答案:处理死锁的方法包括:设置合理的锁等待超时时间,避免长事务,确保事务按相同的顺序访问对象,以及使用SHOW ENGINE INNODB STATUS来分析死锁日志并调整应用逻辑。
    案例:

    -- 设置锁等待超时
    SET innodb_lock_wait_timeout = 50;-- 查看死锁信息
    SHOW ENGINE INNODB STATUS;-- 死锁示例场景:
    -- 事务1
    START TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    -- 此时事务2同时执行:
    -- START TRANSACTION;
    -- UPDATE accounts SET balance = balance - 200 WHERE id = 2;
    -- 然后事务1尝试:
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;
    -- 事务2同时尝试:
    -- UPDATE accounts SET balance = balance + 200 WHERE id = 1;
    -- 这时就会发生死锁-- 预防:总是按相同顺序访问表
    
  10. 问题:解释MySQL中的BETWEEN操作符。
    答案:BETWEEN操作符用于选取介于两个值之间的数据范围。它包含边界值,等同于使用>=<=操作符。
    案例:

    -- 数值范围
    SELECT * FROM products 
    WHERE price BETWEEN 50 AND 100;
    -- 等同于:WHERE price >= 50 AND price <= 100-- 日期范围
    SELECT * FROM orders 
    WHERE order_date BETWEEN '2024-01-01' AND '2024-05-20';-- 字符串范围(按字母顺序)
    SELECT * FROM customers 
    WHERE last_name BETWEEN 'A' AND 'D';-- NOT BETWEEN
    SELECT * FROM products 
    WHERE price NOT BETWEEN 10 AND 20;
    

高级难度问题

  1. 问题:如何在MySQL中实现主从复制?
    答案:在MySQL中实现主从复制涉及设置主服务器(master)来记录二进制日志(binlog),并配置从服务器(slave)来读取并应用这些日志。这需要在主服务器上启用二进制日志记录,并在从服务器上设置正确的连接参数。
    案例:

    -- 在主服务器上执行:
    -- my.cnf 配置
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=ROW-- 创建复制用户
    CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';-- 在从服务器上执行:
    -- my.cnf 配置
    [mysqld]
    server-id=2-- 设置主从复制
    CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=107;START SLAVE;-- 检查复制状态
    SHOW SLAVE STATUS\G
    
  2. 问题:解释MySQL中的FOREIGN KEY约束和其对数据库完整性的影响。
    答案:FOREIGN KEY约束用于确保数据的引用完整性,它要求在一个表中的列必须是另一个表的主键或唯一键的值。这有助于维护表之间的一致性和数据的准确性。
    案例:

    -- 创建有外键约束的表
    CREATE TABLE departments (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL
    );CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,department_id INT,FOREIGN KEY (department_id) REFERENCES departments(id)ON DELETE SET NULLON UPDATE CASCADE
    );-- 插入数据
    INSERT INTO departments (name) VALUES ('IT'), ('HR');
    INSERT INTO employees (name, department_id) VALUES ('Alice', 1); -- 成功
    INSERT INTO employees (name, department_id) VALUES ('Bob', 3); -- 失败,部门3不存在-- 删除部门时,相关员工的department_id会被设为NULL
    DELETE FROM departments WHERE id = 1;
    
  3. 问题:在MySQL中,如何使用PARTITION BY子句?
    答案:PARTITION BY子句用于将表中的数据分割成多个分区,可以基于特定的列值来进行。这有助于提高大表的查询和管理效率。
    案例:

    -- 创建分区表(按范围分区)
    CREATE TABLE sales (id INT AUTO_INCREMENT,sale_date DATE,amount DECIMAL(10,2),region VARCHAR(50),PRIMARY KEY (id, sale_date)
    ) PARTITION BY RANGE (YEAR(sale_date)) (PARTITION p2022 VALUES LESS THAN (2023),PARTITION p2023 VALUES LESS THAN (2024),PARTITION p2024 VALUES LESS THAN (2025),PARTITION p_future VALUES LESS THAN MAXVALUE
    );-- 按列表分区
    CREATE TABLE users (id INT AUTO_INCREMENT,name VARCHAR(100),country VARCHAR(50),PRIMARY KEY (id, country)
    ) PARTITION BY LIST COLUMNS(country) (PARTITION p_asia VALUES IN ('China', 'Japan', 'Korea'),PARTITION p_europe VALUES IN ('UK', 'Germany', 'France'),PARTITION p_america VALUES IN ('USA', 'Canada')
    );-- 查询特定分区
    SELECT * FROM sales PARTITION (p2023);
    
  4. 问题:解释MySQL中的FULLTEXT索引及其用途。
    答案:FULLTEXT索引用于对文本数据进行全文搜索。它允许使用MATCH() ... AGAINST()语法来快速查找包含特定词汇的文本记录。
    案例:

    -- 创建全文索引
    CREATE TABLE articles (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(200),content TEXT,FULLTEXT(title, content)
    );-- 插入示例数据
    INSERT INTO articles (title, content) VALUES
    ('MySQL Tutorial', 'This is a comprehensive guide to MySQL database management.'),
    ('PHP Programming', 'Learn how to program in PHP and connect to MySQL databases.'),
    ('Web Development', 'Building modern web applications with databases.');-- 自然语言全文搜索
    SELECT * FROM articles 
    WHERE MATCH(title, content) AGAINST('MySQL database');-- 布尔全文搜索
    SELECT * FROM articles 
    WHERE MATCH(title, content) AGAINST('+MySQL -PHP' IN BOOLEAN MODE);-- 相关性排序
    SELECT id,title,MATCH(title, content) AGAINST('web development') as relevance
    FROM articles 
    ORDER BY relevance DESC;
    
  5. 问题:MySQL中的utf8mb4utf8字符集有什么区别?
    答案:utf8mb4utf8的超集,支持更多的字符,包括一些特殊的表情符号。utf8在MySQL中最多支持3个字节的字符,而utf8mb4支持最多4个字节的字符。
    案例:

    -- 创建使用utf8mb4的表
    CREATE TABLE messages (id INT PRIMARY KEY AUTO_INCREMENT,content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,sender VARCHAR(100)
    ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 插入包含emoji表情的数据(utf8mb4支持)
    INSERT INTO messages (content, sender) 
    VALUES ('Hello! 😊 🎉 今天天气真好!', 'User1');-- 如果使用utf8,插入emoji会失败
    -- INSERT INTO messages_utf8 (content, sender) 
    -- VALUES ('Hello! 😊 🎉', 'User1'); -- 错误!-- 检查字符集设置
    SHOW VARIABLES LIKE 'character_set%';
    SHOW VARIABLES LIKE 'collation%';-- 修改数据库字符集
    ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

.NET全栈经典面试题库

内容涵盖以下内容

  • ASP.NET MVC应用场景面试题
  • WinForm应用场景面试题
  • jQuery应用场景面试题
  • 3、SQLServer面试题
  • ASP.NET应用场景面试题
  • C#基础面试题及其答案
  • ASP.NET WebAPI应用场景面试题
  • MySQL面试题
  • SQL Server应用场景面试题

下载链接1:

【.NET全栈经典面试题库】

下载链接2:

【.NET全栈经典面试题库】

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

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

相关文章

手撕大模型 | MQA 和 GQA 原理解析

一、前言 大模型(参数规模通常数十亿至万亿级)在处理复杂任务时面临三大核心问题:显式关联的局限性:传统 Multi-head Attention 依赖输入数据的显式特征(如文本中的词向量、图像中的像素特征)计算注意力,难以捕…

实用指南:CTFHub RCE通关笔记9:命令注入 过滤目录分隔符(3种方法渗透)

实用指南:CTFHub RCE通关笔记9:命令注入 过滤目录分隔符(3种方法渗透)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

P1912 [NOI2009] 诗人小G 分析

题目链接:P1912 [NOI2009] 诗人小G 题目概述 给你几个字符串,你可以按照给定的顺序任意拼接(你可以分组),但是拼接的时候中间要打空格,设这个当前的拼接长度为 \(sum\),那么代价为 \(|sum-L|^P\),求最小的代价…

[COCI2022-2023#2] Tramvaji 题解

简要题意 告诉一些站点之间的距离,求两站距离最小的两个站 思路 对于某个站点,站台1到他前面的站的距离一定已经处理好了,所以可以用一个数组维护前缀和,从前面某个站转移过来,最后统计就行了 Code: #include <…

一级指针和二级指针作为函数参数的区别

在函数参数中,一级指针(int*)和二级指针(int**)的核心区别在于能修改的数据层级:一级指针可修改指针指向的变量值,而二级指针可修改一级指针本身(包括其指向或分配的内存) 一级指针作为函数参数 作用:通过一…

ROUGE指标

2025.10.15 1.ROUGE指标是评估文本生成质量的常用指标,通过计算生成文本与参考文本之间的n-gram重叠度来测量内容相似性和召回率

CSP-S 模拟 29

CSP-S 模拟 29 A. 一个赢家 (card) 有 \(2n\) 张卡,第 \(i\) 张卡上写着数字 \(i\)。有 \(n\) 个人,这 \(n\) 个人轮流从这些卡中均匀随机拿走两张,不放回。现在每个人手上各有两张卡,手上两张卡上写的数字的和最大…

实用指南:【编号508】(道路分类)湖南路网数据湖南路网分类数据(2025年)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux 文件及相关安全操作指南

Linux 文件及相关安全操作指南 Linux根目录项一行说明 一、Linux 根目录各文件夹一行说明(基础回顾)根目录文件夹 一行核心用途bin 系统启动与普通用户可用的基础可执行程序(如ls、cp)boot 启动相关文件(内核vmli…

day012

今日完成:学习了mysql的数据库编辑,添加. 明日完成:数据库 遇到问题:无

怎么能把一个横着的很长的excel表,输出成一个能完整展示在一个页面中的PDF

参考链接:https://blog.csdn.net/qq_34972627/article/details/128139320 横向的Excel输出为pdf自动分成两页怎么办?不分页,铺满整张纸的方法来了

深入解析:Leetcode+Java+图论+岛屿问题

深入解析:Leetcode+Java+图论+岛屿问题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

简单介绍

简单介绍AI Agent 即人工智能体,通常是指有能力主动思考和行动的智能体,能够以类似人类的方式工作,通过大模型来 “理解” 用户需求,主动 “规划” 以达成目标,使用各种 “工具” 来完成任务,并最终 “行动” 执…

agent认知与原理分析

agent认知与原理分析1

agent策略分析与Parer解读

agent策略分析与Parer解读1

夸克网盘免费扩容,新用户轻松领取1TB免费空间!一步一步教你如何操作! - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Visual Studio 2022连接mysql数据库,解决System.Data.Odbc.OdbcException (0x80131937)

首先我们要下载MySQL ODBC驱动,下载地址: https://downloads.mysql.com/archives/c-odbc/ 下载Windows (x86, 64-bit), MSI Installer 了解ODBC:接下来要连接mysql数据库了,参考这位前辈的笔记:https://blog.csdn…

[AI生成]Spark-TTS个人理解

Spark-TTS 是一个在设计思路上非常清晰、工程结构合理、适合个人开发者学习和二次开发的优秀开源 TTS 项目。以下是它值得肯定的几个关键点,也解释了为什么它特别适合学习:✅ 为什么 Spark-TTS 适合个人开发者学习?…

2025.10.3 测试

DP+线段树/容斥+DP/贪心+构造/Ad-hocA. 思考如何匹配子序列,肯定是贪心的能扩展就扩展,将这个过程改写成 DP 。 设 \(f[i, j]\) 表示 \(S\) 匹配了 \(i\) 位,\(T\) 匹配了 \(j\) 位的方案数。 枚举下一位匹配位置得…