课程咨询: 400-996-5531 / 投诉建议: 400-111-8989

认识达内从这里开始

认真做教育 专心促就业

java并发程序(二)
  • 发布:烟台培训
  • 来源:互联网
  • 时间:2018-01-18 15:43
    5.valitate 关键字
    5.1 定义
    java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。
    valitate是轻量级的synchronized,不会引起线程上下文的切换和调度,执行开销更小。
    5.2 原理
    1. 使用volitate修饰的变量在汇编阶段,会多出一条lock前缀指令
    2. 它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成
    3. 它会强制将对缓存的修改操作立即写入主存
    4. 如果是写操作,它会导致其他CPU里缓存了该内存地址的数据无效
    5.3 作用
    内存可见性
    多线程操作的时候,一个线程修改了一个变量的值 ,其他线程能立即看到修改后的值
    防止重排序
    即程序的执行顺序按照代码的顺序执行(处理器为了提高代码的执行效率可能会对代码进行重排序)
    并不能保证操作的原子性(比如下面这段代码的执行结果一定不是100000)
    6. synchronized 关键字
    确保线程互斥的访问同步代码
    6.1 定义
    synchronized 是JVM实现的一种锁,其中锁的获取和释放分别是 monitorenter 和 monitorexit 指令,该锁在实现上分为了偏向锁、轻量级锁和重量级锁,其中偏向锁在 java1.6 是默认开启的,轻量级锁在多线程竞争的情况下会膨胀成重量级锁,有关锁的数据都保存在对象头中
    6.2 原理
    加了 synchronized 关键字的代码段,生成的字节码文件会多出 monitorenter 和 monitorexit 两条指令(利用javap -verbose 字节码文件可看到关,关于这两条指令的文档如下:
    monitorenter
    Each object is associated with a monitor. A monitor is locked if and only if it has an owner. The thread that executes monitorenter attempts to gain ownership of the monitor associated with objectref, as follows:
    ? If the entry count of the monitor associated with objectref is zero, the thread enters the monitor and sets its entry count to one. The thread is then the owner of the monitor.
    ? If the thread already owns the monitor associated with objectref, it reenters the monitor, incrementing its entry count.
    ? If another thread already owns the monitor associated with objectref, the thread blocks until the monitor's entry count is zero, then tries again to gain ownership.
    monitorexit
    The thread that executes monitorexit must be the owner of the monitor associated with the instance referenced by objectref.
    The thread decrements the entry count of the monitor associated with objectref. If as a result the value of the entry count is zero, the thread exits the monitor and is no longer its owner. Other threads that are blocking to enter the monitor are allowed to attempt to do so.
    加了 synchronized 关键字的方法,生成的字节码文件中会多一个 ACC_SYNCHRONIZED 标志位,当方法调用时,调用指令将会检查方法的 ACC_SYNCHRONIZED 访问标志是否被设置,如果设置了,执行线程将先获取monitor,获取成功之后才能执行方法体,方法执行完后再释放monitor.在方法执行期间,其他任何线程都无法再获得同一个monitor对象。 其实本质上没有区别,只是方法的同步是一种隐式的方式来实现,无需通过字节码来完成。
    6.3 关于使用
    修饰普通方法
    同步对象是实例对象
    修饰静态方法
    同步对象是类本身
    修饰代码块
    可以自己设置同步对象
    6.4 缺点
    会让没有得到锁的资源进入Block状态,争夺到资源之后又转为Running状态,这个过程涉及到操作系统用户模式和内核模式的切换,代价比较高。Java1.6为 synchronized 做了优化,增加了从偏向锁到轻量级锁再到重量级锁的过度,但是在最终转变为重量级锁之后,性能仍然较低。
    7. CAS
    AtomicBoolean,AtomicInteger,AtomicLong以及 Lock 相关类等底层就是用 CAS实现的,在一定程度上性能比 synchronized 更高。
    7.1 什么是CAS
    CAS全称是Compare And Swap,即比较替换,是实现并发应用到的一种技术。操作包含三个操作数 -- 内存位置(V)、预期原值(A)和新值(B)。 如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值 .否则,处理器不做任何操作。
    7.2 为什么会有CAS
    如果只是用 synchronized 来保证同步会存在以下问题

    synchronized 是一种悲观锁,在使用上会造成一定的性能问题。在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。一个线程持有锁会导致其它所有需要此锁的线程挂起。

烟台编程

    7.3 实现原理
    Java不能直接的访问操作系统底层,是通过native方法(JNI)来访问。CAS底层通过Unsafe类实现原子性操作。
    7.4 存在的问题
    ABA问题
    什么是ABA问题?比如有一个 int 类型的值 N 是 1
    此时有三个线程想要去改变它:
    线程A :希望给 N 赋值为 2
    线程B: 希望给 N 赋值为 2
    线程C: 希望给 N 赋值为 1
    此时线程A和线程B同时获取到N的值1,线程A率先得到系统资源,将 N 赋值为 2,线程 B 由于某种原因被阻塞住,线程C在线程A执行完后得到 N 的当前值2
    此时的线程状态
    线程A成功给 N 赋值为2
    线程B获取到 N 的当前值 1 希望给他赋值为 2,处于阻塞状态
    线程C获取当好 N 的当前值 2 希望给他赋值为1
    然后线程C成功给N赋值为1
    最后线程B得到了系统资源,又重新恢复了运行状态,在阻塞之前线程B获取到的N的值是1,执行compare操作发现当前N的值与获取到的值相同(均为1),成功将N赋值为了2.
    在这个过程中线程B获取到N的值是一个旧值,虽然和当前N的值相等,但是实际上N的值已经经历了一次 1到2到1的改变
    上面这个例子就是典型的ABA问题
    怎样去解决ABA问题
    给变量加一个版本号即可,在比较的时候不仅要比较当前变量的值 还需要比较当前变量的版本号。Java中AtomicStampedReference 就解决了这个问题
    循环时间长开销大
    在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更新不成功,循环往复,会给CPU带来很大的压力。
    CAS只能保证一个共享变量的原子操作
    8. AbstractQueuedSynchronizer(AQS)
    AQS抽象的队列式同步器,是一种基于状态(state)的链表管理方式。state 是用CAS去修改的。它是 java.util.concurrent 包中最重要的基石,要学习想学习 java.util.concurrent 包里的内容这个类是关键。 ReentrantLock、CountDownLatcher、Semaphore 实现的原理就是基于AQS.想知道他怎么实现以及实现原理 可以参看这篇文章#/waterystone…
    9. Future
    在并发编程我们一般使用Runable去执行异步任务,然而这样做我们是不能拿到异步任务的返回值的,但是使用Future 就可以。使用Future很简单,只需把Runable换成FutureTask即可。使用上比较简单,这里不多做介绍。
    10. 线程池
    如果我们使用线程的时候就去创建一个线程,虽然简单,但是存在很大的问题。如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池通过复用可以大大减少线程频繁创建与销毁带来的性能上的损耗。
    Java中线程池的实现类 ThreadPoolExecutor,其构造函数的每一个参数的含义在注释上已经写得很清楚了,这里几个关键参数可以再简单说一下
    corePoolSize :核心线程数即一直保留在线程池中的线程数量,即使处于闲置状态也不会被销毁。要设置 allowCoreThreadTimeOut 为 true,才会被销毁。
    maximumPoolSize:线程池中允许存在的最大线程数
    keepAliveTime :非核心线程允许的最大闲置时间,超过这个时间就会本地销毁。
    workQueue:用来存放任务的队列。
    SynchronousQueue:这个队列会让新添加的任务立即得到执行,如果线程池中所有的线程都在执行,那么就会去创建一个新的线程去执行这个任务。当使用这个队列的时候,maximumPoolSizes一般都会设置一个最大值 Integer.MAX_VALUE
    LinkedBlockingQueue:这个队列是一个无界队列。怎么理解呢,就是有多少任务来我们就会执行多少任务,如果线程池中的线程小于corePoolSize ,我们就会创建一个新的线程去执行这个任务,如果线程池中的线程数等于corePoolSize,就会将任务放入队列中等待,由于队列大小没有限制所以也被称为无界队列。当使用这个队列的时候 maximumPoolSizes 不生效(线程池中线程的数量不会超过corePoolSize),所以一般都会设置为0.

    ArrayBlockingQueue:这个队列是一个有界队列。可以设置队列的最大容量。当线程池中线程数大于或者等于 maximumPoolSizes 的时候,就会把任务放到这个队列中,当当前队列中的任务大于队列的最大容量就会丢弃掉该任务交由 RejectedExecutionHandler 处理。

更多烟台编程相关资讯,请扫描下方二维码

烟台编程

<  上一篇:java并发程序(一)
下一篇:jva虚拟内存管理  >
相关推荐
最新资讯
免费试听课程
  • 全部课程
  • IT课程
  • 设计课程
  • 运营课程
Free courses
最新开班时间
  • 北京
  • 上海
  • 广州
  • 深圳
  • 南京
  • 成都
  • 武汉
  • 西安
  • 青岛
  • 天津
  • 杭州
  • 重庆
  • 哈尔滨
  • 济南
  • 沈阳
  • 合肥
  • 郑州
  • 长春
  • 苏州
  • 长沙
  • 昆明
  • 太原
  • 无锡
  • 石家庄
  • 南宁
  • 佛山
  • 珠海
  • 宁波
  • 保定
  • 呼和浩特
  • 洛阳
  • 烟台
  • 运城
  • 潍坊
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 人工智能工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 数据分析与商业智能
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 数据分析与商业智能
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 8月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 8月29日
    • 火热抢座中
    • 立即咨询
预约申请试听课
收起