0%
Node.js 与全栈基础(Express / Koa)
发表于 分类于 后端
本文字数: 1.9k 阅读时长 ≈ 2 分钟
RESTful API 设计与鉴权
发表于 分类于 后端
本文字数: 5.1k 阅读时长 ≈ 5 分钟
Express 详解
发表于 分类于 后端
本文字数: 23k 阅读时长 ≈ 21 分钟
Nginx 配置详解
发表于 分类于 后端
本文字数: 5.8k 阅读时长 ≈ 5 分钟
解决 pm2 command not found 问题
发表于 分类于 Nginx
本文字数: 948 阅读时长 ≈ 1 分钟
在 Linux 环境通过 npm 全局安装 pm2 后,运行 pm2 命令却显示没有找到该命令:-bash: pm2: command not found。上网查找资料发现,这是因为没有创建软连接导致的。
Nginx 配置 PC 端和移动端页面按设备类型动态跳转
发表于 分类于 Nginx
本文字数: 2.2k 阅读时长 ≈ 2 分钟
虽然响应式页面能够做到样式随着屏幕的变化保持一致,但对于移动端和 PC 端两个截然不同的体系来说,更好的用户体验无疑是为两者分别准备一套代码。也就是说,如果一个网站做了这样的设备适配,那么用户在移动端访问到的就是移动端的页面,在 PC 端访问到的就是 PC 端的页面。我们可以在 Nginx 服务器的 conf.d 文件中进行配置,以根据设备类型的不同来做页面的跳转。
疑似缓存问题
发表于 分类于 Nginx
本文字数: 387 阅读时长 ≈ 1 分钟
在 nginx 服务器上准备调试 Nuxt 项目时,打开浏览器却发生了下图的情形。可以看到,样式发生明显错乱,图片资源也没有加载出来。而我在本地代码调试时,显示效果是正常的。在反复确认本地代码和服务端上的代码并无二致后,查看报错信息发现引入的 css 文件、js 文件以及图片资源都没有加载出来。
MongoDB 详解
发表于 分类于 后端
本文字数: 8.5k 阅读时长 ≈ 8 分钟
MySQL 详解
发表于 分类于 后端
本文字数: 5.9k 阅读时长 ≈ 5 分钟
一、连接与基本操作
1 | mysql -u root -p # 连接 |
二、表操作
1 | CREATE TABLE users ( |
常用数据类型
1 | 数值: |
三、CRUD
1 | -- INSERT |
查询执行顺序
1 | FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT |
四、JOIN
1 | CREATE TABLE orders ( |
JOIN 对比
| JOIN 类型 | 结果 |
|---|---|
| INNER JOIN | A ∩ B(交集) |
| LEFT JOIN | A 全保留 + B 匹配的 |
| RIGHT JOIN | B 全保留 + A 匹配的 |
| FULL OUTER JOIN | A ∪ B(MySQL 不支持,用 UNION 模拟) |
五、索引
1 | -- 创建索引 |
复合索引的最左前缀原则
1 | -- 复合索引 (a, b, c) |
EXPLAIN 分析查询
1 | EXPLAIN SELECT * FROM users WHERE email = 'alice@example.com'; |
1 | 关键字段: |
六、事务
1 | START TRANSACTION; |
ACID 特性
1 | A(Atomicity)原子性:事务要么全部成功,要么全部回滚 |
隔离级别
1 | SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; |
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| READ UNCOMMITTED | ✅ | ✅ | ✅ |
| READ COMMITTED | ❌ | ✅ | ✅ |
| REPEATABLE READ | ❌ | ❌ | ✅ |
| SERIALIZABLE | ❌ | ❌ | ❌ |
七、SQL 高级查询
1 | -- 子查询 |
八、存储引擎
1 | SHOW ENGINES; |
| 特性 | InnoDB(默认) | MyISAM |
|---|---|---|
| 事务 | ✅ | ❌ |
| 外键 | ✅ | ❌ |
| 行级锁 | ✅ | ❌(表级锁) |
| 全文索引 | 5.6+ 支持 | ✅ |
| 崩溃恢复 | ✅ | 需修复 |
| 适用场景 | OLTP 在线事务 | 只读 / 日志表 |
始终使用 InnoDB,除非有特殊理由。
九、性能优化
1 | SQL 优化原则: |
十、面试题
Q1: MySQL 为什么用 B+ Tree 做索引
1 | 1. B+ Tree 非叶子节点只存索引,不存数据,比 B-Tree 更矮宽 |
Q2: 聚簇索引和非聚簇索引的区别
1 | 聚簇索引(Clustered Index): |
Q3: 如何优化慢查询
1 | 1. 开启慢查询日志 |
Q4: MVCC 是什么
1 | MVCC(Multi-Version Concurrency Control)多版本并发控制。 |