【Java并发编程】Java多线程(二):多线程一定好吗?线程阻塞时占用CPU吗?

1.多线程一定好吗?

1.1 多线程优势

1)阻塞等待时充分利用 CPU

当程序发生阻塞的操作时候,例如IO等待,CPU将就空闲下来了。而使用多线程,当一些线程发生阻塞的时候,另一些线程则仍能利用CPU,而不至于让CPU一直空闲。

2)利用 CPU 的多核并行计算能力

现在的CPU基本上都是多核的。使用多线程,可以利用多核同时执行多个线程,而不至于单线程时一个核心满载,而其他核心空闲。

1.2 多线程弊端

1)线程切换是有开销的,这会导致程序运行变慢。

2)多线程程序必须非常小心地同步代码,否则会引起死锁。

3)多线程程序极难调试,并且一些bug非常隐蔽,可能你99次运行都是对的,但是有1次是错的。不像单线程程序那么容易暴露问题。

1.3 代码测试

分别创建 1,10,100,1000,10000 个线程一共做100000000循环

public class CounterDemo {


    private static final long num = 1000000000L;
	
    // 执行循环,即每个线程的任务
    public static void splitCount(int threadNum) {
        // 通过num/threadNum计算每个线程要循环的次数,
        // 若一个线程则1000000000次,若 100000个线程则1000次
        for (long i = 0; i < num/threadNum; i++) {}
    }

    public static long getIntervalTimeToNow(long startTime) {
        return System.currentTimeMillis() - startTime;
    }

    public static void main(String[] args) throws InterruptedException {
        countWithMultithread(1); // 1个线程
        countWithMultithread(10); // 10个线程
        countWithMultithread(100); // 100个线程
        countWithMultithread(1000); // 1000个线程
        countWithMultithread(10000); // 10000个线程
    }

    private static void countWithMultithread(final int threadNum) throws InterruptedException {
        long startTime;
        Runnable splitCount = new Runnable() { 
            @Override
            public void run() {
                CounterDemo.splitCount(threadNum); // 每个线程需要做的事就是循环
            }
        };
        List<Thread> list = new ArrayList<>(); // 保存创建的线程们
        for (int i = 0; i < threadNum; i++) { // 创建threadNum个线程
            Thread thread1 = new Thread(splitCount); // 传入线程执行循环次数
            list.add(thread1);
        }
        startTime = System.currentTimeMillis(); // 开始时间
        for (Thread th: list) {
            th.start(); 
        }
        for (Thread th: list) {
            // 保证所有线程都在main之前运行完
            th.join();
        }
        System.out.println(String.format("%1$9d", threadNum) + " thread 
                           need:"+String.format("%1$6d",getIntervalTimeToNow(startTime)));
    
}
        1 thread need:   409
       10 thread need:    92
      100 thread need:   140
     1000 thread need:   226
    10000 thread need:   978  // 10000个线程反而比1个线程执行时间长
   100000 thread need: 10059  // 效率反而下降了

执行的时候,使用vmstat 查看 CS (context switch)切换次数

vmstat 1
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 2701584 151472 9676072    0    0     0    60  393  419  0  0 100  0  0
0  0      0 2701708 151472 9676084    0    0     0     0  751  751  1  0 99  0  0
0  0      0 2701708 151472 9676092    0    0     0     0  354  384  0  0 100  0  0
0  0      0 2701708 151472 9676096    0    0     0     0  435  464  0  0 100  0  0
0  0      0 2701708 151472 9676108    0    0     0    72  439  491  0  0 100  0  0
2  0      0 2701708 151472 9676128    0    0     0    32  381  453  0  0 100  0  0
1  0      0 2680344 151472 9676168    0    0     0     4 6077 4869 21  1 78  0  0
4  0      0 2664740 151472 9676180    0    0     0     0 126656 149528 17 11 72  0  0
3  0      0 2564376 151472 9676188    0    0     0     0 107107 138418 12 11 77  0  0
3  0      0 2565556 151472 9676196    0    0     0     0 128143 166234  7 14 79  0  0
4  0      0 2563056 151472 9676204    0    0     0    64 125162 163707  7 13 79  0  0
3  0      0 2567808 151472 9676208    0    0     0     0 136266 180092  7 13 80  0  0
2  0      0 2566560 151472 9676216    0    0     0     0 117768 154666  7 14 79  0  0
1  0      0 2568276 151472 9676220    0    0     0     0 107585 139240  8 13 79  0  0

上下文切换最多的时候每秒切换了 18W+次:线程切换时需要保存当前线程的数据和函数栈

  • 当前任务的时间片用完之后,系统CPU正常调度下一个任务;
  • 当前任务碰到IO阻塞,调度线程将挂起此任务,继续下一个任务;
  • 多个任务抢占锁资源,当前任务没有抢到,被调度器挂起,继续下一个任务;
  • 用户代码挂起当前任务,让出CPU时间;
  • 硬件中断;

2.线程阻塞时占用CPU吗?

先说答案:阻塞不占用 CPU 时间,当某个线程阻塞时,该会触发 CPU 调度,即让新的线程在该 CPU 上运行(这也验证了上面说多的多线程的优势)。

2.1 CPU初始状态

2.2 线程运行

public static void main(String[] args) {
    for (int i = 0; i < 10000000; i++) {
        System.out.println("dfdf");
        System.out.println(456 + 567);
    }
}

可以看出cpu的利用率飙升到了65%,这时候 cpu 占用率已经很高了。

2.3 进入TIMED_WAITING 状态

public static void main(String[] args) {
    for (int i = 0; i < 10000000; i++) {
        try {
            Thread.sleep(100000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

下图可见 CPU 的利用率还是在 7% 左右,由此可以证明 sleep 方法并不会占用 CPU 的时间

2.4 进入WAITING 状态

public static void main(String[] args) {
    for (int i = 0; i < 10000000; i++) {
        Object o = new Object();
        synchronized (o) {
            try {
                o.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

下图可见 CPU 利用率是 6% ,由此可以证明wait方法也不会占用CPU的时间

参与评论 您还未登录,请先 登录 后发表或查看评论
<p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">光阴似箭、岁月如梭</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">转眼间已至<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 18px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">2020</span>年末</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;"> </span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">想到这一年发生的糟心事</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">不由得感慨万千、思绪横飞</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">特别是互联网方面内卷依旧 </span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">竞争依旧激烈、就业环境依旧严酷</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">因此</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">巩固自身核心竞争力</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">扎实自身技术根基 势在必行!!!</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;"> </span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">故而,<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 18px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">debug</span>也趁此机撸了一套新的实战课程</span><span style="box-sizing: border-box; touch-action: pan-y; font-weight: 600; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 18px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #c24f4a;">《<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">Java</span>核心技术<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">-</span>典型案例与面试实战系列<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">(</span>基于<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">Spring Boot2.0)</span>》</span><span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 18px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #c24f4a;"> </span></span></span></span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">顾名思义,这是<span lang="EN-US" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 18px; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden;">debug</span>为诸位规划的实战系列课程,</span><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">其课程内容、学习收益、课程目录、技术栈等内容参见下图</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150104244546.jpg" alt="" width="771" height="1053" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;"><img src="https://img-bss.csdnimg.cn/202012140903382799.jpg" alt="" /></span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;"><img src="https://img-bss.csdnimg.cn/202012140904148405.jpg" alt="" /></span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">其课程的思维导图如下所示</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150147466587.jpg" alt="" width="1050" height="1259" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><span style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: large; vertical-align: baseline; background: transparent; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; font-family: 微软雅黑;">剩下的即为本课程相关技术在实战期间的效果图</span></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150212051314.png" alt="" width="1045" height="377" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150212224035.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150212315197.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150212403577.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150216099760.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150216318753.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"><img src="https://img-bss.csdnimg.cn/202012150216417490.png" alt="" /></p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p> <p class="MsoNormal" style="box-sizing: border-box; touch-action: pan-y; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 15px; vertical-align: baseline; background: #ffffff; list-style-type: none; word-break: break-all; overflow-wrap: break-word; overflow: hidden; color: #535353; font-family: -apple-system, 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;"> </p>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

A minor

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值