当前位置:首页>java>看《红海行动》学高并发编程1

看《红海行动》学高并发编程1

  • 2026-01-20 02:14:08
看《红海行动》学高并发编程1

大家,好久不见,从今天开始,我将给大家带来一个有意思的专题—

1.看电影也能学编程!

是的,就是告诉你如何一边看电影一边学java 多线程程序设计。

多线程是Java的核心内容之一,相关的概念和问题比较多,很多内容还非常难,这就导致很多人对这一块的内容总感觉不熟悉,不会用。老师带学生的时候,发现绝大部分对多线程这部分都学得非常一般。很多人在简历上写,Java基本功扎实,但是多线程能理解清楚的都不多。

其实呢,多线程学不好,不怪你,更不是你笨,而是教你的有问题,是你看的书有问题。这些材料很多故弄玄虚,简单的问题也介绍得很晦涩。在过去几年教学和代教过程中,我一直想找个形象例子将相关问题都集中梳理起来,做个教程,让更多粉丝们理解多线程的乐趣。

2025年初有个电影《蛟龙行动》上映,我本来很期待,但是看了之后感觉实在不怎么样,而且评分也不高。于是就将其姊妹电影,2018年的《红海行动》找出来看了一遍。这时候突然发现,里面很多场景都很符合多线程的概念,感觉特别适合讲解多线程里的内容。

如果将每个人视为一个线程的话 ,客观世界本来就是多线程的。比如说蛟龙队员们平时有自己事情,这就是线程在运行。战斗的时候需要与人交流就是线程通信。潜伏下来等待进攻的命令,这就是线程等待。在睡觉时被战斗警报叫醒,就可以理解为线程唤醒。等等。

所以呢,纵横老师准备制作一个系列,我们呢,一边看电影,一边学习Java编程。

今天是我们的第一期,我们先看一下电影的故事梗概,然后看一下哪些场景与多线程有关联,最后我们介绍一下如何用代码来演示电影里的场景。

《红海行动》以 2015 年也门撤侨真实事件为蓝本,讲述中国海军 “蛟龙突击队” 8 人小队在海外执行撤侨与反恐任务的生死历程,全程紧凑、层次清晰。

我们简单看一下 关键人物与任务关系表,如果没看过的话,可能不熟悉,没关系,我们大概知道就行。

角色职责核心贡献命运
杨锐队长决策指挥、最终击毙头目存活
顾顺狙击手击杀 “一只耳”、摧毁飞机存活
李懂观察员弹道定位、协同狙击存活
佟莉机枪手掩护队友、拆除黄饼存活
张天德机枪手殿后掩护、牺牲牺牲
庄羽通讯兵修复设备、牺牲牺牲
徐宏爆破手(副队长)开辟通道、排爆存活(重伤)
陆琛医疗兵多个
夏楠记者提供黄饼情报、协助拆弹存活

徐宏(杜江)、杨锐(张译)和张天德(王雨田):

观察手李董和狙击手顾顺(黄景瑜):

电影的整体脉络是反海盗→撤侨→公路遇到袭击→救人质→阻黄饼

任务层层升级,从 “保护同胞” 扩展到 “维护地区安全”,体现中国军人的责任与担当,也为多线程、任务优先级等编程概念提供了绝佳的现实映射场景。

 第一幕:序幕:索马里海域反海盗(任务 1:商船救援)

  1. 背景:中国商船 “广东号” 在索马里海域遭海盗劫持,部分船员遇害,剩余人质被困。

  2. 行动:蛟龙突击队(队长杨锐带队)潜入商船突袭,10 分钟内解救人质,狙击手罗星远程击中海盗船发动机,掩护队友行动。

  3. 转折:罗星追击海盗时被流弹击中脊柱神经,被迫退出,其狙击位由新队员顾顺接替。

  4. 新任务:返航途中,临沂号护卫舰接外交部紧急指令 —— 非洲伊维亚共和国政变,恐怖组织 “扎卡” 与叛军攻占首都,需立即前往撤侨。

第二幕:伊维亚共和国撤侨(任务 2:侨民撤离)

  1. 登陆部署:临沂号抵达伊维亚,蛟龙 8 人小队(杨锐、顾顺、李懂、佟莉、张天德、庄羽、徐宏、石头)登陆,负责护送华侨至港口登舰。

  2. 首次遇袭:护送最后一批侨民的车队遭扎卡组织伏击,队员依托建筑物固守,击退敌人但车辆受损。

  3. 支线出现(主要为后续工作铺垫):法籍华裔记者夏楠求助 —— 其助手邓梅(中国公民)与能源公司员工被扎卡绑架,且夏楠正追查扎卡手中的 “黄饼”(脏弹核原料)线索。

  4. 任务升级:扎卡发布威胁视频,以邓梅性命要挟交换政府官员家属,蛟龙小队决定在撤侨同时展开人质救援

第三幕: 公路遇袭(临时紧急任务)

突击组车队行至工厂外围公路时,突然遭遇伏击,并且是遭遇敌方 “狙击 + 迫击炮” 组合打击,为此蛟龙小队的任务瞬间变成打退敌人,这一幕内容很丰富,包含大量的多线程内容,我们后面展开讲。

第四幕:解救人质

这段任务是深入交战区解救人质,这是整个电影的高潮,战斗比较复杂,代价也很大,两死两伤。

  • 庄羽(通讯兵):为修复通讯设备被手雷炸死,临终前仍紧握天线。

  • 张天德(石头):面部被手雷炸伤,失血过多牺牲;佟莉为其戴上婚戒,痛击敌人。

我们也是后面逐步展开。

第五慕:抢黄饼(脏弹核原料)

决策:虽伤亡惨重(仅剩杨锐、顾顺、李懂、佟莉 4 人能战),但为阻止核威胁,小队决定擅自行动(未获上级授权,只剩 40 分钟窗口期)。

这个电影怎么和高并发编程有联系呢?对于显示世界的话,本来就是多线程的,我们每个人都各自生活,是一个独立的线程。有时候我们需要和别人交流,这就像线程间通信。有时候任务很多,但是干活的牛马只有5个人 ,那就相当于一个线程池,等等,因此这两者就非常相似。
那计算机为什么会有多线程呢?最大的原因是计算机的处理器的主要负责任务管理,而且速度很快,而具体需要干活的外部设备则慢很多。比如下载一个2小时的高清电影,处理器只需要几个指令,能瞬间完成。而真正要干活的网络、硬盘等,可能要辛辛苦苦很长时间。
在下载电影的时候,很明显硬盘和带宽比较忙的,这个估计每个人都有同感,但是如果此时处理器也闲着就浪费了。所以呢,我们可以让处理器干其他事情,比如帮我们看电子书等等。所以为了让计算机的作用最大化,那我们就用到了多线程的设计,每个线程完成不同的任务。而处理器就负责管管这些线程的情况就行了。

所以呢,殊途同归,现实世界和计算机的多线程就关联到一起了。那我们就可以从整体上看一下电影里的场景如何与多线程对应的:

电影场景多线程概念对应Java类/机制
队长指挥分工线程池调度ThreadPoolExecutor
情报共享更新读写锁(安排重要任务时,其他人不说话的)ReentrantReadWriteLock
总攻前全员就位屏障同步CyclicBarrier
弹药补给链生产者-消费者BlockingQueue
夜视仪等争用信号量(盾牌给我)Semaphore
等待登机完成倒计时锁CountDownLatch
呼叫空中支援异步任务Future/CompletableFuture
医疗包弹药箱僵持死锁锁顺序不一致
救援任务优先线程优先级Thread.setPriority()

我们再看一个更具体的例子:

屏障同步(CyclicBarrier),这是很多同学都感到陌生的概念,但在电影里往往是最紧张、最刺激的时候,就是我方全队都做好准备,准备收割敌人的时候。

在红海行动中有两个典型的场景,一个是商船上发起进攻的时候,另一个是解救人质发起进攻的时候:

  • 狙击组需要就位

  • 爆破组需要安装炸药

  • 突击组需要到达攻击位置

  • 全部就位后才能同时发起攻击

这其实就是屏障同步要干的事情。

再比如,读写锁场景,关于读写的问题,在Java里大量场景都用到,例如多线程有读写锁、Mysql有读写分离的设计、redis也有多写等等。显示中大部分场景都是读的多,而写的少。而且读的时候可以多个一起读,而写的时候就只能一个写,否则就冲突了。电影里,也有典型的场景就是队长在下达紧急命令的时候,其他人都是认真听 ,不能插话的,等等。

 电影里,每个场景都是很复杂的 ,我们该如何模拟呢?当然是要用简单的代码示意一下,重点在于结合电影让我们更清晰地理解多线程里的典型思想和原理,而不是要完整模拟出来。

今天我们先来看个热身问题,如何将每个队员抽象为一个线程。

2 将队员抽象为线程的方法

学过java编程的同学应该知道,创建线程的方式主要有三种:实现Runnable接口、继承Thread类或者实现Callable接口,我们一个个来看一下。当然还能使用线程池来创建,这个后面单独讨论。

【1】 实现Runnable接口创建线程

Runnable是一个线程的接口,使用方法如下:

public class RunnableTest implements Runnable {    @Override    public void run() {        System.out.println("run ");    }    public static void main(String[] args) {        Thread thread = new Thread(new RunnableTest());        thread.start();        System.out.println("main...");    }}

注意启动线程要通过thead.start()来启动的,线程启动之后,会执行run()方法。为什么如此我们后面再讲解。

【2】 继承Thread类创建线程

Thread是一个类,可以直接继承该类来创建线程,使用方法如下:

public class ThreadTest extends Thread {    @Override    public void run() {        System.out.println(" sun thread hello ");    }    public static void main(String[] args) {        ThreadTest threadTest = new ThreadTest();        threadTest.start();        System.out.println("main thread");    }}

Runnable和Thread的区别在于,前者是接口而后者是类,因此如果当前要实现线程的类已经继承了另外一个类,就无法再继承Thread类了,只能通过Runnable接口来完成。

【3】实现Callable接口并创建带返回值的线程

在有些场景中,我们需要让一个异步执行的任务在执行完成后返回一个结果,而前面使用的线程中,run()方法是一个void修饰的无返回值方法,而前面两种方式都无法满足我们的要求,因此Java提供了Callable和Future组合创建返回值的线程。使用方法如下:

public class CallableExample implements Callable<String> {    @Override    public String call() throws Exception {        return "执行call";    }    public static void main(String[] args) throws ExecutionException, InterruptedException {        CallableExample callableExample = new CallableExample();        FutureTask<String> futureTask = new FutureTask<>(callableExample);        Thread thread = new Thread(futureTask);        thread.start();        System.out.println("result" + futureTask.get());    }}

可以看到Callable和Future组合还是略有复杂的,需要作为一个参数传递给thread。

这里为什么这么复杂呢?主要是因为Runnable的局限性。

Runnable设计的很早,其基础定义中没有返回结果,也不能处理异常:

public interface Runnable {    /**     * Runs this operation.     */    void run();}

既然没有,那我们加一个不就行了吗,但是呢Java还要考虑就代码的兼容等等,就不想调整Runnable,所以就另外建了个新接口和Runnable联合使用:

public interface Callable<V> {    /**     * Computes a result, or throws an exception if unable to do so.     *     * @return computed result     * @throws Exception if unable to compute a result     */    V call() throws Exception;}

这是最重要的原因,当然为了提供更多更丰富的方法,所以新接口也变得复杂很多。这种方式在很多工程的源码中会看到,我们后面会单独看。

理解了创建线程的基本方法之后,接下来,我们先定义一个基本的士兵线程:

先定义个士兵类,包含士兵的信息和执行任务。

public class Soldier implements Runnable {    private String name;    private String work = "waiting";    public Soldier(String name) {        this.name = name;    }    public void setWork(String work) {        this.work = work;    }    public void run() {        System.out.println("我是 " + name + ", 我现在的任务是 :" + work);//        每个人不能不能地干一件事,模拟持续一段时间之后子线程就结构了        work();        System.out.println(name + work + "完成");    }    /**     * 模拟持续一段时间之后子线程就结构了     */    private void work() {        try {            Thread.sleep(1000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

接下来,我们就通过代码来逐步实现上述过程。

比如说,在公路遇袭阶段时,队长喊有没有事快点回话,之后队员们纷纷回复,那我们就可以这么写,主线程是队长,队员是子线程:

public class RegisterThread {    private static Thread 石头Thread, 佟莉Thread, 顾顺Thread, 庄羽Thread, 徐宏Thread, 李懂Thread, 陆琛Thread;    public static void main(String[] args) {        //step 1: 了解战场情况,初步防守        Soldier 石头 = new Soldier("石头");        石头.setWork("我没事");        石头Thread = new Thread(石头);        石头Thread.start();        Soldier 佟莉 = new Soldier("佟莉");        佟莉.setWork("我没事");        佟莉Thread = new Thread(佟莉);        佟莉Thread.start();        Soldier 庄羽 = new Soldier("庄羽");        庄羽.setWork("我没事");        庄羽Thread = new Thread(庄羽);        庄羽Thread.start();        Soldier 徐宏 = new Soldier("徐宏");        徐宏.setWork("我没事");        徐宏Thread = new Thread(徐宏);        徐宏Thread.start();        Soldier 陆琛 = new Soldier("陆琛");        陆琛.setWork("我没事");        陆琛Thread = new Thread(陆琛);        陆琛Thread.start();        Soldier 顾顺 = new Soldier("顾顺");        顾顺.setWork("我没事");        顾顺Thread = new Thread(顾顺);        顾顺Thread.start();        Soldier 李董 = new Soldier("李董");        李董.setWork("我没事");        李懂Thread = new Thread(李董);        李懂Thread.start();    }}

之后队长开始安排任务,我们可以这么写:

public class FristTaskMainThread {    private static Thread 石头Thread, 佟莉Thread, 顾顺Thread, 庄羽Thread, 徐宏Thread, 李懂Thread, 陆琛Thread;    public static void main(String[] args) {        //step 1: 了解战场情况,初步防守        Soldier 石头 = new Soldier("石头");        石头.setWork("持续防守后方");        石头Thread = new Thread(石头);        石头Thread.start();        Soldier 佟莉 = new Soldier("佟莉");        佟莉.setWork("持续侧翼攻击");        佟莉Thread = new Thread(佟莉);        佟莉Thread.start();        Soldier 庄羽 = new Soldier("庄羽");        庄羽.setWork("找武器");        庄羽Thread = new Thread(庄羽);        庄羽Thread.start();        Soldier 徐宏 = new Soldier("徐宏");        徐宏.setWork("去救人质");        徐宏Thread = new Thread(徐宏);        徐宏Thread.start();        Soldier 陆琛 = new Soldier("陆琛");        陆琛.setWork("定位敌人阵地");        陆琛Thread = new Thread(陆琛);        陆琛Thread.start();        Soldier 顾顺 = new Soldier("顾顺");        顾顺.setWork("不具备狙击条件,原地战斗");        顾顺Thread = new Thread(顾顺);        顾顺Thread.start();        Soldier 李董 = new Soldier("李董");        李董.setWork("不具备狙击条件,原地战斗");        李懂Thread = new Thread(徐宏);        李懂Thread.start();    }}

整个电影里有大量有意思的场景,我们接下来就大致按照电影的顺序来制作大约10期的内容。主要看大家的反馈,如果效果好,我们就继续做更多。

不过呢,我们分享的顺序大致是按照电影的时间顺序来推进,但是会兼顾每个点的难易程度、重要性等来调整。而如果不是很明显,而又比较重要的内容,我们也会参考其他的电影,比如《战狼2》、《东成西就》等来分享。

我们后面介绍每个技能点的时候都分三部分:与电影结合介绍技术原来这么简单;基本代码模拟电影场景;该技能在开源框架中的典型应用,让你深入浅出、张弛有度、理论与实践完美结合。

今天我们就分享到这里,如果您觉得我做的内容还凑合,欢迎点赞、关注和转发,阅读过千,三天内我们制作出下一期。谢谢大家!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 03:09:00 HTTP/2.0 GET : https://f.mffb.com.cn/a/462709.html
  2. 运行时间 : 0.205146s [ 吞吐率:4.87req/s ] 内存消耗:4,721.80kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9dc9098ab2e658bebc2bbe516056dc87
  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.001075s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001500s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000643s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000624s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001482s ]
  6. SELECT * FROM `set` [ RunTime:0.000560s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001504s ]
  8. SELECT * FROM `article` WHERE `id` = 462709 LIMIT 1 [ RunTime:0.001270s ]
  9. UPDATE `article` SET `lasttime` = 1770577741 WHERE `id` = 462709 [ RunTime:0.005405s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000609s ]
  11. SELECT * FROM `article` WHERE `id` < 462709 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001113s ]
  12. SELECT * FROM `article` WHERE `id` > 462709 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001007s ]
  13. SELECT * FROM `article` WHERE `id` < 462709 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002779s ]
  14. SELECT * FROM `article` WHERE `id` < 462709 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007607s ]
  15. SELECT * FROM `article` WHERE `id` < 462709 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.016043s ]
0.209411s