怎樣提高java平臺的性能

jopen 9年前發布 | 12K 次閱讀 Java開發 Java性能
首先是從三方面來提高的,應用層面,服務器端層面,數據庫層面。 
一、應用層面 
1、采用freemaker或者velocity來做頁面靜態化,提高網站的訪問速度。 

二、服務器端 
1、對于一些不經常增刪改的數據做緩存,比如memcached,redis,mongodb 
2、對于圖片的話,采用fastDFS來做圖片的分布式服務器,加快圖片的存儲與讀取。 
3、對于安全方面,采用數據庫事務來保證數據的安全性能。 
4、能盡量少的使用鎖來處理,因為鎖有時候會帶來一系列的連鎖反應。 
5、做負載均衡,通過nginx+tomcat組合給服務器端分流。 
6、通過隊列來做一些數據的信息暫存,來減緩線程對服務器的壓力。 
7、采用并發的集合類,例如ConcurrentHashMap,CopyOnWriteArrayList等。 
8、考慮程序的可擴展性和可移植性。 
9、數據的一致性問題,需要考慮java concurrent包 
10、適當的使用一些高效算法。 
11、內存一致性:內存操作(如共享變量的讀寫)的 happen-before 關系。只有寫入操作 happen-before 讀取操作時,才保證一個線程寫入的結果對另一個線程的讀取是可視的。synchronized 和 volatile 構造 happen-before 關系,Thread.start() 和Thread.join() 方法形成 happen-before 關系。 
12、JVM的內存模型以及JVM的垃圾回收機制,一直垃圾回收器的合理使用,新生代和老年代的合理分區。 

三、數據庫層面 
1、給數據庫字段做索引,能夠加快查詢速度,不是所有的索引都能夠加快查詢速度的,前提是對于查詢多于增刪改的數據。 
2、給數據庫表做表分區,能夠加速查詢的速度。 
3、分庫分表,通過分區分表能夠加快查詢速度。 
4、根據explain命令對于sql語句進行解釋執行計劃分析。 
5、對表進行分區,分區查詢會加快速度的 
6、oracle的話。需要選擇合適的選擇器,根據實際需要,選擇基于成本的選擇器,或者基于基于規則的優化器 
7、in和exists,還有not in和not exists的用法區別,以及適用場合 
8、做master-slave,進行讀寫分離,給數據庫通過分流來減小壓力。 
9、對于sql語句進行優化.
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!