3-1-0-MySQL知识总览

news/2025/11/11 15:19:00/文章来源:https://www.cnblogs.com/panhua/p/19210466

在互联网大厂的资深开发岗和架构师岗面试中,数据库知识的考察注重底层原理、分布式架构设计、性能优化及安全防护,核心围绕“如何用数据库支撑高并发、高可用、可扩展的业务场景”展开。以下是全面且深入的数据库知识体系,涵盖底层原理、架构设计、性能优化、安全防护等关键领域,并结合互联网场景的实际需求:

一、数据库基础理论与核心概念

1. ACID特性的底层实现原理

  • 原子性(Atomicity):详细说明Undo Log的原理与底层实现机制。多版本并发控制(MVCC)是什么?
  • 一致性(Consistency):事务的原子性怎么实现?数据库约束(如主键、外键、唯一索引)都是什么意思?怎么定义?底层是什么原理?
  • 隔离性(Isolation):详细说明锁机制和MVCC实现。脏读、不可重复读、幻读都是什么原因?(下文隔离级别详述)
  • 持久性(Durability):详细说明Redo Log原理与底层实现机制。如果数据库宕机,重启后怎么通过Redo Log恢复已提交的事务。

2. 事务隔离级别的底层机制

  • 读未提交(Read Uncommitted):无锁,直接读取最新数据,可能导致脏读(读取未提交的事务修改)。
  • 读已提交(Read Committed):通过行锁(共享锁/排他锁)实现,读取已提交的数据,避免脏读,但可能导致不可重复读(同一事务中多次读取同一数据结果不同)。
  • 可重复读(Repeatable Read):InnoDB的默认隔离级别,通过MVCC(多版本并发控制)实现。每个事务开始时生成一个Read View(视图),读取该视图下的历史版本数据,避免不可重复读;通过间隙锁(Gap Lock)避免幻读(读取不存在的数据)。
  • 串行化(Serializable):最高隔离级别,通过表锁实现,所有事务串行执行,避免所有并发问题,但性能最差。

-- MySQL中的记录在内存中怎么存储的?内存模型是什么?

-- undo_log内存模型?

-- MySQL中的mvcc,对于同一行数据的版本链,不同事务之间的修改怎么合并得到最终的数据?

-- 所以MySQL中最主要的底层概念包括:索引、RV,版本链、undo log、锁,剩下的隔离级别等都是在这些机制之上构建的算法?

3. 锁机制的底层原理

  • 行锁(Row-Level Lock):InnoDB的核心锁机制,针对表中的某一行数据加锁。例如,SELECT * FROM users WHERE id=1 FOR UPDATE会对id=1的行加排他锁(X锁),阻止其他事务修改该行数据。
  • 表锁(Table-Level Lock):针对整个表加锁,例如LOCK TABLES users WRITE会阻止其他事务读写该表。表锁的粒度大,性能差,仅在批量操作时使用。
  • 间隙锁(Gap Lock):InnoDB的可重复读隔离级别中,针对索引间隙加锁,避免幻读。例如,若id的索引值为1、3、5,间隙锁会锁住(1,3)、(3,5)等区间,阻止其他事务插入id=2id=4的数据。
  • 乐观锁与悲观锁
    • 悲观锁:假设并发冲突会发生,提前加锁(如SELECT ... FOR UPDATE)。
    • 乐观锁:假设并发冲突不会发生,通过版本号(Version)或时间戳(Timestamp)实现。例如,更新数据时检查版本号是否与读取时一致,若一致则更新,否则重试。

项目开发中怎么使用各种锁?

-- 共享锁、排他锁分别是什么?还有什么与之类似的锁?

​ -- 插入意向锁的多个事务只要插入的位置不冲突,可以同时持有同一间隙上的插入意向锁什么意思?

-- 基于索引加锁实现行锁,具体代码上锁是个什么东西?怎么实现的?

​ -- 锁是存在innodb内存中,那么如果死锁了,重启数据库是可以解锁的?

-- 为什么行锁有多种类型?分别是为了解决什么问题?具体用哪种是由谁、又是怎么选择的?

二、索引优化与查询性能调优

1. 索引的底层数据结构

  • B+树:MySQL InnoDB的默认索引结构,采用多叉树结构,叶子节点存储数据(聚簇索引)或索引键值(非聚簇索引),非叶子节点仅存储索引键值和指针。B+树的优势:
    • 范围查询高效:叶子节点通过双向链表连接,支持范围查询(如SELECT * FROM users WHERE id BETWEEN 10 AND 20)。
    • 空间利用率高:多叉树结构减少了树的深度,降低了磁盘IO次数。
    • 排序高效:叶子节点的链表结构支持快速排序(如ORDER BY id)。
  • 哈希索引:基于哈希表实现,适用于等值查询(如SELECT * FROM users WHERE id=1),但不支持范围查询。例如,Redis的HASH类型采用哈希索引。
  • 全文索引:基于倒排索引(Inverted Index)实现,适用于文本搜索(如SELECT * FROM articles WHERE content LIKE '%数据库%')。例如,Elasticsearch的核心是全文索引。

详细说明各种概念。

MySQL的数据页的概念、EXPLAIN分析查询、索引优化、各类索引定义SQL、

B+树数据结构。(树数据结构与算法)

基于索引 查询数据的算法实现,帮助理解索引优化中提到的最左前缀、失效等场景。

2. 索引优化的底层原理

  • 最左前缀原则:复合索引(如(user_id, order_id))的查询必须从左到右匹配。例如,SELECT * FROM orders WHERE user_id=1可以使用索引,而SELECT * FROM orders WHERE order_id=1无法使用该索引。
  • 索引失效的场景
    • 对索引列使用函数(如SELECT * FROM users WHERE YEAR(create_time)=2024)。
    • 对索引列进行类型转换(如SELECT * FROM users WHERE id='1'id为整数类型)。
    • 使用OR连接条件(如SELECT * FROM users WHERE id=1 OR name='张三',若idname都有索引,可能无法使用索引)。
  • 覆盖索引:查询的列都包含在索引中,无需回表查询。例如,SELECT user_id, order_id FROM orders WHERE user_id=1,若(user_id, order_id)是复合索引,则可以直接从索引中获取数据,无需访问数据行。

3. 查询性能调优的底层方法

  • Explain执行计划分析:具体使用方法以及字段含义。

    通过EXPLAIN命令查看查询的执行计划,重点关注以下字段:

    • type:查询类型(如const=主键查询,ref=索引查询,all=全表扫描)。目标是让type尽可能接近const
    • key:使用的索引(如idx_user_id)。
    • rows:扫描的行数(越小越好)。
    • Extra:额外信息(如Using filesort=需要排序,Using index=覆盖索引)。
  • 慢查询优化:通过慢查询日志(slow_query_log)找出执行时间超过阈值的查询,优化方法包括:

    • 添加合适的索引(如对whereorder bygroup by的列加索引)。
    • 重写查询(如将IN改为JOIN,将子查询改为临时表)。
    • 分页优化(如SELECT * FROM users WHERE id > 1000 LIMIT 10,避免OFFSET过大)。

分页查询原理。

MyBatis框架原理与底层机制。

三、分布式数据库架构与核心技术

1. 分布式事务的底层实现原理

  • 两阶段提交(2PC):经典的分布式事务协议,分为准备阶段(Prepare)和提交阶段(Commit)。例如,TiDB的Percolator事务模型采用2PC实现跨节点事务:
    • 准备阶段:事务协调者(Coordinator)向所有参与者(Participant)发送准备请求,参与者执行事务操作并锁定资源,返回“成功”或“失败”。
    • 提交阶段:若所有参与者都返回“成功”,协调者发送提交请求,参与者提交事务;若有任何一个参与者返回“失败”,协调者发送回滚请求,参与者回滚事务。
  • 三阶段提交(3PC):在2PC基础上增加预提交阶段(Pre-commit),减少阻塞时间,但实现更复杂,实际应用较少。
  • TCC(Try-Confirm-Cancel):适用于业务层分布式事务,分为尝试阶段(Try)、确认阶段(Confirm)、取消阶段(Cancel)。例如,电商下单场景中,Try阶段冻结库存,Confirm阶段扣减库存,Cancel阶段解冻库存。

2. 分库分表的核心原理与实践

  • 分库分表的必要性:解决单库单表的性能瓶颈(如I/O、连接数、存储容量)。例如,单表数据量超过500万行时,查询性能会显著下降。

  • 分片策略

    • 哈希分片:根据分片键(如user_id)的哈希值分配数据到不同分片(如shard_id = hash(user_id) % 10)。优点:数据分布均匀;缺点:扩容时需要数据迁移。
    • 范围分片:根据分片键的范围分配数据(如user_id在1-1000万的分片1,1001-2000万的分片2)。优点:适合时序数据(如订单);缺点:可能导致数据倾斜(如某分片数据量过大)。
    • 业务分片:根据业务模块分配数据(如用户库、订单库、商品库)。优点:逻辑清晰;缺点:跨业务查询需要关联多个库。
  • 分库分表的挑战与解决方案

    • 跨分片查询:使用全局索引表(记录分片键与分片的映射关系)或异构索引库(如Elasticsearch)存储索引数据。
    • 数据一致性:使用分布式事务框架(如Seata)或最终一致性(如消息队列异步同步)。
    • 热点问题:采用二级分片(如merchant_id + date联合分片)或动态分片(自动检测热点并拆分)。

    如果已经通过用户号进行了哈希分片,但是某个客户存在热点数据问题,怎么优化这个热点问题?

3. 云原生数据库的底层架构

  • 存算分离:计算层(如SnowFlake的Virtual Warehouse)与存储层(如AWS S3)解耦,计算层可以独立扩缩容,存储层使用对象存储(如S3、OSS)实现无限扩展。例如,HashData的存算分离架构中,计算节点使用SSD缓存热点数据,减少对象存储的访问次数。
  • 弹性扩展:计算节点(如EC2实例)可以根据业务需求动态增加或减少,存储层(如对象存储)自动扩容。
  • 多租户支持:通过资源隔离(如CPU、内存配额)实现多租户共享同一数据库实例,同时保证数据安全。

四、数据库安全防护体系

常见的数据库攻击有哪些?什么原理?怎么防御?

1. SQL注入的防御机制

  • 参数化查询:使用预处理语句(如Java的PreparedStatement、Python的SQLAlchemy),将用户输入作为参数绑定到SQL语句中,避免SQL拼接。例如,SELECT * FROM users WHERE username = ? AND password = ?,参数通过setString方法绑定。

    MyBatis怎么支持?代码样例?

  • ORM框架:使用Hibernate、Django ORM等框架,自动处理参数化查询,避免手动拼接SQL。

  • 输入验证:对用户输入进行格式验证(如正则表达式校验手机号、邮箱),过滤特殊字符(如'";)。

  • WAF(Web应用防火墙):部署WAF(如ModSecurity、阿里云SCDN),通过规则引擎拦截SQL注入攻击(如匹配SELECTUNIONDROP等敏感关键字)。

2. XSS攻击的防御机制

  • 输入输出过滤:对用户输入进行过滤(如去除<script>javascript:等危险标签),对输出进行编码(如HTML Entity编码、JavaScript Escape编码)。例如,在Thymeleaf模板中,使用th:text="${user.name}"自动转义HTML字符。
  • CSP(内容安全策略):通过HTTP头Content-Security-Policy限制脚本加载源(如script-src 'self'),阻断内联脚本执行。
  • 安全框架:使用OWASP ESAPI(Enterprise Security API)处理用户输入和输出,提供标准化的安全函数(如ESAPI.encoder().encodeForHTML())。

3. 数据加密与隐私保护

加密字段怎么解密?应用读取数据之后怎么处理得到明文?

  • 字段级加密:对敏感字段(如密码、身份证号)使用AES-GCM、RSA等算法加密存储。例如,public String encrypt(String plaintext) { Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE, keySpec, new GCMParameterSpec(128, iv)); return Base64.getEncoder().encodeToString(cipher.doFinal(plaintext.getBytes())); }
  • 传输加密:使用TLS 1.3加密数据传输,防止中间人窃取敏感信息。例如,全站强制HTTPS,在Nginx配置ssl_protocols TLSv1.3;
  • 隐私保护:对敏感数据进行脱敏处理(如手机号显示为138****1234),根据用户角色实施梯度脱敏(如管理员看到完整信息,普通用户看到脱敏信息)。

五、数据库高可用与容灾设计

1. 主从复制的底层原理

同步方式选择标准?同城主从怎么选?异地灾备怎么选?

  • 异步复制:主库执行事务后,将Redo Log发送到从库,从库异步执行Redo Log。优点:性能高;缺点:可能存在数据延迟(如主库宕机后,从库未同步最新数据)。
  • 半同步复制:主库执行事务后,等待至少一个从库确认收到Redo Log,再提交事务。优点:数据一致性高;缺点:性能略低于异步复制。
  • 组复制(Group Replication):MySQL 5.7+支持,通过Paxos协议实现多主复制,提高可用性。

2. 高可用架构的设计

  • MHA(Master High Availability):MySQL的高可用解决方案,自动检测主库故障,提升从库为主库,实现故障转移。
  • Galera Cluster:Percona的高可用解决方案,支持多主复制,所有节点都可以读写,数据一致性高。
  • 云原生高可用:使用云厂商的高可用服务(如AWS RDS的Multi-AZ、阿里云RDS的读写分离),自动实现主从切换和故障转移。

3. 容灾设计

  • 异地多活:将数据库部署在多个地域(如北京、上海、广州),实现地域间的容灾。例如,阿里云的全球数据库支持跨地域同步,当某个地域的数据库宕机时,自动切换到其他地域。
  • 备份与恢复:采用“全量+增量”备份策略(如MySQL的mysqldump全量备份+binlog增量备份),备份文件加密存储于异地(如AWS S3、阿里云OSS)。

六、数据库性能监控与调优

1. 性能监控的关键指标

  • QPS(Queries Per Second):每秒查询次数,反映数据库的吞吐量。
  • TPS(Transactions Per Second):每秒事务次数,反映数据库的事务处理能力。
  • 连接数:当前数据库的连接数,超过最大连接数会导致连接失败。
  • 慢查询数:执行时间超过阈值的查询数量,反映查询性能问题。
  • CPU利用率:数据库服务器的CPU利用率,超过80%会导致性能下降。
  • 内存利用率:数据库服务器的内存利用率,超过80%会导致缓存失效。

2. 性能调优的工具

  • Explain:分析查询的执行计划,优化索引和查询语句。
  • Slow Query Log:记录慢查询,找出性能瓶颈。
  • Performance Schema:MySQL 5.6+支持,监控数据库的性能指标(如锁等待、查询执行时间)。
  • Prometheus+Grafana:开源监控系统,收集数据库的性能指标(如QPS、TPS、连接数),可视化展示。

七、总结:核心考察点

数据库知识的考察注重“底层原理+实际应用+架构设计”的结合。核心考察点包括:

  1. 底层原理:ACID、事务隔离级别、锁机制、索引数据结构(B+树)、分布式事务(2PC、TCC)。
  2. 性能优化:索引优化、查询性能调优(Explain、慢查询)、分库分表策略。
  3. 架构设计:分布式数据库架构(存算分离、云原生)、高可用与容灾设计(主从复制、MHA)。
  4. 安全防护:SQL注入、XSS攻击的防御,数据加密与隐私保护。

建议:在准备面试时,不仅要记住概念,还要深入理解底层原理(如B+树的结构、2PC的执行流程),并结合实际项目经验(如分库分表的实践、慢查询的优化),这样才能在面试中脱颖而出。

----分割-------------

数据库资深/架构师岗位面试中,MySQL的考察核心已从“会用”转向“懂原理、能调优、会解决复杂问题”,尤其关注底层机制、性能瓶颈定位、高可用设计与业务的结合能力。以下是具体的重点考察方向,按优先级+深度排序:

一、「索引与查询优化」—— 高频且能体现深度的核心考点

资深岗不会考“什么是B+树”,而是考B+树的设计为什么适合MySQL索引失效的底层原因如何用索引“精准打击”慢查询

关键考察点:

  1. B+树的原理与MySQL的适配性
    • 对比B树:为什么InnoDB选B+树?(叶子节点存数据+顺序访问,减少磁盘IO;非叶子节点只存索引,容纳更多节点)
    • 聚簇索引 vs 非聚簇索引:InnoDB的聚簇索引是“数据+索引”的组合(主键索引的叶子节点存整行数据),MyISAM是非聚簇(索引和数据分开);覆盖索引的本质是“不需要回表”(查询字段都在索引里)。
    • 联合索引的最左匹配原则:为什么(a,b,c)能支持aa+ba+b+c的查询,但不能直接支持bc?(B+树按最左前缀排序)
    • 索引失效的底层原因:比如where id = '1'(id是int,字符串转换导致无法命中索引)、where date(create_time) = '2024-01-01'(函数操作破坏索引有序性)、order by rand()(无法用索引排序,导致文件排序)。
  2. EXPLAIN的深度解读与实战
    • 必关注的字段:type(访问类型,从allindexrangerefeq_refconst,越左越差)、key(实际使用的索引)、rows(预估扫描的行数,越大越耗性能)、Extra(额外信息,如Using filesort/Using temporary表示需要优化)。
    • 案例:如果EXPLAIN显示type=allkey=null,说明全表扫描,需要检查where条件是否有索引,或是否需要强制走索引(force index)。
  3. 慢查询的定位与优化流程
    • 工具:慢查询日志(slow_query_log)、pt-query-digest(分析慢查询日志的工具,找出TOP慢SQL)、performance_schema(实时监控SQL执行情况)。
    • 优化步骤:先看执行计划→再查索引是否合理→再优化SQL语句(比如将子查询改为联表、拆分大查询、避免select *)。

二、「事务与锁」—— 考察对ACID的底层实现与并发问题的解决能力

资深岗会问MVCC到底怎么实现的间隙锁为什么会引发幻读死锁怎么定位和避免,而非“事务的四个隔离级别是什么”。

关键考察点:

  1. MVCC(多版本并发控制)的底层机制
    • 核心组件:undo log(版本链)、read view(读视图,判断哪些版本可见)。
    • 不同隔离级别的表现:
      • 读未提交(RU):不加锁,直接读最新数据;
      • 读已提交(RC):每次查询生成新的read view,能看到其他事务提交的修改;
      • 可重复读(RR):第一次查询生成read view,后续复用,避免不可重复读;默认隔离级别下,InnoDB通过间隙锁解决幻读
    • 案例:为什么RR级别下,update语句会加间隙锁?(防止其他事务插入符合条件的数据,导致幻读)
  2. 锁的类型与场景
    • 行锁 vs 表锁:InnoDB默认行锁,但全表更新时会退化为表锁;MyISAM只有表锁。
    • 间隙锁(Gap Lock):锁定索引记录之间的间隙,比如where id between 1 and 10,会锁(1,10)的间隙,防止插入id=2~9的数据;间隙锁只在RR级别存在
    • 临键锁(Next-Key Lock):行锁+间隙锁的组合,比如where id=5,会锁id<=5>前一个索引值的范围,解决幻读。
    • 死锁:show engine innodb status查看死锁日志,分析锁等待链;避免方法:按固定顺序加锁减少事务持有锁的时间降低事务隔离级别

三、「InnoDB核心机制」—— 考察对存储引擎的底层理解

InnoDB是MySQL的默认引擎,资深岗会问日志系统的设计为什么保证持久化缓冲池怎么优化性能

关键考察点:

  1. 日志系统:redo log、undo log、binlog的区别与协作
    • redo log(重做日志):WAL(Write-Ahead Logging)机制,先写redo log再写数据文件,保证崩溃恢复(比如宕机后,用redo log恢复未写入数据文件的修改);物理日志,记录页的修改。
    • undo log(回滚日志):用于事务回滚和MVCC,逻辑日志,记录数据的旧版本。
    • binlog(二进制日志):用于主从复制和数据恢复,逻辑日志,记录SQL语句或行的修改;三种格式:statement(语句级,可能导致主从不一致)、row(行级,安全但日志大)、mixed(混合模式)。
  2. 缓冲池(Buffer Pool)的优化
    • 缓冲池的作用:缓存数据和索引,减少磁盘IO;默认大小是128M,生产环境建议设为物理内存的50%~70%。
    • 监控指标:innodb_buffer_pool_read_requests(缓存命中次数)、innodb_buffer_pool_reads(缓存未命中次数);命中率=命中次数/(命中次数+未命中次数),低于95%需要调大缓冲池

四、「高可用与分布式」—— 考察对大规模系统的设计能力

资深岗/架构师需要解决数据量爆炸、高并发、高可用的问题,重点考察分库分表、主从复制、分布式事务

关键考察点:

  1. 主从复制的原理与延迟解决
    • 原理:主库写binlog→从库IO线程读binlog→从库SQL线程执行binlog;异步复制(默认)、半同步复制(主库等待从库确认后才提交)、全同步复制(所有从库确认,性能差)。
    • 延迟问题:原因可能是主库大事务、从库并行复制能力不足;解决方法:优化主库事务(拆分成小事务)开启从库多线程复制(slave_parallel_workers使用并行复制插件(如Percona的Tungsten)
  2. 分库分表的策略与坑
    • 拆分方式:垂直拆分(按业务拆,比如用户库、订单库)、水平拆分(按分片键拆,比如用户ID哈希、时间范围)。
    • 分片键选择:要均匀分布(避免热点)、关联查询方便(比如订单表按用户ID分片,用户表也按用户ID分片,联表方便)。
    • 常见坑:
      • 跨分片查询:比如count(*)order by,解决方法:用缓存(Redis)存储汇总数据,或建全局汇总表;
      • 全局唯一ID:不能用数据库自增,要用雪花算法、UUID(但UUID无序,影响索引性能)或数据库分段(比如Leaf-segment);
      • 分布式事务:跨库事务无法用本地事务解决,需用XA、TCC、Seata等方案。
  3. 分布式事务的选型与实践
    • XA:强一致性,基于两阶段提交(2PC),但性能差,适合小事务;
    • TCC:补偿机制,分为Try、Confirm、Cancel三个阶段,适合长事务,但开发复杂;
    • Seata:开源框架,支持AT模式(基于undo log,自动补偿)、TCC模式、Saga模式;AT模式是无侵入的,适合大部分场景

五、「实战问题排查与调优」—— 考察解决真实问题的能力

资深岗面试一定会问你遇到过哪些MySQL性能问题?怎么解决的?,重点考察问题定位的思路与落地能力

常见问题与解决案例:

  1. 案例1:线上慢查询突然增多
    • 排查步骤:
      1. 看慢查询日志,用pt-query-digest找出TOP慢SQL;
      2. 对慢SQL执行EXPLAIN,发现type=all(全表扫描);
      3. 检查索引:发现where条件的字段没有索引;
      4. 加索引后,慢查询消失。
    • 总结:索引缺失是慢查询的常见原因,但要先确认执行计划,避免盲目加索引(索引越多,写性能越差)
  2. 案例2:主从延迟严重
    • 排查步骤:
      1. 看主库的slow_query_log,发现有很多大事务(比如批量插入10万条数据);
      2. 看从库的show processlist,发现SQL线程在逐条执行大事务;
      3. 解决方法:将主库的大事务拆分成小事务(比如每次插入1000条),并开启从库多线程复制;
    • 总结:大事务是主从延迟的主要原因,要拆分成小事务,同时优化从库的并行复制能力
  3. 案例3:接口超时,发现数据库锁等待严重
    • 排查步骤:
      1. 执行show processlist,发现多个连接处于Waiting for table metadata lockWaiting for row lock状态;
      2. 查死锁日志(show engine innodb status),发现两个事务互相等待对方的锁;
      3. 解决方法:调整事务的加锁顺序(比如都按用户ID从小到大加锁),并减少事务的持有时间(比如将事务内的非数据库操作移到外面);
    • 总结:锁等待会导致接口超时,要从事务设计和加锁顺序入手解决

六、「延伸考察:与业务的结合能力」

资深岗不仅考技术,还考技术如何支撑业务,比如:

  • 你的项目中有没有遇到过数据量激增的情况?怎么做的分库分表?
  • 你们的支付系统怎么保证事务一致性?用了哪种分布式事务方案?
  • 你们的秒杀系统怎么解决库存超卖问题?(用数据库乐观锁:update stock set count=count-1 where id=1 and count>0

总结:资深岗MySQL面试的“通关密码”

  1. 原理深挖:不仅要会用,还要懂“为什么”(比如B+树为什么适合MySQL、MVCC怎么实现RR隔离);
  2. 实战落地:能结合项目经验,讲清楚遇到的问题、排查过程、解决方法;
  3. 高可用思维:能设计支持高并发、高可用的MySQL架构(比如主从复制+分库分表+分布式事务);
  4. 问题排查能力:有一套系统的方法定位慢查询、锁等待、主从延迟等问题。

如果需要模拟回答某个具体问题(比如“请解释MVCC的实现”),或针对你的项目经验调整考察重点,随时告诉我!

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

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

相关文章

AT AGC043D Merge Triplets 题解

SolutionLink 神题。 手玩一下样例,发现重点肯定在这个顶部元素和 \(3\) 的大小之间的次序关系。考虑最特殊的,即对于 \(n\) 个三元组,都有如 \(A_{i, 1} \lt A_{i, 2} \lt A_{i , 3}\) 的形式,那么我们最终得到一…

4-1-2-Kafka-Broker-log

0、分区目录内物理存储文件类型 Kafka的消息存储体系围绕分区(Partition)展开,每个分区对应一个物理目录,目录内包含核心日志文件、索引文件、事务相关文件及元数据文件四大类,共同支撑消息的高效存储、查询与一致…

SqlSugar 在linux环境下连接sqlserver数据库报错SSL出错,因为升级了驱动,字符串增加Encrypt=True;TrustServerCertificate=True;

Centos 7编辑openssl.cnf文件vim /etc/pki/tls/openssl.cnf#在oid_section=new_oids下增加 openssl_conf = default_conf #在文件末尾增加 [default_conf] ssl_conf = ssl_sect [ssl_sect] system_default = system_de…

2025年11月GPU服务器公司排名:五强技术方案与落地案例对比

如果你正在规划AI训练、工业仿真或大数据建模项目,GPU服务器选型往往决定预算、进度与算力天花板。2025年,国内GPU服务器市场呈现“国产化加速、场景细分、成本敏感”三大趋势:一方面,信创政策要求关键行业优先采用…

在 Windows 系统上安装官方 Codex CLI 教程

前面介绍过,➡️在 Windows 系统上安装官方 Claude Code CLI 教程,今天再来说说 Windows下如何用官方的 Codex CLI ! 一、打开网站 https://www.aicodemirror.com (用了两个多月,网站稳定性不错) 注册就送2000积…

关于CSS的三种引入方法的说明与区别说明

关于CSS的三种引入方法的说明与区别说明Posted on 2025-11-11 15:11 520_1351 阅读(0) 评论(0) 收藏 举报CSS 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或…

薪酬管理:企业增长的“隐形引擎”—中国薪资管理系统Top 5深度分析与选型指南

引言:复杂多变的中国薪酬市场与数字化挑战 在现代企业运营中,薪酬管理已远超简单的工资核算与发放,它更是激发员工积极性、优化成本结构、驱动业务增长的“隐形引擎”。特别是在中国这个拥有庞大劳动力市场和复杂多…

SpringOJ竞赛计划----组件ElasticSearch

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

C# Avalonia 17- ControlTemplates - VisualTreeDisplay

C# Avalonia 17- ControlTemplates - VisualTreeDisplayVisualTreeDisplay.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"…

【软件测试】你需要的面试技巧全在这里,细节满满

小编总结了面试的细节,这份热乎乎、滚滚烫的面经分享给大家,希望对大家有所帮助。 面试形式 问题式 由招聘者按照事先拟订的提纲对求职者进行发问,请予回答。其目的在于观察求职者在特殊环境中的表现,考核其知识与…

Q:访问url地址,nginx报错 403 Forbidden

Q:访问url地址,nginx报错 403 ForbiddenPosted on 2025-11-11 15:08 三年三班王小朋 阅读(0) 评论(0) 收藏 举报403 Forbidden,说明 后端服务(ip:端口)拒绝了该请求,而不是 Nginx 的问题(因为这是直接访问…

非模式生物基因富集分析——小麦富集分析

TriticeaeGeneTribe - A homology database for Triticeae tribe (wheat, durum wheat, barley, and their relatives) 1、模式生物与非模式生物小麦属于作物模式生物2、富集分析 对于非常规生物的富集分析,有些R包没…

【MySQL】事务 - 详解

【MySQL】事务 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…