




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)六 簡(jiǎn)單shell一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的shell命令解釋器,加深對(duì)Windows系統(tǒng)調(diào)用的理解,同時(shí)了解管道命令的設(shè)計(jì)實(shí)現(xiàn)機(jī)制。二、實(shí)驗(yàn)內(nèi)容在Windows平臺(tái)上實(shí)現(xiàn)Linux的某些命令: 展開(kāi)指定目錄:myls dir 文件查看和連接:mycat -n file1 file2 顯示文檔的開(kāi)頭:myhead number filename 排序:mysort file1 file2 統(tǒng)計(jì)可執(zhí)行文件執(zhí)行時(shí)間:mytime program1.exe 復(fù)制文件:mycp a b 自定義出錯(cuò)提示命令:mysl分別對(duì)應(yīng)于Linux系統(tǒng)中的ls cat head sort time cp s
2、l命令,在具體設(shè)計(jì)實(shí)現(xiàn)的時(shí)候用法做了簡(jiǎn)化。其中,mycat、myhead和mysort為三條管道命令,例如:mysort file1.txt file2.txt | myhead 6 | mycat -n三、程序設(shè)計(jì)與實(shí)現(xiàn)1、程序中使用的結(jié)構(gòu)體(1) 處理輸入命令字符串的自定義結(jié)構(gòu)體CMD,定義如下struct CMD int cmdposi10;/記錄每條管道命令在命令字符串中是第幾個(gè)字符串int lastcmdposi; /最后一條命令是第幾條命令int subcmdparameter10;/每條管道命令所帶的參數(shù)個(gè)數(shù)char* subcmd1010;/記錄命令行中的每一個(gè)字符串cmd;對(duì)
3、于輸入命令:mysort file1.txt file2.txt | myhead 6 | mycat n字符串的位置: 0 1 2 3 4 5 6 7 8cmdposi: cmdposi0=0 cmdposi1=4 cmdposi2=7subcmd0: mysort file1.txt file2.txtsubcmdsubcmd1: myhead 6subcmd2: mycat n(2) 創(chuàng)建進(jìn)程時(shí),PROCESS_INFORMATION結(jié)構(gòu)返回有關(guān)新進(jìn)程及其主線程的信息。其結(jié)構(gòu)定義如下:typedef struct _PROCESS_INFORMATION HANDLE hProcess;
4、/新創(chuàng)建進(jìn)程的句柄 HANDLE hThread;/新創(chuàng)建進(jìn)程的主線程的句柄 DWORD dwProcessId;/新創(chuàng)建進(jìn)程的標(biāo)識(shí) DWORD dwThreadId;/新創(chuàng)建進(jìn)程的主線程的標(biāo)識(shí) PROCESS_INFORMATION, *LPPROCESS_INFORMATION;(3) 獲取系統(tǒng)時(shí)間時(shí),使用到SYSTEMTIME結(jié)構(gòu)體,其定義如下:typedef struct _SYSTEMTIME WORD wYear;/年WORD wMonth;/月WORD wDayOfWeek;/星期WORD wDay;/天WORD wHour;/小時(shí)WORD wMinute;/分鐘WORD wSe
5、cond;/秒WORD wMilliseconds;/毫秒 SYSTEMTIME, *PSYSTEMTIME;(4) 在調(diào)用函數(shù)FindFirstFile、FindNextFile時(shí),將找到的文件的信息存儲(chǔ)在win32_FIND_DATA結(jié)構(gòu)體中。typedef struct _WIN32_FIND_DATA DWORD dwFileAttributes;/文件屬性 FILETIME ftCreationTime;/文件創(chuàng)建時(shí)間 FILETIME ftLastAccessTime;/文件最后一次訪問(wèn)時(shí)間 FILETIME ftLastWriteTime;/文件最后一次修改時(shí)間 DWORD nF
6、ileSizeHigh;/文件長(zhǎng)度高32位 DWORD nFileSizeLow;/文件長(zhǎng)度低32位 DWORD dwReserved0;/系統(tǒng)保留 DWORD dwReserved1;/系統(tǒng)保留 TCHAR cFileNameMAX_PATH;/長(zhǎng)文件名 TCHAR cAlternateFileName14;/8.3格式文件名 WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;(5) FILETIME結(jié)構(gòu)體用來(lái)記錄文件時(shí)間,該結(jié)構(gòu)是表示100納秒間隔數(shù)為64位值從1601年一月1日。typedef struct _FILETIME
7、DWORD dwLowDateTime;/低32位 DWORD dwHighDateTime;/高32位 FILETIME, *PFILETIME, *LPFILETIME;2、使用的主要Windows API(1) CreateNamedPipe()函數(shù)作用:創(chuàng)建命名管道調(diào)用格式:HANDLE WINAPI CreateNamedPipe(LPCTSTR lpName,/管道名稱DWORD dwOpenMode,/管道打開(kāi)方式DWORD dwPipeMode,/管道數(shù)據(jù)組織方式DWORD nMaxInstances,/管道最大實(shí)例量DWORD nOutBufferSize,/輸出緩沖區(qū)長(zhǎng)度D
8、WORD nInBufferSize,/輸入緩沖區(qū)長(zhǎng)度DWORD nDefaultTimeOut,/默認(rèn)等待時(shí)間LPSECURITY_ATTRIBUTES lpSecurityAttributes/安全屬性);說(shuō)明:調(diào)用成功返回管道的句柄,失敗返回?zé)o效句柄值。(2) ConnectNamedPipe()函數(shù)作用:管道創(chuàng)建者與客戶進(jìn)行連接調(diào)用格式:BOOL WINAPI ConnectNamedPipe(HANDLE hNamedPipe,/命名管道的句柄LPOVERLAPPED lpOverlapped/重疊屬性);說(shuō)明:如果lpOverlapped為NULL,那么,若管道已經(jīng)連接,就返回TR
9、UE,若發(fā)生錯(cuò)誤,或者管道已經(jīng)連接,就返回0;如果lpOverlapped有效,就返回零。(3) WaitNamedPipe()函數(shù)作用:客戶等候與管道創(chuàng)建者建立連接調(diào)用格式:BOOL WINAPI WaitNamedPipe(LPCTSTR lpNamedPipeName,/將要連接的管道名稱DWORD nTimeOut/等待時(shí)間,以秒為單位);說(shuō)明:當(dāng)管道創(chuàng)建者已調(diào)用ConnectNamePipe()函數(shù)等待與一個(gè)客戶連接時(shí),該函數(shù)成功返回非0,如果失敗,或者管道不存在,則返回0。(4) DisconnectNamedPipe()函數(shù)作用:管道創(chuàng)建者斷開(kāi)與一個(gè)客戶連接的命名管道調(diào)用格式:B
10、OOL WINAPI DisconnectNamedPipe(_In_ HANDLE hNamedPipe);說(shuō)明:hNamedPipe為要斷開(kāi)管道的句柄,非0表示成功,0表示失敗。(5)其他的一些API已經(jīng)在之前的四個(gè)實(shí)驗(yàn)中詳細(xì)介紹過(guò),故在此不做贅述。有CreateProcess()、WaitForSingleObject()、GetSystemTime()、FindFirstFile()、FindNextFile()、CreateFile()、ReadFile()、WriteFile()、GetFileTime()、SetFileTime()、CreateDirectory()等。四、實(shí)驗(yàn)
11、結(jié)果及分析1、實(shí)驗(yàn)結(jié)果圖一 雙管道命令如上圖一所示,首先顯示file1.txt和file2.txt的內(nèi)容,myhead命令取前3行輸出,mysort命令則是將那3行內(nèi)容排序后再輸出,接著mycat命令最后加上行標(biāo)再次輸出。圖二 單管道命令如上圖二所示,首先顯示file1.txt和file2.txt的內(nèi)容,mysort命令將其排序后輸出,接著myhead命令取其前3行輸出。圖三 mytime命令、myls命令如上圖三所示,mytime命令可以計(jì)算可執(zhí)行程序的執(zhí)行時(shí)間,myls命令可以展開(kāi)指定目錄,并顯示文件名稱、創(chuàng)建時(shí)間、修改時(shí)間和文件大小。圖四 mycp命令如上圖四所示,mycp命令其實(shí)就是實(shí)
12、驗(yàn)五的任務(wù),在將其收錄進(jìn)我們shell中。圖五 mysl命令如上圖五所示,在Linux系統(tǒng)中,ls命令是很常用的,所以程序員一旦不小心敲錯(cuò)了,誤寫成sl也是情有可原的,這時(shí)Linux的terminal會(huì)顯示一輛跑動(dòng)的小火車,以此提示程序員。上述mysl命令的設(shè)計(jì)也是基于此,這也使得我們的shell變得生動(dòng)有趣。2、實(shí)驗(yàn)分析(1)UNIX系統(tǒng)進(jìn)程之間的通信方式簡(jiǎn)介以及對(duì)比管道通信:管道通信允許進(jìn)程之間按照FIFO方式進(jìn)行傳輸數(shù)據(jù),一些進(jìn)程用write命令向管道寫入數(shù)據(jù),另一些進(jìn)程用read命令從管道中讀數(shù)據(jù),且彼此之間同步執(zhí)行,管道通信是進(jìn)程使用文件系統(tǒng)中文件進(jìn)行的,只要通信的雙方基本同步,可認(rèn)
13、為這個(gè)文件是無(wú)限大的。無(wú)名管道是一個(gè)臨時(shí)文件,當(dāng)文件被關(guān)閉后,文件就不復(fù)存在了,它是提供給同族進(jìn)程之間使用的通信辦法。有名管道則是實(shí)現(xiàn)了無(wú)家族關(guān)系進(jìn)程之間的通信,任何知道管道名字的進(jìn)程都可以打開(kāi)使用,有名管道文件一旦被創(chuàng)建后,磁盤上有一個(gè)對(duì)應(yīng)的目錄項(xiàng)和索引節(jié)點(diǎn),它與普通文件類似,是通過(guò)路徑名存取的,只要這種文件不顯示刪除,它就永遠(yuǎn)存在,只是文件長(zhǎng)度為零。信號(hào)量:信號(hào)量機(jī)制的功能是比較強(qiáng)的,它提供了信號(hào)量集合。這種機(jī)制是通過(guò)P、V操作原語(yǔ)實(shí)現(xiàn)的,每次只進(jìn)行單位數(shù)據(jù)的交互,通信效率比較低。消息緩沖&共享內(nèi)存:采用消息緩沖和共享內(nèi)存區(qū)是,進(jìn)程之間可以進(jìn)行大批數(shù)據(jù)的交互。其中,信號(hào)量、消息緩沖和共享內(nèi)
14、存區(qū)都屬于UNIX系統(tǒng)V的交互進(jìn)程通信使用的資源,又成IPC資源。IPC屬雞的數(shù)據(jù)結(jié)構(gòu)在進(jìn)程之間請(qǐng)求IPC資源(信號(hào)量、消息隊(duì)列和共享內(nèi)存區(qū))(2)Windows對(duì)于管道通信的設(shè)計(jì)機(jī)制簡(jiǎn)介Windows最大的特點(diǎn)是建立一個(gè)簡(jiǎn)單的客戶機(jī)/服務(wù)器程序設(shè)計(jì)體系,在這個(gè)體系結(jié)構(gòu)中,在客戶機(jī)與服務(wù)器之間,數(shù)據(jù)既可以單向傳遞,也可雙向流動(dòng)。對(duì)命令管道服務(wù)器和客戶機(jī)來(lái)說(shuō),兩者的區(qū)別在于:服務(wù)器是唯一一個(gè)有權(quán)創(chuàng)建命名管道的進(jìn)程,也只有它才能接受管道客戶機(jī)的連接請(qǐng)求。對(duì)一個(gè)客戶機(jī)應(yīng)用來(lái)說(shuō),它只能同一個(gè)現(xiàn)成的命名管道服務(wù)器建立連接。在客戶機(jī)應(yīng)用和服務(wù)器應(yīng)用之間,一旦建立好連接,兩個(gè)進(jìn)程都能使用標(biāo)準(zhǔn)的Win32函數(shù)
15、,在管道上進(jìn)行數(shù)據(jù)的讀取與寫入。(3)客戶與服務(wù)器(管道創(chuàng)建者)之間使用管道通信的步驟:a.建立連接,服務(wù)端通過(guò)函數(shù)CreateNamedPipe()創(chuàng)建一個(gè)命名管道的示例并返回用于今后操作的句柄。客戶端通過(guò)調(diào)用WaitNamedPipe()使服務(wù)進(jìn)程等待來(lái)自客戶的示例連接,如果在超時(shí)值變?yōu)?之前,有一個(gè)管道可以為連接使用,則WaitNamePipe()將返回TRUE,并通過(guò)CreateFile()來(lái)呼叫服務(wù)端的連接。此時(shí)服務(wù)端將接受客戶端的連接請(qǐng)求,成功建立連接,服務(wù)端ConnectNamedPipe()返回TRUE,客戶端CreateFile()將返回一指向管道文件的句柄。b.通信實(shí)現(xiàn),連
16、接建立之后,客戶端與服務(wù)器使用得到的管道文件句柄通過(guò)調(diào)用WriteFile()和ReadFile(),彼此之間進(jìn)行信息交換。c.連接終止,當(dāng)客戶端與服務(wù)端的通信結(jié)束,客戶端調(diào)用CloseHandle()斷開(kāi)連接;而服務(wù)端接著調(diào)用DisconnectNamedPipe()。(4)實(shí)驗(yàn)設(shè)計(jì)簡(jiǎn)介對(duì)于管道命令,本shell中只有myhead、mycat、mysort這三個(gè)管道命令。相互協(xié)作可以實(shí)現(xiàn)管道(當(dāng)然,這三個(gè)命令也可以單獨(dú)使用),就拿myhead來(lái)說(shuō),它的調(diào)用形式只有如下四種形式:* | myhead 3 | * myhead 3 file1.txt* | myhead 3myhead 3 fi
17、le1.txt | *對(duì)于此,設(shè)置兩個(gè)標(biāo)記 LeftMycatPipeFlag、LeftMysortPipeFlag 用來(lái)記錄myhead命令前面是否出現(xiàn)了管道,同時(shí)設(shè)置標(biāo)記 islastcmd 來(lái)記錄 myhead 是否為最后一條子命令。這樣就可以通過(guò)這三個(gè)標(biāo)志來(lái)分情況處理。具體設(shè)計(jì)實(shí)現(xiàn)見(jiàn)代碼:對(duì)于命令“mysort file1.txt | myhead 6 | mycat n”來(lái)說(shuō):LeftMycatPipeFlag = find_left_mycat_pipe();LeftMysortPipeFlag = find_left_mysort_pipe();int existence = L
18、eftMycatPipeFlag | LeftMysortPipeFlag;/Judge the existence of left pipeif(existence=1 & islastcmd=0) /eg: mycat -n file1.txt | myhead 3 | mysort /get data from pipeif(LeftMycatPipeFlag = 1)get_left_mycat_pipe();else if(LeftMysortPipeFlag = 1)get_left_mysort_pipe();/create pipe, place datacreate_myhe
19、ad_pipe();else if(existence=0 & islastcmd=1) /eg: myhead 3 file1.txt/process data ,then printprocess_file_print();else if(existence=1 & islastcmd=1) /eg: mycat -n file1.txt | myhead 3/get data from pipe,then printif(LeftMycatPipeFlag = 1)get_left_mycat_pipe();else if(LeftMysortPipeFlag = 1)get_left_
20、mysort_pipe();else if(existence=0 & islastcmd=0) /eg: myhead 3 file1.txt | mycat -n /process data ,put into bufferprocess_file_into_buffer();/create pipe, place datacreate_myhead_pipe();管道通信原理圖如下所示: (5)shell各部分說(shuō)明- shell 主控程序 400行 - 對(duì)輸入的命令進(jìn)行處理,為各個(gè)命令創(chuàng)建進(jìn)程,運(yùn)行結(jié)束時(shí)終止進(jìn)程- myls 展開(kāi)指定目錄 200行 -使用格式:myls dir參數(shù)說(shuō)明:
21、若dir不為“.”,則展開(kāi)dir,否則展開(kāi)當(dāng)前目錄,顯示文件創(chuàng)建時(shí)間、最后修改時(shí)間、大小等基本屬性- mycat 文本文件查看和連接 400行 -使用格式:mycat -n file1 file2 參數(shù)說(shuō)明:由1開(kāi)始對(duì)所有輸出的行數(shù)編號(hào): -n- myhead 顯示文檔的開(kāi)頭 300行 -使用格式:myhead number filename參數(shù)說(shuō)明:number為要顯示的行數(shù)- mysort 排序 300行 -使用格式:mysort file1 file2 參數(shù)說(shuō)明:命令用于將所有文件內(nèi)容按第一列來(lái)排序(若第一列相同,則看第二列)- mycp 復(fù)制文件 150行 -使用格式:mycp sou
22、r_dir des_dir參數(shù)說(shuō)明:sour_dir為源目錄,des_dir為新創(chuàng)建的目錄。- mytime 統(tǒng)計(jì)可執(zhí)行文件執(zhí)行時(shí)間 100行 -使用格式:mytime program1.exe參數(shù)說(shuō)明:參數(shù)為一個(gè)可執(zhí)行文件- mysl 錯(cuò)誤提示 400行 -使用格式:mysl說(shuō)明:在Linux系統(tǒng)中,ls命令是很常用的,經(jīng)常會(huì)誤寫成sl,這時(shí)shell會(huì)顯示一輛跑動(dòng)的小火車,以此提示程序員。命令舉例:(1)mycat -n file1 | myhead 3 將文件 file1 的內(nèi)容加上行號(hào)后顯示前3行(2)myhead 3 file1 | mycat -n 將文件 file1 的內(nèi)容顯示前
23、3行后加上行號(hào)(注:上述兩條命令的操作最終結(jié)果等價(jià))(3)mysort file1 file2 | mycat -n | myhead 5 將 file1 和 file2 的內(nèi)容合并排序、加上行號(hào)、顯示前5行(4)mycat -n file1.txt 把file1.txt的內(nèi)容加行標(biāo)后輸出(5)myhead 2 file2.txt 輸出file2.txt的前2行 (6)mysort file1.txt 把file1.txt的內(nèi)容排序后輸出(7)mytime program1.exe 顯示program1.exe的執(zhí)行時(shí)間(8)mycp a b 將文件夾a的內(nèi)容復(fù)制到文件夾b(9)myls .
24、展開(kāi)當(dāng)前目錄(10)myls a 展開(kāi)指定目錄a(11)mysl 顯示跑動(dòng)的小火車五、實(shí)驗(yàn)收獲與體會(huì)實(shí)驗(yàn)代碼量達(dá)到了2300行,實(shí)現(xiàn)了簡(jiǎn)單shell,基本達(dá)到了要求。不過(guò)由于時(shí)間關(guān)系實(shí)驗(yàn)中還有很多缺陷和不足有待改進(jìn)。談?wù)啄甑男牡皿w會(huì):本次試驗(yàn)中,我負(fù)責(zé)shell整體框架的設(shè)計(jì)以及myhead、mysort、mycat三條管道命令的實(shí)現(xiàn)。在實(shí)驗(yàn)中,學(xué)習(xí)了很多關(guān)于UNIX和Windows的管道設(shè)計(jì)機(jī)制相關(guān)知識(shí)。實(shí)驗(yàn)中最大的挑戰(zhàn)莫過(guò)于對(duì)于管道命令的各個(gè)字符串的處理,為此我特地設(shè)計(jì)了CMD結(jié)構(gòu)體來(lái)分割管道命令,還有實(shí)驗(yàn)中需要處理諸多函數(shù),函數(shù)相互調(diào)用的時(shí)候,接口設(shè)計(jì)十分重要。光是某些單個(gè)命令的設(shè)計(jì)實(shí)現(xiàn)就需要400行的代碼量,可想而知,若是接口設(shè)計(jì)的不好,勢(shì)必會(huì)給后續(xù)工作帶來(lái)影響。尤其是對(duì)于命令所帶的參數(shù)的處理尤其麻煩,還有為每個(gè)命令創(chuàng)建進(jìn)程的時(shí)候,szCmdline所帶的參數(shù)也是需要小心處理。本次實(shí)驗(yàn)無(wú)疑極大地提升了我的項(xiàng)目動(dòng)手能力,一個(gè)星期持續(xù)不斷的編程還是非常刺激的,這其中遇到的問(wèn)題勝不勝數(shù),比如說(shuō),服務(wù)器端創(chuàng)建pipe時(shí),buffer緩沖區(qū)不能為空:若為空,則在創(chuàng)建pipe時(shí)調(diào)用的WriteFile()沒(méi)有在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)鋅空電池市場(chǎng)需求分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)計(jì)算機(jī)機(jī)房行業(yè)運(yùn)行態(tài)勢(shì)及發(fā)展盈利分析報(bào)告
- 2025-2030年中國(guó)純鐵鋼坯市場(chǎng)運(yùn)行態(tài)勢(shì)規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)糕點(diǎn)及面包市場(chǎng)運(yùn)行動(dòng)態(tài)與營(yíng)銷策略研究報(bào)告
- 2025-2030年中國(guó)硅藻土行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景分析報(bào)告
- 2024數(shù)學(xué)競(jìng)賽CHKMO中國(guó)新加坡合練訓(xùn)練題
- 重慶城市職業(yè)學(xué)院《液壓元件》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)治幼兒師范高等??茖W(xué)?!峨姎夤こ糖把丶夹g(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧工業(yè)大學(xué)《計(jì)算機(jī)輔助造型設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川衛(wèi)生康復(fù)職業(yè)學(xué)院《企業(yè)運(yùn)營(yíng)管理課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- (新版)區(qū)塊鏈應(yīng)用操作員職業(yè)技能競(jìng)賽理論考試題庫(kù)-上(單選題)
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗(yàn)人員理論考試題庫(kù)及答案
- 高中英語(yǔ)課程設(shè)計(jì)目的
- 2024-2025學(xué)年北京一零一中學(xué)初三期初測(cè)試數(shù)學(xué)試題含解析
- 2024年12月大學(xué)英語(yǔ)四級(jí)CET-4真題試卷
- 高中生物學(xué)選擇性必修一測(cè)試卷及答案解析
- 佳能EOS700D使用說(shuō)明書
- 煤礦應(yīng)急叫應(yīng)、回應(yīng)、響應(yīng)機(jī)制
- 圓圈正義讀書分享課件
- DL∕T 1910-2018 配電網(wǎng)分布式饋線自動(dòng)化技術(shù)規(guī)范
- 護(hù)理人力資源配置原則及調(diào)配方案
評(píng)論
0/150
提交評(píng)論