第一篇:Linux編程培訓哪家好
中國IT職業(yè)教育領先品牌
精品課程 全程面授
Linux編程培訓哪家好
想知道Linux編程培訓哪家好?先來了解一下什么是Linux編程吧!Linux下的網(wǎng)絡編程指的是socket套接字編程,入門比較簡單。在學校里學過一些皮毛,平時就是自學玩,沒有見識過真正的socket編程大程序,比較遺憾??偢杏X每次看的時候都有收獲,但是每次看完了之后,過段時間不看,重新拾起這些知識的時候又要從頭開始,所以,在這里做個筆記也算是做個模板,以后可以直接從某一個階段開始接著玩……
Linux線程介紹
通過socket機制建立起的連接,僅僅實現(xiàn)的是服務器端和客戶端之間的通信,數(shù)據(jù)的傳輸。但是要使網(wǎng)絡編程實現(xiàn)性能更優(yōu)的話,少不了使用線程,線程間通信以及IO函數(shù),接下來就簡單講一下線程,線程間通信,以及IO函數(shù)中的select函數(shù)。
千鋒教育www.004km.cn
中國IT職業(yè)教育領先品牌
精品課程 全程面授
Linux下的線程,線程是進程中的一個運行單元,進程fork子進程的過程是對父進程進程copy的過程,然后緊緊改變子進程本身的一些變量,之后各自的進程運行屬于自己進程空間的內(nèi)容;而線程的創(chuàng)建則不然,線程創(chuàng)建在進程中有自己固定的創(chuàng)建函數(shù),在同一個進程中創(chuàng)建的所有線程會共用所在進程的全局變量,信號句柄,文件描述符和當前的目錄狀態(tài),但是每個線程又會有屬于自己的線程棧等私有的屬性。進程獲得的使用資源被分給了每個線程,除公共部分外每個線程之間的運行又是相對獨立的。Linux下線程的基本函數(shù): 1 線程創(chuàng)建函數(shù)pthread_create
intpthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);功能介紹:
該函數(shù)是用于在進程中創(chuàng)建線程,線程在進程中創(chuàng)建有固定的形式。個人理解,線程的創(chuàng)建就是圈起了一段代碼作為一個線程,這段被圈起來的函數(shù)作為線程函數(shù),線程開始運行就是從線程函數(shù)開始運行,線程函數(shù)也有固定的格式,因為格式固定,線程的創(chuàng)建把單獨作為參數(shù)的線程函數(shù)和線程函數(shù)參數(shù)整合到一起,形成一個線程。當然在創(chuàng)建的同時,會設置當前線程的屬性,以及用于操作的線程標識符。參數(shù)說明:
thread:第一個參數(shù)是一個pthread_t類型的線程標識符,可以通過操作該標識符,實現(xiàn)對線程的操作;
attr:第二個參數(shù)是用來設置線程的屬性,包括線程優(yōu)先級等屬性;
千鋒教育www.004km.cn
中國IT職業(yè)教育領先品牌
精品課程 全程面授
start_routine:第三個參數(shù)是指當線程成功創(chuàng)建后,開始運行的一個單元,該單元需要自己編寫,一般會使用無限循環(huán)來實現(xiàn);
arg:第四個參數(shù)是第三個參數(shù)線程函數(shù)運行時傳入的參數(shù),為了防止每個線程函數(shù)輸入?yún)?shù)不同而難以操作,所以線程創(chuàng)建講兩者分開,這樣更靈活,便于操作。線程結(jié)束函數(shù)pthread_join和pthread_exit 2.1 線程函數(shù)結(jié)束pthread_exit
void pthread_exit(void *retval);功能介紹:
該函數(shù)主要的功能是從被圈起來的線程函數(shù)中退出,退出過程中會通過函數(shù)的參數(shù)指針帶出一個對象,當?shù)却€程結(jié)束函數(shù)pthread_join的第二個參數(shù)不是NULL時,會傳給這個參數(shù)做相應的處理。參數(shù)說明:
函數(shù)的參數(shù)是一個指針,通過該指針可以傳遞出當前進程結(jié)束時的相關信息,這個值會被pthread_join捕捉到。2.2 等待線程結(jié)束pthread_join
int pthread_join(pthread_t th,void **return_value);功能介紹:
函數(shù)主要功能是等待線程結(jié)束,pthread_exit是主動結(jié)束線程,該函數(shù)是被動等待線程結(jié)束。函數(shù)會處于等待狀態(tài),如果函數(shù)的第二個參數(shù)沒有設置為NULL,則會捕捉到從exit傳遞回的信息。參數(shù)說明:
千鋒教育www.004km.cn
中國IT職業(yè)教育領先品牌
精品課程 全程面授
第一個參數(shù)是要等待的線程的標識符,有phread_create函數(shù)第一個參數(shù)指定其值是多少;第二個參數(shù)是一個二維指針,用于等待從pthread_exit返回值。當然,如果不適用pthread_exit結(jié)束線程函數(shù)的話,線程函數(shù)結(jié)束,也就是調(diào)用函數(shù)的線程結(jié)束。當線程函數(shù)運行結(jié)束時,該函數(shù)用于回收線程的資源。
對于講理論來說,大家往往更喜歡實例,下面是一個線程的小例子。
#include pthread_tpth[2];6 void *print_message(void *argv)8 { 9 printf(“This is in thread %x!n”, *((pthread_t *)argv));10 if(&pth[0] == argv)12 { 13 sleep(1);14 pthread_exit(“1 thread exit!”);15 } 16 else 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 { 18 sleep(10);19 pthread_exit(“2 thread exit!”);20 } 21 } 22 intmain(void)24 { 25 void *returnValue;26 printf(“This is in main function BEFORE pthread create!n”);28 pthread_create(&pth[0], NULL, &print_message, &pth[0]);29 pthread_create(&pth[1], NULL, &print_message, &pth[1]);30 printf(“This is in main function AFTER pthread create %x!n”, pth[0]);31 pthread_join(pth[0], &returnValue);32 printf(“This is in main function AFTER pthread join 1n”);33 pthread_join(pth[1], &returnValue);34 printf(“This is in main function returnValue=%sn”, returnValue);35 printf(“This is in main function AFTER pthread joinn”);36 return 0;37 } 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 下面是運行結(jié)果: 這個只是運行結(jié)果,其實一些動態(tài)的東西,也看不到,因為pthread_join是阻塞等待線程結(jié)束的,所以說這個代碼是線程1等待一秒首先結(jié)束線程運行,pthread_join會捕捉到線程結(jié)束,線程2會在線程1結(jié)束運行后約9s然后結(jié)束運行,這時候線程2的pthread_join才會捕捉到線程結(jié)束并釋放資源。所以如果是使用多線程并且在同一個地方統(tǒng)一使用pthread_join釋放資源時,最好先釋放首先結(jié)束運行的線程,然后在釋放后結(jié)束的線程。否則的話如果使用pthread_join先釋放后結(jié)束運行的線程,先結(jié)束運行的線程資源因為等待前面pthread_join結(jié)束而得不到釋放。 因為線程是在進程中創(chuàng)建的,線程公用進程中的資源,所以線程資源的釋放非常重要。主要的線程資源釋放的方法有下面三種: 1)在線程函數(shù)中調(diào)用pthread_detach(pthread_self()),主動釋放線程資源; 2)向上面介紹的pthread_join函數(shù),被動釋放線程資源; 3)通過設置線程屬性中的__detachstate屬性,在線程函數(shù)運行完,或者pthread_exit退出時,自動釋放線程資源,設置線程屬性通過下面方式,pthread_attr_tatt;//線程屬性 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 pthread_attr_init(&att);//初始化線程屬性 pthread_attr_setdetachstate(&att, PTHREAD_CREATE_DETACHED);//設置線程屬性 pthread_create(pthread_t *pthread, &att, void *(*thread_function)(void *),(void *argv));//建立線程 3 線程的屬性 線程創(chuàng)建函數(shù)pthread_create的第二個參數(shù)是指線程的屬性,當該參數(shù)設置為NULL時,表示使用了線程的默認屬性。其實我們可以通過設置第二個參數(shù)來設置線程的屬性。線程屬性的改變有屬于自己的結(jié)構(gòu)體和函數(shù)。線程屬性的結(jié)構(gòu)體 typedefstruct __pthread_attr_s { int __detachstate; /*線程的終止狀態(tài)*/ int __schedpolicy; /*調(diào)度優(yōu)先級*/ int __sched_param __shedparam; /*參數(shù)*/ int __inheritsched; /*繼承*/ int __scope; /*范圍*/ int __guardsize; /*保證尺 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 寸*/ int __stackaddr_set /*運行棧*/ void *__stackaddr; /*線程運行棧地址*/ size_t __stacksize; /*線程運行棧大小*/ }pthread_attr_t; 線程主要的屬性對象包括上面提到的這幾種,線程的屬性不可以直接設置,需要通過特定的函數(shù)來實現(xiàn),可以通過函數(shù)對上面這幾種線程屬性進行修改。并且線程屬性的修改要在創(chuàng)建線程之前完成。線程屬性的初始化函數(shù)為pthread_attr_init,通過如下所示的函數(shù)可以說明線程的屬性參數(shù)都可以做修改,需要再次強調(diào)的是這些參數(shù)的修改需要在創(chuàng)建線程之前完成,將修改后的屬性參數(shù)通過pthead_create的第二個參數(shù)傳入到線程中,具體函數(shù)如下:(具體如何使用可參考http://blog.csdn.net/hudashi/article/details/7709413)1).線程優(yōu)先級設置屬性,需要先獲得線程當前屬性優(yōu)先級,然后通過設置操作修改屬性優(yōu)先級 intpthread_attr_getschedparam(pthread_attr_t* attr, structsched_param* param);intpthread_attr_setschedparam(pthread_attr_t* attr, structsched_param* param); 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 2).設置線程范圍屬性 intpthread_attr_setscope(pthread_attr_t* attr, int scope);3).設置線程終止狀態(tài)屬性 intpthread_attr_setdetachstate(pthread_attr_t* attr, intdetachstate);4).設置線程保護區(qū)大小屬性 intpthread_attr_setguardsize(pthread_attr_t* attr,size_tguardsize);5).設置線程繼承調(diào)度屬性 intpthread_attr_setinheritsched(pthread_attr_t* attr, intinheritsched);6).設置線程棧基址以及堆棧的最小尺寸大小 intpthread_attr_setstack(pthread_attr_t* stackader,size_tstacksize);7).設置線程?;穼傩?/p> intpthread_attr_setstackaddr(pthread_attr_t* attr, void* stackader);8).設置線程棧的大小屬性 intpthread_attr_setstacksize(pthread_attr_t* attr, size_tstacksize); 以上就是千鋒Linux學院的學習筆記。另附心得體會一篇: 從零基礎開始學Linux或者是轉(zhuǎn)行學習Linux,參加培訓會保證你在單位時間內(nèi)學到更多,畢竟隨著Linux行業(yè)的快速發(fā)展,未來必將會面臨更多的競爭,所以只有不遺余力的把自己打造成一把利劍,從專業(yè)度到職業(yè)素質(zhì),只有比別人更突出和優(yōu)秀,才能夠在這個相互選擇的世界當中擁有更多的選擇權(quán)利?,F(xiàn)在想 千鋒教育www.004km.cn attr, void* 中國IT職業(yè)教育領先品牌 精品課程 全程面授 要學習Linux技術,只有通過參加培訓才可以保證快速掌握所學知識和技能,所以培訓是比較靠譜的。 Linux編程培訓哪家好?千鋒教育的Linux課程專注于當前熱門的Linux相關技術,就Linux而言,內(nèi)容全面而細致的。Linux教學團隊由眾多名師打造,擁有多年教學經(jīng)驗和高超的Linux授課技巧和實戰(zhàn)視野,讓你理論和實戰(zhàn)兼得。 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 Linux網(wǎng)絡編程培訓哪家好 想知道Linux下的網(wǎng)絡編程培訓哪家好?先來了解一下什么是Linux下的網(wǎng)絡編程吧! Linux下的網(wǎng)絡編程指的是socket套接字編程,入門比較簡單。在學校里學過一些皮毛,平時就是自學玩,沒有見識過真正的socket編程大程序,比較遺憾??偢杏X每次看的時候都有收獲,但是每次看完了之后,過段時間不看,重新拾起這些知識的時候又要從頭開始,所以,在這里做個筆記也算是做個模板,以后可以直接從某一個階段開始接著玩…… 1.socket套接字介紹 socket機制其實就是包括socket, bind, listen, connect, accept等函數(shù)的方法,其通過指定的函數(shù)實現(xiàn)不同的協(xié)議(IP4,IP6等)的數(shù)據(jù)在不同層之間的傳輸和獲取等處理。其實個人理解socket就是處于應用層和TCP/IP協(xié)議之間的一個中間層,具體的數(shù)據(jù)分析,重組,拆分等操作對于應用層的網(wǎng)絡編程者來說都是不可見的,這些都有協(xié)議棧內(nèi)核實現(xiàn),應用層的網(wǎng)絡編程會通過設置socket機制中創(chuàng)建socket時參數(shù)不同,而接收或者發(fā)送不同類型的數(shù)據(jù)。 對于TCP/IP在這里就不過多的講,但是需要提及的是經(jīng)典的TCP/IP參考模型是分為4個層次:應用層,傳輸層,網(wǎng)絡互聯(lián)層,主機到網(wǎng)絡層。標準的套接字編程主要是指TCP和UDP的網(wǎng)絡編程,socket網(wǎng)絡編程的模式就是分server和client,通過server端首先建立,client端聯(lián)接進行通信。網(wǎng)絡協(xié)議棧內(nèi)核實現(xiàn)的功能主要就是在數(shù)據(jù)到達每一層時,給數(shù)據(jù)加上或者去掉協(xié)議包頭,或者進行校驗,數(shù)據(jù)重組,拆分等操作,最后得到我們想要的數(shù)據(jù)格式。 下面簡單列一下TCP/IP參考模型中主要的協(xié)議類型(圖片來自Linux網(wǎng)絡 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 編程)。 圖1 TCP/IP 參考模型的層次結(jié)構(gòu) 標準套接字分為TCP和UDP協(xié)議兩種不同type的工作流程,TCP網(wǎng)絡編程相對于UDP來說相對復雜,因為TCP是面向連接的服務,其中包括三次握手建立連接的過程,而UDP則是無連接的服務,下圖介紹了TCP服務使用socket套接字建立連接的過程,以及進行數(shù)據(jù)交互的過程。 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 圖2 TCP 建立socket通信的流程 TCP和UDP的網(wǎng)絡編程模式有兩種,一種是服務器模式,另一種是客戶端模式,因為TCP是面向連接的服務,所以在socket機制當中,TCP的服務器模式比UDP的服務器模式多了listen,accept函數(shù),TCP客戶端比UDP客戶端多了connect函數(shù)。下面是TCP和UDP網(wǎng)絡編程的兩種模式流程圖。下面將結(jié)合圖2,3,4介紹一下TCP socket的機制是如何實現(xiàn)的。 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 圖3 TCP 服務器端與客戶端通信流程 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 圖4 UDP服務器端和客戶端通信流程 以上就是千鋒Linux學院的學習筆記。另附心得體會一篇: 從零基礎開始學Linux或者是轉(zhuǎn)行學習Linux,參加培訓會保證你在單位時間內(nèi)學到更多,畢竟隨著Linux行業(yè)的快速發(fā)展,未來必將會面臨更多的競爭,所以只有不遺余力的把自己打造成一把利劍,從專業(yè)度到職業(yè)素質(zhì),只有比別人更突出和優(yōu)秀,才能夠在這個相互選擇的世界當中擁有更多的選擇權(quán)利?,F(xiàn)在想要學習Linux技術,只有通過參加培訓才可以保證快速掌握所學知識和技能,所以培訓是比較靠譜的。 Linux下的網(wǎng)絡編程培訓哪家好?千鋒教育的Linux課程專注于當前熱門的Linux相關技術,就Linux而言,內(nèi)容全面而細致的。Linux教學團隊由眾多名 千鋒教育www.004km.cn 中國IT職業(yè)教育領先品牌 精品課程 全程面授 師打造,擁有多年教學經(jīng)驗和高超的Linux授課技巧和實戰(zhàn)視野,讓你理論和實戰(zhàn)兼得。 千鋒教育www.004km.cn 呂梁培訓公司哪家好? 呂梁明陽天下拓展公司是經(jīng)呂梁市工商局和體委共同批準成立,并獲得中國登山協(xié)會相關資質(zhì)認證,專業(yè)從事戶外拓展訓練及登山、攀巖、探險、野營、野外生存等戶外運動的公司。公司現(xiàn)有戶外拓展培訓師、專職訓導員30人,均為受過高等教育的資深專業(yè)人士,有著豐富的從業(yè) 經(jīng)驗,其中5人為國家注冊企業(yè)培訓師,4人為國家戶外運動指導員和國家登山攀巖教練。公司所推薦的每一項戶外運動、戶外拓展活動都是經(jīng)過精心考察體驗設計而成,可充分滿足不同身體素質(zhì)和興趣愛好的戶外運動愛好者及企業(yè)拓展訓練的需求。 值得信賴的培訓公司: 呂梁明陽天下拓展公司具備扎實培訓理論基礎,精通指導各類戶外培訓的資深培訓師。并成為了國內(nèi)眾多知名企業(yè)的戶外體驗式培訓指定供應商。我們與客戶一起成長,并因此享有更值得信賴的培訓品質(zhì)。 在安全方面做的更好: 呂梁明陽天下拓展公司在安全方面做得更好: 1、安全原則:拓展培訓全部過程中,參加人員的人身安全始終是我們各項拓展培訓的生命線。堅持“安全第一、預防為主”的工作方針,從根本上消除一切不安全的因素,杜絕安全事故的發(fā)生。 2、安全目標:實現(xiàn)拓展培訓的安全目標,我們定位在絕對安全。(100%)把安全培育成我們?nèi)粘I畹囊环N方式、一種理念。 3、安全保障構(gòu)架:對參訓人員進行安全意識的宣傳;建立完善的安全技術保障體系;裝備為國際權(quán)威認證的專業(yè)器械;為隊員提供《活動紀律》;選派具有一定水準的培訓師;嚴格按照科學的操作方法確保培訓每個細節(jié)的安全性。 4、科學的安全管理新方法:高度警覺,精心根除一切不安全隱患;嚴格執(zhí)行培訓組織紀律,杜絕任何不安全行為和隱患;嚴密控制各種不利于安全的環(huán)境因素。 本文轉(zhuǎn)自明陽天下拓展培訓官網(wǎng),轉(zhuǎn)載請注明出處 鄭州聲樂培訓哪家好 每年有大量的大學畢業(yè)生進入有關文藝單位、中等院校以及出版、廣播影視部門從事音樂制作、編輯和教學等方面工作。根據(jù)往年就業(yè)統(tǒng)計,不少畢業(yè)生從事音樂制作人、錄音師、教師、音樂編輯等工作。為此很多學生選擇聲樂專業(yè)考入理想中的名校。在鄭州,聲樂培訓當屬河南星海文化藝術學校最為出名、專業(yè)。 河南星海文化藝術學校的聲樂(民族、美聲)專業(yè)培養(yǎng)目標:培養(yǎng)德、智、體、美全面發(fā)展,音樂教學、音樂表演、音樂創(chuàng)作、音樂研究等方面的知識和能力,能在音樂教育、群眾文化、學術研究、文化管理及表演團體從事相關工作的高層次的音樂專門人才。 主要課程:聲樂專業(yè)課、鋼琴(必修課)視唱練耳、音樂理論基礎、形體、臺詞、節(jié)奏訓練、音樂欣賞、民間音樂、中外音樂史、舞臺演唱訓練、組合、訓練、表演等。 就業(yè)方向:學生畢業(yè)后,可在各文藝團體擔任專業(yè)歌唱演員,也可以從事音樂教師、工會和其他群眾文化工作,并能在各企、事業(yè)單位、機關、部隊從事聲樂指導和宣傳、策劃等工作以及演出的編導、策劃組織工作。 河南星海文化藝術學校教師團隊由全國各大音樂學院,各大交響樂團以及藝術團體的知名專家教授擔任,保障了專業(yè)且強大的師資力量。教學經(jīng)驗豐富,方法獨到創(chuàng)新,課堂質(zhì)量有保障。此外,還聘請了來自中央音樂學院、中國音樂學院、西安音樂學院、星海音樂學院等國內(nèi)著名音樂院校眾多專家教授作為藝術顧問,定期對學校在校學員開辦大師班和講座,為學員在專業(yè)領域與人生方向上,給予正確的指導,引領學生一路前行。 河南星海文化藝術學校擁有專業(yè)化、規(guī)范化、個性化的服務,會針對學生學習程度的差異及報考方向的不同,制定一整套合理可行、科學系統(tǒng)的音樂強化課程。培訓范圍涵蓋音樂學、作曲、鋼琴、聲樂、西洋器樂、民族器樂、流行音樂、舞蹈等多個方向,已開設各音樂方向?qū)I(yè)課、樂理與視唱練耳等音樂基礎課、文化課、助教課、大師班、預科班、高考沖刺班、模擬考試等系列課程,因教學方法科學、進度安排合理、教學效果突出,深受學生們的好評。 上海c++培訓哪家好?時至今日,各行各業(yè)發(fā)展日新月異,專業(yè)人才匱乏,面對目前情況,市場需要什么C++人才,C++培訓機構(gòu)就做什么,不少C++培訓機構(gòu)還及時推出新專業(yè),較大的滿足了市場需求。為了促進學員就業(yè),一些C++培訓機構(gòu)與高端IT名企合作,保證課程前沿度。享全球高端IT認證,保IT技術金品。很多C++培訓機構(gòu)推出的優(yōu)惠政策各色各樣。但讀者們基本看重的包括有是否享終身就業(yè)服務,就業(yè)率高保障。教學內(nèi)容是否豐富,教程體系是否科學完善。參加培訓后能否達到學歷+技能雙贏,享高薪就業(yè)等等。 上海華育國際課程開設方面完全按照培訓中心要求:講師擁有內(nèi)部上崗證證書,教學使用商用設備,學生使用內(nèi)部教材,考試按照內(nèi)部題庫,教學質(zhì)量體系等均按照部培訓要求所設立。為保證教學與市場需求接軌,中心所有講師全部外聘,并且都是在合作方企業(yè)工作5年以上的優(yōu)秀工程師組成。培訓期間同時將安排學員參加部分工程實習,獲取工作經(jīng)驗。 上海華育國際根據(jù)國家的教育方針,在上級主管部門的領導和支持下,確立了以市場需求為導向,以社會需求為目標的辦學理念,面向社會常年招生。充分詮釋著管理團隊的扎實負責的辦學理念,在強化技能教育的同時,注重德育教育,不斷增強學生的職業(yè)道德意識。在督促學生完善自我的同時,不拘一格,把學生培養(yǎng)成修養(yǎng)和學養(yǎng)兼具的人才。上海華育國際組織項目研發(fā),推動成果轉(zhuǎn)化,發(fā)展高新技術產(chǎn)業(yè),加快人才培養(yǎng),促進“產(chǎn)、學、研”合作,為推動社會、經(jīng)濟、科技的發(fā)展和學校學科建設、科研開發(fā)、產(chǎn)業(yè)發(fā)展作出了貢獻,同時,也建立起學校與地方政府部門、企業(yè)緊密聯(lián)系合作的嶄新模式。 上海c++培訓哪家好?上海華育國際擁有一支由技術總監(jiān)、高級軟件項目經(jīng)理和資深軟件工程師組成的專家教學團隊;采用系統(tǒng)化的就業(yè)保障體系,入學即簽訂就業(yè)協(xié)議,畢業(yè)學生將有機會直接進入下數(shù)百家公司實習和工作;學院為學生創(chuàng)業(yè)提供全面的技術、場地、設備及費用支持等孵化服務。第二篇:Linux網(wǎng)絡編程培訓哪家好
第三篇:呂梁培訓公司哪家好?
第四篇:鄭州聲樂培訓哪家好
第五篇:上海c++培訓哪家好