当前位置:首页>面试真题>小红书面试真题-死锁考点全梳理

小红书面试真题-死锁考点全梳理

  • 2026-02-26 01:39:54
小红书面试真题-死锁考点全梳理

作为 Java 开发工程师,我深知在高并发电商场景下死锁问题的严重性。特别是在曾经参与的爆款 SKU 频繁下单项目中,我们团队经历了从死锁发生到最终解决的完整过程,这个经验让我对死锁问题有了更深刻的理解。当我收到小红书 Java 开发工程师的面试邀请时,我立即意识到死锁问题必将是面试的核心考察点之一。

一、面试前的针对性准备

1.1 小红书技术栈与业务特点调研

在准备面试前,我首先对小红书的技术栈进行了深入调研。根据搜索结果,小红书的后端主要使用 Java 开发,采用了主流的 Spring Cloud 微服务架构,核心技术包括 Spring Boot、MyBatis、RocketMQ、Thrift、Redis、MySQL、Elasticsearch 等。特别值得关注的是,小红书在高并发场景下有自己的技术创新,比如自研的 RedKV 分布式 KV 存储系统,支持无中心和有中心两种管控架构,实时 QPS 接近 1 亿 / 秒。

在数据库方面,小红书使用 MySQL 8.x 版本,并自研了 RedSQL 数据库内核。这个内核最引人注目的创新是合并秒杀方案,通过将多个事务 SQL 合并到一个事务进行提交,将秒杀写入能力提升 5 倍至 1.5W/s+,相比开源 MySQL 版本有百倍性能提升。这个方案采用 Leader-Follower 模型,当多个请求同时抢同一行库存时,系统会自主选出一个 leader 负责读取和更新数据,其他 follower 的请求不再去争抢行锁,而是排队修改 leader 存下来的缓存,最后 leader 再一次性把合并后的结果写回 InnoDB。

了解到这些技术特点后,我意识到小红书的死锁问题可能主要集中在以下几个场景:

  • 高并发秒杀场景:爆款商品的库存扣减可能引发大量的行锁竞争
  • 分布式系统间的死锁:微服务架构下不同服务间可能形成死锁
  • 缓存与数据库的一致性问题:Redis 等缓存与 MySQL 之间可能出现死锁
  • 长事务问题:在复杂业务流程中可能存在长时间持有锁的情况

小红书后端技术栈及死锁风险场景架构图

1.2 结合爆款 SKU 死锁经验的深度分析

回顾我在爆款 SKU 项目中遇到的死锁问题,我对其进行了系统的复盘分析。当时的情况是,一个爆款商品在短时间内涌入了大量的下单请求,导致数据库频繁出现死锁,系统响应时间急剧上升,最终甚至出现了服务雪崩的迹象。

问题分析过程:

通过监控系统,我们发现死锁主要发生在以下几个环节:

  • 订单创建与库存扣减的死锁:多个事务同时尝试更新订单表和库存表,但加锁顺序不一致
  • 库存行锁竞争:同一 SKU 的库存记录被多个事务同时锁定
  • 分布式锁与数据库锁的交叉死锁:Redis 分布式锁与 MySQL 行锁之间形成死锁

技术难点和痛点:

  • 高并发下的锁竞争激烈,传统的悲观锁方案性能瓶颈明显
  • 死锁发生的随机性强,难以在测试环境复现
  • 死锁的排查和定位困难,需要结合多种监控工具
  • 业务逻辑的复杂性导致锁的持有时间难以控制

基于这些经验,我制定了针对性的面试准备策略:

  • 深入理解死锁的理论基础,特别是 JVM 死锁和数据库死锁的区别
  • 掌握各种死锁监控和排查工具的使用方法
  • 准备具体的死锁解决方案和优化策略
  • 了解小红书在死锁处理方面的技术创新

爆款SKU下单场景死锁发生环节架构图

1.3 死锁理论知识的系统梳理

为了应对面试,我对死锁相关的理论知识进行了系统梳理。

JVM 死锁的四个必要条件:

  • 互斥条件:资源一次只能被一个线程持有
  • 持有并等待条件:线程持有至少一个资源,同时等待其他线程持有的资源
  • 不可抢占条件:资源只能由持有线程主动释放,不能被其他线程强行剥夺
  • 循环等待条件:线程形成一个闭合的等待链,每个线程等待下一个线程持有的资源

数据库死锁的特点:

  • 死锁通常发生在多个事务更新多个表或行时,且加锁顺序不一致
  • InnoDB 引擎会自动检测死锁(默认开启),并选择一个事务作为 "牺牲品" 进行回滚
  • 死锁错误代码为 1213,事务会抛出 "Deadlock found when trying to get lock" 异常

死锁的监控工具:

JVM 死锁监控:

  • jstack:打印线程堆栈,自动检测死锁
  • jconsole:图形化工具,可直接点击 "检测死锁" 按钮
  • Arthas:阿里开源诊断工具,支持 thread -b 命令直接定位死锁线程

数据库死锁监控:

  • SHOW ENGINE INNODB STATUS:查看最新的死锁信息
  • INFORMATION_SCHEMA.INNODB_LOCKS/INNODB_LOCK_WAITS:查看锁等待关系
  • 开启 innodb_print_all_deadlocks:记录所有死锁信息到错误日志

死锁理论及监控工具架构图

二、面试过程的实战演练

2.1 面试官提问与我的分析

面试官:"请你谈谈对死锁的理解,特别是 JVM 死锁和数据库死锁的区别。"

我的分析:

这个问题考察的是死锁的理论基础,需要从多个角度进行回答。面试官可能想了解我的理论功底,以及对不同类型死锁的理解深度。

普通候选人的回答思路:

可能会简单背诵死锁的四个必要条件,然后泛泛地说 JVM 死锁发生在线程之间,数据库死锁发生在事务之间。这种回答虽然正确,但缺乏深度和实战经验的支撑。

我的回答策略:

" 死锁是并发编程中最经典的问题之一。在 Java 中,死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干预,它们都将无法推进下去。要发生死锁,必须同时满足四个必要条件:互斥条件、持有并等待条件、不可抢占条件和循环等待条件。"

"在实际项目中,我遇到过死锁问题。当时我们的爆款 SKU 商品在促销期间,由于大量用户同时下单,导致数据库频繁出现死锁。通过 jstack 分析,我发现有两个线程互相持有对方需要的锁,形成了死锁环。其中一个线程持有用户锁等待库存锁,另一个线程持有库存锁等待用户锁。"

"JVM 死锁和数据库死锁的主要区别在于:JVM 死锁发生在多线程环境中,主要是由于线程之间对资源的竞争和锁的管理不当;而数据库死锁通常发生在事务管理中,多个事务因竞争数据库的行锁或表锁而导致死锁。在我们的项目中,还发现了一个有趣的现象:分布式锁与数据库锁之间也可能形成交叉死锁,这增加了问题的复杂性。"

"为了解决这个问题,我们采用了多种策略。首先,我们统一了锁的获取顺序,所有线程都按照先获取用户锁再获取库存锁的顺序执行。其次,我们使用了 ReentrantLock 的 tryLock () 方法设置超时时间,避免无限等待。最后,我们还实现了分片锁,按用户 ID 哈希分片,让不同用户的请求可以并行处理,接口吞吐量提升了 2 倍多。"

JVM死锁与数据库死锁区别及死锁环示例架构图

2.2 死锁监控和排查方法的深入探讨

面试官:"当系统出现死锁时,你会如何进行监控和排查?"

我的分析:

这个问题考察的是实战能力,面试官想了解我是否有实际的死锁排查经验,以及对各种监控工具的掌握程度。

我的回答:

"在实际工作中,我建立了一套完整的死锁监控和排查体系。当系统出现死锁时,我会按照以下步骤进行处理:"

" 首先是监控阶段。我会使用多种工具进行实时监控。对于 JVM 死锁,我会使用 jstack 命令打印线程堆栈,它会自动检测并报告死锁,明确指出哪些线程在互相等待哪些锁。同时,我也会使用 Arthas 这个强大的诊断工具,它可以在不重启应用的情况下,通过 thread -b 命令直接定位死锁线程。对于数据库死锁,我会执行 SHOW ENGINE INNODB STATUS 命令,重点关注 LATEST DETECTED DEADLOCK 部分,这里会显示死锁的详细信息,包括事务 ID、持有锁和等待锁的详情、引发死锁的 SQL 语句等。"

"其次是定位阶段。通过分析监控信息,我需要快速定位死锁的根源。在我们的项目中,通过查看死锁日志,我发现死锁主要发生在订单创建和库存扣减的过程中。两个事务分别持有对方需要的锁:事务 A 持有订单表的锁等待库存表的锁,事务 B 持有库存表的锁等待订单表的锁。"

"然后是分析阶段。我会深入分析死锁发生的原因。在我们的案例中,主要原因是:第一,两个事务的加锁顺序不一致;第二,事务执行时间过长,锁持有时间太长;第三,在 RR 隔离级别下,范围查询会触发 Next-Key Lock,导致锁的范围扩大。"

" 最后是解决阶段。针对这些问题,我们采取了以下措施:第一,统一所有事务的加锁顺序,比如都按照先更新用户表再更新订单表的顺序执行;第二,优化 SQL 语句,使用唯一索引避免范围锁;第三,减少事务中的操作,将非必要的操作移出事务;第四,根据业务需求调整事务隔离级别,使用 READ COMMITTED 减少锁竞争。"

"通过这些措施,我们成功解决了死锁问题。系统的死锁发生率从每天数百次降低到了几乎为零,同时系统的整体性能也有了显著提升。"

死锁监控与排查全流程架构图

2.3 高并发场景下的死锁预防策略

面试官:"在高并发场景下,如何预防死锁的发生?"

我的分析:

这个问题考察的是预防策略,面试官想了解我在设计阶段如何考虑死锁问题,以及有哪些具体的预防措施。

我的回答:

"在高并发场景下,预防死锁比解决死锁更重要。根据我的经验,预防死锁需要从多个层面进行考虑。"

" 首先是设计层面的预防。在设计数据库表结构时,我会确保所有的查询都有合适的索引,避免全表扫描导致的锁升级。在我们的项目中,通过为常用查询条件添加索引,不仅提高了查询性能,还大大减少了锁的持有时间。同时,我会设计合理的事务边界,确保事务尽可能短小,单个事务不超过 5 个 DML 操作,执行时间控制在 100ms 以内。"

"其次是编码层面的预防。我会严格遵循统一的锁获取顺序原则。比如在处理用户订单时,所有的事务都按照先获取用户锁再获取订单锁的顺序执行。在代码实现上,我会使用 tryLock () 方法设置超时时间,一般设置为 300 毫秒,超时后可以做降级处理。同时,我会尽可能减少锁的持有范围,只在必要的代码块上加锁,避免在持有锁的同时进行耗时操作。"

" 再次是架构层面的优化。在高并发场景下,传统的数据库锁可能成为性能瓶颈。因此,我们采用了多种技术来减少锁竞争。比如,我们使用 Redis 的原子操作来处理库存扣减,通过 Lua 脚本确保操作的原子性。对于热点数据,我们使用了多级缓存策略,将部分数据缓存在应用层,减少对数据库的访问。在秒杀场景下,我们还采用了队列化的方式,将请求先放入消息队列,然后由消费者线程池依次处理,避免了直接的数据库竞争。"

"最后是监控和预警机制。我们建立了完善的死锁监控体系,包括:实时监控数据库的锁等待情况,当锁等待时间超过阈值时触发告警;定期分析死锁日志,找出死锁发生的规律;监控事务的执行时间,及时发现长事务;使用 Prometheus 等工具监控系统指标,包括死锁次数、锁等待时间等。"

"通过这些综合措施,我们成功地将死锁发生率控制在了极低的水平。在一次大型促销活动中,系统处理了超过 10 万 QPS 的请求,死锁发生率仅为 0.001%,系统运行非常稳定。"

高并发场景死锁预防策略架构图

2.4 与面试官的技术交流和深入探讨

在回答完基本问题后,我主动与面试官进行了技术交流,这不仅展示了我的技术深度,也体现了我的学习态度。

我:"我了解到小红书在 MySQL 内核层面做了很多优化,特别是合并秒杀方案。这个方案是如何解决死锁问题的?"

面试官:"你对这个技术很了解啊。合并秒杀方案确实在很大程度上解决了死锁问题。它通过将多个事务合并,避免了传统方案中的锁竞争。你能具体说说这个方案的原理吗?"

我的回答:

"根据我对小红书技术博客的了解,合并秒杀方案采用了 Leader-Follower 模型。当多个请求同时访问同一行库存时,系统会选出一个 leader,由它负责读取和更新数据,其他 follower 的请求不再去争抢行锁,而是排队修改 leader 存下来的缓存,最后 leader 再一次性把合并后的结果写回 InnoDB。这种设计从根本上避免了多个事务同时竞争行锁的问题。"

"我觉得这个方案的核心优势在于:第一,它将多个事务合并为一个事务,大大减少了锁的持有时间;第二,通过缓存可见性机制,解决了数据一致性问题;第三,采用行锁极致优化,将秒杀过程拆分为更新和提交两个阶段,实现了秒杀线程的并行执行。"

"在我们的项目中,虽然没有使用这么先进的方案,但我们也借鉴了类似的思路。比如,我们使用 Redis 作为中间层,先在 Redis 中进行库存的预扣减,然后异步地将结果同步到数据库。这样既保证了高并发下的性能,又避免了数据库层面的死锁。"

面试官:"那你在实际项目中遇到过分布式死锁吗?比如 Redis 锁和数据库锁之间的死锁。"

我的回答:

" 是的,这个问题确实很重要。在分布式系统中,不同组件之间可能形成死锁。我们在项目中就遇到过 Redis 分布式锁与 MySQL 行锁之间的交叉死锁。当时的情况是,一个服务持有 Redis 锁等待数据库锁,另一个服务持有数据库锁等待 Redis 锁,形成了死锁环。"

" 为了解决这个问题,我们采取了以下措施:第一,统一锁的获取顺序,所有服务都先获取数据库锁再获取 Redis 锁;第二,为所有的分布式锁设置合理的超时时间,一般设置为 30 秒,避免因服务崩溃导致的死锁;第三,使用 Redis 的 SET 命令时,同时设置 NX 和 EX 参数,确保原子性;第四,实现了锁的续期机制,避免业务执行时间超过锁的有效期。"

"通过这些措施,我们成功避免了分布式死锁的发生。同时,我们还建立了分布式死锁的检测机制,定期检查各个服务的锁持有情况,及时发现潜在的死锁风险。"

小红书合并秒杀方案及分布式死锁解决架构图

三、面试复盘与经验总结

3.1 死锁理论知识的掌握程度评估

通过这次面试,我对自己在死锁理论知识方面的掌握程度进行了全面评估。

已掌握的核心知识:

  • 死锁的四个必要条件:我能够清晰地阐述互斥、持有并等待、不可抢占和循环等待这四个条件,并且能够结合实际案例进行说明。
  • JVM 死锁与数据库死锁的区别:我理解了两者在发生场景、处理机制等方面的差异,特别是数据库有自动检测和回滚机制,而 JVM 需要人工干预。
  • 死锁的检测工具:我熟练掌握了 jstack、jconsole、Arthas 等 JVM 死锁检测工具,以及 SHOW ENGINE INNODB STATUS 等数据库死锁检测命令。
  • 死锁的预防策略:我了解了从设计、编码、架构等多个层面预防死锁的方法,特别是统一锁顺序、使用超时机制、减少锁持有时间等策略。

需要加强的方面:

  • 理论深度:虽然掌握了基本概念,但对于一些底层原理,如 AQS 的实现机制、InnoDB 的锁算法等,还需要进一步深入学习。
  • 新技术了解:对于一些新兴的技术,如 Redlock 算法、分布式事务解决方案等,了解还不够深入。
  • 案例积累:需要更多地了解不同场景下的死锁案例,特别是一些复杂的分布式系统死锁问题。

死锁理论知识掌握程度评估架构图

3.2 实战经验的运用与提升

在面试中,我充分运用了在爆款 SKU 项目中积累的实战经验,这成为了我回答问题的重要支撑。

成功的经验运用:

  • 具体案例的展示:我详细描述了项目中遇到的死锁问题,包括问题现象、分析过程和解决方法,这些真实的经历给面试官留下了深刻印象。
  • 量化成果的呈现:我提到了通过优化将死锁发生率从每天数百次降低到几乎为零,接口吞吐量提升 2 倍多等具体数据,体现了我的实际贡献。
  • 技术深度的体现:我不仅描述了做了什么,还解释了为什么这样做,展示了对技术原理的理解。

需要改进的地方:

  • 表达的条理性:在描述复杂问题时,有时会出现思路混乱的情况,需要更加结构化的表达。
  • 问题分析的全面性:在分析死锁原因时,应该考虑更多的可能性,而不是局限于已知的几种情况。
  • 解决方案的多样性:应该展示更多样化的解决方案,而不是只依赖于某一种技术。

实战经验运用评估架构图

3.3 沟通技巧和面试节奏的把控

在整个面试过程中,我对自己的沟通技巧和节奏把控进行了反思。

做得好的方面:

  • 主动引导话题:在自我介绍时,我主动提到了与小红书业务相关的项目经验,成功引导面试官关注我的优势领域。
  • 技术交流的深度:我不仅回答问题,还主动与面试官探讨技术细节,如合并秒杀方案的原理,展示了我的学习能力和技术热情。
  • 时间控制得当:我能够在规定时间内完成回答,既不过于冗长,也不显得仓促。

需要改进的地方:

  • 倾听能力:在面试官提问时,应该更加专注地倾听,确保理解问题的核心。
  • 反应速度:有时需要思考较长时间才能回答,应该提高快速反应的能力。
  • 自信程度:在回答一些复杂问题时,表现出了不够自信,应该更加坚定地表达自己的观点。

面试沟通技巧与节奏把控评估架构图

3.4 死锁相关技术的系统化总结

基于这次面试经历,我对死锁相关的技术进行了系统化的总结,形成了以下知识体系:

死锁的本质:

死锁是资源竞争的必然结果,其核心是多个线程或事务形成了循环等待的资源依赖关系。无论是 JVM 死锁还是数据库死锁,都遵循相同的四个必要条件。理解这一点,有助于从根本上认识和解决死锁问题。

死锁的分类:

  • JVM 死锁:发生在线程之间,主要由 synchronized、Lock 等锁机制引起
  • 数据库死锁:发生在事务之间,主要由行锁、表锁等引起
  • 分布式死锁:发生在不同服务之间,涉及多个资源管理器

死锁的处理流程:

  • 预防:在设计阶段通过合理的架构和编码规范避免死锁
  • 监控:使用各种工具实时监控死锁的发生
  • 检测:及时发现死锁并定位问题
  • 解决:采取相应措施打破死锁,恢复系统正常运行

核心技术要点:

  • 统一锁顺序:所有线程或事务按照相同的顺序获取资源,这是预防死锁最有效的方法
  • 超时机制:为所有锁设置合理的超时时间,避免无限等待
  • 锁粒度优化:尽可能减少锁的持有范围和时间
  • 分布式锁的正确使用:确保原子性、设置超时时间、实现续期机制
  • 数据库优化:合理使用索引、优化事务设计、选择合适的隔离级别

死锁相关技术系统化知识体系架构图

3.5 未来学习计划

基于这次面试的经验和不足,我制定了以下学习计划:

深入学习底层原理:

  • 学习 AQS 的实现机制,理解 ReentrantLock 的底层原理
  • 深入研究 InnoDB 的锁机制,特别是 Next-Key Lock 的实现
  • 了解各种锁算法的优劣和适用场景

掌握新技术:

  • 学习 Redlock 算法,了解分布式锁的最新实现
  • 研究各种分布式事务解决方案,如 TCC、Saga 等
  • 了解云原生环境下的死锁问题和解决方案

积累更多案例:

  • 阅读更多大厂的技术博客,了解他们的死锁处理经验
  • 参与开源项目,在实践中积累死锁处理经验
  • 与同行交流,分享和学习不同的解决方案

提升实战能力:

  • 在本地环境搭建高并发测试场景,模拟死锁问题
  • 使用各种监控工具进行实战演练
  • 编写死锁检测和预防的工具代码

未来学习计划架构图

结语

通过这次小红书 Java 开发工程师的面试经历,我对死锁问题有了更深入的理解和认识。从理论基础到实战经验,从问题分析到解决方案,我都进行了全面的梳理和总结。特别是在结合自己在爆款 SKU 项目中的死锁处理经验后,我对死锁问题的理解更加立体和深刻。

面试不仅是一个展示自己能力的过程,更是一个学习和成长的机会。通过与面试官的交流,我发现了自己的不足,也明确了未来的学习方向。在高并发和分布式系统日益普及的今天,死锁问题将始终是一个需要持续关注和研究的技术难题。

我相信,通过不断的学习和实践,我将能够更好地应对各种死锁挑战,为构建更加稳定和高效的系统贡献自己的力量。同时,我也期待能够加入小红书这样优秀的技术团队,与更多的技术专家一起探讨和解决复杂的技术问题,共同推动技术的进步和创新。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-26 10:54:24 HTTP/2.0 GET : https://15386.cn/a/461631.html
  2. 运行时间 : 0.128289s [ 吞吐率:7.79req/s ] 内存消耗:4,601.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bf502d37678b8d6608c2708d9a505d3b
  1. /yingpanguazai/ssd/ssd1/www/no.15386.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/no.15386.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/no.15386.cn/runtime/temp/97c957f747c268aee476c4e16775dd7c.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000528s ] mysql:host=127.0.0.1;port=3306;dbname=no_15386;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001041s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000583s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000302s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000710s ]
  6. SELECT * FROM `set` [ RunTime:0.000240s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000733s ]
  8. SELECT * FROM `article` WHERE `id` = 461631 LIMIT 1 [ RunTime:0.001954s ]
  9. UPDATE `article` SET `lasttime` = 1772074464 WHERE `id` = 461631 [ RunTime:0.024598s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.004054s ]
  11. SELECT * FROM `article` WHERE `id` < 461631 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005231s ]
  12. SELECT * FROM `article` WHERE `id` > 461631 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.015746s ]
  13. SELECT * FROM `article` WHERE `id` < 461631 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001543s ]
  14. SELECT * FROM `article` WHERE `id` < 461631 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001212s ]
  15. SELECT * FROM `article` WHERE `id` < 461631 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001238s ]
0.130660s