![Java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/f35095e6-8021-46a9-b7ae-e6a3fc74b56b/f35095e6-8021-46a9-b7ae-e6a3fc74b56b1.gif)
![Java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/f35095e6-8021-46a9-b7ae-e6a3fc74b56b/f35095e6-8021-46a9-b7ae-e6a3fc74b56b2.gif)
![Java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/f35095e6-8021-46a9-b7ae-e6a3fc74b56b/f35095e6-8021-46a9-b7ae-e6a3fc74b56b3.gif)
![Java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/f35095e6-8021-46a9-b7ae-e6a3fc74b56b/f35095e6-8021-46a9-b7ae-e6a3fc74b56b4.gif)
![Java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/f35095e6-8021-46a9-b7ae-e6a3fc74b56b/f35095e6-8021-46a9-b7ae-e6a3fc74b56b5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java中數(shù)據(jù)庫(kù)連接池原理機(jī)制的詳細(xì)講解連接池的基本工作原理1、基本概念及原理由上面的分析可以看出,問(wèn)邂的根源就在于對(duì)逆據(jù)厘連接資源的低效管理。我們知道,對(duì)于共亨資源,有一個(gè)很著名的設(shè) 計(jì)模式:資源池(resource pool) «該模式正是為了解決資源的頻繁分配?釋放所造成的問(wèn)題。為解決上述問(wèn)題,可以采用數(shù) 據(jù)庫(kù)連接池技術(shù)。數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立-個(gè)”緩沖池”。預(yù)先在緩沖池中放入定數(shù)雖的連接,當(dāng)需要 建立數(shù)據(jù)庫(kù)連接時(shí),只需從”緩沖池"中取出一個(gè),使用完畢z后再放冋去。我們可以通過(guò)設(shè)定連接池最大連接數(shù)來(lái)防i上系統(tǒng)無(wú)盡 的與數(shù)據(jù)庫(kù)連接。更為貢要的是我們可
2、以通過(guò)連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫(kù)的連接的數(shù)量?便用情況,為系統(tǒng)開(kāi)發(fā)?測(cè)試及性能 調(diào)整提供依據(jù)。2、服務(wù)器自帶的連接池jdbc的api中沒(méi)有提供連接池的方法。些大型的web應(yīng)用服務(wù)器如bea的weblogic和ibm的websphere等提供 了連接池的機(jī)制,但是必須有其第三方的專(zhuān)用類(lèi)方法支持連接池的用法。連接池關(guān)鍵問(wèn)題分析1、并發(fā)問(wèn)題為了使連接管理服務(wù)具有最大的通用性,必須考慮名線(xiàn)程環(huán)境,即并發(fā)問(wèn)題。這個(gè)問(wèn)題相對(duì)比較好解決,因?yàn)閖ava語(yǔ)言自 身提供了對(duì)并發(fā)管理的支持,使用synchronized關(guān)鍵字即可確保線(xiàn)程杲同步的。使用方法為直接在類(lèi)方法前面加上synchronized 關(guān)鍵字,如:p
3、ublic synchronized connection getconnection()2、多數(shù)據(jù)庫(kù)服務(wù)器和名用戶(hù)對(duì)于大型的金業(yè)級(jí)應(yīng)用,常常需要同時(shí)連接不同的數(shù)據(jù)庫(kù)(如連接oracle和sybase)。如何連接不同的數(shù)據(jù)庫(kù)呢?我們采 用的策略是:設(shè)訃一個(gè)符合單例模式的連接池管理類(lèi),在連接池管理類(lèi)的唯一實(shí)例被創(chuàng)建時(shí)讀取一個(gè)資源文件,其中資源文件 中存放著多個(gè)數(shù)據(jù)庫(kù)的url地址()?用戶(hù)名()?密碼()等信息。in tx.url=172.21.15.123: 5000/tx_it, tx.user=yang, tx.password=yang321,根據(jù)資源文件捉供的信息,創(chuàng)建女個(gè)連接池類(lèi)的實(shí)例
4、,每一個(gè)實(shí)例都是一個(gè)待定數(shù)據(jù)庫(kù)的連接池。連按 池管理類(lèi)實(shí)例為每個(gè)連接池實(shí)例取一個(gè)名字,通過(guò)不同的名字來(lái)管理不同的連接池。對(duì)于同一個(gè)數(shù)據(jù)庫(kù)有筋個(gè)用戶(hù)使用不同的名稱(chēng)和密碼訪(fǎng)問(wèn)的情況,也可以通過(guò)資源文件處理,即在資源文件中設(shè)置筋個(gè)具 冇相同url地址,但具有不同用戶(hù)名和密碼的數(shù)據(jù)庫(kù)連接信息。3、事務(wù)處理我們知道,爭(zhēng)務(wù)具冇廉子性,此時(shí)要求對(duì)數(shù)據(jù)庫(kù)的操作符介"all-all-nothing"原則,即對(duì)于一組sql涪句耍么全做,耍 么全不做。在java語(yǔ)護(hù)卩,connection類(lèi)本身提供了對(duì)型務(wù)的支持,町以通過(guò)設(shè)置connection的autocommit屈性為false,然后顯 式
5、的調(diào)用commit或rollback方法來(lái)實(shí)現(xiàn)。但要高效的進(jìn)行connection復(fù)用,就必須提供相應(yīng)的事務(wù)支持機(jī)制??刹捎妹恳粋€(gè) 事務(wù)獨(dú)占一個(gè)連接來(lái)實(shí)現(xiàn),這種方法可以大大降低事務(wù)管理的復(fù)雜性。4、連接池的分配與釋放連接池的分配與釋放,對(duì)系統(tǒng)的性能有很大的影響。合理的分配與釋放,可以提高連接的復(fù)用度,從而降低建立新連接的 開(kāi)銷(xiāo),同時(shí)還可以加快用戶(hù)的訪(fǎng)問(wèn)速度。對(duì)于連接的管理可使用空閑池。即把已經(jīng)創(chuàng)建但尚未分配出去的連接按創(chuàng)建時(shí)間存放到一個(gè)空閑池中。每當(dāng)用戶(hù)請(qǐng)求一個(gè) 連接時(shí),系統(tǒng)首先檢査空閑池內(nèi)有沒(méi)召空閑連接。如果有就把建立時(shí)間最長(zhǎng)(通過(guò)容器的順序存放實(shí)現(xiàn))的那個(gè)連接分配給他 (實(shí)際是先做連接是否
6、有效的判斷,如呆可用就分配給用戶(hù),如不可用就把這個(gè)連接從空閑池刪掉,重新檢測(cè)空閑池是否還有 連接);如果沒(méi)冇則檢杳當(dāng)前所開(kāi)連接池是否達(dá)到連接池所允許的城大連接數(shù)(maxconn),如果沒(méi)冇達(dá)到,就新建一個(gè)連接,如 果已經(jīng)達(dá)到,就等待一定的時(shí)間(timeout)。如果在等待的時(shí)間內(nèi)冇連接被釋放出來(lái)就可以把這個(gè)連接分配給等待的用戶(hù),如 杲等待時(shí)間超過(guò)預(yù)定時(shí)間timeout,則返回空值(null)。系統(tǒng)對(duì)已經(jīng)分配出去正在使用的連接只做計(jì)數(shù),當(dāng)使用完后再返還給空 閑池。對(duì)于空閑連接的狀態(tài),可開(kāi)辟專(zhuān)門(mén)的線(xiàn)程定時(shí)檢測(cè),這樣會(huì)花費(fèi)一定的系統(tǒng)開(kāi)銷(xiāo),但可以保證較快的響應(yīng)速度。也可采 取不開(kāi)辟專(zhuān)門(mén)線(xiàn)程,只是在分配
7、前檢測(cè)的方法。5、連接池的配置與維護(hù)連接池中到底應(yīng)該放圧幺少連接,才能使系統(tǒng)的性能最件:?系統(tǒng)可采取設(shè)邑繪小連接數(shù)(minconn閉誠(chéng)人連接數(shù)(maxconn) 來(lái)控制連接池小的連接。星小連接數(shù)足系統(tǒng)啟動(dòng)時(shí)連接池所創(chuàng)現(xiàn)的連接數(shù)。如果創(chuàng)建過(guò)多,則系統(tǒng)啟動(dòng)就慢,但創(chuàng)建后系統(tǒng)的 響應(yīng)速度會(huì)很快;如果創(chuàng)建過(guò)少,則系統(tǒng)啟動(dòng)的很快,響應(yīng)起來(lái)卻愷。這樣,可以在開(kāi)發(fā)時(shí),設(shè)置較小的最小連接數(shù),開(kāi)發(fā)起來(lái) 會(huì)快,而在系統(tǒng)實(shí)際使用時(shí)設(shè)置較衣的,因?yàn)檫@樣對(duì)訪(fǎng)問(wèn)客戶(hù)來(lái)說(shuō)速度會(huì)快些。最大連接數(shù)是連接池屮允許連接的最大數(shù)h, 具體設(shè)世篡少,要看系統(tǒng)的訪(fǎng)問(wèn)雖,可通過(guò)反復(fù)測(cè)試,找到晝住點(diǎn)。如何確保連接池屮的最小連接數(shù)呢?冇動(dòng)態(tài)和
8、靜態(tài)兩種策略。動(dòng)態(tài)即每隔定時(shí)間就對(duì)連接池進(jìn)行檢測(cè),如果發(fā)現(xiàn)連接數(shù)量 小于最小連接數(shù),則補(bǔ)充相應(yīng)數(shù)量的新連接,以保證連接池的正常運(yùn)轉(zhuǎn)。靜態(tài)是發(fā)現(xiàn)空閑連接不夠時(shí)再去檢査。連接池的實(shí)現(xiàn)1、連接池模型木文討論的連接池包括 個(gè)連接池類(lèi)(dbconnectionpool)和-個(gè)連接池管理類(lèi)(dbconnetionpoolmanager)。連接池 類(lèi)是對(duì)某-數(shù)據(jù)庫(kù)所冇連接的"緩沖池",主耍實(shí)現(xiàn)以下功能:從連接池獲取或創(chuàng)建可用連接;使用完畢z后,把連接返還給 連接池;在系統(tǒng)關(guān)閉前,斷開(kāi)所冇連接并釋放連接山用的系統(tǒng)資源;還能夠處理無(wú)效連接(原來(lái)登記為可用的連接,由于某種 原因不再可用,如超時(shí)
9、,通訊問(wèn)題),并能夠限制連接池中的連接總數(shù)不低于某個(gè)預(yù)定值和不超過(guò)某個(gè)預(yù)定值。連接池管理類(lèi)是連接池類(lèi)的外覆類(lèi)(wrapper),符合單例模式,即系統(tǒng)中只能有一個(gè)連接池管理類(lèi)的實(shí)例。其主要用于對(duì) 多個(gè)連接池對(duì)象的管理,具有以下功能:裝載并注冊(cè)特定數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)程序;根據(jù)屬性文件給定的信息,創(chuàng)建連接池 對(duì)彖;為方便管理多個(gè)連接池對(duì)象,為毎一個(gè)連接池對(duì)象取-個(gè)名字,實(shí)現(xiàn)連接池名字與其實(shí)例z間的映射;跟蹤乳戶(hù)使用連 接惜況,以便需要是關(guān)閉連接秤放資源。連接池管理類(lèi)的引入主要是為了方便對(duì)*個(gè)連接池的使川和管理,如系統(tǒng)需要連接不 同的數(shù)據(jù)庫(kù),或連接柑同的數(shù)據(jù)庫(kù)但由于安全性問(wèn)題,需要不同的用戶(hù)使用不同
10、的名稱(chēng)和密碼。2、連接池實(shí)現(xiàn)下面給屮連接池類(lèi)和連接池管理類(lèi)的主要屬性及所要實(shí)現(xiàn)的基本接口 :public class dbconnectionpool implements timerlistenerfprivate int checkedout;/已被分配出去的連接數(shù)private arraylist freec onn ecti ons 二 new arraylist();/容器,空閑池,根據(jù)創(chuàng)建時(shí)間順序存放已創(chuàng)建但尚未分配出去的連接private int minconn;/連接池里連接的最小數(shù)量private int maxconn;/連接池里允許存在的最大連接數(shù)private stri
11、ng name/為這個(gè)連接池取個(gè)名字,方便管理private string password;/連接數(shù)據(jù)庫(kù)時(shí)需耍的密碼private string url;/所要?jiǎng)?chuàng)建連接的數(shù)據(jù)庫(kù)的地址private string user;/連接數(shù)據(jù)庫(kù)時(shí)需要的用戶(hù)名public timer timer;/定時(shí)器public dbconnectionpool(string name,string url,string user,string password,int maxconn)/公開(kāi)的構(gòu)造函數(shù)public synchronized void freeconnection(connection con)使用
12、完畢之后,把連接返還給空閑池public synchr on ized conn ection getc onn ecti on(long timeout)得到個(gè)連接,timeout是等待時(shí)間public synchronized void release()斷開(kāi)所有連接,釋放占用的系統(tǒng)資源private conn ection newcon nection()/新建一個(gè)數(shù)據(jù)庫(kù)連接public synchr on ized void timereve nt()/定時(shí)器事件處理函數(shù)public class dbconnectionmanager static private dbconnecti
13、onmanager instance;連接池管理類(lèi)的唯一實(shí)例static private int clients;/客戶(hù)數(shù)量private arraylist drivers=new arraylist();/容器,存放數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序private hashmap pools = new hashmap();以name/value的形式存取連接池對(duì)象的名字及連接池對(duì)象static synchronized public dbconnectionmanager getlnstance()/"如果啡一的實(shí)例instance已經(jīng)創(chuàng)建,直接返回這個(gè)實(shí)例;否則,調(diào)用私仃構(gòu)造函數(shù),創(chuàng)建連接池管理
14、類(lèi)的唯一實(shí)例private dbconnectionmanager()私有構(gòu)造函數(shù),在其中調(diào)用初始化函數(shù)init()public void freeconnection(string name,connection con)釋放一個(gè)連接,name是個(gè)連接池對(duì)象的名字public connection getconnection(string name)從名?為name的連接池對(duì)象屮得到個(gè)連接public connection getconnection(string namejong time)從名字為name的連接池對(duì)象中取得一個(gè)連接,time是等待時(shí)間public synchronized
15、 void release。/釋放所有資源private void createpools(properties props)/根據(jù)屬性文件提供的信息,創(chuàng)建一個(gè)或多個(gè)連接池private void init()/初始化連接池管理類(lèi)的唯實(shí)例,由私有構(gòu)造函數(shù)調(diào)用private void loaddrivers(properties props)/裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序3、連接池使用:血所實(shí)現(xiàn)的連接池在程字開(kāi)發(fā)時(shí)如何血川到系統(tǒng)中呢?下血以servlet為例說(shuō)明連接池的使用。servlet的生命周期是:在開(kāi)始建立servlet時(shí),調(diào)用其初始化(init)方法。z厲每個(gè)用戶(hù)請(qǐng)求都導(dǎo)致個(gè)調(diào)用前面建立的實(shí)例的s
16、ervice方法的線(xiàn)程。最后,當(dāng)服務(wù)器決定卸域一個(gè)servlet時(shí),它首先調(diào)用該servlet的destroy方法。根據(jù)servlet的暮點(diǎn),我們町以在初始化函數(shù)中生成連接池管理類(lèi)的唯-實(shí)例(其中包括創(chuàng)建-個(gè)或多個(gè)連接哼)。如: public void init() throws servletexceptionconn mgr=dbc onn ecti onman ager.getl nstan ce();然后就對(duì)以在service方法屮通過(guò)連接池名稱(chēng)使用連接池,執(zhí)行數(shù)據(jù)庫(kù)操作。最后在destroy方法中釋放占用的系統(tǒng)資源,public void destroy()conn mgr.rele
17、ase();super.destroy();結(jié)束語(yǔ)在便用jdbc進(jìn)行與數(shù)據(jù)庫(kù)有關(guān)的應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)庫(kù)連接的管理是一個(gè)難點(diǎn)。很多時(shí)候,連接的混亂管理所適成的系統(tǒng) 資源開(kāi)銷(xiāo)過(guò)大成為制約大型企業(yè)級(jí)應(yīng)用效率的瓶頸。對(duì)于眾多用戶(hù)訪(fǎng)問(wèn)的web應(yīng)用,采用數(shù)據(jù)庫(kù)連接技術(shù)的系統(tǒng)在效率和穩(wěn)定 性上比采用傳統(tǒng)的如他方式的系統(tǒng)要好很名o木文閘述了使用jdbc訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的技術(shù)?討論了基于連接池技術(shù)的數(shù)據(jù)庫(kù)連接管 理的關(guān)鍵問(wèn)題并給出了一個(gè)實(shí)現(xiàn)模型。文章所給出的是連接池管理程序的-種基木模式,為提高系統(tǒng)的格體性能,在此基礎(chǔ)上 還可以進(jìn)行很多有意義的擴(kuò)展。首先說(shuō)明下關(guān)于數(shù)據(jù)庫(kù)連接池:數(shù)據(jù)庫(kù)連接是一種關(guān)鍵的有限的昂貴的資源,這
18、一點(diǎn)在多用戶(hù)的網(wǎng)頁(yè)應(yīng)用程序中 體現(xiàn)得尤為突岀。對(duì)數(shù)據(jù)庫(kù)連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健 壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫(kù)連接池正是針對(duì)這個(gè)問(wèn)題提岀來(lái)的。數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè) 現(xiàn)有的數(shù)據(jù)庫(kù)連接,而再不是重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的 數(shù)據(jù)庫(kù)連接來(lái)避免因?yàn)闆](méi)有釋放數(shù)據(jù)庫(kù)連接而引起的數(shù)據(jù)庫(kù)連接遺漏。這項(xiàng)技術(shù) 能明顯提高對(duì)數(shù)據(jù)庫(kù)操作的性能。數(shù)據(jù)庫(kù)連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫(kù)連接放到連接池屮,這些數(shù)據(jù) 庫(kù)連接的數(shù)量是由最小數(shù)據(jù)庫(kù)連接數(shù)來(lái)設(shè)定的。無(wú)論這些數(shù)據(jù)庫(kù)連接是否被使 用,連接池都將一宜保證至少擁有這么多的連接數(shù)量。連接池的最人數(shù)據(jù)庫(kù)連接 數(shù)量限定了這個(gè)連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù) 超過(guò)最大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列小。數(shù)據(jù)庫(kù)連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到下列兒個(gè)因素:1)最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫(kù)連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫(kù)連 接的使用量不大,將會(huì)有大量的數(shù)據(jù)庫(kù)連接資源被浪費(fèi);2)最大連接數(shù)是連接池能申請(qǐng)的最大連接數(shù),如果數(shù)據(jù)庫(kù)連接請(qǐng)求超過(guò)此數(shù), 后面的數(shù)據(jù)庫(kù)連接請(qǐng)求將被加入到等待隊(duì)列屮,這會(huì)影響之后的數(shù)據(jù)庫(kù)操
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代小區(qū)火災(zāi)應(yīng)急救援隊(duì)伍的實(shí)戰(zhàn)化訓(xùn)練探討
- 現(xiàn)代企業(yè)員工激勵(lì)機(jī)制設(shè)計(jì)與實(shí)踐
- 班級(jí)環(huán)境衛(wèi)生與校園文化建設(shè)的結(jié)合
- 4《機(jī)械擺鐘》說(shuō)課稿-2023-2024學(xué)年科學(xué)五年級(jí)上冊(cè)教科版
- 2023七年級(jí)數(shù)學(xué)上冊(cè) 第3章 一次方程與方程組3.2 一元一次方程的應(yīng)用第1課時(shí) 等積變形和行程問(wèn)題說(shuō)課稿 (新版)滬科版
- Unit 4 Plants around us Part A Let's learn(說(shuō)課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2024-2025學(xué)年新教材高中英語(yǔ) Unit 3 The world meets China預(yù)習(xí) 新知早知道1(教用文檔)說(shuō)課稿 外研版選擇性必修第四冊(cè)
- 2025日本食品業(yè)A公司特許合同樣本
- 2025年銀行擔(dān)保借款合同范本
- 1小蝌蚪找媽媽 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文二年級(jí)上冊(cè)統(tǒng)編版
- 睡眠障礙護(hù)理查房課件
- 金融工程.鄭振龍(全套課件560P)
- 英語(yǔ)演講技巧和欣賞課件
- 物流托運(yùn)單模板
- 【員工關(guān)系管理研究國(guó)內(nèi)外文獻(xiàn)綜述2800字】
- 六年級(jí)語(yǔ)文下冊(cè)閱讀及參考答案(12篇)
- 蘇教版(蘇少版)九年級(jí)美術(shù)下冊(cè)全冊(cè)課件
- 2022年江蘇省鹽城市中考英語(yǔ)試題及參考答案
- 中國(guó)文化簡(jiǎn)介英文版(ChineseCultureintroduction)課件
- 文化差異與跨文化交際課件(完整版)
- 工程經(jīng)濟(jì)學(xué)完整版課件全套ppt教程
評(píng)論
0/150
提交評(píng)論