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

MySQL实战入门:从零到精通的核心技能与性能优化指南

🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度

如果你正在寻找一套能让你从零开始,快速掌握 MySQL 数据库核心技能,并能立即应用到实际工作中的学习路径,那么这篇文章就是为你准备的。这不是一个传统的、按部就班的教科书式教程,而是一套聚焦于“能用、会用、用好”的实战指南。我们将直接切入核心,从环境搭建、基础语法到性能优化,全程以解决实际问题为导向,目标是让你在最短时间内,具备独立完成数据库设计、开发和优化的能力。

本文的核心在于“实战”二字。我们将跳过冗长的理论铺垫,直接上手操作。你会学到如何在主流操作系统上快速部署 MySQL,如何编写高效的 SQL 语句,以及如何通过索引、执行计划分析等高级技巧来优化数据库性能。文章内容基于最新的 MySQL 社区版实践,并结合了常见的开发与运维场景,确保你学到的每一个知识点都能直接落地。无论你是即将步入职场的学生,还是希望提升后端开发技能的工程师,这套“入门到精通”的路线都能为你提供清晰的指引和扎实的练习。

1. 核心能力速览:MySQL 学习路径全景图

在深入细节之前,我们先通过一个表格快速了解本次学习之旅的核心模块与目标,让你对整体框架有一个清晰的把握。

能力项说明与目标
学习目标从零基础到掌握数据库设计、SQL 编写与性能优化核心技能。
核心内容1.环境部署:Windows/macOS/Linux 一键安装与配置。
2.SQL 语法:DDL、DML、DQL、DCL、TCL 全语法精讲。
3.实战操作:库/表/索引的 CRUD、复杂查询、事务控制。
4.性能优化:索引策略、EXPLAIN 执行计划分析、慢查询日志、SQL 改写技巧。
环境要求操作系统:Windows 10/11, macOS, Linux (Ubuntu/CentOS)。
内存:建议 4GB 以上。
磁盘空间:安装包约 500MB,预留 1GB 以上空间用于数据和日志。
工具栈数据库服务器:MySQL Community Server 8.0+。
图形化工具:MySQL Workbench, Navicat, DBeaver (任选其一)。
命令行工具:系统终端 +mysql客户端。
产出物1. 一个可运行的本地 MySQL 实例。
2. 一套完整的示例数据库(如电商、博客系统)。
3. 数十个经过优化的实战 SQL 脚本。
4. 排查和解决常见 SQL 性能问题的能力。
适合人群编程初学者、后端开发新人、数据分析师、需要操作数据库的产品/运营人员。

2. 为什么选择 MySQL 以及学习边界

MySQL 作为世界上最流行的开源关系型数据库之一,其优势在于开源免费、性能卓越、社区活跃、生态完善。无论是互联网大厂还是初创公司,MySQL 都是后端存储的首选之一。学习 MySQL 不仅能让你掌握一门通用的数据库技能,其背后的 SQL 语言和数据库设计思想也是通往其他数据库(如 PostgreSQL、SQL Server)的桥梁。

本教程的定位是“实战入门与核心精通”,这意味着:

  • 适合的场景:个人学习、毕业设计、中小型 Web 应用开发、日常数据分析、面试准备。
  • 能解决的问题:快速搭建开发环境、设计合理的表结构、编写高效的查询语句、分析和解决常见的性能瓶颈。
  • 明确的边界:我们不会深入探讨 MySQL 集群搭建、高可用架构(如主从复制、MHA)、深度内核原理等高级运维话题。这些内容需要在掌握本教程核心后,根据实际工作需求进行专项学习。同时,所有操作均在本地或测试环境进行,确保学习过程的安全与可控。

3. 环境准备:十分钟搞定 MySQL 安装

理论再好,不如动手一试。我们首先在本地搭建一个 MySQL 服务。这里提供 Windows 和 macOS/Linux 两种主流系统的快速安装方案。

3.1 Windows 系统安装(MSI 安装包)

这是最直观的方式,适合大多数 Windows 用户。

  1. 下载安装包: 访问 MySQL 官方网站的社区版下载页面,选择MySQL Installer for Windows。下载体积较大的 MSI 安装包,它包含了图形化安装向导和多种组件。

  2. 运行安装向导: 双击下载的.msi文件。安装类型选择“Custom”(自定义),以便只安装我们需要的 Server 和 Workbench。 在选组件时,至少选中:

    • MySQL Server(数据库服务器)
    • MySQL Workbench(图形化管理工具) 将它们添加到右侧安装列表。
  3. 配置服务器: 安装完成后,配置向导会自动启动。在 “Type and Networking” 步骤,选择“Development Computer”。 在 “Authentication Method” 步骤,强烈建议选择强密码加密方式Use Strong Password Encryption。 接下来,为 root 用户设置一个高强度密码,务必牢记。 后续步骤保持默认,执行配置即可。配置完成后,MySQL 服务会自动启动。

  4. 验证安装: 打开命令提示符 (CMD) 或 PowerShell,输入以下命令连接数据库:

    mysql -u root -p

    输入你设置的 root 密码,如果看到mysql>提示符,恭喜你,安装成功。

3.2 macOS / Linux 系统安装(Homebrew / Apt)

对于 macOS 用户,使用 Homebrew 安装是最快捷的方式。

# 1. 更新 Homebrew(如果已安装) brew update # 2. 安装 MySQL brew install mysql # 3. 启动 MySQL 服务 brew services start mysql # 4. 运行安全初始化脚本(设置 root 密码、移除匿名用户等) mysql_secure_installation

按照脚本提示操作即可。完成后,同样使用mysql -u root -p命令登录验证。

对于 Ubuntu/Debian 系 Linux,可以使用 apt 包管理器。

# 1. 更新软件包列表 sudo apt update # 2. 安装 MySQL 服务器和客户端 sudo apt install mysql-server # 3. 运行安全初始化脚本 sudo mysql_secure_installation # 4. 检查服务状态 sudo systemctl status mysql

4. 第一把火:连接数据库与基本操作

环境就绪后,我们立刻进行第一次交互。你可以使用刚才的命令行,也可以使用图形化工具 MySQL Workbench。

4.1 使用命令行客户端

# 连接本地数据库,用户为 root mysql -u root -p # 输入密码后进入交互界面 -- 显示当前所有数据库 SHOW DATABASES; -- 创建一个用于学习的新数据库,命名为 `learn_mysql` CREATE DATABASE learn_mysql CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 切换到新创建的数据库 USE learn_mysql; -- 查看当前所在的数据库 SELECT DATABASE();

utf8mb4字符集是目前最通用的选择,它支持完整的 Unicode(包括表情符号)。

4.2 使用 MySQL Workbench(推荐)

对于初学者,图形化界面更友好。打开 MySQL Workbench,点击 “+” 号新建一个连接。

  • Connection Name: 任意,如My Local MySQL
  • Hostname:127.0.0.1localhost
  • Port:3306(默认)。
  • Username:root
  • 点击 “Store in Vault…” 输入密码。 点击 “Test Connection” 测试,成功即可连接。之后,你可以在 Query 标签页中执行上述所有 SQL 命令,结果会以表格形式清晰展示。

5. SQL 语法核心实战:从创建表到复杂查询

现在,我们进入最核心的部分。SQL 是结构化查询语言,是与数据库沟通的唯一方式。我们通过一个简单的“用户-文章”博客系统模型来学习。

5.1 数据定义语言 (DDL):创建和修改结构

DDL 用于定义和修改数据库对象(库、表、索引等)。

-- 创建用户表 CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键', `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名,唯一', `email` VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱,唯一', `password_hash` CHAR(64) NOT NULL COMMENT '密码哈希值', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_username` (`username`), -- 为用户名创建索引,加速查找 INDEX `idx_email` (`email`) -- 为邮箱创建索引 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- 创建文章表 CREATE TABLE `articles` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` INT UNSIGNED NOT NULL COMMENT '作者ID,外键关联users.id', `title` VARCHAR(200) NOT NULL, `content` TEXT NOT NULL, `view_count` INT UNSIGNED DEFAULT 0, `is_published` TINYINT(1) DEFAULT 0 COMMENT '0-草稿,1-已发布', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_user_id` (`user_id`), INDEX `idx_created_at` (`created_at`), -- 按时间排序查询很常见 CONSTRAINT `fk_article_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE -- 外键约束:用户删除,其文章也删除 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 查看表结构 DESC `users`; -- 或使用更详细的语句 SHOW CREATE TABLE `users`;

关键点解析

  • AUTO_INCREMENT:自动增长,常用于主键。
  • UNIQUE:唯一约束,保证该列值不重复。
  • DEFAULT:设置默认值。
  • TIMESTAMPCURRENT_TIMESTAMP:自动记录时间。
  • INDEX:创建索引,这是后续性能优化的基础。
  • FOREIGN KEY:外键,维护表间的引用完整性。
  • ENGINE=InnoDB:使用 InnoDB 存储引擎,支持事务和外键,是默认且推荐的选择。

5.2 数据操作语言 (DML):增删改数据

DML 用于操作表中的数据行。

-- 1. 插入数据 (INSERT) INSERT INTO `users` (`username`, `email`, `password_hash`) VALUES ('alice', 'alice@example.com', SHA2('password123', 256)), -- 使用SHA2加密密码 ('bob', 'bob@example.com', SHA2('mypassword', 256)); INSERT INTO `articles` (`user_id`, `title`, `content`, `is_published`) VALUES (1, '我的第一篇博客', '这是Alice写的第一篇博客内容...', 1), (1, '学习MySQL心得', '学习MySQL的过程很有趣...', 1), (2, 'Bob的技术分享', '今天来分享一下Python技巧...', 0); -- 这篇是草稿 -- 2. 更新数据 (UPDATE) -- 将Alice的邮箱更新(通常用于用户修改信息场景) UPDATE `users` SET `email` = 'alice.new@example.com' WHERE `username` = 'alice'; -- 将Bob的草稿文章发布 UPDATE `articles` SET `is_published` = 1, `updated_at` = NOW() WHERE `user_id` = 2 AND `is_published` = 0; -- 3. 删除数据 (DELETE) -- 谨慎操作! -- 删除用户名为‘bob’的用户(由于外键约束 ON DELETE CASCADE,他的文章也会被自动删除) DELETE FROM `users` WHERE `username` = 'bob';

关键点解析

  • WHERE子句是 DML 语句的灵魂,一定要精确,否则可能误改或误删大量数据。操作前最好先用SELECT确认条件。
  • 使用SHA2()函数对密码进行哈希处理是安全实践,切勿明文存储密码。
  • NOW()函数获取当前时间。

5.3 数据查询语言 (DQL):检索数据,重中之重

DQL(主要是SELECT)是使用最频繁、也最需要优化的部分。

-- 1. 基础查询 SELECT * FROM `users`; -- 查询所有列(生产环境慎用*) SELECT `id`, `username`, `created_at` FROM `users`; -- 指定列查询 -- 2. 条件查询 (WHERE) SELECT * FROM `articles` WHERE `is_published` = 1; -- 已发布文章 SELECT * FROM `articles` WHERE `user_id` = 1 AND `view_count` > 10; -- 组合条件 SELECT * FROM `articles` WHERE `title` LIKE '%MySQL%'; -- 模糊查询 -- 3. 排序 (ORDER BY) 和 限制 (LIMIT) SELECT * FROM `articles` WHERE `is_published` = 1 ORDER BY `created_at` DESC LIMIT 10; -- 最新10篇文章 SELECT * FROM `articles` ORDER BY `view_count` DESC, `created_at` DESC LIMIT 5; -- 按浏览量降序,时间降序 -- 4. 聚合函数与分组 (GROUP BY) -- 统计每个用户发表的文章数量 SELECT `user_id`, COUNT(*) AS `article_count` FROM `articles` GROUP BY `user_id`; -- 统计已发布和未发布文章的数量 SELECT `is_published`, COUNT(*) AS `count` FROM `articles` GROUP BY `is_published`; -- 5. 表连接 (JOIN) - 核心中的核心 -- 内连接:获取已发布文章及其作者信息 SELECT a.`id`, a.`title`, u.`username` AS `author`, a.`created_at` FROM `articles` a INNER JOIN `users` u ON a.`user_id` = u.`id` WHERE a.`is_published` = 1 ORDER BY a.`created_at` DESC; -- 左连接:获取所有用户及其文章数量(即使文章数为0) SELECT u.`username`, COUNT(a.`id`) AS `article_count` FROM `users` u LEFT JOIN `articles` a ON u.`id` = a.`user_id` GROUP BY u.`id`;

6. SQL 性能优化实战:告别慢查询

当数据量增长后,糟糕的 SQL 会成为系统瓶颈。优化是数据库工程师的核心价值。我们从最关键的索引和 EXPLAIN 命令开始。

6.1 索引:为什么能加速查询?

索引就像书的目录。没有索引(全表扫描)就像从第一页开始逐页查找;有了索引,可以直接定位到章节。

如何创建索引?我们已经在建表时创建了一些。也可以后续添加:

-- 为 articles 表的 title 字段添加一个普通索引 CREATE INDEX `idx_title` ON `articles` (`title`); -- 创建复合索引,常用于多条件查询 CREATE INDEX `idx_user_published` ON `articles` (`user_id`, `is_published`);

索引使用原则

  1. 在 WHERE、JOIN、ORDER BY 子句中频繁出现的列上创建索引
  2. 区分度高的列(如用户名、邮箱)适合建索引,性别这种只有几个值的列效果差。
  3. 避免过度索引。每个索引都会占用空间,并降低 INSERT/UPDATE/DELETE 的速度。
  4. 理解复合索引的最左前缀原则。对于索引(user_id, is_published)
    • WHERE user_id = 1能用到这个索引。
    • WHERE user_id = 1 AND is_published = 1能用
    • WHERE is_published = 1不能用(不满足最左前缀)。

6.2 EXPLAIN:你的 SQL 性能诊断仪

EXPLAIN命令是 MySQL 提供的查询执行计划分析工具,它能告诉你 MySQL 将如何执行你的 SQL 语句。

-- 分析一个查询 EXPLAIN SELECT * FROM `articles` WHERE `user_id` = 1 ORDER BY `created_at` DESC;

执行后,你会看到一个表格,需要关注以下几个关键列:

  • type:访问类型。从好到差常见的有:system>const>eq_ref>ref>range>index>ALL要尽量避免ALL(全表扫描)
  • key:实际使用的索引。如果为NULL,说明没用到索引。
  • rows:MySQL 估计需要扫描的行数。这个值越小越好。
  • Extra:额外信息。如果出现Using filesort(文件排序)或Using temporary(使用临时表),通常意味着需要优化。

实战分析: 对于上面的查询,如果typerefkeyidx_user_id,说明通过用户ID索引高效地找到了数据。但如果Extra里有Using filesort,说明在排序时没有用到索引,如果articles表很大,这会很慢。优化方法是(user_id, created_at)建立一个复合索引

CREATE INDEX `idx_user_created` ON `articles` (`user_id`, `created_at`);

再次EXPLAINUsing filesort应该会消失,因为索引本身已经是按created_at排序的(在同一个user_id下)。

6.3 慢查询日志:定位系统瓶颈

除了主动分析,我们还可以让 MySQL 记录下执行时间过长的 SQL。

  1. 开启慢查询日志(在 MySQL 配置文件my.cnfmy.ini中):
    [mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 # 执行时间超过2秒的SQL会被记录 log_queries_not_using_indexes = 1 # 记录未使用索引的查询(谨慎开启,可能日志量很大)
  2. 重启 MySQL 服务使配置生效。
  3. 当系统运行一段时间后,分析慢查询日志文件,找到需要优化的 SQL 语句。可以使用mysqldumpslow工具或 pt-query-digest 等第三方工具进行分析。

7. 高级实战与常见问题排查

掌握了基础和优化后,我们来看几个实战中必然会遇到的问题。

7.1 事务处理:保证数据一致性

事务用于将多个 SQL 操作作为一个不可分割的单元。经典案例:银行转账。

START TRANSACTION; -- 开始事务 -- 账户A扣款 UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; -- 模拟一个错误,例如检查账户余额是否充足(这里省略) -- 账户B加款 UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; -- 根据业务逻辑决定提交或回滚 COMMIT; -- 提交事务,所有更改永久生效 -- 或 ROLLBACK; -- 回滚事务,所有更改撤销

特性 (ACID)

  • 原子性:事务内的操作要么全做,要么全不做。
  • 一致性:事务前后数据库的完整性约束不被破坏。
  • 隔离性:并发事务之间互不干扰。
  • 持久性:事务提交后,对数据的修改是永久性的。

7.2 常见错误与排查

问题现象可能原因排查方式解决方案
ERROR 1045 (28000): Access denied用户名或密码错误;用户无权限从该主机连接。检查连接命令中的用户名、密码、主机名。使用正确凭证。或用 root 登录后创建新用户并授权:CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON dbname.* TO 'newuser'@'localhost';
ERROR 2003 (HY000): Can‘t connect to MySQL serverMySQL 服务未启动;防火墙阻止了端口3306。sudo systemctl status mysql(Linux) 或服务管理器(Windows)检查服务状态。telnet localhost 3306测试端口。启动服务。配置防火墙允许3306端口。
SQL 执行极慢未建立有效索引;SQL 写法不佳(如 SELECT *, LIKE ‘%xxx%’);表数据量过大。使用EXPLAIN分析执行计划。检查慢查询日志。为 WHERE/JOIN/ORDER BY 字段添加索引。优化 SQL 语句。考虑分库分表。
锁等待超时 ERROR 1205 (HY000)某个事务长时间未提交,锁住了其他事务需要的资源。SHOW ENGINE INNODB STATUS\G查看锁信息。优化事务逻辑,尽快提交。重试事务。调整事务隔离级别(需谨慎)。
导入数据失败,外键约束错误导入的数据违反了外键引用完整性(如引用了不存在的用户ID)。检查导入数据的顺序,先导入主表(如users),再导入从表(如articles)。暂时禁用外键检查:SET FOREIGN_KEY_CHECKS=0;导入后再启用:SET FOREIGN_KEY_CHECKS=1;

7.3 使用 AI 辅助生成与优化 SQL

根据网络搜索材料,现代开发中可以利用 AI 工具辅助 SQL 编写和优化。例如,阿里云日志服务 Copilot、Dataphin 的 X-分析助手等,支持通过自然语言描述生成 SQL 或解释、优化现有 SQL。这可以作为学习和工作的有力辅助,但绝不能替代对 SQL 原理的理解。你可以将复杂的业务描述给 AI,让它生成初步的 SQL 草稿,然后你再基于 EXPLAIN 和业务知识进行审查和优化。

8. 学习路径总结与下一步建议

通过以上步骤,你已经完成了 MySQL 从环境搭建、基础语法到核心优化实战的闭环学习。我们来回顾一下关键路径:

  1. 环境速通:选择适合你操作系统的方法,快速安装并启动 MySQL。
  2. 工具上手:熟练使用命令行或 MySQL Workbench 连接和操作数据库。
  3. 语法核心:掌握 DDL 建表(含索引、外键)、DML 增删改、DQL 查询(条件、连接、分组、聚合)。
  4. 性能基石:深刻理解索引的作用,并学会使用EXPLAIN命令诊断 SQL,这是区分普通使用者和进阶开发者的关键。
  5. 实战深化:通过事务处理理解数据一致性,通过排查常见问题积累经验。

下一步你可以做什么?

  • 构建完整项目:尝试设计一个“电商订单系统”或“图书管理系统”的数据库,包含更多关联表(订单、商品、库存、分类等),编写复杂的多表连接查询和报表 SQL。
  • 深入优化技术:研究执行计划中Using filesortUsing temporary的深层原因及优化策略,了解覆盖索引、索引下推等高级特性。
  • 探索运维知识:学习数据库的备份 (mysqldump)、恢复、用户权限管理、监控基础指标(连接数、QPS、慢查询比例)。
  • 对比学习:了解 PostgreSQL、SQLite 等其他数据库的特点,拓宽视野。

记住,数据库技能是在不断解决实际问题的过程中锤炼出来的。建议你将本教程中的示例数据库learn_mysql作为你的“沙盒”,反复练习、修改、测试,直到所有命令和概念都内化为肌肉记忆。当你遇到性能问题时,EXPLAIN就是你最好的朋友。现在,打开你的终端或 Workbench,开始你的第一次CREATE TABLE吧。

🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度

http://www.jsqmd.com/news/1137574/

相关文章:

  • PyTorch 1.13 语义分割特征图可视化:3种聚合方法与2种上采样策略对比
  • 从ReAct到AI Agent:工程化实现与架构设计实战指南
  • AI生成SQL的生产环境风险与安全开发实践
  • Docker Buildx 实战:在 Windows 11 x86 平台构建 ARM64 镜像的 2 种方案对比
  • PyTorch 2.0 图像识别实战:从零构建ResNet-18盆栽分类器,准确率达92%
  • 缓慢变化维(SCD)实战指南:从Type 1到Type 4的选型与落地
  • 如何彻底告别手动启动:LeagueAkari自动启动功能终极指南
  • Docker Hub 2024 镜像推送实战:3步完成私有仓库创建与自动命名规则解析
  • 为什么SFML跨平台多媒体库是现代C++开发者的强力选择?
  • Windows 10/11 内核隔离与 VT 冲突:3步解决蓝叠/夜神模拟器启动失败
  • STM32驱动WS2812B灯带:PWM+DMA高效实现与光效编程
  • 【计算机Java毕业设计案例】基于 SpringBoot 的居家保洁保姆服务管理系统的设计与实现 基于前后端分离的家政服务工单调度系统(程序+文档+讲解+定制)
  • Lumafly:3步轻松管理空洞骑士模组的跨平台神器
  • OpenRocket:如何用开源软件设计你的第一枚模型火箭?
  • 2026云南黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • ICM-42605与PIC32MZ的高精度运动追踪方案
  • GPT-4o 多模态解析《一串珍珠项链》:3种视角生成文学评论与人物分析
  • FA镜头 vs 远心镜头:5个关键维度对比与3类典型场景选型指南
  • WorkshopDL终极指南:非Steam玩家轻松获取创意工坊模组的完整解决方案
  • GitHub双重身份验证密钥丢失的预防与紧急恢复全指南
  • AI应用安全实践指南:从数据脱敏到私有化部署的全面防护
  • 企业级数据开发平台DataSphere Studio:一站式数据应用开发管理门户实战指南
  • 3 种主流遥感图像融合算法对比:PanSharpen、PCA 与小波变换的 PSNR 指标分析
  • sklearn fetch_covtype 数据集实战:7分类任务下3种经典模型性能对比
  • LP5812 RGB LED驱动芯片与TM4C129 MCU的智能灯光控制方案
  • PyTorch 实现 FPN+PAN 融合:YOLOv5 颈部网络 5 层特征图实战
  • 射阳油烟机维修找哪家
  • Postman环境变量与自动化测试实战:从新手到精通的避坑指南
  • IIM-42652六轴IMU与STM32L031K6的低功耗6DoF运动追踪方案
  • SpringBoot 2.7 + Flowable 6.8.1 多容器 Docker 部署:3 服务编排与网络通信实战