freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java數(shù)據(jù)庫(kù)連接池的研究畢業(yè)論文(編輯修改稿)

2024-10-03 19:14 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 織的,可共享的數(shù)據(jù)集合。 數(shù)據(jù)庫(kù)包含關(guān)系數(shù)據(jù)庫(kù),面向?qū)ο髷?shù)據(jù)庫(kù)及新興的 XML數(shù)據(jù)庫(kù)等多種,目前應(yīng)用最廣泛的是關(guān)系數(shù)據(jù)庫(kù),若在關(guān)系數(shù)據(jù)庫(kù)基礎(chǔ)上提供部分面向?qū)ο髷?shù)據(jù)庫(kù)功能的對(duì)象關(guān)系數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)技術(shù)的早期還曾經(jīng)流行過(guò)層次數(shù)據(jù)庫(kù)與網(wǎng)狀數(shù)據(jù)庫(kù),但這兩類數(shù)據(jù)庫(kù)目前已經(jīng)極少使用。 數(shù)據(jù)庫(kù)連接池的基本原理 建立 “ 緩沖存儲(chǔ)池 ” ,是數(shù)據(jù)庫(kù)連接池的基本設(shè)計(jì)思想。這種技術(shù)類似于CPU中的 Cache 技術(shù),將預(yù)先設(shè)定好的數(shù)據(jù)庫(kù)連接放入該緩沖池中,當(dāng)要建立數(shù)據(jù)庫(kù)連接操作時(shí),便從池中取出一個(gè)連接,使用完畢后再將其放回。這樣就達(dá)到了連接復(fù)用的目的,應(yīng)用程序重復(fù)使用一個(gè)數(shù)據(jù)庫(kù)連接,在多層結(jié)構(gòu) 的應(yīng)用程序中通過(guò)連接池技術(shù)可以使系統(tǒng)的性能明顯得到提到。最為關(guān)鍵的是,該方法避免了對(duì)數(shù)據(jù)庫(kù)連接的頻繁建立、關(guān)閉,減小了系統(tǒng)開(kāi)銷(xiāo),提高了響應(yīng)速度。我們可以通過(guò)設(shè)定連接池最大連接數(shù)來(lái)防止系統(tǒng)無(wú)盡的與數(shù)據(jù)庫(kù)連接。更為重要的是我們可以通過(guò)連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫(kù)的連接的數(shù)量,使用情況,為系統(tǒng)開(kāi)發(fā),測(cè)試及性能調(diào)整提供依據(jù)。數(shù)據(jù)庫(kù)連接池屬于應(yīng)用程序?qū)Φ讓拥恼{(diào)用,用戶并發(fā)訪問(wèn)應(yīng)用程序時(shí)會(huì)提交訪問(wèn)請(qǐng)求,然后通過(guò)線程來(lái)處理這些請(qǐng)求,并向連接池申請(qǐng)一個(gè)對(duì)數(shù)據(jù)庫(kù)操作的連接,操作完畢后將連接釋放。應(yīng)用程序調(diào)用連接池 連接的基本工 作原理如下圖所示: 基于以上原理,連接池的建立會(huì)在后面章節(jié)中做具體描述。為了方便理解,連接池以 JSP頁(yè)面形式將最大連接數(shù)的設(shè)置、連接池的使用、超時(shí)等待、連接池的關(guān)閉等情況展示出來(lái),給用戶一個(gè)更為直觀的感受。連接的調(diào)用原理如下圖所示: 從圖中可以看出當(dāng)程序 (JSP. Servlet. Java Bean) 中需要數(shù)據(jù)庫(kù)連接時(shí),只需從內(nèi)存中取出一個(gè)來(lái),并將這個(gè)取得的連接加入 Vector 中,而不用新建連接;使用完畢后放回內(nèi)存中,并將 Vector 中的已用連接刪除。 2. 3 連接池中的關(guān)鍵技術(shù) 連接池的分配與釋放 連接池的分配與釋放技術(shù)對(duì)系統(tǒng)的性能有很大的影響。合理的分配與釋放,可以提高連接的復(fù)用度,從而降低建立新連接的開(kāi)銷(xiāo),同時(shí)還可以加快用戶的訪問(wèn)速度。對(duì)于連接的管理。每當(dāng)用戶請(qǐng)求一個(gè)連接時(shí),系統(tǒng)首先檢查連接池內(nèi)有沒(méi)有空閑連接。如果有就把建立時(shí)間最長(zhǎng) (通過(guò)容器的順序存放實(shí)現(xiàn) )的個(gè)連 接分配給他 (實(shí)際是先做連接是否有效的判斷,如果可用就分配給用戶,若不可 用就把這個(gè)連接刪掉,重新檢測(cè)是否還有連接 );如果檢查到當(dāng)前所開(kāi)連接池沒(méi)有達(dá)到連接池所允許的最大連接數(shù) (maxconn),就新建一個(gè)連接,如果已經(jīng)達(dá)到,就等待一定的時(shí)間 (timeout)。如果在等待的時(shí)間內(nèi)有連接被釋放出來(lái)就可以把這個(gè)連接分配給等待的用戶,如果等待時(shí)間超過(guò)預(yù)定時(shí)間 timeout,則返回空值(null) 系統(tǒng)對(duì)已經(jīng)分配出去正在使用的連接只做計(jì)數(shù)。 連接池的維護(hù) 數(shù)據(jù)庫(kù)連接池到底要放置多少個(gè)連接,這是個(gè)配置策略。為了使系統(tǒng)的性能達(dá)到最佳狀態(tài),連接池中的連接數(shù)的設(shè)定顯得尤為重要,我們采用設(shè)置最大連接數(shù) (maxconn)和最小連接數(shù) (minconn)的方式來(lái)解決這一問(wèn)題。所謂最大連接數(shù),即連接池中 允許連接的最大數(shù)目,然后,最大連接數(shù)的設(shè)定要通過(guò)具體的應(yīng)用需求來(lái)給出一個(gè)連接池可以承受的最大連接數(shù)目的最佳點(diǎn)。如果應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過(guò)最大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列中,等待其他連接的釋放后再來(lái)調(diào)用一空閑連接 (freeconn),這樣可能會(huì)影響部分對(duì)數(shù)據(jù)厙的操作。所謂最小連接數(shù),即應(yīng)用啟動(dòng)前,已經(jīng)預(yù)先創(chuàng)建好的連接數(shù)。無(wú)論這些數(shù)據(jù)庫(kù)連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。如果最小連接數(shù)過(guò)大,么系統(tǒng)啟動(dòng)過(guò)程將變慢,若應(yīng)用程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)量不大,過(guò)多的數(shù)據(jù)庫(kù)連接資源將被 浪費(fèi),但是系統(tǒng)啟動(dòng)后響應(yīng)更快;如果過(guò)小系統(tǒng)啟動(dòng)將加快,但是最初使用的用戶會(huì)因?yàn)檫B接池中沒(méi)有足夠的連接而會(huì)發(fā)送一個(gè)新的數(shù)據(jù)庫(kù)連接請(qǐng)求,將不可避免的延緩執(zhí)行速度。 3 系統(tǒng)總體設(shè)計(jì)思想及方案 數(shù)據(jù)庫(kù)連接池技術(shù)的設(shè)計(jì)思想非常簡(jiǎn)單,先將數(shù)據(jù)庫(kù)連接作為對(duì)象存儲(chǔ)在一個(gè) Vector 對(duì)象中, Vector 類可以實(shí)現(xiàn)可增長(zhǎng)的對(duì)象 “ 數(shù)組 ” 。 Vector 的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector 后進(jìn)行添加或移除項(xiàng)的操作。這里主要包含使用的連接 (nowconnections)和未使用的連接(freeconnections) 兩個(gè) Vector 類創(chuàng) 建的對(duì)象,創(chuàng)建 Vector 對(duì)象的方法如下 : public DBConnectionpool(vector connections) { freeconnections = new Vectoro() 。 nowconnections = new Vector() 。 } 當(dāng)外部程序向數(shù)據(jù)庫(kù)申請(qǐng)建立連接后系統(tǒng)會(huì)調(diào)用 ()方法,此時(shí)已用連接計(jì)數(shù)器加 1,相應(yīng)的,調(diào)用 ()方法 ,此時(shí)空閑連接計(jì)數(shù)器減 1,對(duì)于這樣的引用計(jì)數(shù)法將會(huì)在后面的章節(jié)中具體 描述。這樣,不同的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求就可以共享這些連接,并通過(guò)復(fù)用這些已經(jīng)建立的數(shù)據(jù)庫(kù)連接,克服傳統(tǒng)開(kāi)發(fā)模式對(duì)數(shù)據(jù)庫(kù)操作的缺點(diǎn)。另外,采用超時(shí)判斷 (timeout)機(jī)制,等待應(yīng)用程序?qū)B接的釋放或者調(diào)用 ()方法主動(dòng)釋放連接,能極大地節(jié)省系統(tǒng)資源和用戶等待時(shí)間。而實(shí)現(xiàn)連接池時(shí),當(dāng)應(yīng)用程序調(diào)用 ()試圖去關(guān)閉數(shù)據(jù)庫(kù)連接 時(shí),這時(shí)需要有一個(gè)通告給連接池實(shí)現(xiàn)模塊,通告對(duì)當(dāng)前的數(shù)據(jù)庫(kù)物理連接 (DBConnectionPool 對(duì)象 )進(jìn)行重用。為了使連接池實(shí)現(xiàn)模塊能得到這種 “ 通告 ” ,連接池實(shí)現(xiàn)模塊必須實(shí)現(xiàn) ConnectionEventListener 接口 ,而且同時(shí)需要注冊(cè)成為DBConnectionPool 對(duì)象的監(jiān)聽(tīng)者。連接池實(shí)現(xiàn)模塊接受到此通告后,不是真正意義上的物理獎(jiǎng)閉、而是將 DBConnectionPool 對(duì)象返回到池中進(jìn)行重用。從上面的介紹,可以看出連接池技術(shù)的關(guān)鍵就是其自身的管理機(jī)制,結(jié)合連接池工作 的基本原理,通 過(guò)下圖展現(xiàn)出一個(gè)連接池系統(tǒng)的總體設(shè)計(jì)框架。 連接池中的關(guān)鍵類設(shè)計(jì) 一個(gè)連接池應(yīng)用的設(shè)計(jì),需要幾個(gè)關(guān)鍵部分作為支撐,其中最為重要 的是 DBConnectionPool 類和 DBConnectionManager 類,他們對(duì)連接的建立、管理、釋放起決定性作用。大體作用列舉如下: DBConnectionpool 類 ,該類負(fù)責(zé)從連接池獲取 (或創(chuàng)建 )連接、將連接返回給連接池、空閑連接的超時(shí)等待、系統(tǒng)關(guān)閉時(shí)釋放所有資源并關(guān)閉所有連接。 類 ,該類 負(fù)責(zé)通過(guò)上下文環(huán)境讀取配置文件后裝載和注冊(cè) JDBC 驅(qū)動(dòng)、數(shù)據(jù)庫(kù)名等 。 DBConnection Manager 類,該類負(fù)責(zé)按預(yù)先指定的最大連接 池?cái)?shù)連初始化連接池、創(chuàng)建 DBConnectionpool 對(duì)象 所有的連接客戶退出后,關(guān)閉全部連接。 屬性文件,該文件中包含了數(shù)據(jù)庫(kù)驅(qū)動(dòng)(DriverName)、數(shù)據(jù)庫(kù) URL、數(shù)據(jù)庫(kù)表空間名 (User)、表空間密碼 (Passwold)、連接池最大連接數(shù) (maxconnections) 即為應(yīng)用程序?qū)B接池中的連接的調(diào)用和釋放,應(yīng)用程序退出后 連接池的關(guān)閉。 將以上 5個(gè)部分串連起來(lái),即是本連接池的簡(jiǎn)單設(shè)計(jì)流程。首先應(yīng)用程序向連接池申請(qǐng)連接,就需要通過(guò) DBConnectionpool 類, DBConnectionManager 類對(duì)連接池初始化并且還需要 Datasourceproviderservlet 類的幫助讀取 西 es文件中的屬性,加載和注冊(cè) JDBC 驅(qū)動(dòng),數(shù)據(jù)庫(kù)名等,連接池才能初始化成功。之后通過(guò) DBConnectionPool 類監(jiān)視,管理應(yīng)用程序調(diào)用,釋放的數(shù)據(jù)庫(kù)連接,并通過(guò)該類的 cp對(duì)象將連接使用情況反映在頁(yè)面上。連接池管理程序得到某個(gè)連接,而其他線程就不會(huì)得到這個(gè)數(shù)據(jù)庫(kù)連接了,此線程使用結(jié)束后,該線程將連接交還給連接池管理程序,以分配給其他等待連接的請(qǐng)求 線程。這里連接池充分利用 Java 的線程同步機(jī)理,使當(dāng)前服務(wù)線程處于等待狀態(tài),直至有空閑的連接出現(xiàn)。最后當(dāng)應(yīng)用程序退出時(shí),通過(guò) DBConnectionManager類負(fù)責(zé)連接池的關(guān)閉。 連接池中的管理機(jī)制 應(yīng)用程序開(kāi)發(fā)中“三分技術(shù)、七分管理”的思想在連接池的配置中同樣得 以體現(xiàn),如何從連接池中取得連接,何時(shí)釋放 連接、如何釋放連接等問(wèn)題還需要為連接池配置更為復(fù)雜的管理機(jī)制,連接池流程的管理如下圖所不,這些屬性定義了連接池與其中每個(gè)連接的有效狀態(tài)值。連接池的自我管理,實(shí)際上就是通過(guò)定時(shí)的對(duì)每個(gè)連接的狀態(tài)、連接的數(shù)量進(jìn)行判斷而進(jìn)行相應(yīng)操作。 事務(wù)處理 前面討論的是關(guān)于使用數(shù)據(jù)庫(kù)連接進(jìn)行普通的數(shù)據(jù)庫(kù)訪問(wèn)。對(duì)于事務(wù)處理,情況就變得比較復(fù)雜。因?yàn)槭聞?wù)本身要求原則性的保證,此時(shí)就要求對(duì)于數(shù)據(jù)庫(kù)的操作符合要么全部完成,要么什么都不做。如果簡(jiǎn)單的采用上述的連接復(fù)用的策略,就會(huì)發(fā)生問(wèn)題,因?yàn)闆](méi)有辦法控制屬于同一個(gè)事務(wù)的多個(gè)數(shù)據(jù)庫(kù)操作方法的動(dòng)作,可能這些數(shù)據(jù)庫(kù)操作是在多個(gè)連接上進(jìn)行的,并且這些連接可能被其他非事務(wù)方法復(fù)用。 Connectio 日本身具有提供了對(duì)于事務(wù)的支持,可以通過(guò)設(shè)置 Connection的 Automit屬性為 false,顯式的調(diào)用 mit或 roHback 方法來(lái)實(shí)現(xiàn)。但是要安全、高效的進(jìn)行連接復(fù)用,就必須提供相應(yīng)的事務(wù)支持機(jī)制。方法是:采用顯式的事務(wù) 支撐方法,每一個(gè)事務(wù)獨(dú)占一個(gè)連接。這種方法可以大大降低對(duì)于事務(wù)處理的復(fù)雜性,并且又不會(huì)妨礙連接的復(fù)用。 連接管理服務(wù)提供了顯式的事務(wù)開(kāi)始結(jié)束 (mit 或「 o11back)聲明,以及一個(gè)事務(wù)注冊(cè)表,用于登事務(wù)發(fā)起者和事務(wù)使用的連接的對(duì)應(yīng)關(guān)系,通過(guò)該表,使用事務(wù)的部分和連接管理部分就
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1