首先是從三方面來提升的,應用層面,服務器端層面,數據庫層面。
1、應用層面
一、採用freemaker或者velocity來作頁面靜態化,提升網站的訪問速度。
2、服務器端
一、對於一些不常常增刪改的數據作緩存,好比memcached,redis,mongodb
二、對於圖片的話,採用fastDFS來作圖片的分佈式服務器,加快圖片的存儲與讀取。
三、對於安全方面,採用數據庫事務來保證數據的安全性能。
四、能儘可能少的使用鎖來處理,由於鎖有時候會帶來一系列的連鎖反應。
五、作負載均衡,經過nginx+tomcat組合給服務器端分流。
六、經過隊列來作一些數據的信息暫存,來減緩線程對服務器的壓力。
七、採用併發的集合類,例如ConcurrentHashMap,CopyOnWriteArrayList等。
八、考慮程序的可擴展性和可移植性。
九、數據的一致性問題,須要考慮java concurrent包
十、適當的使用一些高效算法。
十一、內存一致性:內存操做(如共享變量的讀寫)的 happen-before 關係。只有寫入操做 happen-before 讀取操做時,才保證一個線程寫入的結果對另外一個線程的讀取是可視的。synchronized 和 volatile 構造 happen-before 關係,Thread.start() 和Thread.join() 方法造成 happen-before 關係。
十二、JVM的內存模型以及JVM的垃圾回收機制,一直垃圾回收器的合理使用,新生代和老年代的合理分區。
3、數據庫層面
一、給數據庫字段作索引,可以加快查詢速度,不是全部的索引都可以加快查詢速度的,前提是對於查詢多於增刪改的數據。
二、給數據庫表作表分區,可以加速查詢的速度。
三、分庫分表,經過分區分表可以加快查詢速度。
四、根據explain命令對於sql語句進行解釋執行計劃分析。
五、對錶進行分區,分區查詢會加快速度的
六、oracle的話。須要選擇合適的選擇器,根據實際須要,選擇基於成本的選擇器,或者基於基於規則的優化器
七、in和exists,還有not in和not exists的用法區別,以及適用場合
八、作master-slave,進行讀寫分離,給數據庫經過分流來減少壓力。
九、對於sql語句進行優化.java