成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員如何開發高效的程序,這項技術值得了解

開發 前端 新聞
幾乎每一個網站都是這么一個設計模式,先是前端接入層,然后是一些后臺的邏輯服務,最后則是數據庫。大家都知道,做一個10人能夠訪問的程序非常簡單,但是要做一個能夠同時滿足1萬人,100萬人同時使用的程序,卻是非常的難。

 幾乎每一個網站都是這么一個設計模式,先是前端接入層,然后是一些后臺的邏輯服務,最后則是數據庫。大家都知道,做一個10人能夠訪問的程序非常簡單,但是要做一個能夠同時滿足1萬人,100萬人同時使用的程序,卻是非常的難。今天我們來介紹程序員高并發架構中的池化技術。

[[285038]]

講池化技術之前,我們來講一個現實中的例子,相信大家都去過網吧吧,十幾年前,那個時候SSD的硬盤還非常昂貴,很多網吧都是普通的磁盤,開機非常慢,有些網吧為了提升用戶體驗,就會提前幫你把機器開好,那樣子你去上網的時候,就不需要開機,直接就能上網,這便是池化技術。早上的時候上網的人少些,網管可能只打開10臺機器,到了晚上,可能人會多些,網管會打開30臺機器,這便是池化技術中的池大小調節。

程序員的技術棧中有非常多的池,如線程池、連接池、對象池、內存池,今天我們就來簡單的介紹介紹,各種池。

 

連接池

相信每一個程序員都不陌生,我們在使用Redis等緩存或者Mysql等數據庫的時候,就常常需要配置連接池,相信每個Java程序員都配置過C3P0或者HikariCP的連接池,為什么我們需要連接池,它有什么好處?

如果沒有連接池,當我們訪問數據庫的時候,會發生什么事情,首先我們需要建立連接把,建立連接,以為著要三次握手,這就需要花個好幾毫秒的時間,緊接著,不是每個人都能訪問數據庫吧,數據庫它也需要驗證登陸的賬戶密碼,這又要花個1,2毫秒,然后才是真正的數據查詢,可能就花了1,2毫秒,一個10毫秒的請求,可能80%的時間都浪費了。

其次,連接池可以讓服務更加穩定,舉個例子,假如下游的數據庫支持一千個并發,但是業務層支持一萬個并發,這個時候有可能會發生什么事情,業務層的一萬個請求同時請求數據庫,超過的下游系統的最大負荷,這不是把服務搞死么?連接池可以讓我們給不同的業務分配不同的連接數,讓他們的總數不會超過系統的最大值。

 

對象池

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

對象池技術,減少了程序頻繁向操作系統申請內存,特別是大塊內存,我們更需要使用對象池技術,更好地優化內存的使用,減少垃圾回收次數,從而讓程序更加優化。

線程池

與對象池類似,我們可以理解線程也是操作系統使用的一個對象,在現代計算機開發中,多線程是非常常見且必須的,可以有效的利用到CPU多個核心的特點,但是操作系統創建線程跟銷毀線程又有一定的開銷,所以,我們可以使用池化技術,但操作系統運行完某個線程之后,不是立即銷毀,而是讓這個空閑的線程繼續等待新的任務去執行。

內存池

內存池,這個可能使用C++的同學使用的比較多,最為代表的便是由谷歌開發的TcMalloc與Facebook開發的JeMalloc。其實,Java開發中也會用到內存池,Java中有一些Unsafe的方法,可以直接管理內存,在一些中間件的開發中,我們會經常用到。

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

 

總結

好了,今天我們就分享到這里,希望對你有所啟發。歡迎大家關注我,會跟大家一起學習分享計算機相關知識。大家的支持是我繼續嘮嗑的動力。

責任編輯:華軒 來源: 今日頭條
相關推薦

2018-10-09 14:34:58

開源KubernetesGit

2020-10-08 15:01:17

開發Java程序員

2014-06-05 09:23:47

程序員高效

2024-12-13 08:02:55

大模型GPT后端

2021-08-10 14:21:02

開發程序員工具

2013-08-20 09:33:59

程序員

2020-03-11 09:37:48

程序員技能開發者

2019-02-21 10:51:37

程序員技能溝通

2013-06-09 09:56:35

2020-10-10 11:43:29

Java開發代碼

2015-08-11 09:20:51

初級程序員Linux命令

2022-08-11 08:18:19

前端程序員

2015-08-13 08:56:40

高效程序員共同特征

2013-05-07 09:11:26

程序員程序員特征

2011-06-03 09:58:03

結對編程程序員

2012-11-14 14:18:57

程序員

2009-06-22 09:06:57

程序員技術升級

2011-07-19 13:27:35

2020-03-04 09:02:57

Java程序員Redis

2020-02-25 22:41:41

程序員技能開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久成人动漫 | 久久久久国产精品 | 精品成人免费一区二区在线播放 | 97精品国产 | 久久久婷婷 | 三级在线免费 | 一区二区三区不卡视频 | 国产欧美一区二区三区免费 | 成人福利网 | 毛片1| 国产一区二区三区视频 | 蜜桃传媒一区二区 | 免费精品视频在线观看 | 中文字幕一区二区三区乱码图片 | 免费在线a视频 | 羞羞色在线观看 | 亚洲乱码国产乱码精品精98午夜 | 操操操av | 中文字幕免费 | 久久精品综合 | 精品成人av | 国产精品一区视频 | 亚洲网站在线观看 | 亚洲一区视频在线 | 在线免费黄色小视频 | 久久毛片 | 国产精品视频免费观看 | 日韩欧美国产精品一区二区 | 91久久国产综合久久 | 蜜桃黄网| 99国产精品99久久久久久粉嫩 | 色综合网站 | 91精品国产色综合久久 | 亚洲a视频 | 精品国产欧美在线 | 久久手机在线视频 | 精品久久久久久亚洲精品 | www.青青草| 日韩视频一区二区 | 中文字幕视频在线观看 | 521av网站 |