版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
多個(gè)序可以同時(shí)執(zhí)操作系統(tǒng)的出現(xiàn)使計(jì)算機(jī)每次能運(yùn)行多個(gè)序并且不同的序都在單獨(dú)的進(jìn)中運(yùn)行:可以提高資源利用率。在某些序必須等待某些操作完成,例如輸入輸出,I/O操作,。公平性序?qū)τ谟?jì)算機(jī)資源擁同等的使用權(quán),操作系統(tǒng)通過劃分時(shí)間片,使這些序能夠共享計(jì)算機(jī)資源,避免了由一個(gè)序從頭到尾運(yùn)行,然后才運(yùn)行下一個(gè)序。。進(jìn)可能運(yùn)行多個(gè)進(jìn)。這樣就是人們產(chǎn)生錯(cuò)覺,叫做偽并行。時(shí)間越大,反而沒有逐一執(zhí)行拷貝的快,因?yàn)樵趦蓚€(gè)文件的進(jìn)中切換也是需要開銷的線線說有了進(jìn)為什么還要有線,為什么進(jìn)中還需要線。線是進(jìn)的執(zhí)行路徑,一個(gè)進(jìn)中至少有一個(gè)線。被調(diào)度執(zhí)行的實(shí)體線必須在某個(gè)進(jìn)中執(zhí)行多個(gè)進(jìn)共享物理內(nèi)存磁盤其他資源,同一個(gè)進(jìn)中的線共享同一個(gè)進(jìn)的內(nèi)存空間和其他資源。檢查,還在定時(shí)自動(dòng)備份,這三個(gè)任務(wù)通過3個(gè)線來完成。如果序時(shí)單線的,進(jìn)行備運(yùn)用多線第一個(gè)線用戶交互,第二個(gè)線進(jìn)行拼寫檢查,第三個(gè)用戶定時(shí)備份。享公共內(nèi)存,正在編輯的文件這3個(gè)線都可以。多線的目,工作量過少,因此導(dǎo)致線啟動(dòng)和終止時(shí)的開銷比序?qū)嶋H工作的開銷還要多。過多并發(fā)線的存在將導(dǎo)致共享有限硬件資源的開銷增大軟件線個(gè)數(shù)超過硬件線時(shí)間片上結(jié)束時(shí)被掛起(系統(tǒng)會(huì)保存該軟件線的上下文,等待下次執(zhí)行,另一個(gè)軟件線IBMSystemx3850X5(7145I19,CPU數(shù)量:2顆。windows對(duì)于多核的支持是基于該體系的(cpu。cpu多多個(gè)計(jì)算內(nèi)核集成在一個(gè)處理器中。in的酷睿處理器,奔騰雙核和amd都是cpu單個(gè)cpu多)進(jìn)行優(yōu)化處理,但是操作系統(tǒng)并不需要進(jìn)行特殊處理就可以支持。從軟件核cpuwindows是多任務(wù)多線的系統(tǒng)Linux在內(nèi)核2.0后很好的支持了多個(gè)cpu?;镜恼{(diào)度單位是線(現(xiàn)代操作系統(tǒng)中,都是以線為基本的調(diào)度單位如果序單線的那么當(dāng)序進(jìn)行I/O或?qū)懭霑r(shí),處理器就出去空閑狀態(tài)。在多線序中,如果一個(gè)線進(jìn)行I/O操作,那么另一個(gè)線可以繼續(xù)運(yùn)行。例如,人可以再蒸飯的同時(shí)I/O操作,cpu處于空閑的原因。Java運(yùn)行效率。舉例:web服務(wù)器一般都是具備多個(gè)處理器可以殺毒,為什么可以同時(shí)進(jìn)行?這就是線的意義所在。2:ifelse3:線可以解決這個(gè)問題,創(chuàng)建3條線即Java創(chuàng)建線的方ThreadThread類是java中用來表示線的類,需要?jiǎng)?chuàng)建線就需要?jiǎng)?chuàng)建Thread類Java.lang.Threadlang包,ObjectRunnable接口如何自定義代碼中,自定義一個(gè)線流:classclassMyThreadextendsThreadpublicvoidrun()for(inti=0;i<500;i++){System.out.println("myThread;"+i);}}}publicclassDemo1publicstaticvoidmain(String[]args)MyThreadmy=newMyThread();for(inti=0;i<500;i++){System.err.println("main:"+i);}}},一個(gè)時(shí)刻只有一個(gè)線在運(yùn)行(多核不同,cpu做快速切換,看上去同時(shí)運(yùn)行publicstaticvoidmain(String[]args)}2:main()啟動(dòng)新的線,新線啟動(dòng)期間main()2:main()啟動(dòng)新的線,新線啟動(dòng)期間main()線publicstaticvoidmain(String[]args)MyThreadmy=newMyThread();}2:線執(zhí)行原實(shí)是)1:main方法也有一個(gè)線叫做主線main函數(shù)創(chuàng)建一個(gè)線2:回收機(jī)制也是一個(gè)線gc是一個(gè)4線細(xì)節(jié)1Thread實(shí)例就是一個(gè)對(duì)象,Thread也有變量和方法,也是在堆上生存和滅1:main方法中使用MyThread類調(diào)用了2次start方法,啟動(dòng)了2個(gè)線,一旦線的run方法執(zhí)行完畢后,該線就不能重新再啟動(dòng).該線已經(jīng)publicclassDemo2publicstaticpublicclassDemo2publicstaticvoidmain(String[]args)newThread()publicvoidrun()for(inti=0;i<100;i++){}}for(inti=0;i<100;i++){System.err.println("main:"+i);}}}extendsThreadpublicvoidrun()while(true) }}}classTalkextendsThreadpublicvoidrun()while(true)}}}publicclassDemo3publicstaticvoidmain(String[]args){v=new Talkt=new8:線qqfor(inti=0;i<100;i++){System.err.println("main:"+i);}}}Runnable創(chuàng)建線的第二種方式.使用Runnable接口3:通過Thread類建立線對(duì)packagepackagepublicclassDemo1publicstaticvoidmain(String[]args){MyRunmy=newMyRun();Threadt1=newfor(inti=0;i<200;i++){System.out.println("main:"+i);}}}classMyRunimplementsRunnablepublicvoidrun()for(inti=0;i<200;i++){System.err.println("MyRun:"+i);}Runnablerun}}}Thread類可以理解為一個(gè)工人,Runnable的實(shí)現(xiàn)類的對(duì)象就是這個(gè)工人的工作(通過構(gòu)造方法傳遞).Runnable接口中只有一個(gè)方法run方法,該方法中定義的事會(huì)被新線執(zhí)行的代碼.RunnableThread的構(gòu)造時(shí),實(shí)際上就是讓給Threadrun方法,Thread一項(xiàng)任務(wù).Runnable實(shí)現(xiàn)線的練線的常見方線的常見方Thread(Stringname)初始化線的名字 setName(Stringname)設(shè)置線對(duì)象名 返回線的標(biāo)識(shí)同一個(gè)線對(duì)象的id不同 默認(rèn)線的優(yōu)先級(jí)是5setPriority(intnewPriority)設(shè)置線的優(yōu)先級(jí) 雖然設(shè)置了線的staticintMAX_PRIORITYstaticintMIN_PRIORITYstaticint classThreadDemoextendsThreadpublicclassThreadDemoextendsThreadpublicThreadDemo()}publicThreadDemo(Stringname)}publicvoidrun()for(inti=0;i<50;i++){System.out.println(super.getName()+"i:"+i+"this.getName(id:this.getId(級(jí)+}}}publicclassDemo4publicstaticvoidmain(String[]args)1設(shè)置線1.1線ThreadDemoth1=newSystem.out.println(th1.getName())如果沒有顯示的給線設(shè)置名1.2線ThreadDemoth2newThreadDemo("one");/通過構(gòu)造設(shè)置名稱System.err.println(th2.getName());//get方法獲取名稱th2.setName("threadDemo1");//set方法設(shè)置名稱//2設(shè)置線優(yōu)先級(jí)1~10System.out.println(th1.getPriority())如果沒有指定線優(yōu)先2.1指定最大優(yōu)先級(jí)Thread.MAX_PRIORITY102.2指定最小優(yōu)先級(jí)Thread.MIN_PRIORITY1實(shí)現(xiàn)線優(yōu)先級(jí)只是一個(gè)建議,不能直接決定線3獲取線的標(biāo)識(shí),返回該線System.out.println(th1.getId());// ID是一個(gè)正的long數(shù),在創(chuàng)建該線時(shí)生成。 并終生不變。線終止時(shí),該 注意:沒有設(shè)置線id返回CPU正在執(zhí)行的線}}}線的狀線的狀1:new創(chuàng)建線對(duì)2:調(diào)用線的start方3cpu資源1:線執(zhí)行完可運(yùn)行狀態(tài):調(diào)用start方法線進(jìn)入可運(yùn)行狀態(tài),具備運(yùn)行資格,沒有運(yùn)行權(quán)。運(yùn)行狀態(tài):線調(diào)度序從可運(yùn)行池中選擇一個(gè)線開始運(yùn)行。線正在執(zhí)行死狀態(tài):線的run方法完成。如果在一個(gè)死去的線上調(diào)用start()方法,會(huì)拋出java.lang.IllegalThreadStateException異常。Thread.sleep(longmillis)Thread.sleep(longmillisintnanos)靜態(tài)publicclassDemo4publicpublicclassDemo4publicstaticvoidmain(String[]args)newfor(inti=0;i<500;i++){System.out.println(Thread.currentThread().getName()+":"+}}}classMyThreadextendsThread//privateStringpublicMyThread()}publicMyThread(Stringname)}publicvoidrun()try{}catch(InterruptedExceptione)}forfor(inti=0;i<500;i++)System.err.println("myThrad:"+if(i==100)try}catch(InterruptedExceptione)}}}}}classclassTicketextendsThreadprivateinttickets=Ticket()}Ticket(Stringname)}publicvoidrun()while(true)if(tickets>0)System.out.println(this.getName(窗口@銷售:tickets號(hào)票}else}}}}publicclassDemo5publicstaticvoidmain(String[argsTickett1=newTicket("一號(hào)");Tickett2=newTicket("二號(hào)}}}}publicclassDemo5publicstaticvoidmain(String[argsTickett1=newTicket("一號(hào)");Tickett2=newTicket("二號(hào)");}}賣各自的100??梢允褂檬褂胹tatic。classTicketextendsclassTicketextendsThreadprivatestaticinttickets=Ticket()}Ticket(Stringname)}publicvoidrun()while(true)if(tickets>0)System.out.println(this.getName(窗口@銷售:tickets號(hào)票}else}}}}publicclassDemo5publicstaticvoidmain(String[argsTickett1=newTicket("一號(hào)");Tickett2=newTicket("二號(hào)");}}ifif(tickets>0)System.out.println(this.getName(窗口@銷售:tickets號(hào)}tickets值為100,線1執(zhí)行完if(tickets>0)代碼,執(zhí)行完輸出語句打印出票數(shù)代碼,此時(shí)ticket仍為100,線2執(zhí)行完上面的兩行代碼,打印出100票數(shù)。classclassMyTicketimplementsRunnableinttickets=publicvoidrun()while(true)if(tickets>0)try}catch(InterruptedExceptione)}tickets號(hào)票");}else}}}}publicclassDemo6publicstaticvoidmain(String[]args){MyTicketmt=newMyTicket();Threadt1=newThread(mt);Threadt2=newThread(mt);Threadt3=newThread(mt);Threadt4=newThread(mt);}}Thread.slee(100synchronizedsynchronized(對(duì)象}classclassTicketextendsThread{privatestaticinttickets=100;Objectobj=newObject();Ticket(){}Ticket(Stringname)}publicvoidrun()while(true)synchronized(obj)if(tickets>0){System.out.println(this.getName(窗口@銷售:"+號(hào)票}else}}}}}publicclassDemo5publicstaticvoidmain(String[argsTickett1=newTicket("一號(hào)");Tickett2=newTicket("二號(hào)");}}一樣,所以還是沒有解決多線的線安全問題classTicketextendsThreadclassTicketextendsThreadprivatestaticinttickets=static objnewObject();//使用靜態(tài),讓多個(gè)線Ticket()}Ticket(Stringname)}publicvoidrun()synchronized(obj)}while(true)synchronized(obj)if(tickets>0)System.out.println(this.getName(窗口@銷售:號(hào)票}else}}}}}publicclassDemo5publicstaticvoidmain(String[argsTickett1=newTicket("一號(hào)");Tickett2=newTicket("二號(hào)");}}如果采用靜態(tài)變量來票數(shù)那么導(dǎo)致該變量的周期很長(zhǎng),當(dāng)票為0都沒沒有釋放該變量。缺點(diǎn):不太符合面向?qū)ο蟮木幩枷?。也?chuàng)建了多余的鎖對(duì)象。以解決問題,但是static的周期太長(zhǎng),并且創(chuàng)建了多余的鎖對(duì)象。2startIllegalThreadStateException-如果線已經(jīng)啟動(dòng)Runnable接口線安全問題解決方綜上描述,使用Thread創(chuàng)建線的方式較麻煩,所以可以采用第二種方式。實(shí)publicclasspublicclassDemo6publicstaticvoidmain(String[]args){MyRunTickmt=newMyRunTick();Threadt1newThread(mt一號(hào)窗口");Threadt2newThread(mt二號(hào)窗口Threadt3newThread(mt三號(hào)窗口Threadt4newThread(mt四號(hào)窗口");}}classMyRunTickimplementsRunnableprivateintticket=publicvoidrun()while(true)synchronized(this)if(ticket>0)"@賣this.ticket號(hào)票try{}catch(InterruptedExceptione)}}}else"@不好意思去找黃牛吧}}}}}總結(jié)同步的前提必須有兩個(gè)或者兩個(gè)以上線,多個(gè)線使用的是同一個(gè)鎖.就是在一個(gè)線執(zhí)行完賣票時(shí),要保證其他線進(jìn)入之前執(zhí)行完.線同步的前提必須是多個(gè)線使用同一個(gè)線同步的特點(diǎn)解決了線安全問題,(一個(gè)共享資源被多個(gè)線同時(shí),就可能出現(xiàn)線安全問題)CPU的時(shí)間片,沒有對(duì)象鎖也無法執(zhí)行單線無需同步線同步的弊端:多個(gè)線都需要判斷鎖較為消耗資源(加了鎖之后,一個(gè)線進(jìn)入該方法后,就持有了鎖,在釋放鎖之前,其他線即使擁有cpu時(shí)間,沒有對(duì)象鎖也無法執(zhí)行,只能等到該線降低序的運(yùn)行效率。run方法中每個(gè)java對(duì)象都有一個(gè)鎖對(duì)象.而且只有一把類名對(duì)象因?yàn)橐粋€(gè)對(duì)象只有一個(gè)鎖,所有如果一個(gè)線獲得了這個(gè)鎖,其他線就不能獲得了,代碼(不可以進(jìn)入該對(duì)象的任何同步方法。釋放鎖指的是持有該鎖的線退出同步方法,此時(shí),其他線可以進(jìn)入該對(duì)象上的同步方法。6:如果線進(jìn)入sleep()睡眠狀態(tài),該線會(huì)繼續(xù)持有鎖,不會(huì)釋放函數(shù)需要被對(duì)象調(diào)用,那么函數(shù)都有一個(gè)所屬對(duì)象,是this,所以同步函數(shù)使用的鎖thispublicpublicsynchronizedvoidmethod1()}該方法就是同步方法同步是需要鎖的,同步方法是用什么鎖?函數(shù)那么函數(shù)都有一個(gè)所屬對(duì)象 ,是,所以同步數(shù)使用鎖是s如果同步函數(shù)被靜態(tài)修飾后使用的是什么鎖?由于靜態(tài)方法中不可以定義this靜態(tài)進(jìn)內(nèi)publicpublicsynchronizedstaticvoidmethod2()}publicsynchronizedpublicsynchronizedvoidmethod1()}publicvoidmethod1()synchronized(this)}}classclassSingleprivatestaticSinglesin=privateSingle()}publicstaticsynchronizedSinglegetInstance()if(sin==null)sin=new}return}}classclassSingleprivatestaticSinglesin=privateSingle()}publicstaticSinglegetInstance()synchronizedsynchronized(Single.class)if(sin==null)sin=new}return}}}發(fā)現(xiàn)上述的同步代碼塊和同步函數(shù)是一樣的。只需要當(dāng)sin為null的時(shí)候進(jìn)行線classclassSingleprivatestaticSinglesin=privateSingle()}publicstaticSinglegetInstance()if(sin==null)synchronized(Single.class)if(sin==null)sin=new}}}return}}52:線T1獲得鎖L1,線T2獲得鎖L2,然后T1申請(qǐng)獲得鎖L2,同時(shí)T2申請(qǐng)獲得publicclasspublicclassDeadLockpublicstaticvoidmain(String[]args)newThread(newRunnable(創(chuàng)建線publicvoidrun()synchronized("刀叉"){ 你不給我筷子我就不給你刀叉try}catch(InterruptedExceptione){}synchronized("筷子.getName(給你刀叉}}}}, newThread(newRunnable(){publicvoidrun()人synchronized("筷子"){ 你先給我刀叉我再給你筷子try}catch(InterruptedExceptione){}synchronized("刀叉.getName(好吧你}}} 人}}線間通信其實(shí)就是多個(gè)線在操作同一個(gè)資源,但操作動(dòng)作不同whilenotifyAll喚醒,否者容易只用notify容易出現(xiàn)只喚醒本方線情況,導(dǎo)致序中的所有線都在等待。例如:有一個(gè)數(shù)據(jù)空間,劃分為兩個(gè)部分,一部分人的,一部分,我們開啟一個(gè)線,不停地想其中和(生產(chǎn)者,開啟另一個(gè)線從數(shù)據(jù)空 publicclassDemo10publicstaticvoidmain(String[]args)publicclassDemo10publicstaticvoidmain(String[]args){p=new Producerpro=newProducer(p);Consumercon=newConsumer(p);Threadt1newThread(pro生產(chǎn)者");Threadt2newThread(con消費(fèi)者");}} {StringString}classProducerimplementsRunnable{publicProducer()}publicthis.p=}p)publicvoidrun(){inti=0;while(true){if(i%2==0)="jack";p.gender="man";}= p.gender女}}}}classConsumerimplementsRunnable{publicConsumer()}publicthis.p=}p)publicvoid}}}}classConsumerimplementsRunnable{publicConsumer()}publicthis.p=}p)publicvoidrun()while(true)System.out.println("name:"++"---gnder:"}}}顯然屏幕輸出了man這樣的結(jié)果是出現(xiàn)了線安全問題。所以需要使用packagepackagepublicclassDemo10publicstaticvoidmain(String[]args){p=new Producerpro=newProducer(p);Consumercon=newConsumer(p);Threadt1newThread(pro生產(chǎn)者");Threadt2newThread(con消費(fèi)者");}} {StringString}classProducerimplementsRunnablepublicProducer()}public p)this.p=}publicvoidrun(){inti=0;while(true){synchronized(p)if(i%2==0)="jack";p.gender="man";}= p.gender女}}}}classConsumerimplementsRunnable{publicConsumer()}public p)this.p=}publicvoidrun()}}publicpublicclassDemo10publicstaticvoidmain(String[]args){p=new Producerpro=newProducer(p);Consumercon=newConsumer(p);Threadt1newThread(pro生產(chǎn)者");Threadt2newThread(con消費(fèi)者");}} {StringStringpublicsynchronizedvoidset(Stringname,Stringgender)=this.gender=}publicsynchronizedvoidread(){System.out.println("name:"++"----gender:"+whilewhile(true)synchronized(p)System.out.println("name:"++"---gnder:"}}}}jack女或者man}classProducerimplementsRunnable{publicProducer()}public p)this.p=}publicvoidrun(){inti=0;while(true){if(i%2==0)p.set("jack",}else 女}}}classConsumerimplementsRunnable{publicConsumer()}public p)this.p=publicvoidrun()while(true){}}}5.1.1.有獲得執(zhí)行權(quán),并持有了相同的監(jiān)視器(鎖)notify為止。packagepackagepublicclassDemo10publicstaticvoidmain(String[]args){p=new Producerpro=newProducer(p);Consumercon=newConsumer(p);Threadt1newThread(pro生產(chǎn)者");Threadt2newThread(con消費(fèi)者");}}//使 Stringname;Stringgender;booleanflag=publicsynchronizedvoidset(Stringname,Stringgender)if(flag)try}catch(InterruptedExceptione)}}=name;this.gender=gender;flag=true;}publicsynchronizedvoidread()if(!flag)try}catch(InterruptedExceptione)}}System.out.println("name:"++"----gender:"flag=false;}}classProducerimplementsRunnable{publicProducer()}public p)this.p=}publicvoidrun(){inti=0;while(true){if(i%2==0)p.set("jack",}else 女}}}classConsumerimplementsRunnable{publicConsumer()}public p)this.p=}publicvoidrun()while(true){}}}}waitnotif(,notifyAll()都使用在同步中,因?yàn)橐獙?duì)持有監(jiān)視器(鎖)的線操作,所以要使用在同Object類中waitsleep()正常終止當(dāng)線的run()執(zhí)行完畢,線注意:Stop方法已過時(shí),就不能再使用這個(gè)方法。開啟多線運(yùn)行運(yùn)行代碼通常是循環(huán)結(jié)構(gòu)只要控制住循環(huán)就可以讓run方法結(jié)束,線就結(jié)束。classclassStopThreadimplementsRunnable{publicbooleantag=true;publicvoidrun()inti=while(tag){"i:"+,}}}publicclassDemo8publicstaticvoidmain(String[argsStopThreadst=newStopThread();Threadth=newThread(st,"線1");for(inti=0;i<100;i++)if(i==50){System.out.println("maini:"+i);st.tag=false;}}}},}}}publicclassDemo8publicstaticvoidmain(String[argsStopThreadst=newStopThread();Threa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三人防調(diào)技術(shù)、撞網(wǎng)球處理技術(shù) 說課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊(cè)
- 工業(yè)制造行業(yè)技術(shù)工程職位
- 2025年招商工作計(jì)劃
- 2025年班干部個(gè)人工作計(jì)劃范文
- 旅行社前臺(tái)接待總結(jié)
- 美容行業(yè)美工工作總結(jié)
- 食品行業(yè)工程師工作概要
- 娛樂傳媒行業(yè)技術(shù)工作匯編
- 酒店管理工作中的物料采購
- Unit 4 Preparing for the Topic Function 說課稿-2024-2025學(xué)年仁愛科普版(2024)七年級(jí)英語上冊(cè)
- 山東省濟(jì)寧市2023-2024學(xué)年第一學(xué)期期中質(zhì)量檢測(cè)高二數(shù)學(xué)試題含答案
- 醫(yī)療器械委托生產(chǎn)前綜合評(píng)價(jià)報(bào)告
- 2024年自然資源部直屬企事業(yè)單位公開招聘歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2023年吉林省中考滿分作文《感動(dòng)盈懷歲月暖》2
- 廣東深圳市龍崗區(qū)產(chǎn)服集團(tuán)招聘筆試題庫2024
- 公路施工表格
- 2024至2030年中國(guó)昆明市酒店行業(yè)發(fā)展監(jiān)測(cè)及市場(chǎng)發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 《中國(guó)心力衰竭診斷和治療指南2024》解讀(總)
- 科學(xué)新課程標(biāo)準(zhǔn)中核心素養(yǎng)的內(nèi)涵解讀及實(shí)施方略講解課件
- 輪扣式高支模施工方案
- 醫(yī)療質(zhì)量信息數(shù)據(jù)內(nèi)部驗(yàn)證制度
評(píng)論
0/150
提交評(píng)論