一咬最、解決高并發(fā)問題:
瀏覽器端:#####
1、瀏覽器緩存欠动,減少請(qǐng)求
2永乌、多個(gè)子域名部署,突破瀏覽器鏈接限制
3具伍、圖片文件獨(dú)立域名部署翅雏,減少請(qǐng)求傳輸量
4、減少瀏覽器cookie大小
服務(wù)器端:#####
1人芽、動(dòng)靜分離部署nginx+tomcat
2望几、應(yīng)用集群,負(fù)載均衡--F5/Array/LVS/Nginx/TOMCAT
3萤厅、分布式緩存Memcached+Redis
4橄抹、應(yīng)用本地緩存 Ehcache
5、JVM參數(shù)調(diào)優(yōu)
6惕味、用并發(fā)請(qǐng)求更好的技術(shù) NodeJs/GoLang nodejs處理并發(fā)是Tomcat的很多倍
7楼誓、加服務(wù)器數(shù)量,加內(nèi)存名挥。
數(shù)據(jù)庫:#####
1疟羹、數(shù)據(jù)庫分庫分表 3、讀寫分離 4、數(shù)據(jù)庫本身緩存 Mysql Query
程序方法:#####
- ThreadLocal 保證不同線程擁有不同實(shí)例阁猜,為每個(gè)線程提供一個(gè)副本(解決了線程安全,并不是理想中的線程同步操作)蹋艺。
- Synchronized加鎖的方式剃袍,當(dāng)A在使用資源時(shí),B無法強(qiáng)行獲得捎谨。Synchronized(鎖) { }
- Wait 民效、notify:Wait進(jìn)行線程等待,notify將機(jī)會(huì)(調(diào)用這個(gè)方法的線程)
- Volatile:volatile修飾的成語變量在每次被線程訪問時(shí)涛救,都強(qiáng)迫從共享內(nèi)存中重讀該成員變量的值畏邢,當(dāng)成員變量發(fā)生變化時(shí),強(qiáng)迫線程將變化值回寫到共享內(nèi)存检吆。
三、單例模式:
概念:這種模式涉及到一個(gè)單一的類蹭沛,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象臂寝,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類提供了一種訪問其唯一的對(duì)象的方式摊灭,可以直接訪問咆贬,不需要實(shí)例化該類的對(duì)象。
使用場景: 1帚呼、要求生產(chǎn)唯一序列號(hào)掏缎。 2、WEB 中的計(jì)數(shù)器煤杀,不用每次刷新都在數(shù)據(jù)庫里加一次眷蜈,用單例先緩存起來。 3沈自、創(chuàng)建的一個(gè)對(duì)象需要消耗的資源過多端蛆,比如 I/O 與數(shù)據(jù)庫的連接等。
注意:
1酥泛、單例類只能有一個(gè)實(shí)例今豆。
2、單例類必須自己創(chuàng)建自己的唯一實(shí)例柔袁。
3呆躲、單例類必須給所有其他對(duì)象提供這一實(shí)例。