![linux下C語(yǔ)言編程-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信_(tái)第1頁(yè)](http://file4.renrendoc.com/view/6d5a508fa7f4a327e3297c0a736ddc19/6d5a508fa7f4a327e3297c0a736ddc191.gif)
![linux下C語(yǔ)言編程-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信_(tái)第2頁(yè)](http://file4.renrendoc.com/view/6d5a508fa7f4a327e3297c0a736ddc19/6d5a508fa7f4a327e3297c0a736ddc192.gif)
![linux下C語(yǔ)言編程-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信_(tái)第3頁(yè)](http://file4.renrendoc.com/view/6d5a508fa7f4a327e3297c0a736ddc19/6d5a508fa7f4a327e3297c0a736ddc193.gif)
![linux下C語(yǔ)言編程-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信_(tái)第4頁(yè)](http://file4.renrendoc.com/view/6d5a508fa7f4a327e3297c0a736ddc19/6d5a508fa7f4a327e3297c0a736ddc194.gif)
![linux下C語(yǔ)言編程-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信_(tái)第5頁(yè)](http://file4.renrendoc.com/view/6d5a508fa7f4a327e3297c0a736ddc19/6d5a508fa7f4a327e3297c0a736ddc195.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 HYPERLINK /hbuxiaoshe/article/details/5903831 o linux下C語(yǔ)言編程4-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信 linux下C語(yǔ)言編程4-使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信共享內(nèi)存的函數(shù)有以下幾個(gè):(1)int shmget(key_t key, int size, int shmflg),開(kāi)辟或使用一塊共享內(nèi)存。(2)void *shmat(int shmid, const void *shmaddr, int shmflg), 將參數(shù)shmid所指向的共享內(nèi)存與當(dāng)前進(jìn)程連接。當(dāng)使用某共享內(nèi)存時(shí),需要先使用shmat,達(dá)成連接。(3)int shmdt(con
2、st void *shmaddr),將先前用shmat連接的共享內(nèi)存與當(dāng)前進(jìn)程解除連接。參數(shù)shmaddr為shmat返回的共享內(nèi)存的地址。在完成對(duì)共享內(nèi)存的使用后,需要使用shmdt解除連接。(4)int shmctl(int shmid, int cmd, struct shmid_ds *buf),控制內(nèi)存的操作。當(dāng)cmd為IPC_RMID時(shí),刪除shmid所指的共享內(nèi)存。這些函數(shù)的表頭文件為和,其詳細(xì)參數(shù)請(qǐng)去網(wǎng)上搜索。下面給出一個(gè)使用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信的例子:進(jìn)程A開(kāi)辟一塊新的共享內(nèi)存,進(jìn)程B修改這個(gè)共享內(nèi)存,進(jìn)程C打印輸出這個(gè)共享內(nèi)存的內(nèi)容,進(jìn)程D刪除這個(gè)共享內(nèi)存。進(jìn)程BCD運(yùn)行
3、的命令格式為:命令 共享內(nèi)存ID,如./output 123432。進(jìn)程A代碼如下:int main() int shmid; shmid = shmget(IPC_PRIVATE, SIZE, IPC_CREAT | 0600); if (shmid 0) perror(shmget error); exit(1); printf(create shared memory OK. shmid=%d/n, shmid); return 0;進(jìn)程B代碼如下:int main(int argc, char *argv) int shmid; char *shmaddr; if (argc != 2
4、) perror(argc error/n); exit(1); shmid = atoi(argv1); shmaddr = (char *)shmat(shmid, NULL, 0); if (int )shmaddr = -1) perror(shmat error./n); exit(1); strcpy(shmaddr, hello, world!); shmdt(shmaddr); return 0; 進(jìn)程C代碼如下:int main(int argc, char *argv) int shmid; char *shmaddr; if (argc != 2) printf(argc
5、 error/n); exit(1); shmid = atoi(argv1); shmaddr = (char *)shmat(shmid, NULL, 0); if (int )shmaddr = -1) perror(shmat error./n); exit(1); printf(%s/n, shmaddr); shmdt(shmaddr); return 0; 進(jìn)程D代碼如下:int main(int argc, char *argv) int shmid; if (argc != 2) perror(argc error/n); exit(1); shmid = atoi(argv
6、1); shmctl(shmid, IPC_RMID, NULL); return 0; HYPERLINK /hbuxiaoshe/article/details/5905956 o linux下C語(yǔ)言編程5-多線(xiàn)程編程 linux下C語(yǔ)言編程5-多線(xiàn)程編程 Linux系統(tǒng)下的多線(xiàn)程遵循POSIX線(xiàn)程接口,稱(chēng)為pthread。編寫(xiě)Linux下的多線(xiàn)程程序,需要使用頭文件pthread.h,編譯需要在后面加-lpthread。關(guān)于多線(xiàn)程,主要有以下幾個(gè)過(guò)程:1,創(chuàng)建線(xiàn)程2,各個(gè)線(xiàn)程的執(zhí)行3,等待線(xiàn)程的結(jié)束涉及的線(xiàn)程函數(shù)主要有:1,int pthread_create(pthread_t *re
7、strict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg);函數(shù)有4個(gè)參數(shù):第一個(gè)參數(shù)為指向線(xiàn)程標(biāo)識(shí)符的指針。第二個(gè)參數(shù)用來(lái)設(shè)置線(xiàn)程屬性。第三個(gè)參數(shù)是一個(gè)函數(shù)指針( HYPERLINK /hbuxiaoshe/archive/2010/09/07/5868460.aspx 有關(guān)函數(shù)指針,看這里),指向線(xiàn)程運(yùn)行函數(shù)的起始地址。最后一個(gè)參數(shù)是函數(shù)指針?biāo)枰膮?shù)。注意:pthread_create函數(shù)返回0表示成功。另外如果函數(shù)指針需要多個(gè)參數(shù)的話(huà),就將這些參數(shù)做成某個(gè)
8、結(jié)構(gòu)體,作為第4個(gè)參數(shù)。如果有返回值的話(huà),也可將返回值的指針回寫(xiě)到第4個(gè)參數(shù)中。2,pthread_join()等待一個(gè)線(xiàn)程的結(jié)束。pthread_exit()用于線(xiàn)程退出,可以指定返回值,以便其他線(xiàn)程通過(guò)pthread_join()函數(shù)獲取該線(xiàn)程的返回值。線(xiàn)程的應(yīng)用:并行數(shù)據(jù)庫(kù)的查詢(xún)假設(shè)我們有3臺(tái)計(jì)算機(jī)A, B, C,每臺(tái)均安裝PG數(shù)據(jù)庫(kù),通過(guò)網(wǎng)絡(luò)連接。我們可以通過(guò)多線(xiàn)程將查詢(xún)SQL廣播出去,A,B,C并行查詢(xún),最終返回各自的結(jié)果。如果沒(méi)有多線(xiàn)程,而只是用了個(gè)循環(huán),那么我們獲取結(jié)果的過(guò)程將是順序的,即等A的結(jié)果返回后才能查詢(xún)B,B結(jié)束后查詢(xún)C,效率低下。代碼如下:/最多支持MAX個(gè)線(xiàn)程 #d
9、efine MAX 16 /* 多線(xiàn)程 */ typedef struct PDthread char *host; / IP int port; / 端口 char *dbname; / 數(shù)據(jù)庫(kù)名 char *query; / SQL語(yǔ)句 void *rst; / 查詢(xún)結(jié)果 PDthread; typedef struct Nodes int count; / 實(shí)際上的節(jié)點(diǎn)數(shù)量countrst = (void *)ExecuteQuery(p-host, p-port, p-dbname, p-query); pthread_exit(NULL); return NULL; /* 創(chuàng)建多個(gè)線(xiàn)
10、程,1個(gè)node對(duì)應(yīng)1個(gè)線(xiàn)程 * 輸出:thread, pdthread * 輸入:node, dbname, query, 這些值寫(xiě)到pdthread變量中,傳遞給函數(shù)PDthreadSelect(因?yàn)榇撕瘮?shù)只能有一個(gè)參數(shù)) */void PDthreadCreate(pthread_t thread, PDthread *pdthread, Nodes *node, char *dbname, char *query) int tmp; int i; PDthread *p; for (i=0; icount; i+) / 把Nodes作為PDthread的一部分 p = pdthread
11、 + i; p-host = node-hosti; p-port = node-porti; p-dbname = dbname; p-query = query; tmp = pthread_create(&threadi, NULL, PDthreadSelect, p); if (tmp != 0) printf(PDthreadCreate: 線(xiàn)程%d創(chuàng)建失敗!/n, i); else printf(PDthreadCreate: 線(xiàn)程%d被創(chuàng)建/n, i); void PDthreadWait(pthread_t thread, int count) / 等待線(xiàn)程結(jié)束 int i;
12、 for (i=0; irst return 0; 編譯命令:gcc -I/usr/local/pgsql/include -o th th.c -L/usr/local/pgsql/lib -lpq -lpthread,因?yàn)槭褂昧薼ibpq庫(kù)。Linux下通過(guò)共享內(nèi)存進(jìn)行進(jìn)程間通信,進(jìn)程間同步使用信號(hào)量來(lái)實(shí)現(xiàn)(Linux 環(huán)境下C編程指南) Linux 環(huán)境下C編程指南,通過(guò)共享內(nèi)存進(jìn)行進(jìn)程間通信的例子,進(jìn)程間同步使用信號(hào)量來(lái)實(shí)現(xiàn)。使用說(shuō)明:這是一個(gè)簡(jiǎn)單的服務(wù)器和客戶(hù)端程序,如果啟動(dòng)程序時(shí)不帶參數(shù),則執(zhí)行服務(wù)器程序;如果帶參數(shù),則執(zhí)行客戶(hù)端程序,所帶參數(shù)只有一個(gè),就是服務(wù)器端所顯示的共享內(nèi)存
13、的引用ID。實(shí)現(xiàn)原理:服務(wù)器端啟動(dòng)后,創(chuàng)建信號(hào)量和共享內(nèi)存,并將共享內(nèi)存的引用ID顯示出來(lái),將信號(hào)量的引用ID存放在共享內(nèi)存中??蛻?hù)端啟動(dòng)后,利用服務(wù)器端提供的內(nèi)存共享ID將共享內(nèi)存附加到地址段,讀取信號(hào)量以實(shí)現(xiàn)兩個(gè)進(jìn)程之間的同步。之后,這兩個(gè)進(jìn)程就可以利用共享內(nèi)存進(jìn)行進(jìn)程間通信,客戶(hù)端輸入的信息將在服務(wù)器端顯示出來(lái)。 #include #include #include #include #include #include #include #include #include #define SHMDATASIZE 1000#define BUFFERSIZE (SHMDATASIZE -
14、sizeof(int)#define SN_EMPTY 0#define SN_FULL 1int deleteSemid=0;union semun int val; struct semid_ds *buf; unsigned short int *array; struct seminfo *_buf; ;void server(void); /不加參數(shù)時(shí)執(zhí)行void client(int shmid);void delete(void);void sigdelete(int signum);void locksem(int semid, int semnum);void unlocks
15、em(int semid, int semnum);void waitzero(int semid, int semnum);void clientwrite(int shmid, int semid, char *buffer);int safesemget(key_t key, int nsems, int semflg);int safesemctl(int semid, int semnum, int cmd, union semun arg);int safesemop(int semid, struct sembuf *sops, unsigned nsops);int safes
16、hmget(key_t key, int size, int shmflg);void *safeshmat(int shmid, const void *shmaddr, int shmflg);int safeshmctl(int shmid, int cmd, struct shmid_ds *buf);int main(int argc, char *argv) if ( argc 2 ) server(); else client(atoi(argv1); return 0;void server(void) union semun sunion; int semid,shmid;
17、void *shmdata; char *buffer; semid = safesemget(IPC_PRIVATE, 2, SHM_R|SHM_W); deleteSemid = semid; atexit(&delete); /當(dāng)程序終止執(zhí)行時(shí),執(zhí)行 delete 函數(shù) signal(SIGINT, &sigdelete); /接收到信號(hào) SIGINT 則執(zhí)行 sigdelete 函數(shù) sunion.val = 1; safesemctl(semid, SN_EMPTY, SETVAL, sunion); sunion.val = 0; safesemctl(semid, SN_FULL
18、, SETVAL, sunion); shmid = safeshmget(IPC_PRIVATE, SHMDATASIZE, IPC_CREAT|SHM_R|SHM_W); shmdata = safeshmat(shmid, 0, 0); safeshmctl(shmid, IPC_RMID, NULL); /刪除共享內(nèi)存,當(dāng)所有附加該共享內(nèi)存的進(jìn)程結(jié)束或斷開(kāi)與該共享內(nèi)存的連接時(shí)才執(zhí)行 *(int *)shmdata = semid; buffer = shmdata + sizeof(int); printf(Server is running with SHM id * %d *n,
19、shmid); while(1) printf(Waiting until full.); fflush(stdout); locksem(semid, SN_FULL); printf(done.n); printf(Message received: %s.n, buffer); unlocksem(semid, SN_EMPTY); void client(int shmid) int semid; void *shmdata; char *buffer; shmdata = safeshmat(shmid, 0, 0); semid = *(int *)shmdata; buffer
20、= shmdata + sizeof(int); printf(Client operational: shm id is %d, sem id is %dn, shmid, semid); while(1) char input3; printf(nnMenun1.send a messagen); printf(2.Exitn); fgets(input, sizeof(input), stdin); switch(input0) case 1: clientwrite(shmid, semid, buffer); break; case 2: exit(0); break; void d
21、elete(void) printf(nMaster exiting; deleting semaphore %d.n, deleteSemid); if (semctl(deleteSemid, 0, IPC_RMID, 0) = -1 ) printf(Error releasing semaphore.n); void sigdelete(int signum) exit(0);void locksem(int semid, int semnum) struct sembuf sb; sb.sem_num = semnum; sb.sem_op = -1; sb.sem_flg = SE
22、M_UNDO; safesemop(semid, &sb, 1);void unlocksem(int semid, int semnum) struct sembuf sb; sb.sem_num = semnum; sb.sem_op = 1; sb.sem_flg = SEM_UNDO; safesemop(semid, &sb, 1);void waitzero(int semid, int semnum) struct sembuf sb; sb.sem_num = semnum; sb.sem_op = 0; sb.sem_flg = 0; safesemop(semid, &sb
23、, 1);void clientwrite(int shmid, int semid, char *buffer) printf(Waiting until empty.); fflush(stdout); locksem(semid, SN_EMPTY); printf(done.n); printf(Enter Message: ); fgets(buffer, BUFFERSIZE, stdin); unlocksem(semid, SN_FULL);int safesemget(key_t key, int nsems, int semflg) int retval; if ( (re
24、tval=semget(key, nsems, semflg) = -1) printf(semget error: %s.n, strerror(errno); exit(254); return retval;int safesemctl(int semid, int semnum, int cmd, union semun arg) int retval; if ( (retval=semctl(semid, semnum, cmd, arg) = -1) printf(semctl error: %s.n, strerror(errno); exit(254); return retv
25、al;int safesemop(int semid, struct sembuf *sops, unsigned nsops) int retval; if ( (retval=semop(semid, sops, nsops) = -1) printf(semop error: %s.n, strerror(errno); exit(254); return retval;int safeshmget(key_t key, int size, int shmflg) int retval; if ( (retval=shmget(key, size, shmflg) = -1) print
26、f(shmget error: %s.n, strerror(errno); exit(254); return retval;void *safeshmat(int shmid, const void *shmaddr, int shmflg) void *retval; if ( (retval=shmat(shmid, shmaddr, shmflg) = (void *)-1) printf(shmat error: %s.n, strerror(errno); exit(254); return retval;int safeshmctl(int shmid, int cmd, st
27、ruct shmid_ds *buf) int retval; if ( (retval=shmctl(shmid, cmd, buf) = -1) printf(shmctl error: %s.n, strerror(errno); exit(254); return retval;-atexit 語(yǔ)法: #include int atexit( void (*func)(void) ); 功能: 當(dāng)程序終止執(zhí)行時(shí),函數(shù)調(diào)用函數(shù)指針func所指向的函數(shù)??梢詧?zhí)行多重調(diào)用(至少32個(gè)),這些函數(shù)以其注冊(cè)的倒序執(zhí)行。執(zhí)行成功返回零值,失敗則返回非零值 PET/CT示蹤劑 HYPERLINK /
28、2009/0414/786A36F3C1021T323105.shtml 18F-FDG(氟代脫氧葡萄糖)氟代脫氧葡萄糖氟代脫氧葡萄糖是2-脫氧葡萄糖的氟代衍生物。其完整的化學(xué)名稱(chēng)為2-氟-2-脫氧-D-葡萄糖,通常簡(jiǎn)稱(chēng)為18F-FDG或FDG。FDG最常用于正電子發(fā)射斷層掃描(PET)類(lèi)的醫(yī)學(xué)成像設(shè)備:FDG分子之中的氟選用的是屬于正電子發(fā)射型放射性同位素的氟-18(fluorine-18,F(xiàn)-18,18F,18氟),從而成為18F-FDG(氟-18F脫氧葡糖)。在向病人(患者,病患)體內(nèi)注射FDG之后,PET掃描儀可以構(gòu)建出反映FDG體內(nèi)分布情況的圖像。接著,核醫(yī)學(xué)醫(yī)師或放射醫(yī)師對(duì)這些圖像
29、加以評(píng)估,從而作出關(guān)于各種醫(yī)學(xué)健康狀況的診斷。歷史二十世紀(jì)70年代,美國(guó)布魯克海文國(guó)家實(shí)驗(yàn)室(Brookhaven National Laboratory)的Tatsuo Ido首先完成了18F-FDG的合成。1976年8月,賓夕法尼亞大學(xué)的Abass Alavi首次將這種化合物施用于兩名正常的人類(lèi)志愿者。其采用普通核素掃描儀(非PET掃描儀)所獲得的腦部圖像,表明了FDG在腦部的濃聚(參見(jiàn)下文所示的歷史參考文獻(xiàn))。作用機(jī)理與代謝命運(yùn)作為一種葡萄糖類(lèi)似物,F(xiàn)DG將為葡萄糖高利用率細(xì)胞(high-glucose-using cells)所攝取,如腦、腎臟以及癌細(xì)胞。在此類(lèi)細(xì)胞內(nèi),磷酸化過(guò)程將會(huì)阻
30、止葡萄糖以原有的完整形式從細(xì)胞之中釋放出來(lái)。葡萄糖之中的2位氧乃是后續(xù)糖酵解所必需的;因而,F(xiàn)DG與2-脫氧-D-葡萄糖相同,在細(xì)胞內(nèi)無(wú)法繼續(xù)代謝;這樣,在放射性衰變之前,所形成的FDG-6-磷酸將不會(huì)發(fā)生糖酵解。結(jié)果,18F-FDG 的分布情況就會(huì)很好地反映體內(nèi)細(xì)胞對(duì)葡萄糖的攝取和磷酸化的分布情況。在FDG發(fā)生衰變之前,F(xiàn)DG的代謝分解或利用會(huì)因?yàn)槠浞肿又?位上的氟而受到抑制。不過(guò),F(xiàn)DG發(fā)生放射性衰變之后,其中的氟將轉(zhuǎn)變?yōu)?8O;而且,在從環(huán)境當(dāng)中獲取一個(gè)H+之后,F(xiàn)DG的衰變產(chǎn)物就變成了葡萄糖-6-磷酸,而其2位上的標(biāo)記則變?yōu)闊o(wú)害的非放射性“重氧”(heavy oxygen,oxyge
31、n-18);這樣,該衰變產(chǎn)物通常就可以按照普通葡萄糖的方式進(jìn)行代謝。 臨床應(yīng)用在PET成像方面,18F-FDG可用于評(píng)估心臟、肺臟以及腦部的葡萄糖代謝狀況。同時(shí),18F-FDG還在腫瘤學(xué)方面用于腫瘤成像。在被細(xì)胞攝取之后,18F-FDG將由己糖激酶(在快速生長(zhǎng)型惡性腫瘤之中,線(xiàn)粒體型己糖激酶顯著升高)),加以磷酸化,并為代謝活躍的組織所滯留,如大多數(shù)類(lèi)型的惡性腫瘤。因此,F(xiàn)DG-PET可用于癌癥的診斷、分期(staging)和治療監(jiān)測(cè)(treatment monitoring),尤其是對(duì)于霍奇金氏?。℉odgkins disease,淋巴肉芽腫病,何杰金?。?、非霍奇金氏淋巴瘤(non-Hodgkins lymphoma,非何杰金氏淋巴瘤)、結(jié)直腸癌(colorectal cancer)、乳腺癌、黑色素瘤以及肺癌。另外,F(xiàn)DG-PET還已經(jīng)用于阿耳茨海默氏病(Alzheimers disease,早老性癡呆)的診斷。在旨在查找腫瘤或轉(zhuǎn)移性疾病(metastatic disease)的體部掃描應(yīng)用當(dāng)中,通常是將一劑FDG溶液(通常為5至10毫居里,或者說(shuō)200至400兆貝克勒爾)迅速注射到正在向病人靜脈之中滴注生理鹽水的管路當(dāng)中。此前,病人已經(jīng)持續(xù)禁食至少6小時(shí),且血糖水平適當(dāng)較低(對(duì)于某些糖尿病病人來(lái)說(shuō),這是個(gè)問(wèn)題;當(dāng)血糖水平高于180 mg/dL = 10 mm
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺灘海域施工方案
- 辦公室裝修終止合同聲明
- 汽車(chē)制造液氮配送合同
- 親子游泳館裝修合同管理費(fèi)
- 倉(cāng)儲(chǔ)物流中心改造拆除協(xié)議
- 北城小學(xué)1年級(jí)數(shù)學(xué)試卷
- 銀行柜臺(tái)施工方案
- 安師大附中初三數(shù)學(xué)試卷
- 鋁掛片吊頂施工方案
- 司機(jī)不定時(shí)工作制合同范例
- 二零二五年知識(shí)產(chǎn)權(quán)共享及收益分成合作協(xié)議3篇
- 北師大版二年級(jí)數(shù)學(xué)上冊(cè)計(jì)算題專(zhuān)項(xiàng)復(fù)習(xí)大全272
- 南通市2025屆高三第一次調(diào)研測(cè)試(一模)生物試卷(含答案 )
- 2024年09月2024渤海銀行天津?yàn)I海新區(qū)分行校園招聘筆試歷年參考題庫(kù)附帶答案詳解
- 期末考試成績(jī)分析報(bào)告課件
- 兒童哮喘的防治與治療
- 人教版PEP版小學(xué)英語(yǔ)三年級(jí)下冊(cè)Unit 4 Healthy food Part A課件
- 學(xué)校安全教師培訓(xùn)
- 2024年陜西省中考道德與法治真題(A卷)(原卷版)
- (2024)湖北省公務(wù)員考試《行測(cè)》真題及答案解析
- 金融警示教育案例
評(píng)論
0/150
提交評(píng)論