当前位置:首页>java>5个设计原则,让你的Java代码从此不再“改不动”

5个设计原则,让你的Java代码从此不再“改不动”

  • 2026-01-30 16:30:55
5个设计原则,让你的Java代码从此不再“改不动”

你有没有过这样的经历?上线半年的项目,产品经理突然说要加个新功能。你点开那个叫UserService的类,3000行代码密密麻麻,改一处,测试发现登录、发邮件、写日志全崩了。你盯着屏幕,心里只有一个念头:这代码,怎么当初能写成这样?

别急着自责。不是你技术不行,而是缺少设计原则的指导。我在带团队时发现,80%技术债都源于对设计原则的忽视。今天,就带你系统掌握Java后端开发中最实用的设计原则,让你的代码从改不动变成随便改

什么是设计原则?为什么它比设计模式更重要?

很多人一提设计就想到设计模式,比如单例、工厂、观察者。但你有没有想过,这些模式是怎么来的?它们的底层逻辑是什么?

设计原则,就是指导代码组织的元规则,是所有设计模式的基础。你可以这样理解:原则像交通法规,模式像驾驶技巧。不懂交规,驾驶技巧再高也容易出事故。同样,不懂设计原则,生搬硬套设计模式,只会让代码更复杂。

记住:设计原则决定一个系统能否长期演进,而不仅仅是短期实现功能。它让你的代码具备生命力,能随着业务发展而灵活生长,而不是在第一次修改时就宣告死亡。

SOLID原则实战解析:五大基石

SOLID是面向对象设计的五大核心原则,由“ Uncle Bob”提出。它们不是高深的理论,而是解决日常开发痛点的实用指南。

1. 单一职责原则(SRP):一个类只做一件事

痛点:一个UserService既处理用户登录、又负责发送欢迎邮件、还记录操作日志。改一个功能,其他功能跟着遭殃。

正解一个类只该有一个改变的理由。将职责拆分,让每个类专注一件事。

// 重构前:违反SRPclass UserService {    public void login(String username, String password) {        // 登录逻辑...        sendWelcomeEmail(username); // 发邮件        log("User logged in: " + username); // 写日志    }    private void sendWelcomeEmail(String username) { /* ... */ }    private void log(String message) { /* ... */ }}// 重构后:遵循SRPclass UserService {    private EmailService emailService;    private LogService logService;    public void login(String username, String password) {        // 登录逻辑...        emailService.sendWelcomeEmail(username); // 依赖EmailService        logService.log("User logged in: " + username); // 依赖LogService    }}class EmailService {    public void sendWelcomeEmail(String username) { /* ... */ }}class LogService {    public void log(String message) { /* ... */ }}

一句话总结SRP的本质:高内聚,少牵连。职责越单一,修改影响越小。

2. 开闭原则(OCP):对扩展开放,对修改关闭

痛点:系统要支持新的支付方式,比如从支付宝扩展到微信支付。你只能在PaymentService里加一个if-else判断。每加一种支付方式,就得改一次旧代码,风险极高。

正解对扩展开放,对修改关闭。定义一个支付接口,让所有支付方式去实现它。新增支付方式,只需新增一个类,无需修改核心逻辑。

// 定义抽象:对扩展开放interface PaymentProcessor {    void process(double amount);}// 具体实现:新增类即可class AlipayProcessor implements PaymentProcessor {    public void process(double amount) { /* 支付宝支付逻辑 */ }}class WeChatPayProcessor implements PaymentProcessor {    public void process(double amount) { /* 微信支付逻辑 */ }}// 核心服务:对修改关闭class PaymentService {    // 依赖抽象,而非具体实现    public void pay(double amount, PaymentProcessor processor) {        processor.process(amount); // 多态调用    }}

一句话总结OCP的本质:用抽象构建防火墙,新功能通过插件化接入。

3. 里氏替换原则(LSP):子类必须能安全替换父类

反例:你定义了一个Bird类,有fly()方法。然后Ostrich(鸵鸟)继承Bird,但鸵鸟不会飞。当你调用ostrich.fly()时,它只能抛出一个UnsupportedOperationException。这就像你买了一辆,结果发现它不能开,这合理吗?

正解子类必须能完全替换父类,且程序行为不变。如果一个行为不是所有子类都具备的,就不应该放在父类里。应该提取为更细粒度的接口。

// 违反LSPclass Bird {    public void fly() { System.out.println("Flying"); }}class Ostrich extends Bird {    @Override    public void fly() {        throw new UnsupportedOperationException("Ostrich can't fly!");    }}// 遵循LSPinterface Flyable {    void fly();}class Bird { /* 共有属性和方法 */ }class Sparrow extends Bird implements Flyable {    public void fly() { System.out.println("Sparrow is flying"); }}class Ostrich extends Bird {    // 鸵鸟不实现Flyable,因为它不能飞}

一句话总结LSP的本质:契约要可靠,多态才安全。

4. 接口隔离原则(ISP):客户端不应依赖不需要的方法

痛点:你定义了一个Worker接口,包含work()eat()sleep()。现在要实现一个Robot,它能work(),但不需要eat()sleep()。你只能让Robot去实现这些方法,然后在方法里抛出异常。这就像你给一个机器人装了胃和大脑,但它根本用不上。

正解客户端不应被迫依赖它不需要的接口。将大而全的接口拆分成多个小而专的接口。

// 违反ISPinterface Worker {    void work();    void eat();    void sleep();}class Robot implements Worker {    public void work() { /* ... */ }    public void eat() { throw new UnsupportedOperationException(); } // 被迫实现    public void sleep() { throw new UnsupportedOperationException(); } // 被迫实现}// 遵循ISPinterface Workable { void work(); }interface Eatable { void eat(); }interface Sleepable { void sleep(); }class HumanWorker implements Workable, Eatable, Sleepable {    public void work() { /* ... */ }    public void eat() { /* ... */ }    public void sleep() { /* ... */ }}class Robot implements Workable { // 机器人只实现它需要的    public void work() { /* ... */ }}

一句话总结ISP的本质:接口要小而专,实现才灵活。

5. 依赖倒置原则(DIP):依赖抽象,而非具体实现

痛点OrderService直接new了一个MySQLDatabase。如果有一天要换成MongoDB,你得把OrderService里的所有new MySQLDatabase()都改成new MongoDBDatabase(),这工作量巨大且容易出错。

正解高层模块不应依赖低层模块,二者都应依赖抽象。让OrderService依赖一个Database接口,具体的数据库实现通过外部注入。

interface Database {    void save(Order order);}class MySQLDatabase implements Database {    public void save(Order order) { /* MySQL实现 */ }}class MongoDBDatabase implements Database {    public void save(Order order) { /* MongoDB实现 */ }}// OrderService依赖抽象class OrderService {    private Database database; // 依赖抽象    // 通过构造器注入具体实现    public OrderService(Database database) {        this.database = database;    }    public void createOrder(Order order) {        database.save(order); // 运行时决定具体实现    }}// 使用时,决定用哪种数据库OrderService service = new OrderService(new MySQLDatabase()); // 使用MySQL// OrderService service = new OrderService(new MongoDBDatabase()); // 切换到MongoDB,代码无需修改

一句话总结DIP的本质:解耦的终极武器,让技术栈可替换。

除了SOLID,你还应该知道的三大高阶原则

SOLID是基础,但要写出真正优秀的代码,还需要这些高阶原则的指导。

• KISS原则(Keep It Simple, Stupid:保持简单。我曾在一个项目中,为了高大上而引入了复杂的微服务架构,结果运维成本飙升,团队苦不堪言。后来我们回归单体架构,用简单的定时任务替代复杂的实时计算,系统反而更稳定了。记住:简单优于复杂1

• YAGNI原则(You Aren't Gonna Need It:你不会需要它。不要为未来可能的需求提前设计。我见过太多项目,为了以后可能会用到而提前实现了十几个接口,结果两年过去了,一个都没用上。记住:合适优于业界领先1,先解决眼前的问题。

• 演进式设计:系统应支持逐步优化,而非一步到位。WindowsDOSNT,再到现在的架构,是几十年演进的结果。你的系统也一样。记住:演化优于一步到位1。先做出核心流程,再根据反馈逐步添加扩展点。

如何在真实项目中落地这些原则?

知道了原则,怎么用?别指望一蹴而就。我建议从小处着手:

1. 重构思维:下次写代码时,先问自己:这个类是不是只做了一件事?这个接口是不是太了?从识别上帝类胖接口开始。

2. 团队协作:在Code Review中,把设计原则作为检查项。比如,看到if-else判断业务类型,就提醒是否可以用OCP重构。

3. 工具辅助:使用SonarQube等静态分析工具,它能自动检测出重复代码、复杂度过高等代码异味,帮你发现设计问题。

总结:好代码不是写出来的,是设计出来的

我们回顾一下SOLID五大原则的核心思想:SRP:一个类只做一件事。OCP:对扩展开放,对修改关闭。LSP:子类能安全替换父类。ISP:接口要小而专。DIP:依赖抽象,而非具体实现。

记住:设计原则不是教条,而是提升系统生命力的操作系统。它不能让你的代码瞬间完美,但能让你的系统在面对变化时,拥有更强的适应力和更低的修改成本。

行动起来:从你下一个要写的类开始,尝试应用一个原则。哪怕只是把一个方法拆出来,也是向更好的设计迈出的一步。

你在项目中最常违反哪条原则?或者,你用哪个原则成功解决过棘手的重构问题?欢迎在评论区分享你的故事,让我们一起交流,共同进步!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 05:40:29 HTTP/2.0 GET : https://f.mffb.com.cn/a/466951.html
  2. 运行时间 : 0.109957s [ 吞吐率:9.09req/s ] 内存消耗:4,366.86kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a4d00de966c5b108ce9b6eb9ec5cb0a8
  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.000660s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000854s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000586s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000929s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000495s ]
  6. SELECT * FROM `set` [ RunTime:0.000748s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000598s ]
  8. SELECT * FROM `article` WHERE `id` = 466951 LIMIT 1 [ RunTime:0.001884s ]
  9. UPDATE `article` SET `lasttime` = 1770500429 WHERE `id` = 466951 [ RunTime:0.003376s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.002095s ]
  11. SELECT * FROM `article` WHERE `id` < 466951 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001514s ]
  12. SELECT * FROM `article` WHERE `id` > 466951 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001358s ]
  13. SELECT * FROM `article` WHERE `id` < 466951 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004522s ]
  14. SELECT * FROM `article` WHERE `id` < 466951 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008808s ]
  15. SELECT * FROM `article` WHERE `id` < 466951 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008496s ]
0.111780s