亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • Timer 的缺陷:

    ???? 1 并發操作時的缺陷,這是因為 Timer 的后臺只有一個執行線程導致的。

    ???? 2 當任務拋出異常時的缺陷。如果 TimeTask 拋出 RuntimeException,Timer 會停止所有任務的執行。


    根據缺陷,我們可以得出 Timer 的使用禁區。

    ????1 對時效性要求較高的多任務并發作業,雖然 Timer 支持多任務執行,但那都是串行執行的。

    ????2 對復雜的任務的調度,因為在復雜的任務中可能會出現異常,而Timer 中一旦出現異常,則停止執行。

    查看全部
    0 采集 收起 來源:Timer的缺陷

    2023-07-12

  • schedule與scheduleAtFixedRate的區別

    情況1:計劃執行的時間早于當前的時間。

    schedule方法:當調用該方法時,調用定時任務的時間以當前時間為準,可以通過調用scheduleExecutionTime查看時間的基準。(設置了00:00開始執行,每兩秒鐘執行一次,但是任務開始的時候是00:06,那么就會執行00:06? 00:08 )

    scheduleAtFixedRate():調用該方法時,以方法中傳入的時間為準,例如,傳入的時間為12:00,那么scheduleExecutionTime()的時間就是12:00,如果當前時間晚于傳入的時間,那么就會進行追趕多次執行該方法。注意:它存在并發性,例如圖片中當前時間為15:05:31,但是調用定時任務的時間為15:05:25,那么它就會在同一時間執行三次該方法。 25 27 29 31,25 27 29是一瞬間執行

    情況2:任務執行所需時間超出任務執行的時間間隔。??

    schedule方法:比如規定2s執行一次,但是執行需要3s,那么schedule(timeTask,calender.getTime(),2000),就會在設置的calender中執行一次,以及3s后執行一次

    scheduleAtFixRate():?比如規定2s執行一次,但是執行需要3s,那么schedule(timeTask,calender.getTime(),2000),就會在設置的calender中執行一次,以及2s后執行一次,存在并發性



    查看全部
  • TimerTask的cancel()函數的作用:取消當前TimerTask里的任務
    TimerTask的scheduleExecutionTime()作用:返回此任務最近實際執行的已安排執行的時間,返回值:最近發生此任務執行安排的時間,為long型

    Timer的cancel()函數的作用:終止此計時器,丟棄所有當前已安排的任務
    Timer的purge()函數的作用:從此計時器的任務隊列中移除所有已取消的任務。返回值:從隊列中移除的任務數。

    查看全部
    0 采集 收起 來源:其他重要函數

    2023-07-11

  • Timer的schedule方法的四種用法:

    1、schedule(TimerTask task,Date time):在時間等于time或超過time執行且執行一次task(task業務線程,time時間)。在time或超過time的時候執行一次,且只執行一次

    2、schedule(TimerTask task,Date time,long period):前兩個參數和1一樣,這里第三個參數表示每隔多長時間該任務調度線程調用業務線程。在time的時候執行一次,之后每間隔period就會執行一次

    3、schedual(TimerTask task,long delay):延遲當前時間多少秒之后執行該定時任務,并且僅執行一次。

    4、schedual(TimerTask task,long delay,long?period):延遲當前時間delay秒之后執行定時任務,并且每隔period執行一次定時任務。

    Timer的scheduleAtFixedRate的兩種用法:

    1、scheduleAtFixedRated(TimerTask?task,Date?date,long?period):到date指定時間每隔period執行一次定時任務task。

    2、scheduleAtFixedRated(TimerTask?task,long?delay,long?period):延遲當前時間delay毫秒后每隔period時間執行一次定時任務。

    查看全部

  • TimerThread是后臺執行的線程;TimerTask對應的是業務線程,run()中涵蓋了業務的邏輯。TimerThread通過定期調用隊列里的TimerTask的run()方法,來實現對任務的定時定頻率的調度。我們只需要關注Timer和TimerTask。TimerThread和TaskQueue都是透明的。

    http://img1.sycdn.imooc.com//64ad6a4300015a4112650625.jpg

    http://img1.sycdn.imooc.com//64ad6a5e000103fd10250723.jpg

    查看全部
    0 采集 收起 來源:timer簡介

    2023-07-11

  • 定時任務調度:基于給定的時間點,給定的時間間隔,給定的執行次數自動執行的任務。Java中的定時任務1、Timer2、QuartzTimer和Quartz的區別:1、Timer由jdk提供,調用簡單,不要需要導入jar包。而Quartz需要導入jar包,不是jdk自帶。2、Quartz的功能比Timer的功能強大完善。3、Timer后臺執行一個線程來完成定時任務,Quartz可以在后臺執行多個線程來完成定時任務。

    查看全部
    0 采集 收起 來源:課程介紹

    2023-07-11

  • TimerThread是后臺執行的線程;TimerTask對應的是業務線程,run()中涵蓋了業務的邏輯。

    TimerThread通過定期調用隊列里的TimerTask的run()方法,來實現對任務的定時定頻率的調度。

    我們只需要關注Timer和TimerTask。TimerThread和TaskQueue都是透明的。

    查看全部
    0 采集 收起 來源:timer簡介

    2020-03-28

  • Timer的缺陷

    1、管理并發任務的缺陷:Timer有且僅有一條后臺的線程,對定時任務定時定頻率的調用,對于多任務來說并不支持任務與任務之間的并發。

    例如:

    http://img1.sycdn.imooc.com//5e080a140001b33808560825.jpg

    2、任務拋出異常的缺陷:它對runtimeexception的支持不是很好。

    http://img1.sycdn.imooc.com//5e080faa000192b710080408.jpg

    舉例:

    http://img1.sycdn.imooc.com//5e0810a00001f4d208660629.jpg

    查看全部
    0 采集 收起 來源:Timer的缺陷

    2019-12-29

  • schedule與scheduleAtFixedRate的區別

    情況1:計劃執行的時間早于當前的時間。

    http://img1.sycdn.imooc.com/5e06f7e10001501311330453.jpg

    http://img1.sycdn.imooc.com//5e06fed70001f76310200771.jpg

    schedule方法:當調用該方法時,調用定時任務的時間以當前時間為準,可以通過調用scheduleExecutionTime查看時間的基準。

    http://img4.sycdn.imooc.com/5e06fde6000160f011420491.jpg

    http://img1.sycdn.imooc.com//5e06fec20001a3db08850798.jpg

    scheduleAtFixedRate():調用該方法時,以方法中傳入的時間為準,例如,傳入的時間為12:00,那么scheduleExecutionTime()的時間就是12:00,如果當前時間晚于傳入的時間,那么就會進行追趕多次執行該方法。注意:它存在并發性,例如圖片中當前時間為15:05:31,但是調用定時任務的時間為15:05:25,那么它就會在同一時間執行三次該方法。

    情況2:任務執行所需時間超出任務執行的時間間隔。

    schedule()

    http://img1.sycdn.imooc.com//5e07015e00016d6209320858.jpg

    http://img1.sycdn.imooc.com//5e0701050001e18b10660463.jpghttp://img1.sycdn.imooc.com//5e0701690001c8b710310391.jpg

    scheduleAtFixedTime()

    http://img1.sycdn.imooc.com//5e0702600001790411180445.jpg

    http://img1.sycdn.imooc.com//5e07024f000157b808420860.jpg

    查看全部
  • TimerTask的cancel()、scheduledExecutionTime()

    cancel():取消當前TimerTask里的任務。

    http://img1.sycdn.imooc.com/5e06bb4900012f6e09110577.jpg

    http://img1.sycdn.imooc.com/5e06bb3d0001006508290861.jpg

    scheduledExecutionTime():返回最近一次執行該定時任務的時間。

    http://img3.sycdn.imooc.com/5e06be56000173a607090709.jpg

    Timer的cancel()、purge()

    cancel():Timer下的cancel()表示結束當前Timer的所有定時任務。

    http://img3.sycdn.imooc.com/5e06c55c0001aea109970860.jpg

    purge():表示從此Timer的定時任務隊列中移除所有已經取消的定時任務,并且返回移除的個數。

    http://img1.sycdn.imooc.com/5e06c78a000155b907740930.jpg


    查看全部
    0 采集 收起 來源:其他重要函數

    2019-12-28

  • Timer的schedule方法的四種用法:

    1、schedule(TimerTask task,Date time):在時間等于time或超過time執行且執行一次task(task業務線程,time時間)。

    http://img2.sycdn.imooc.com/5e04c01700015e7408490762.jpghttp://img4.sycdn.imooc.com/5e04c0250001f5ec08890795.jpg

    2、schedule(TimerTask task,Date time,long period):前兩個參數和1一樣,這里第三個參數表示每隔多長時間該任務調度線程調用業務線程。

    http://img2.sycdn.imooc.com/5e04c21d0001426f08370900.jpg

    http://img1.sycdn.imooc.com/5e04c22a00019d3507380848.jpg

    3、schedual(TimerTask task,long delay):延遲當前時間多少秒之后執行該定時任務,并且僅執行一次。

    4、schedual(TimerTask task,long delay,long?period):延遲當前時間delay秒之后執行定時任務,并且每隔period執行一次定時任務。

    Timer的scheduleAtFixedRate的兩種用法:

    1、scheduleAtFixedRated(TimerTask?task,Date?date,long?period):到date指定時間每隔period執行一次定時任務task。

    2、scheduleAtFixedRated(TimerTask?task,long?delay,long?period):延遲當前時間delay毫秒后每隔period時間執行一次定時任務。


    查看全部
  • Timer定義:java.util.Timer包,有且僅有一個后臺線程對多個業務線程進行定時定頻率的調度。

    Timer(調度線程)——》TimerTask(業務線程)

    Timer工具類詳解:如圖,這里可以理解TimerThread是后臺定時調用的線程,而TimerTask可以理解為業務線程,業務線程要在run方法中進行實現。http://img4.sycdn.imooc.com/5e04b42800016df307560576.jpg

    舉例:如圖,業務線程的實現需要在繼承TimerTask的run方法中實現,調度業務線程需要通過Timer實例的schedule方法,參數1表示業務線程所在類實例,參數2表示起初隔多長時間執行該調度線程,參數3表示每個多長時間間隔執行業務線程。

    http://img1.sycdn.imooc.com//5e04b6f900014b1706290387.jpg

    http://img1.sycdn.imooc.com//5e04b7020001c11e07930315.jpg

    查看全部
    0 采集 收起 來源:timer簡介

    2019-12-26

  • 定時任務調度:基于給定的時間點,給定的時間間隔,給定的執行次數自動執行的任務。

    Java中的定時任務

    1、Timer

    2、Quartz

    Timer和Quartz的區別:

    1、Timer由jdk提供,調用簡單,不要需要導入jar包。而Quartz需要導入jar包,不是jdk自帶。

    2、Quartz的功能比Timer的功能強大完善。

    3、Timer后臺執行一個線程來完成定時任務,Quartz可以在后臺執行多個線程來完成定時任務。

    查看全部
    1 采集 收起 來源:課程介紹

    2019-12-26

  • scheduleAtFixedRate方法

    “fixed-rate”;如果第一次執行時間被delay了,隨后的執行時間按照上一次開始的時間點進行計算,并且為了趕上進度會多次執行任務,因此TimerTask中的執行體需要考慮

    查看全部
  • schedule與scheduleAtFixedRate的區別

    從兩種情況看區別

    1、首次計劃執行的時間早于當前的時間(比如:當前時間是雙十一的00:00:06而我們計劃執行的時間是雙十一的00:00:00)

    2、任務執行所需的時間超出任務的執行周期間隔(比如:這個任務需要每隔兩秒執行一次,但是單次這個任務的執行時間就是3秒)

    查看全部
  • Timer的定義

    有且僅有一個后臺線程 對 多個業務線程 進行 定時定頻率 的調度

    查看全部
    0 采集 收起 來源:timer簡介

    2019-07-14

  • Java定時任務調度工具Timer

    前言:

    首先我們先明確一下什么是定時任務調度?

    基于給定的時間點,給定的時間間隔或者給定的執行次數自動執行的任務。

    Java中定時任務調動工具有倆:Timer 、Quartz

    區別:

    ? ? 出身不同:Timer由jdk直接提供,不需jar包支持;Quartz需引入jar包。

    ????能力不同:Timer簡單定時任務;Quartz時間控制功能更強大。

    ????底層機制:Timer只有一個后臺線程執行;Quartz是多線程執行任務。

    一.Timer簡介:

    ? ? 讓我們看下官方文檔api(JDK1.8)

    172519_i6su_3700425.png

    可能有的小伙伴英語水平不太好,那讓我們看下中文版吧:

    ?

    172143_Py0o_3700425.png

    那么我們可以歸納Timer的定義:有且僅有一個后臺線程對多個業務線程進行定時定頻率的調度

    主要構件:

    172935_zg4G_3700425.png

    ?

    Timer工具類詳解:

    173200_bAJV_3700425.png

    二.Timer實戰

    1.簡單實戰

    1)定時任務類

    package?com.leo.timer;import?java.util.TimerTask;public?class?MyTimerTask?extends?TimerTask?{????private?String?name;????public?MyTimerTask(String?inputName){
    ????????name=inputName;
    ????}????@Override
    ????public?void?run()?{????????//打印當前name的內容
    ????????System.out.println("Current?exec?name?is"+name);
    ????}????public?String?getName()?{????????return?name;
    ????}????public?void?setName(String?name)?{????????this.name?=?name;
    ????}
    }

    2)Timer啟動

    package?com.leo.timer;import?java.util.Timer;public?class?MyTimer?{????public??static?void??main(String[]?args){????????//1.創建一個timer實例
    ????????Timer?timer=new?Timer();????????//2.創建一個MyTimerTask實例
    ????????MyTimerTask?myTimerTask=new?MyTimerTask("No.1");????????//3.通過timer定時頻率調用myTImerTask的業務邏輯
    ????????//?既第一次執行是在當前時間的兩秒之后,之后每隔一秒鐘執行一次
    ????????timer.schedule(myTimerTask,2000L,1000L);
    ????}
    }

    控制臺打印顯示:

    204722_dwNX_3700425.png

    ?

    2.Timer的定時調度函數

    1)schedule的四種用法

    ? ? 1.schedule(task,time)

    ????????作用:在時間等于或超過time的時候執行且僅執行一次task

    ? ? 2.schedule(task,time,period)

    ????????參數:????task-所要安排的任務

    ????????????????????? time-首次執行任務的時間

    ????????????????????? period-執行一次task的時間間隔,單位是毫秒

    ? ? 3.schedule(task,delay)

    ????????參數:????task-所要安排的任務

    ????????????????????? delay-執行任務前的延遲時間,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執行且僅執行一次task

    ? ? 4.schedule(task,delay,period)

    ????????參數:????task-所要安排的任務

    ????????????????????? delay-執行任務前的延遲時間,單位是毫秒

    ????????????????????? period-執行一次task的時間間隔,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執行且僅執行一次task,之后每隔period毫秒重復執行一次task

    具體代碼如下:

    ????定時任務類:

    ????

    package?com.leo.timer;import?java.text.SimpleDateFormat;import?java.util.Calendar;import?java.util.TimerTask;public?class?MyTimerTask?extends?TimerTask?{????private?String?name;????public?MyTimerTask(String?inputName){
    ????????name=inputName;
    ????}????@Override
    ????public?void?run()?{????????//打印當前name的內容
    ????????System.out.println("Current?exec?name?is?"+name);????????//以yyyy-MM-dd?HH:mm:ss的格式打印當前執行時間
    ????????Calendar?calendar=Calendar.getInstance();
    ????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????System.out.println("Current?exec?time?is"+sf.format(calendar.getTime()));
    ????}????public?String?getName()?{????????return?name;
    ????}????public?void?setName(String?name)?{????????this.name?=?name;
    ????}
    }

    ? ? 四中啟動類:

    ????????

    package?com.leo.timer;import?java.text.SimpleDateFormat;import?java.util.Calendar;import?java.util.Timer;public?class?MyTimer?{????public??static?void??main(String[]?args){????????//一.創建一個timer實例
    ????????Timer?timer=new?Timer();????????//二.創建一個MyTimerTask實例
    ????????MyTimerTask?myTimerTask=new?MyTimerTask("No.1");????????//三.通過timer定時頻率調用myTImerTask的業務邏輯
    ????????//?既第一次執行是在當前時間的兩秒之后,之后每隔一秒鐘執行一次
    ????????//timer.schedule(myTimerTask,2000L,1000L);
    
    ????????/**
    ?????????*?獲取當前時間,并設置成距離當前時間三秒之后的時間
    ?????????*?如果當前時間是2017-10-21?23:59:57
    ?????????*?則設置后的時間則為2017-10-22?00:00:00
    ?????????*/
    ????????Calendar?calendar=Calendar.getInstance();
    ????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????System.out.println(sf.format(calendar.getTime()));
    ????????calendar.add(Calendar.SECOND,3);????????/**
    ?????????*?1.??schedule(task,time)
    ?????????*??????在時間等于或超過time的時候執行且僅執行一次task
    ?????????*??????如在2017-10-22?00:00:00?執行一次task:打印任務的名字
    ?????????*/
    ????????//myTimerTask.setName("schedule1");
    ????????//timer.schedule(myTimerTask,calendar.getTime());
    ????????/**
    ?????????*?2.?schedule(task,time,period)
    ?????????*??????時間等于或超過time時首次執行task
    ?????????*??????之后每隔period毫秒重復執行一次task
    ?????????*??????如在2017-10-22?00:00:00?第一次執行task:打印任務的名字
    ?????????*??????之后每隔兩秒執行一次task
    ?????????*/
    ????????//myTimerTask.setName("schedule2");
    ????????//timer.schedule(myTimerTask,calendar.getTime(),2000);
    ????????/**
    ?????????*?3.?schedule(task,delay)
    ?????????*??????等待delay毫秒后執行且僅執行一次task
    ?????????*??????如現在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執行一次task::打印任務的名字
    ?????????*/
    ????????//myTimerTask.setName("schedule3");
    ????????//timer.schedule(myTimerTask,1000);
    ????????/**
    ?????????*?4.??schedule(task,delay,period)
    ?????????*??????等待delay毫秒后首次執行task
    ?????????*??????如現在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執行一次task::打印任務的名字
    ?????????*??????之后每隔兩秒執行一次task
    ?????????*/
    ?????????myTimerTask.setName("schedule4");
    ?????????timer.schedule(myTimerTask,calendar.getTime(),2000);
    ????}
    }

    2)scheduleAtFixedRate的四種用法? ??????? ?

    ? ? 1.scheduleAtFixedRate(task,time,period)

    ????????參數:????task-所要安排的任務

    ????????????? ????????time-首次執行任務的時間

    ????????????? ????????period-執行一次task的時間間隔,單位是毫秒? ??

    ???????作用:? ??時間等于或超過time時首次執行task,之后每隔period毫秒重復執行一次task(和schedule的第二種用法是一樣的)

    ? ? 2.scheduleAtFixedRate(task,delay,period)

    ????? ? 參數:????task-所要安排的任務

    ????????????????????? delay-執行任務前的延遲時間,單位是毫秒

    ????????????????????? period-執行一次task的時間間隔,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執行且僅執行一次task,之后每隔period毫秒重復執行一次task(和schedule的第四種用法是一樣的)

    代碼:

    ?//----------------scheduleAtFixedRate的用法-------------------------------
    ????????/**
    ?????????*?1?.?scheduleAtFixedRate(task,time,period)
    ?????????*??????時間等于或超過time時首次執行task
    ?????????*??????之后每隔period毫秒重復執行一次task
    ?????????*??????如在2017-10-22?00:00:00?第一次執行task:打印任務的名字
    ?????????*??????之后每隔兩秒執行一次task
    ?????????*/
    ????????//myTimerTask.setName("scheduleAtFixedRate1");
    ????????//timer.scheduleAtFixedRate(myTimerTask,calendar.getTime(),2000);
    ????????/**
    ?????????*?2.??scheduleAtFixedRate(task,delay,period)
    ?????????*??????等待delay毫秒后首次執行task
    ?????????*??????如現在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執行一次task::打印任務的名字
    ?????????*??????之后每隔兩秒執行一次task
    ?????????*/
    ????????myTimerTask.setName("scheduleAtFixedRate2");
    ????????timer.scheduleAtFixedRate(myTimerTask,3000,2000);

    ?

    我們先來看Timer的其他重要函數,下一標題再具體講解schedule和schedulAtFixedRate二者的不同

    3)其他重要函數

    ? ? 1.TimerTask的cancel(),scheduledExecutionTime() :

    ????? ? cancel:

    ????????????作用:取消當前TimerTask里的任務

    ????????

    ????@Override
    ????public?void?run()?{????????if?(count<3){????????????//打印當前name的內容
    ????????????System.out.println("Current?exec?name?is?"+name);????????????//以yyyy-MM-dd?HH:mm:ss的格式打印當前執行時間
    ????????????Calendar?calendar=Calendar.getInstance();
    ????????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????????System.out.println("Current?exec?time?is"+sf.format(calendar.getTime()));
    ????????????count++;
    ????????}else?{
    ????????????cancel();
    ????????????System.out.println("Task?cancel");
    ????????}
    ????}

    ????? ? scheduledExecutionTime():

    ????????? ? 作用:返回此任務最近實際執行的已安排執行的時間

    ?

    ????2.Timer的cancel() , perge()?:

    ????? ??cancel():

    ????????? ? 作用:終止此計時器,丟棄所有當前已安排的任務

    ????????233606_ynFl_3700425.png

    ????? ? purge():

    ????????? ? 作用:從此計時器的任務隊列中移除所要已取消的任務

    ????????? ? 返回值:從隊列中移除的任務數

    234105_l0Fd_3700425.png

    3.schedule和scheduleAtFixeRate的區別

    1)首次計劃執行的時間早于當前的時間

    ? ? 1.schedule方法:

    ????????????"fixed-delay"如果第一次執行時間被delay了,隨后的執行時間按上一次實際執行完成的時間點進行計算

    000358_MkvD_3700425.png

    console:

    000556_8RYO_3700425.png

    ????2.scheduleAtFixedRate方法:

    ????????????"fixed-rate"如果第一次執行時間被delay了,隨后的執行時間按上一次實際執行完成的時間點進行計算,并且為了趕上進度會多次執行任務,因此TimerTask中的執行體需要考慮同步

    001121_I684_3700425.png

    console:

    001158_cyfJ_3700425.png

    ?

    ?2)任務執行所需時間超出任務的執行周期間隔

    ? ? 1.schedule方法:

    ????????????下一次執行時間相對于上一次實際執行完成的時間點,因此執行時間會不斷延后

    002010_eqXy_3700425.png

    console:

    002047_fK7f_3700425.png

    ????2.scheduleAtFixedRate方法:

    ????????????下一次執行時間相對于上一次開始的時間點,因此執行的時間不會延后,因此存在并發性

    002322_VjSr_3700425.png

    console:

    002415_XfgL_3700425.png

    4.Timer的缺陷:

    1)管理并發任務的缺陷

    ? ? Timer有且僅有一個線程去執行定時任務,如果存在多個定時任務,且任務時間過長,會導致執行效果與預期不符

    003147_z6tn_3700425.png

    003228_G3df_3700425.png

    console:

    003345_p8CL_3700425.png

    同樣scheduleAtFixedRate也不能解決并發問題:

    003506_ljLB_3700425.png

    2)當任務拋出異常時的缺陷

    ? ? 如果TimerTask拋出RuntimeException,Timer會停止所有任務的執行

    三.Timer的使用禁區:

    1.對時效性要求較高的多任務并發作業

    2.對復雜的任務的調度

    如果想要滿足以上功能,需用到Quartz

    查看全部
    0 采集 收起 來源:其他重要函數

    2019-06-26

首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
本課程是初級課程,了解基本java語法可聽。
老師告訴你能學到什么?
定時任務的基本概念,Timer的函數,綜合運用和缺陷

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!