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

正文內(nèi)容

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

2025-03-12 03:44 本頁面
 

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