当前位置:首页>java>拒绝「玄学编程」:专业开发者从不凭感觉,而是掌控一切

拒绝「玄学编程」:专业开发者从不凭感觉,而是掌控一切

  • 2026-01-10 09:16:11
拒绝「玄学编程」:专业开发者从不凭感觉,而是掌控一切

拒绝「玄学编程」:专业开发者从不凭感觉,而是掌控一切

导语:在 AI 辅助编程工具泛滥的今天,一种被称为 "Vibe Coding"(氛围编程/凭感觉编程)的趋势正在悄然蔓延。许多开发者开始习惯于「试错」,习惯于「虽然不知道为什么,但它跑通了」。然而,软件工程的本质是对确定性的追求。真正的专业开发者,绝不仅仅是让代码「跑起来」,而是要对系统的每一个比特、每一次状态流转拥有绝对的掌控权。本文将基于 Professional Software Developers Don’t Vibe, They Control 一文,剖析为何「掌控力」才是区分业余与专家的分水岭,并为你提供一份从「玄学」走向「科学」的技术进阶指南。


01 「玄学编程」的陷阱:当代码成为黑盒

在这个技术迭代快到令人窒息的时代,我们似乎越来越容易陷入一种「结果导向」的误区。

你是否经历过这样的场景:

  • • 遇到一个 Bug,你随手改了一个配置参数,重启服务,Bug 消失了。你松了一口气,提交代码,却完全不知道那个参数背后的原理。
  • • 使用 Copilot 生成了一段复杂的正则表达或者 SQL 查询,看着能跑通,就直接合入主分支,尽管你无法解释其中某个子句的含义。
  • • 面对复杂的分布式系统报错,你更多的是在「猜」,而不是在「推导」。

这种现象,在英文技术圈被称为 "Vibe Coding"。意思是,开发者不再依靠严密的逻辑推导来构建软件,而是依靠直觉、运气和无限次的试错(Trial and Error)来「凑」出一段能运行的代码。

1.1 "It works" 并不是终点

对于业余爱好者或黑客马拉松参与者来说,"It works"(它能跑)不仅是可以接受的,甚至是值得庆祝的。因为他们的目标是原型(Prototype),是验证想法。

但对于专业软件开发者(Professional Software Developers)而言,"It works" 仅仅是及格线,甚至有时是一个危险的信号——如果你不知道它为什么能跑,那么你同样无法预知它什么时候会挂。

「凭感觉」编程的本质,是放弃了对因果关系(Causality)的追索。 当你放弃控制权,你就将系统的稳定性交给了概率。在生产环境中,概率就是墨菲定律的温床:凡是可能出错的事,必定会出错。

1.2 抽象泄漏与 AI 的双刃剑

现代软件工程建立在层层叠叠的抽象之上。操作系统抽象了硬件,编译器抽象了指令集,框架抽象了 HTTP 协议,现在,LLM(大语言模型)又抽象了编码过程本身。

这些工具极大地提高了效率,但也加剧了「失控感」。

  • • 过度依赖框架魔法: Spring 的注解、React 的 Hooks、Vue 的响应式原理,如果只知其然不知其所以然,一旦出现性能瓶颈或内存泄漏,开发者就会束手无策。
  • • LLM 的幻觉: AI 生成的代码往往看起来很完美(Good Vibes),但可能隐藏着微妙的边界条件错误。如果你没有足够的「掌控力」去审查每一行代码,你实际上是在向你的代码库中注入技术债务。

02 什么是真正的「控制(Control)」?

如果是「凭感觉」是混乱的、随机的,那么「控制」就是有序的、确定的。

原文作者提出了一个振聋发聩的观点:专业开发者的核心素养,不在于你会写多少种语言,而在于你对他所构建的系统是否拥有绝对的控制力。

2.1 确定性思维(Deterministic Thinking)

控制的核心是确定性。计算机科学在本质上是确定性的(除去量子计算和特定随机算法)。对于给定的输入  和系统状态 ,经过函数 ,输出必然是 。

即:

如果你发现输入  并没有得到 ,或者结果时好时坏,专业开发者的反应不应该是「重启试试」或「多试几次」,而是意识到:我的心智模型(Mental Model)与系统的实际运行机制出现了偏差。

拥有「控制力」意味着:

  • • 可预测性: 你能准确预判修改一行代码会带来什么连锁反应。
  • • 可复现性: 任何 Bug 都应该能在受控环境中稳定复现,而不是归咎于「灵异事件」。
  • • 可解释性: 你能清晰地解释数据是如何从数据库流向前端,中间经过了哪些变换,处于什么状态。

2.2 拒绝「魔法(Magic)」

在技术领域,「魔法」是一个贬义词。它指的是那些隐藏了复杂逻辑、让你觉得「虽然不懂但很厉害」的东西。

专业的开发者痛恨魔法。他们渴望透明(Transparency)

  • • 当一个库声称「零配置」时,专业开发者会去翻文档看默认配置到底是什么。
  • • 当一个 ORM 框架自动处理关联查询时,专业开发者会打开 SQL Log,检查是否产生了 N+1 问题。

控制,就是要把所有的「魔法」还原为「逻辑」。 只有当你理解了黑盒内部的齿轮如何咬合,你才算真正拥有了它。


03 建立深度控制的三个维度

要从「凭感觉」的脚本小子进化为「掌控一切」的架构师,我们需要在三个维度上建立深度控制:

3.1 对环境的控制(Environment Control)

你是否遇到过「在我机器上是好的,发上去就挂了」的情况?这就是对环境失去了控制。

专业开发者通过以下手段夺回控制权:

  • • 基础设施即代码(IaC): 使用 Docker、Kubernetes、Terraform 等工具,将环境定义固化为代码。环境不再是随机配置的产物,而是可版本化、可回滚的资产。
  • • 密封性构建(Hermetic Builds): 确保构建过程不依赖于外部网络波动或本地全局库。无论在谁的电脑上,输入相同的源码,产出的二进制文件应当比特级一致。

3.2 对状态的控制(State Control)

软件复杂度的根源通常在于可变状态(Mutable State)。随着系统运行时间的增长,状态的组合呈指数级爆炸,导致系统行为难以预测。

掌握状态控制的开发者通常遵循:

  • • 不可变性(Immutability): 尽可能使用不可变数据结构。如果数据不被修改,就不存在竞争条件(Race Condition)。
  • • 有限状态机(FSM): 不要用散落在各处的布尔值(flags)来管理流程,显式地定义状态流转图。让系统的行为像数学公式一样严谨。
  • • 幂等性(Idempotency): 确保你的函数或 API 无论被调用多少次,结果都是一致的。这是分布式系统中「控制力」的基石。

3.3 对依赖的控制(Dependency Control)

NPM、Maven、Pip 让引入第三方库变得极其容易。但这往往是失控的开始。一个不起眼的底层依赖更新,可能搞垮整个生产环境。

专业开发者会:

  • • 锁定版本(Pinning): 永远不要使用 latest 标签,使用 package-lock.json 或 go.sum 锁定依赖树。
  • • 阅读源码: 引入关键依赖前,阅读其核心代码。这听起来很费时,但当你遇到深层 Bug 时,这些投入会带来百倍回报。如果你无法理解你引入的库,你就不仅是在引入代码,还是在引入风险。

04 调试:从「猜测」到「科学探案」

调试(Debugging)是检验开发者是「凭感觉」还是「有控制」的试金石。

4.1 业余的调试循环

  1. 1. 看到报错。
  2. 2. 怀疑是 A 导致的,修改 A,运行。
  3. 3. 还是报错。
  4. 4. 怀疑是 B 导致的,修改 B,运行。
  5. 5. ...无限循环...
  6. 6. 突然好了,但不知道为什么。

这种方式不仅效率低下,而且极其容易引入新的 Bug(Regression)。

4.2 专业的调试方法论

专业开发者的调试过程更像是科学家做实验或侦探破案:

  1. 1. 观察(Observe): 收集所有的日志、堆栈信息、监控指标。不要放过任何细节。
  2. 2. 假设(Hypothesis): 基于对系统的理解(心智模型),提出一个合理的假设。「如果是因为内存泄漏,那么监控图表中应该能看到 RSS 指标缓慢上升。」
  3. 3. 验证(Verify): 设计一个最小化的实验来验证假设。这可能意味着编写一个重现脚本,或者在一个隔离环境中复现问题。
  4. 4. 修正(Fix): 在完全理解根因(Root Cause)的前提下进行修复。
  5. 5. 回归测试(Regression Test): 编写一个自动化测试用例,确保这个问题永远不会再次发生。

记住:由巧合修复的 Bug,总有一天会由巧合再次触发。 只有通过逻辑修复的 Bug,才是真正的修复。


这是文章的 第二部分。在上一部分中,我们剖析了「玄学编程」的危害,并定义了专业开发者的核心能力——控制力

接下来的部分将深入技术细节,探讨如何通过代码层面的防御机制、AI 时代的协作策略以及具体的行动清单,将「控制力」内化为肌肉记忆。


05 防御性编程:构建确定的护城河

如果说「控制环境」和「控制依赖」是外功,那么代码层面的防御性设计就是内功。专业开发者利用工具和架构,将不确定性扼杀在编译期,而不是留给生产环境的用户去发现。

5.1 类型系统:编译期的契约

动态语言(如 Python, JavaScript)曾因其灵活性(Vibe)而风靡一时,但近年来 TypeScript、Rust、Go 的崛起说明了一个趋势:工业界正在回归对确定性的渴望。

类型系统不仅仅是语法检查,它是代码组件之间的契约(Contract)

  • • Vibe Coding: 函数接收一个参数 data,你假定它里面有 user_id,直接调用 data.user_id。如果上游传错了,程序在运行时崩溃。
  • • Controlled Coding: 你定义了 interface UserData { userId: string }。如果你试图传入错误的结构,编译器会拒绝编译。

控制的艺术在于将 Runtime Error(运行时错误)提前为 Compile Error(编译时错误)。当编译器向你报错时,你应该感到高兴。因为它在保护你,它在告诉你:「嘿,这里有一条你没想到的逻辑分支,我已经帮你拦截了。」类型系统越强,生产环境出错的概率越低。Rust 的借用检查器(Borrow Checker)就是极致控制力的体现——它强制你在编码阶段就理清所有的内存管理逻辑。

5.2 自动化测试:行为的锚点

很多开发者认为写测试是为了「找 Bug」。其实不然,测试的核心价值在于「固化行为」。

当你为一段复杂的业务逻辑编写了单元测试,你实际上是在说:「我明确知道这段代码在输入 A 时必须输出 B,如果未来的某次修改破坏了这个规则,请立刻通知我。」

  • • 没有测试的代码是流动的沙子: 你不敢重构,不敢升级依赖,因为你不知道牵一发会动哪里的全身。
  • • 有高覆盖率测试的代码是混凝土: 你拥有修改代码的勇气(Courage),因为任何对预期行为的偏离都会被 CI/CD 管道无情拦截。

5.3 契约式设计与断言

在无法使用静态类型的场景下,专业开发者会使用**断言(Assertions)**作为运行时的最后一道防线。

不要让错误的数据在系统中默默传递,直到它造成不可逆的脏数据。

  • • Fail Fast(快速失败): 如果函数要求输入正整数,而你收到了负数,立即抛出异常。不要试图「智能修复」它,因为那是在掩盖问题。
  • • 防御性拷贝: 当你需要返回一个内部可变对象时,返回它的拷贝,防止外部调用者无意中修改了你的内部状态。这依然是对「状态」的绝对控制。

06 AI 时代的生存法则:做驾驶员,而不是乘客

我们无法回避 AI 工具(ChatGPT, Copilot, Cursor)对编程方式的冲击。它们是极其强大的「氛围感」生成器——它们擅长生成看起来很对的代码,但它们并不理解逻辑。

在 AI 时代,保持「控制力」变得前所未有的重要。

6.1 AI 是引擎,你是方向盘

必须明确这种关系:你是 Pilot(飞行员),AI 是 Copilot(副驾驶)。绝不能反过来。

  • • 危险模式: 你输入提示词,AI 生成一屏代码,你扫了一眼觉得“大概是对的”,然后按 Tab 键接受。这就是典型的 Vibe Coding。你放弃了控制权,你成了 AI 的乘客。
  • • 专业模式: AI 生成代码,你将其视为一位大三实习生提交的 PR(Pull Request)。你逐行审查,质疑其中的变量命名,检查边界条件,要求它解释复杂的逻辑。只有当你完全理解了每一行代码的意图,你才将其合入代码库。

6.2 警惕「自动补全」产生的认知懒惰

心理学上有一种现象叫「自动化偏差(Automation Bias)」:人类倾向于过度信任自动化系统的建议。

当 Copilot 帮你补全了一个复杂的算法,你的大脑会本能地跳过思考过程。这种**「认知卸载(Cognitive Offloading)」**是危险的。一旦代码库中充斥着你「未经过大脑」就提交的代码,这个系统就不再属于你了。当它崩溃时,你将无法修复,因为你从未真正拥有过它。

黄金法则:永远不要提交你无法从零开始重写出来的代码。 AI 可以帮你省去敲击键盘的时间,但不能省去你构建心智模型的时间。


07 拒绝「玄学」的行动清单

要从「感觉派」转型为「控制派」,不需要天赋,只需要刻意练习。以下是一份可执行的行动清单:

✅ Level 1:基础控制

  1. 1. 消除警告: 哪怕是 Warning,也要全部消除。Warning 是系统在尖叫,不要假装听不见。
  2. 2. 版本锁定: 检查你的 package.json 或 pom.xml,确保没有任何依赖使用通配符(如 ^ 或 ~)。
  3. 3. 日志治理: 每一条日志都必须有明确意义。如果你看不懂某条日志,要么删掉它,要么搞懂它。

✅ Level 2:进阶控制

  1. 1. Read The Fking Manual (RTFM):** 在使用任何新框架前,通读官方文档的「核心概念」章节。不要只看 Quick Start。
  2. 2. 单一事实来源(SSOT): 检查你的系统架构,确保每一份数据(配置、状态)都只有唯一的源头。
  3. 3. 学会 "Why": 当 Bug 修复后,强迫自己写一段「事故复盘」。不仅记录「怎么修的」,更要记录「为什么会发生」以及「为什么之前的测试没覆盖到」。

✅ Level 3:深度控制

  1. 1. 深挖一层: 每周花一小时,去阅读你常用库的源码。不要求读完,但要试着理解它的一两个核心机制(例如 React 的 Diff 算法,或 Redis 的事件循环)。
  2. 2. 混沌工程: 主动在测试环境中注入故障(杀掉进程、模拟网络延迟),观察你的系统是否如预期般降级或恢复。这是检验控制力的终极考试。

08 结语:控制带来自由

很多人误以为,追求极致的控制会让编程变得枯燥、繁琐、缺乏创造力。恰恰相反。混乱才是创造力的杀手。 当你每天都在为了莫名其妙的 Bug 救火,当你对着一团乱麻的代码祈祷它不要挂时,你没有任何精力去思考架构的优雅和业务的创新。只有当你对系统拥有了绝对的控制权——正如赛车手对方向盘、钢琴家对琴键的控制一样——你才能在代码的世界里随心所欲,进入真正的**心流(Flow)**状态。那种状态,不是靠运气碰出来的 "Vibe",而是源于深厚功力带来的自信。Professional developers don’t hope. They decide.(专业开发者不寄希望于运气。他们做决定。)愿你的每一行代码,都在你的掌控之中。声明:本文核心观点演绎自文章 Professional Software Developers Don’t Vibe, They Control (Source: Ludicity by Hillel Wayne)。https://arxiv.org/pdf/2512.14012

文章旨在传递专业软件工程理念,内容经过作者解读与拓展。点击阅读原文可查看文章原文


最新文章

随机文章

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