![Java高并發(fā),如何解決,什么方式解決_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/247fa58d-ebbf-4870-aa9f-a9b1076c69dc/247fa58d-ebbf-4870-aa9f-a9b1076c69dc1.gif)
![Java高并發(fā),如何解決,什么方式解決_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/247fa58d-ebbf-4870-aa9f-a9b1076c69dc/247fa58d-ebbf-4870-aa9f-a9b1076c69dc2.gif)
![Java高并發(fā),如何解決,什么方式解決_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/247fa58d-ebbf-4870-aa9f-a9b1076c69dc/247fa58d-ebbf-4870-aa9f-a9b1076c69dc3.gif)
![Java高并發(fā),如何解決,什么方式解決_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/247fa58d-ebbf-4870-aa9f-a9b1076c69dc/247fa58d-ebbf-4870-aa9f-a9b1076c69dc4.gif)
![Java高并發(fā),如何解決,什么方式解決_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/1/247fa58d-ebbf-4870-aa9f-a9b1076c69dc/247fa58d-ebbf-4870-aa9f-a9b1076c69dc5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、那么我們就需要考慮相關(guān)的并發(fā)訪問(wèn)對(duì)于我們開(kāi)發(fā)的網(wǎng)站, 如果網(wǎng)站的訪問(wèn)量非常大的話, 問(wèn)題了。 而并發(fā)問(wèn)題是絕大部分的程序員頭疼的 問(wèn)題,但話又說(shuō)回來(lái)了,既然逃避不掉,那我們就坦然面對(duì)吧今天就讓我們一起來(lái)研究一下常見(jiàn)的并發(fā)和同步吧。為了更好的理解并發(fā)和同步,我們需要先明白兩個(gè)重要的概念:同步和異步1、同步和異步的區(qū)別和聯(lián)系所謂同步,可以理解為在執(zhí)行完一個(gè)函數(shù)或方法之后,一直等待系統(tǒng)返回值或消息,這時(shí)程序是出于阻塞的,只有接收到返回的值或消息后才往下執(zhí)行其它的命令。異步,執(zhí)行完函數(shù)或方法后,不必阻塞性地等待返回值或消息,只需要向系統(tǒng)委托一個(gè)異步過(guò)程,那么當(dāng)系統(tǒng)接收到返回值或消息時(shí),系統(tǒng)會(huì)自動(dòng)觸發(fā)委
2、托的異步過(guò)程,從而完成一個(gè)完整的流程。同步在一定程度上可以看做是單線程,這個(gè)線程請(qǐng)求一個(gè)方法后就待這個(gè)方法給他回復(fù),否則他不往下執(zhí)行(死心眼)。異步在一定程度上可以看做是多線程的(廢話,一個(gè)線程怎么叫異步 ),請(qǐng)求一個(gè)方法后,就不管了,繼續(xù)執(zhí)行其他的方法。同步就是一件事,一件事情一件事的做。異步就是,做一件事情,不引響做其他事情。例如:吃飯和說(shuō)話,只能一件事一件事的來(lái),因?yàn)橹挥幸粡堊?。但吃飯和?tīng)音樂(lè)是異步的,因?yàn)椋?tīng)音樂(lè)并不引響我們吃飯。對(duì)于Java程序員而言,我們會(huì)經(jīng)常聽(tīng)到同步關(guān)鍵字synchronized,假如這個(gè)同步的監(jiān)視對(duì)象是類的話,那么如果當(dāng)一個(gè)對(duì)象訪問(wèn)類里面的同步方法的話,那么其它
3、的對(duì)象如果想要繼續(xù)訪問(wèn)類里面的這個(gè)同步方法的話,就會(huì)進(jìn)入阻塞,只有等前一個(gè)對(duì)象執(zhí)行完該同步方法后當(dāng)前對(duì)象才能夠繼續(xù)執(zhí)行該方法。這就是同步。相反,如果方法前沒(méi)有同步關(guān)鍵字修飾的話,那么不同的對(duì)象可以在同一時(shí)間訪問(wèn)同一個(gè)方法,這就是異步。在補(bǔ)充一下(臟數(shù)據(jù)和不可重復(fù)讀的相關(guān)概念 ):臟數(shù)據(jù)臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問(wèn)數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行了修改,而這種修改還沒(méi)有提交到數(shù)據(jù)庫(kù)中,這時(shí),另外一個(gè)事務(wù)也訪問(wèn)這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)。因?yàn)檫@個(gè)數(shù)據(jù)是還沒(méi)有提交的數(shù)據(jù),那么另外一個(gè)事務(wù)讀到的這個(gè)數(shù)據(jù)是臟數(shù)據(jù)(Dirty Data),依據(jù)臟數(shù)據(jù)所做的操作可能是不正確的。不可重復(fù)讀不可重復(fù)讀是指在一個(gè)事務(wù)內(nèi),多
4、次讀同一數(shù)據(jù)。在這個(gè)事務(wù)還沒(méi)有結(jié)束時(shí),另外一個(gè)事務(wù)也訪問(wèn)該同一數(shù)據(jù)。那么,在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改,那么第一個(gè)事務(wù)兩次讀到的數(shù)據(jù)可能是不一樣的。這樣就發(fā)生了在一個(gè)事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的,因此稱為是不可重復(fù)讀2、如何處理并發(fā)和同步今天講的如何處理并發(fā)和同同步問(wèn)題主要是通過(guò)鎖機(jī)制。我們需要明白,鎖機(jī)制有兩個(gè)層面。一種是代碼層次上的,如java中的同步鎖,典型的就是同步關(guān)鍵字synchronized ,這里我不在做過(guò)多的講解,感興趣的可以參考:另外一種是數(shù)據(jù)庫(kù)層次上的,比較典型的就是悲觀鎖和樂(lè)觀鎖。這里我們重點(diǎn)講解的就 是悲觀鎖(傳統(tǒng)的物理鎖)和樂(lè)觀鎖。悲觀鎖(P
5、essimistic Locking):悲觀鎖,正如其名,它指的是對(duì)數(shù)據(jù)被外界(包括本系統(tǒng)當(dāng)前的其他事務(wù),以及來(lái)自外 部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度,因此,在整個(gè)數(shù)據(jù)處理過(guò)程中,將數(shù)據(jù)處于鎖定狀態(tài)。悲觀鎖的實(shí)現(xiàn),往往依靠數(shù)據(jù)庫(kù)提供的鎖機(jī)制(也只有數(shù)據(jù)庫(kù)層提供的鎖機(jī)制才能真正 保證數(shù)據(jù)訪問(wèn)的排他性,否則,即使在本系統(tǒng)中實(shí)現(xiàn)了加鎖機(jī)制,也無(wú)法保證外部系統(tǒng)不會(huì)修改數(shù)據(jù))。一個(gè)典型的倚賴數(shù)據(jù)庫(kù)的悲觀鎖調(diào)用:select * from account where name=" Erica " for update這條sql語(yǔ)句鎖定了 account表中所有符合檢索條件(name=&
6、quot; Erica。的記錄。本次事務(wù)提交之前(事務(wù)提交時(shí)會(huì)釋放事務(wù)過(guò)程中的鎖),外界無(wú)法修改這些記錄。?Hibernate的悲觀鎖,也是基于數(shù)據(jù)庫(kù)的鎖機(jī)制實(shí)現(xiàn)。?下面的代碼實(shí)現(xiàn)了對(duì)查詢記錄的加鎖:String hqlStr ="from TUser as user where ='Erica'"Query query = (hqlStr);("user",; UPGRADE_NOWAIT : Oracle 的特定實(shí)現(xiàn),利用 Oracle 的 forupdate nowait 子句實(shí)現(xiàn)加鎖。?上面這兩種鎖機(jī)制是我們?cè)趹?yīng)用層較為常用的,加
7、鎖一般通過(guò)以下方法實(shí)現(xiàn):?注意,只有在查詢開(kāi)始之前(也就是Hiberate生成SQL之前)設(shè)定加鎖,才會(huì)?真正通過(guò)數(shù)據(jù)庫(kù)的鎖機(jī)制進(jìn)行加鎖處理,否則,數(shù)據(jù)已經(jīng)通過(guò)不包含for update子句的Select SQL加載進(jìn)來(lái),所謂數(shù)據(jù)庫(kù)加鎖也就無(wú)從談起。為了更好的理解 select. for update 的鎖表的過(guò)程,本人將要以mysql為例,進(jìn)行相應(yīng)的講解1、要測(cè)試鎖定的狀況,可以利用 MySQL的Command Mode ,開(kāi)二個(gè)視窗來(lái)做測(cè)試。表的基本結(jié)構(gòu)如下:表中內(nèi)容如下:開(kāi)啟兩個(gè)測(cè)試窗口,在其中一個(gè)窗口執(zhí)行select * from ta for update。然后在另外一個(gè)窗口執(zhí)行up
8、date操作如下圖:等到一個(gè)窗口 commit后的圖片如下:到這里,悲觀鎖機(jī)制你應(yīng)該了解一些了吧需要注意的是for update要放到mysql的事務(wù)中,即begin和commit中,否者不起 作用。至于是鎖住整個(gè)表還是鎖住選中的行,請(qǐng)參考:至于hibernate中的悲觀鎖使用起來(lái)比較簡(jiǎn)單,這里就不寫demo 了感興趣的自己查一下就 ok 了樂(lè)觀鎖(Optimistic Locking):?相對(duì)悲觀鎖而言,樂(lè)觀鎖機(jī)制采取了更加寬松的加鎖機(jī)制。悲觀鎖大多數(shù)情況下依靠數(shù)據(jù)庫(kù)的鎖機(jī)制實(shí)現(xiàn),以保證操作最大程度的獨(dú)占性。但隨之而來(lái)的就是數(shù)據(jù)庫(kù)性能的大量開(kāi)銷,特別是對(duì)長(zhǎng)事務(wù)而言,這樣的開(kāi)銷往往無(wú)法承受。如
9、一個(gè)金融系統(tǒng),當(dāng)某個(gè)操作員讀取用戶的數(shù)據(jù),并在讀出的用戶數(shù)據(jù)的基礎(chǔ)上進(jìn)行修改時(shí)(如更改用戶帳戶余額),如果采用悲觀鎖機(jī)制,也就意味著整個(gè)操作過(guò)程中(從操作員讀出數(shù)據(jù)、開(kāi)始修改直至提交修改結(jié)果的全過(guò)程,甚至還包括操作員中途去煮咖啡的時(shí)間),數(shù)據(jù)庫(kù)記錄始終處于加鎖狀態(tài),可以想見(jiàn),如果面對(duì)幾百上千個(gè)并發(fā),這樣的情況將導(dǎo)致怎樣的后果。樂(lè)觀鎖機(jī)制在一定程度上解決了這個(gè)問(wèn)題。樂(lè)觀鎖,大多是基于數(shù)據(jù)版本 Version )記錄機(jī)制實(shí)現(xiàn)。何謂數(shù)據(jù)版本即為數(shù)據(jù)增加一個(gè) 版本標(biāo)識(shí),在基于數(shù)據(jù)庫(kù)表的版本解決方案中,一般是通過(guò)為數(shù)據(jù)庫(kù)表增加一個(gè)“version '字段來(lái)實(shí)現(xiàn)。讀取出數(shù)據(jù)時(shí),將此版本號(hào)一同讀出,
10、之后更新時(shí),對(duì)此版本號(hào)加一。此時(shí),將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫(kù)表對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì),如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫(kù)表當(dāng)前版本號(hào), 則予以更新,否則認(rèn)為是過(guò)期數(shù)據(jù)。對(duì)于上面修改用戶帳戶信息的例子而言,假設(shè)數(shù)據(jù)庫(kù)中帳戶信息表中有一個(gè)version字段,當(dāng)前值為 1 ;而當(dāng)前帳戶余額字段(balance )為$100 。操作員 A此時(shí)將其讀出(version=1 ),并從其帳戶余額中扣除$50 ( $100-$50 )。2在操彳員 A操作的過(guò)程中,操作員 B也讀入此用戶信息(version=1 ),并從其帳戶余額中扣除 $20 ( $100-$20 ) 。 3操作員A完成了修改工作,將數(shù)
11、據(jù)版本號(hào)加一(version=2 ),連同帳戶扣除后余額( balance=$50 ),提交至數(shù)據(jù)庫(kù)更新,此時(shí)由于提交數(shù)據(jù)版本大于數(shù)據(jù)庫(kù)記錄當(dāng)前版本,數(shù)據(jù)被更新,數(shù)據(jù)庫(kù)記錄version更新為2 。4操作員B完成了操作,也將版本號(hào)加一(version=2 )試圖向數(shù)據(jù)庫(kù)提交數(shù)據(jù)( balance=$80 ),但此時(shí)比對(duì)數(shù)據(jù)庫(kù)記錄版本時(shí)發(fā)現(xiàn),操作員 B提交的數(shù)據(jù)版本號(hào)為 2 ,數(shù)據(jù)庫(kù)記錄當(dāng)前版本也為2 ,不滿足“提交版本必須大于記錄當(dāng)前版本才能執(zhí)行更新"的樂(lè)觀鎖策略,因此,操作員 B的提交被駁回。這樣,就避免了操作員B用基于version=1的舊數(shù)據(jù)修改的結(jié)果覆蓋操作員A的操作結(jié)果的可
12、能。從上面的例子可以看出,樂(lè)觀鎖機(jī)制避免了長(zhǎng)事務(wù)中的數(shù)據(jù)庫(kù)加鎖開(kāi)銷(操作員A和操作員B操作過(guò)程中,都沒(méi)有對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加鎖),大大提升了大并發(fā)量下的系統(tǒng)整體 性能表現(xiàn)。需要注意的是,樂(lè)觀鎖機(jī)制往往基于系統(tǒng)中的數(shù)據(jù)存儲(chǔ)邏輯,因此也具備一定的局限性,如在上例中,由于樂(lè)觀鎖機(jī)制是在我們的系統(tǒng)中實(shí)現(xiàn),來(lái) 自外部系統(tǒng)的用戶余額更新操作不受我們系統(tǒng)的控制,因此可能會(huì)造成臟數(shù)據(jù)被更新到數(shù)據(jù)庫(kù)中。在系統(tǒng)設(shè)計(jì)階段,我們應(yīng)該充分考慮到這些情況出現(xiàn)的可能性,并進(jìn)行相應(yīng)調(diào)整(如將樂(lè)觀鎖策略在數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程中實(shí)現(xiàn),對(duì)外只開(kāi)放基于此存儲(chǔ)過(guò)程的數(shù)據(jù)更新途徑,而不是將數(shù)據(jù)庫(kù)表直接對(duì)外公開(kāi))。Hibernate在其數(shù)據(jù)訪問(wèn)引擎中
13、內(nèi)置了樂(lè)觀鎖實(shí)現(xiàn)。如果不用考慮外部系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的更新操作,利用Hibernate提供的透明化樂(lè)觀鎖實(shí)現(xiàn),將大大提升我們的生產(chǎn)力。<xml version=""> <! DOCTYPE hibernate-mapping PUBLIC"- onfigure();SessionFactory sf=();Session session=();Transaction tx=();xecuteUpdate();User user=(User) , 1);("221");onfigure();SessionFactory sf=();S
14、ession session=(); niqueResult();niqueResult();Transaction tx=(); ("101");(); onfigure();SessionFactory sf=();Session session=();niqueResult();(10000);niqueResult();Transaction tx=(); ("100");();能web線程連接數(shù)不夠3.可能數(shù)據(jù)庫(kù)連接查詢上不去。根據(jù)不同的情況,解決思路也不同。1 .像第一種情況可以增加網(wǎng)絡(luò)帶寬, DNS域名解析分發(fā)多臺(tái)服務(wù)器。2 .負(fù)載均衡,前
15、置代理服務(wù)器nginx、apache等等3 .數(shù)據(jù)庫(kù)查詢優(yōu)化,讀寫分離,分表等等最后復(fù)制一些在高并發(fā)下面需要常常需要處理的內(nèi)容:?盡量使用緩存,包括用戶緩存,信息緩存等,多花點(diǎn)內(nèi)存來(lái)做緩存,可以大量減少 與數(shù)據(jù)庫(kù)的交互,提高性能。?用jprofiler等工具找出性能瓶頸,減少額外的開(kāi)銷。?優(yōu)化數(shù)據(jù)庫(kù)查詢語(yǔ)句,減少直接使用hibernate等工具的直接生成語(yǔ)句(僅耗時(shí)較長(zhǎng)的查詢做優(yōu)化)。?優(yōu)化數(shù)據(jù)庫(kù)結(jié)構(gòu),多做索引,提高查詢效率。?統(tǒng)計(jì)的功能盡量做緩存,或按每天一統(tǒng)計(jì)或定時(shí)統(tǒng)計(jì)相關(guān)報(bào)表,避免需要時(shí)進(jìn)行統(tǒng) 計(jì)的功能。?能使用靜態(tài)頁(yè)面的地方盡量使用,減少容器的解析(盡量將動(dòng)態(tài)內(nèi)容生成靜態(tài)html來(lái)顯示
16、)。?解決以上問(wèn)題后,使用服務(wù)器集群來(lái)解決單臺(tái)的瓶頸問(wèn)題。java高并發(fā),如何解決,什么方式解決之前我將高并發(fā)的解決方法誤認(rèn)為是線程或者是隊(duì)列可以解決,因?yàn)楦卟l(fā)的時(shí)候是有很多用戶在訪問(wèn),導(dǎo)致出現(xiàn)系統(tǒng)數(shù)據(jù)不正確、丟失數(shù)據(jù)現(xiàn)象,所以想到的是用隊(duì)列解決,其實(shí)隊(duì)列解決的方式也可以處理,比如我們?cè)诟?jìng)拍商品、轉(zhuǎn)發(fā)評(píng)論微博或者是秒殺商品等,同一時(shí)間訪問(wèn)量特別大,隊(duì)列在此起到特別的作用,將所有請(qǐng)求放入隊(duì)列,以毫秒計(jì)時(shí)單位,有序的進(jìn)行,從 而不會(huì)出現(xiàn)數(shù)據(jù)丟失系統(tǒng)數(shù)據(jù)不正確的情況。今天我經(jīng)過(guò)查資料,高并發(fā)的解決方法有倆種:一種是使用緩存、另一種是使用生成靜態(tài)頁(yè)面;還有就是從最基礎(chǔ)的地方優(yōu)化我們寫代碼減 少不必要
17、的資源浪費(fèi):(1 .不要頻繁的new對(duì)象,對(duì)于在整個(gè)應(yīng)用中只需要存在一個(gè)實(shí)例的類使用單例模式.對(duì)于String的連接操作,使用StringBuffer或者StringBuilder.對(duì)于utility類型的類通過(guò)靜態(tài)方法來(lái) 訪問(wèn)。2 .避免使用錯(cuò)誤的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace 消耗性能,除非必要不要使用instanceof做條件判斷,盡量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector性能好。)首先緩存技術(shù)我一直沒(méi)有使用過(guò),我覺(jué)得應(yīng)該是在用戶請(qǐng)求時(shí)將數(shù)據(jù)保存在緩存中,下次請(qǐng)求時(shí)會(huì)檢測(cè)緩存中是否
18、有數(shù)據(jù)存在, 防止多次請(qǐng)求服務(wù)器, 導(dǎo)致服務(wù)器性能降低, 嚴(yán)重導(dǎo)致 服務(wù)器崩潰,這只是我自己的理解,詳細(xì)的資料還是需要在網(wǎng)上收集;使用生成靜態(tài)頁(yè)面我想大家應(yīng)該不模式,我們見(jiàn)過(guò)很多網(wǎng)站當(dāng)在請(qǐng)求的時(shí)候頁(yè)面的后最已經(jīng)變了,如”該頁(yè)面其實(shí)是一個(gè)服務(wù)器請(qǐng)求地址,在轉(zhuǎn)換成htm后,訪問(wèn)速度將提升,因?yàn)殪o態(tài)頁(yè)面不帶有服務(wù)器組件;在這里我就多多介紹一下:一、什么是頁(yè)面靜態(tài)化:簡(jiǎn) 單的說(shuō),我們?nèi)绻L問(wèn)一個(gè)鏈接 ,服務(wù)器對(duì)應(yīng)的模塊會(huì)處理這個(gè)請(qǐng)求,轉(zhuǎn)到對(duì)應(yīng)的 jsp 界面,最后生成我們想要看到的數(shù)據(jù)。 這其中的缺點(diǎn)是顯而易見(jiàn)的: 因?yàn)槊看握?qǐng)求服務(wù)器都 會(huì)進(jìn)行處理,如 果有太多的高并發(fā)請(qǐng)求,那么就會(huì)加重應(yīng)用服務(wù)器的壓
19、力,弄不好就把服務(wù)器搞down掉了。那么如何去避免呢如果我們把對(duì)請(qǐng)求后的結(jié)果彳存成一個(gè)html文件,然后每次用戶都去訪問(wèn),這樣應(yīng)用服務(wù)器的壓力不就減少了那么靜態(tài)頁(yè)面從哪里來(lái)呢總不能讓我們每個(gè)頁(yè)面都手動(dòng)處理吧這里就牽涉到我們要講解的內(nèi)容了,靜態(tài)頁(yè)面生成方案 我們需要的是自動(dòng)的生成靜態(tài)頁(yè)面,當(dāng)用戶訪問(wèn),會(huì)自動(dòng)生成,然后顯示給用戶。二、下面我們?cè)诤?jiǎn)單介紹一下要想掌握頁(yè)面靜態(tài)化方案應(yīng)該掌握的知識(shí)點(diǎn):1、 基礎(chǔ)-URL Rewrite什么是URL Rewrite 呢 URL重寫。用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明問(wèn)題:輸入網(wǎng)址,但是實(shí)際上訪問(wèn)的卻是,那我們就可以說(shuō) URL被重寫了。這項(xiàng)技術(shù)應(yīng)用廣泛,有許多開(kāi)源的工具
20、可 以實(shí)現(xiàn)這個(gè)功能。2、 基礎(chǔ)-Servlet如果你還不知道中一個(gè)請(qǐng)求和一個(gè)servlet是如何匹配到一起的,那么請(qǐng)搜索一下servlet的文檔。這可不是亂說(shuō)呀,有很多人就認(rèn)為/xyz/*.do這樣的匹配方式能有效。如果你還不知道怎么編寫一個(gè)servlet ,那么請(qǐng)搜索一下如何編寫servlet.這可不是說(shuō)笑呀,在各種集成工具漫天飛舞的今天,很多人都不會(huì)去從零編寫一個(gè)servlet 了。三、基本的方案介紹其中,對(duì)于 URL Rewriter的部分,可以使用收費(fèi)或者開(kāi)源的工具來(lái)實(shí)現(xiàn),如果url不是特別的復(fù)雜,可以考慮在servlet中實(shí)現(xiàn),那么就是下面這個(gè)樣子:總 結(jié):其實(shí)我們?cè)陂_(kāi)發(fā)中都很少考慮這種問(wèn)題,直接都是先將功能實(shí)現(xiàn),當(dāng)一個(gè)程序員在干到1到2年,就會(huì)感覺(jué)光實(shí)現(xiàn)功能不是最主要的,安全性能、質(zhì)量等等才是一個(gè)開(kāi)發(fā)人員最該關(guān)心的。今天我所說(shuō)的是高并發(fā)。我的解決思路是:1、采用分布式應(yīng)用設(shè)計(jì)2、分布式緩存數(shù)據(jù)庫(kù)3、代碼優(yōu)化Java高并發(fā)的例
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育行業(yè)在線教育平臺(tái)的課程評(píng)價(jià)體系方案
- 造價(jià)咨詢合同
- 2025年天津貨運(yùn)從業(yè)資格證模擬試題答案解析大全
- 2025年寧德貨物運(yùn)輸駕駛員從業(yè)資格考試系統(tǒng)
- 電子消費(fèi)券采購(gòu)合同(2篇)
- 電力電量分配合同(2篇)
- 電池焊接維修合同(2篇)
- 2024年高考?xì)v史二輪復(fù)習(xí)“12+2+3”專項(xiàng)練第46題選做題專練
- 2024-2025學(xué)年四年級(jí)語(yǔ)文上冊(cè)第五單元19奇妙的國(guó)際互聯(lián)網(wǎng)教案2蘇教版
- 2024-2025學(xué)年高中化學(xué)第二章化學(xué)反應(yīng)與能量第二節(jié)化學(xué)能與電能2發(fā)展中的化學(xué)電源課時(shí)訓(xùn)練含解析新人教版必修2
- 早點(diǎn)出租承包合同(2篇)
- 內(nèi)鏡室院感知識(shí)培訓(xùn)課件
- 2025年市場(chǎng)拓展工作計(jì)劃
- 2025年八省聯(lián)考云南高考生物試卷真題答案詳解(精校打印)
- 2020-2024年五年高考?xì)v史真題分類匯編(山東)專題15 中國(guó)古代史(原卷版)
- (房屋建筑部分)工程建設(shè)標(biāo)準(zhǔn)強(qiáng)制性條文版
- 《大學(xué)英語(yǔ)四級(jí)詞匯大全》
- 倉(cāng)庫(kù)管理培訓(xùn)課件
- 第六章-1八綱辨證
- 《中國(guó)古典建筑》課件
- 礦山生態(tài)修復(fù)施工方案及技術(shù)措施
評(píng)論
0/150
提交評(píng)論