当前位置:首页>java>2026年AI辅助编程最佳实践:Google工程师的深度分享

2026年AI辅助编程最佳实践:Google工程师的深度分享

  • 2026-02-05 14:45:10
2026年AI辅助编程最佳实践:Google工程师的深度分享

关注我,一起探索编程与AI的未来!

每周推送:

- 🔥 最新编程教程

- 💡 深度编程思想

- 🛠️ 实用工具评测

- 🤖 AI前沿技术


💥 2026年1月,一项震撼整个开发者社区的数据公布:84%的开发者已经在日常编程中使用AI工具,开发效率平均提升了30-50%。

这不是科幻,而是正在发生的现实。

Google Chrome团队工程师Addy Osmani在2026年1月4日发布了《AI Coding Workflow 2026》,系统总结了过去两年AI辅助编程的最佳实践。这篇文章基于大量实战经验,揭示了如何让AI真正成为你的编程助手,而不仅仅是代码生成器。

今天,我们深度解析这份权威指南的核心思想。

💡 掌握AI辅助编程,让你的开发效率提升50%!


1💡 规格先行(Spec First):AI编程的核心理念

你有没有过这样的经历:让AI生成一大段代码,结果发现完全不符合需求,不得不全部重写?

Addy Osmani指出,AI编程的第一条原则是:规格先行

什么是规格先行?

规格先行是指在写代码之前,先用自然语言详细描述需求、约束条件和实现思路。这不是新概念,但在AI时代变得更加重要。

为什么? 因为AI无法猜测你的意图。如果你不告诉它"要做什么"和"不要做什么",它会根据概率生成代码,结果往往是不可预测的。

如何编写一个有效的spec.md?

Addy推荐的spec.md模板包含以下部分:

项目概述

  • 项目目标:用2-3句话描述要解决的问题
  • 目标用户:谁会使用这个功能
  • 核心需求:3-5个必须实现的功能点

技术约束

  • 技术栈:Python + FastAPI
  • 性能要求:响应时间<100ms
  • 兼容性:需要支持Python 3.8+

实现思路

  • 整体架构:分层架构(API层、服务层、数据层)
  • 关键算法:使用缓存策略
  • 避免什么:不使用全局变量

验收标准

  • 功能测试:[x] 用户可以注册
  • 性能测试:[x] 并发1000用户不崩溃
  • 代码质量:[x] 代码覆盖率>80%

一个真实案例

Addy分享了一个案例:他的团队要实现一个文件上传功能。

❌ 错误的做法: "帮我写一个文件上传的API"

AI生成的代码可能包含:

  • 没有文件大小限制
  • 没有类型检查
  • 没有安全防护

✅ 正确的做法: 在spec.md中详细说明: "文件大小限制10MB,只允许pdf/docx/png类型,需要病毒扫描,需要生成缩略图,需要存储在GCS"

AI生成的代码直接满足所有需求,一次通过率从30%提升到90%。


2💡 本章小结

规格先行不仅仅是写文档,而是用自然语言编程。它让AI真正理解你的意图,而不是盲目生成代码。记住:清晰的规格是高质量代码的前提


3🚀 任务分块迭代(Chunk & Iterate):小步快跑的艺术

想象一下,你让AI一次性生成一个完整的电商系统。结果会是什么?

代码可能会:

  • 依赖关系混乱
  • 难以调试
  • 无法测试

Addy的经验是:永远不要让AI一次生成超过50行的代码

为什么要分块?

认知负荷理论告诉我们:一次性处理太多信息会导致效率下降。AI虽然有强大的模式识别能力,但它也受限于上下文窗口和生成质量。

更重要的是,小步迭代让你能及时发现问题。如果第一步就错了,你可以立即纠正,而不是在写完1000行代码后发现需要推倒重来。

任务分块的3个原则

原则1:按功能边界分块

不要按代码行数分块,要按功能分块。

❌ 错误分块:

  • 第1部分:1-100行
  • 第2部分:101-200行

✅ 正确分块:

  • 第1部分:数据库模型定义
  • 第2部分:API路由
  • 第3部分:业务逻辑
  • 第4部分:单元测试

原则2:每个分块都可以独立测试

分块后的代码应该可以单独运行和测试。

# 第1部分:数据模型classUser:def__init__(self, id, name):self.id = idself.name = name# 第2部分:存储层classUserRepository:defsave(self, user):# 保存用户逻辑pass# 第3部分:服务层classUserService:def__init__(self, repo):self.repo = repodefcreate_user(self, name):        user = User(None, name)returnself.repo.save(user)

每个部分都可以独立测试,互不依赖。

原则3:逐步增加复杂度

从最简单的功能开始,逐步增加复杂度。

  1. 第1次迭代:基本的CRUD
  2. 第2次迭代:添加验证逻辑
  3. 第3次迭代:添加缓存
  4. 第4次迭代:添加监控

一个真实案例

Addy的团队开发一个实时协作编辑器。他们没有让AI一次性生成整个系统,而是这样分块:

Week 1:基础的文本同步

  • 只实现文本同步
  • 没有冲突解决
  • 没有离线支持

Week 2:添加冲突解决算法

  • OT算法(Operational Transformation)
  • 简单的冲突检测

Week 3:添加离线支持

  • 本地存储
  • 上线时同步

Week 4:性能优化

  • 差分压缩
  • 批量操作

每完成一个分块,都经过完整测试。最终上线时,bug率比直接生成完整系统低70%。


4💡 本章小结

任务分块的核心思想是降低风险。通过小步迭代,你可以:

  • 及早发现问题
  • 容易调试
  • 提高代码质量
  • 减少重写成本

记住:慢即是快,迭代胜过一次完成


5📦 上下文打包技巧(Context Packing):AI理解项目的关键

你有没有遇到过这种情况:AI生成的代码完全不匹配你的项目风格?

原因很简单:AI不了解你的项目上下文

什么是上下文打包?

上下文打包是指给AI提供最相关、最精简的项目信息,让它理解代码的背景、风格和约束。

Addy指出:高质量的上下文比强大的模型更重要。一个优秀的上下文可以弥补模型能力的不足。

上下文打包的3个关键要素

要素1:代码结构说明

# 项目结构src/├── api/          # API层(FastAPI路由)├── models/       # 数据模型(Pydantic)├── services/     # 业务逻辑└── utils/        # 工具函数# 代码规范- 使用类型注解- 函数不超过20行- 遵循PEP8规范- 错误处理使用自定义异常

这段文字告诉AI代码应该放在哪里,以及应该遵循什么风格。

要素2:相关代码片段

不要把整个项目塞给AI,只给最相关的部分。

假设你让AI写一个用户登录功能:

❌ 过多的上下文:

[整个项目的2000行代码]

✅ 精准的上下文:

# 现有的User模型classUser(BaseModel):idint    email: EmailStr    password_hash: str# 现有的异常类classAuthenticationError(Exception):pass# 现有的工具函数defhash_password(password: str) -> str:# 哈希密码pass

AI只需要知道这些,就能生成符合项目风格的代码。

要素3:测试用例

提供测试用例是最清晰的上下文。它告诉AI代码应该如何工作。

deftest_login_success():    user = User(id=1, email="test@example.com", password_hash="hash")# 期望:登录成功,返回tokenassert login("test@example.com""password") == "valid_token"deftest_login_wrong_password():# 期望:密码错误,抛出异常with pytest.raises(AuthenticationError):        login("test@example.com""wrong")

AI看到测试用例,就知道代码应该怎么写。

上下文窗口管理的实用技巧

现代AI模型的上下文窗口已经很大(GPT-4 Turbo支持128K tokens),但这并不意味着你可以随意塞内容。

技巧1:优先级排序

Addy建议按以下优先级选择上下文:

  1. 规格文档(spec.md)
  2. 测试用例
  3. 相关的代码片段(<200行)
  4. 架构文档
  5. API文档

技巧2:使用引用而非复制

# 参考- 用户的登录逻辑:参考services/auth.py中的login()函数- 密码加密方式:参考utils/security.py中的hash_password()函数

这样可以节省上下文空间,同时给AI明确的指示。

技巧3:动态调整上下文

根据任务类型调整上下文:

  • 新功能开发:更多架构文档、代码规范
  • Bug修复:错误日志、相关代码片段
  • 性能优化:性能测试结果、代码分析报告

一个真实案例

Addy团队开发Chrome扩展时,上下文打包策略是这样的:

基础上下文(所有任务通用):

  • 项目结构说明
  • 代码规范
  • 现有的manifest.json

任务特定上下文

  • UI组件:Figma设计图、现有的组件代码
  • 功能逻辑:相关的业务逻辑代码
  • 性能优化:性能测试数据、Lighthouse报告

结果:AI生成代码的一次通过率从40%提升到75%。


6💡 本章小结

上下文打包的艺术在于精准而非全面。提供最相关的信息,让AI理解"代码应该长什么样",而不是"项目里有什么"。记住:上下文质量决定AI输出质量


7🤖 多模型协作策略(Multi-Model Collaboration):取长补短

你是否只用一个AI编程工具?

Addy的调查显示:高效开发者平均使用2.5个不同的AI工具。每个模型都有擅长和不擅长的领域,关键是如何组合使用。

不同模型的优势对比

GPT-4系列

  • ✅ 擅长:代码生成、架构设计、算法实现
  • ❌ 不足:价格较高、速度较慢
  • 适用场景:复杂任务、需要深度理解的场景

Claude系列

  • ✅ 擅长:长文本处理、代码分析、文档生成
  • ❌ 不足:代码生成能力略弱于GPT-4
  • 适用场景:代码审查、文档编写、长代码理解

DeepSeek-Coder

  • ✅ 擅长:代码补全、小任务执行、快速迭代
  • ❌ 不足:复杂推理能力有限
  • 适用场景:简单代码生成、快速原型

本地模型(如CodeLlama)

  • ✅ 擅长:隐私敏感任务、零成本、可定制
  • ❌ 不足:能力较弱、需要自己部署
  • 适用场景:企业内部项目、敏感代码

多模型协作的4种策略

策略1:分阶段协作

不同阶段使用不同模型:

为什么这样设计?

  • 规格文档需要长文本处理能力 → Claude
  • 架构设计需要深度推理 → GPT-4
  • 代码实现需要快速迭代 → DeepSeek
  • 代码审查需要细致的分析 → Claude

策略2:并行验证

同一个任务让2个模型生成,对比结果:

# 让GPT-4生成defquick_sort_gpt(arr):# GPT-4的实现pass# 让Claude生成defquick_sort_claude(arr):# Claude的实现pass# 对比测试assert quick_sort_gpt([3,1,2]) == [1,2,3]assert quick_sort_claude([3,1,2]) == [1,2,3]

Addy的经验:并行验证可以减少40%的bug

策略3:专家模型

针对特定任务使用专门的模型:

  • 代码生成:GPT-4
  • 文档生成:Claude 3.5
  • 单元测试:DeepSeek
  • 代码审查:CodeReviewer(专门的模型)

策略4:成本优化

在保证质量的前提下,降低成本:

简单任务(<100行代码):DeepSeek($0.14/1M tokens)中等任务(100-500行代码):Claude 3.5 Sonnet($3/1M tokens)复杂任务(>500行代码):GPT-4($30/1M tokens)

Addy团队通过多模型协作,将AI工具成本降低了60%,同时保持了代码质量。

一个真实案例

Addy团队开发Chrome DevTools插件时,多模型协作流程是这样的:

第1步:用Claude 3.5分析需求(长文本处理能力强)

  • 输入:用户反馈、产品文档
  • 输出:功能规格文档

第2步:用GPT-4设计架构(深度推理能力强)

  • 输入:规格文档、现有代码结构
  • 输出:架构设计、模块划分

第3步:用DeepSeek生成代码(快速生成能力强)

  • 输入:架构设计、模块规格
  • 输出:具体代码实现

第4步:用Claude 3.5进行代码审查(代码分析能力强)

  • 输入:生成的代码、测试用例
  • 输出:审查报告、改进建议

结果:开发周期缩短了40%,代码质量提升了25%。


8💡 本章小结

多模型协作的核心是取长补短。没有完美的模型,只有合适的模型组合。记住:工具是手段,解决问题是目的


9👨‍💻 人机协同的最佳实践(Human-in-the-Loop):AI是助手,不是替代品

"AI会取代程序员吗?"

Addy的回答很直接:不会。但会用AI的程序员会取代不会用AI的程序员。

关键在于人类在环:AI负责生成,人类负责决策。

人类在环的真正含义

人类在环不是说AI生成代码后你简单看一下,而是说:

  1. 理解需求:你明确告诉AI要做什么
  2. 审查代码:你仔细检查AI生成的代码
  3. 测试验证:你编写测试用例验证功能
  4. 持续优化:你根据反馈不断改进

AI可以加速这个过程,但决策权始终在你手中

高效审查AI代码的3个方法

方法1:增量审查

不要等AI生成1000行代码后一次性审查。

# 第1次:审查数据模型classUser:idint    name: str# 检查:字段是否完整?类型是否正确?# 第2次:审查API路由@app.post("/users")defcreate_user(user: User):# 检查:验证逻辑是否完整?错误处理是否正确?# 第3次:审查业务逻辑defsend_welcome_email(user: User):# 检查:逻辑是否正确?边界情况是否考虑?

每次审查都立即反馈,让AI知道"哪里错了"和"为什么错"。

方法2:审查清单

Addy使用这个清单审查AI代码:

# 代码审查清单功能正确性- [ ] 是否实现了所有需求?- [ ] 边界情况是否处理?(空值、负数、超大值)- [ ] 错误处理是否完整?代码质量- [ ] 变量命名是否清晰?- [ ] 函数是否过于复杂?(<20行)- [ ] 是否有重复代码?安全性- [ ] 用户输入是否验证?- [ ] 敏感信息是否处理?- [ ] SQL注入/XXE等漏洞是否避免?可维护性- [ ] 注释是否充分?- [ ] 是否符合项目规范?- [ ] 是否易于扩展?

方法3:自动化审查

使用工具辅助审查:

# 静态代码分析pylint ai_generated_code.pymypy ai_generated_code.py# 安全扫描bandit ai_generated_code.py# 测试覆盖率pytest --cov=ai_generated_code

工具可以快速发现明显的问题,让你专注于审查业务逻辑。

TDD与AI结合的最佳实践

测试驱动开发(TDD)和AI的结合是Addy强烈推荐的工作流。

传统TDD流程

  1. 写测试(失败)
  2. 写最小代码(通过测试)
  3. 重构代码

AI增强的TDD流程

  1. 你写测试(明确需求)
  2. AI生成代码(满足测试)
  3. 你审查代码(检查质量)
  4. AI重构代码(优化结构)
  5. 你最终确认(保证正确)

具体案例

# 第1步:你写测试deftest_add_user():    service = UserService()    user = service.add_user("Alice")assert user.idisnotNoneassert user.name == "Alice"# 第2步:AI生成代码classUserService:defadd_user(self, name):# AI自动生成实现return User(id=1, name=name)# 第3步:你审查# 看起来正确,但需要考虑重名情况# 第4步:你添加测试deftest_add_duplicate_user():    service = UserService()    service.add_user("Alice")with pytest.raises(DuplicateUserError):        service.add_user("Alice")# 第5步:AI完善代码classUserService:def__init__(self):self.users = {}self.next_id = 1defadd_user(self, name):if name inself.users:raise DuplicateUserError()        user = User(id=self.next_id, name=name)self.users[name] = userself.next_id += 1return user

Addy团队使用AI增强的TDD后,测试覆盖率从75%提升到92%,bug率下降了50%。


10💡 本章小结

人类在环的核心是保持控制权。AI可以加速你的工作,但决策必须由你做出。记住:AI是强大的助手,但你才是最终的责任人


11⚠️ 避坑指南(Pitfalls to Avoid):避开AI编程的陷阱

即使掌握了最佳实践,AI编程仍然有很多陷阱。Addy总结了最常见的5个陷阱,以及如何避免它们。

陷阱1:盲目信任AI输出

表现:AI生成代码后,直接提交,不审查、不测试。

风险:代码可能包含逻辑错误、安全漏洞、性能问题。

真实案例: 某公司工程师让AI生成支付逻辑,AI忘记处理并发情况,导致重复支付bug,造成5万美元损失。

如何避免

  • 永远不要盲目信任AI输出
  • 每一行代码都要经过审查
  • 编写完整的测试用例
  • 进行代码审查(人工+AI)

陷阱2:一次性生成过大代码

表现:让AI一次性生成整个模块或系统。

风险:代码质量不稳定、难以调试、无法测试。

真实案例: Addy团队早期让AI一次性生成500行代码,结果发现第50行的一个错误导致整个模块无法工作,花了一周时间才找到问题。

如何避免

  • 任务分块(Chunk & Iterate)
  • 每次生成不超过50行代码
  • 增量审查,逐步验证

陷阱3:忽略安全性

表现:让AI生成代码时,没有明确安全要求。

风险:SQL注入、XSS、XXE等安全漏洞。

真实案例: 某开发者让AI生成登录API,AI生成的代码没有密码加密,导致用户密码明文存储。

如何避免

  • 在spec.md中明确安全要求
  • 使用安全扫描工具(如bandit)
  • 关注敏感信息处理(密码、token)
  • 进行渗透测试

陷阱4:过度依赖AI,失去编程能力

表现:遇到问题直接问AI,不再自己思考。

风险

  • 无法理解AI生成的代码
  • 无法独立解决问题
  • 失去编程的乐趣

真实案例: 某初级开发者过度依赖AI,6个月后发现自己已经不会写代码了,每次都需要AI帮助。

如何避免

  • 70%自己写,30%用AI辅助
  • 定期进行"无AI编程"训练
  • 深入理解AI生成的代码
  • 保持对新技术的学习热情

陷阱5:忽视代码维护成本

表现:只关注快速完成功能,不考虑长期维护。

风险:代码质量下降,技术债务累积。

真实案例: 某团队为了赶进度,大量使用AI生成代码,3个月后发现代码难以维护,不得不花2个月重构。

如何避免

  • 遵循代码规范
  • 编写充分的注释
  • 保持代码简洁(函数<20行)
  • 定期进行代码重构

12💡 本章小结

AI编程的陷阱往往不是AI本身,而是人类的使用方式。保持警惕、独立思考、持续学习,才能让AI真正成为你的助手,而不是陷阱。


13🌟 总结与展望:2026年的编程是什么样子?

回顾Addy Osmani的《AI Coding Workflow 2026》,我们发现AI辅助编程的核心思想其实很简单:

人类负责思考和决策,AI负责生成和执行。

这不是取代,而是进化。

2026年编程的核心变化

角色转变

  • 开发者从"写代码的人"变成"设计系统的人"
  • 重点从语法细节转移到架构设计、用户体验、业务价值

技能升级

  • 编程语言能力变得不那么重要
  • 系统设计、问题分析、沟通协作变得更加关键
  • 掌握AI工具的使用方法成为基本技能

工作方式

  • 小步迭代、持续验证成为主流
  • 测试驱动开发与AI完美结合
  • 多模型协作成为常态

给开发者的3条建议

建议1:拥抱变化,但不迷失自己

AI是强大的工具,但你才是决策者。不要因为有了AI就放弃思考和创造力。保持你的好奇心和热情,那才是你不可替代的价值。

建议2:持续学习,提升核心竞争力

学习AI工具的使用方法,更要学习AI无法替代的技能:系统设计、业务理解、沟通协作。这些才是你的核心竞争力。

建议3:实践最佳实践,形成自己的工作流

Addy分享的最佳实践是很好的参考,但不要生搬硬套。根据自己的实际情况,不断调整和优化,形成适合自己的AI编程工作流。

未来展望

2026年的编程,不再是你一个人在键盘上敲击代码,而是你指挥一个AI团队为你工作。

你不再需要记住所有的API,不再需要重复编写相似的代码,不再需要花费大量时间调试低级错误。

你可以将更多精力投入到:

  • 理解用户需求
  • 设计优秀的架构
  • 创造更好的用户体验
  • 解决更有挑战性的问题

这,才是编程的真正乐趣。


14💡 最终总结

AI辅助编程不是简单的工具使用,而是一种全新的编程思维方式。它要求我们:

  • 规格先行,明确意图
  • 任务分块,小步迭代
  • 上下文打包,精准高效
  • 多模型协作,取长补短
  • 人类在环,保持控制
  • 避开陷阱,持续学习

2026年的编程,正在发生根本性的变革。你,准备好了吗?

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 16:52:35 HTTP/2.0 GET : https://f.mffb.com.cn/a/463760.html
  2. 运行时间 : 0.105732s [ 吞吐率:9.46req/s ] 内存消耗:4,685.05kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=920feda56d26c92e306570feb90a3be5
  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.000695s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001189s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000536s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000461s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000943s ]
  6. SELECT * FROM `set` [ RunTime:0.000399s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000991s ]
  8. SELECT * FROM `article` WHERE `id` = 463760 LIMIT 1 [ RunTime:0.000755s ]
  9. UPDATE `article` SET `lasttime` = 1770540755 WHERE `id` = 463760 [ RunTime:0.015328s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000475s ]
  11. SELECT * FROM `article` WHERE `id` < 463760 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001401s ]
  12. SELECT * FROM `article` WHERE `id` > 463760 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000748s ]
  13. SELECT * FROM `article` WHERE `id` < 463760 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002867s ]
  14. SELECT * FROM `article` WHERE `id` < 463760 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001529s ]
  15. SELECT * FROM `article` WHERE `id` < 463760 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001345s ]
0.107376s