web技術(shù)棧中的池有哪些

本篇內(nèi)容主要講解“web技術(shù)棧中的池有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“web技術(shù)棧中的池有哪些”吧!

目前創(chuàng)新互聯(lián)建站已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、云溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

連接池

相信每一個(gè)程序員都不陌生,我們?cè)谑褂胷edis等緩存或者M(jìn)ySQL等數(shù)據(jù)庫(kù)的時(shí)候,就常常需要配置連接池,相信每個(gè)Java程序員都配置過(guò)C3P0或者HikariCP的連接池,為什么我們需要連接池,它有什么好處?

如果沒(méi)有連接池,當(dāng)我們?cè)L問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,會(huì)發(fā)生什么事情,首先我們需要建立連接把,建立連接,以為著要三次握手,這就需要花個(gè)好幾毫秒的時(shí)間,緊接著,不是每個(gè)人都能訪問(wèn)數(shù)據(jù)庫(kù)吧,數(shù)據(jù)庫(kù)它也需要驗(yàn)證登陸的賬戶(hù)密碼,這又要花個(gè)1,2毫秒,然后才是真正的數(shù)據(jù)查詢(xún),可能就花了1,2毫秒,一個(gè)10毫秒的請(qǐng)求,可能80%的時(shí)間都浪費(fèi)了。

其次,連接池可以讓服務(wù)更加穩(wěn)定,舉個(gè)例子,假如下游的數(shù)據(jù)庫(kù)支持一千個(gè)并發(fā),但是業(yè)務(wù)層支持一萬(wàn)個(gè)并發(fā),這個(gè)時(shí)候有可能會(huì)發(fā)生什么事情,業(yè)務(wù)層的一萬(wàn)個(gè)請(qǐng)求同時(shí)請(qǐng)求數(shù)據(jù)庫(kù),超過(guò)的下游系統(tǒng)的最大負(fù)荷,這不是把服務(wù)搞死么?連接池可以讓我們給不同的業(yè)務(wù)分配不同的連接數(shù),讓他們的總數(shù)不會(huì)超過(guò)系統(tǒng)的最大值。

對(duì)象池

在Java語(yǔ)言中,垃圾回收是非常令人頭痛的事情,特別是FullGC總是會(huì)引發(fā)一些問(wèn)題,不止是Java很多語(yǔ)言都有這樣的一個(gè)問(wèn)題。舉個(gè)例子,假如我們開(kāi)發(fā)一款游戲,士兵對(duì)象的一個(gè)實(shí)例表示一只長(zhǎng)槍小兵,可能玩家在一把游戲中,要打死成千上百只小兵,那么每次一只小兵死亡我們就要注銷(xiāo)掉這個(gè)實(shí)例,每次有小兵刷新我們就重新new一個(gè)實(shí)例。大家都知道,向操作系統(tǒng)申請(qǐng)內(nèi)存是有代價(jià)的,可能你是款單機(jī)游戲還好,如果是大型的網(wǎng)絡(luò)游戲,頁(yè)面上頻繁有各個(gè)玩家打斗發(fā)生,這個(gè)時(shí)候我們最好使用對(duì)象池技術(shù),當(dāng)小兵死亡的時(shí)候,將它回收,而不是直接釋放,下次有新的小兵出現(xiàn)的時(shí)候,直接復(fù)用。

對(duì)象池技術(shù),減少了程序頻繁向操作系統(tǒng)申請(qǐng)內(nèi)存,特別是大塊內(nèi)存,我們更需要使用對(duì)象池技術(shù),更好地優(yōu)化內(nèi)存的使用,減少垃圾回收次數(shù),從而讓程序更加優(yōu)化。

線程池

與對(duì)象池類(lèi)似,我們可以理解線程也是操作系統(tǒng)使用的一個(gè)對(duì)象,在現(xiàn)代計(jì)算機(jī)開(kāi)發(fā)中,多線程是非常常見(jiàn)且必須的,可以有效的利用到CPU多個(gè)核心的特點(diǎn),但是操作系統(tǒng)創(chuàng)建線程跟銷(xiāo)毀線程又有一定的開(kāi)銷(xiāo),所以,我們可以使用池化技術(shù),但操作系統(tǒng)運(yùn)行完某個(gè)線程之后,不是立即銷(xiāo)毀,而是讓這個(gè)空閑的線程繼續(xù)等待新的任務(wù)去執(zhí)行。

內(nèi)存池

內(nèi)存池,這個(gè)可能使用C++的同學(xué)使用的比較多,最為代表的便是由谷歌開(kāi)發(fā)的TcMalloc與Facebook開(kāi)發(fā)的JeMalloc。其實(shí),Java開(kāi)發(fā)中也會(huì)用到內(nèi)存池,Java中有一些Unsafe的方法,可以直接管理內(nèi)存,在一些中間件的開(kāi)發(fā)中,我們會(huì)經(jīng)常用到。

內(nèi)存池較大的作用,便是減少內(nèi)存碎片,什么是內(nèi)存碎片?很多同學(xué)不理解什么是內(nèi)存碎片,我們舉一個(gè)例子。我們得到了一塊木材,想用來(lái)做椅子,如果不對(duì)椅子每個(gè)部件需要的木材進(jìn)行規(guī)劃,想用啥就在木頭上切下來(lái),那么最終這個(gè)木頭的利用率肯定不高。內(nèi)存也是如此,如果每次申請(qǐng)都是隨便分配,那就容易形成很多內(nèi)存碎片,最后讓程序變慢。

到此,相信大家對(duì)“web技術(shù)棧中的池有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享文章:web技術(shù)棧中的池有哪些
URL鏈接:http://bm7419.com/article28/iipjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站網(wǎng)站營(yíng)銷(xiāo)、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)