本文系统阐述了 MySQL 索引的作用与实现原理。首先说明索引通过有序数据结构(如红黑树、B‑Tree、B+Tree)显著降低查询次数。随后比较了二叉树、红黑树、Hash 与 B‑Tree 的特性,重点解释了 B+Tree 在叶节点存数据、双向指针以及更高扇出等优势,使其成为 InnoDB 聚集索引的底层结构。文中进一步区分了 InnoDB 与 MyISAM 的存储方式,阐明主键、二级索引和联合索引的构建、回表过程以及左前缀原则,强调使用自增整型主键的性能与空间优势。最后总结 B+Tree 相比 B‑Tree 能减少树高、降低 IO,从而提升查询效率。

本文系统阐述了 MySQL 并发事务产生的脏写、脏读、不可重复读、幻读等一致性问题,并通过 ACID 原则、事务隔离级别(读未提交、读已提交、可重复读、串行化)以及锁机制(表锁、行锁、意向锁、间隙锁、Next‑Key 锁)进行深入分析。重点比较了 MyISAM 的表级锁与 InnoDB 的行级锁及 MVCC 实现,演示了不同隔离级别下的读写行为、死锁产生与检测,并提供了通过索引、锁范围优化及监控指标(innodb_row_lock*)提升并发性能的实用建议。

本文演示如何使用 Java 实现对指定文件夹下所有 .txt 文件进行两两比较并输出差异。代码首先遍历目录,仅收集 txt 文件路径;随后按顺序每次取相邻的两个文件读取为 UTF‑8 字符串,若内容相同则提示完全一致;否则分别按行拆分,逐行比较并打印出旧文件和新文件中不一致或新增的行号及内容。示例在 D:/txt 目录下创建四个 txt 文件进行测试,运行后在控制台展示每对文件的对比结果。

本文介绍了 NC100 题目 “把字符串转换成整数 (atoi)”。要求实现 `StrToInt`,在不使用库函数的前提下,将可能包含前导/后导空格、可选符号以及非数字字符的字符串解析为 32 位有符号整数。核心步骤为:①去除首尾空格;②确定正负号;③从符号后连续读取数字,遇到非数字立即结束;④若数字超出 `[−2³¹, 2³¹−1]` 范围则截断为相应边界值;⑤返回结果。文中给出 Java 实现,采用全部用负数累计避免溢出,并在检测到越界时返回 `Integer.MAX_VALUE` 或 `Integer.MIN_VALUE`。示例展示了普通、带空格、含多余字符、无有效数字以及超限情况的处理效果。

微服务接口设计围绕高可用、高性能、易维护三大目标展开。高可用通过降级兜底、过载保护、流量限流、快速失败、无状态、最少依赖、简洁可靠、分散与隔离、幂等、故障自愈等手段实现,并依据 CAP/BASE 理论在一致性与可用性之间做权衡。高性能强调无锁编程和单线程/多 reactor 模型,避免锁竞争导致的性能瓶颈。遵循这些原则,可构建可靠、可扩展、低风险的微服务体系。

本文系统梳理了 MySQL 面试常见知识点。介绍了索引的概念、B+树与哈希索引的区别、聚簇与非聚簇索引、联合索引顺序以及如何通过 EXPLAIN 判断索引是否生效。阐述了事务的 ACID 特性、四种隔离级别及其并发问题,并说明 InnoDB 默认使用可重复读。简述了共享锁、排他锁及行、页、表级锁的粒度。给出表结构设计建议:主键(推荐自增 ID)不可为 NULL、字符类型选择、使用 CHAR 存储定长散列。比较了 InnoDB 与 MyISAM 的特性,说明了 VARCHAR 与 CHAR 的差异、BINLOG 三种格式以及大分页、慢查询优化、水平/垂直分表的思路,最后简要介绍存储过程的利弊和三大范式。