java程序优化快捷键_Java 代码中针对性能优化的总结方案
在一個好的項目中代碼優(yōu)化是永遠離不開的話題,如果有充足的時間開發(fā)和維護代碼,必須考慮每個可以優(yōu)化的細節(jié),日積月累,項目的質(zhì)量才會上升,代碼優(yōu)化是絕對有必要的工作。代碼優(yōu)化的主要目的是減少代碼塊,提升代碼運行效率。
1.采用懶加載策略,在需要時Create,代碼如下:String?yd?=?“www.yoodb.com”;
List?list?=?new?ArrayList<>();
if(true){
list.add(yd);
}
替換為
if(true){
String?yd?=?“www.yoodb.com”;
List?list?=?new?ArrayList<>();
list.add(yd);
}
2.使用數(shù)據(jù)庫連接池和線程池
兩者都是重用對象的,連接池可以避免頻繁打開或關(guān)閉連接,線程池可以避免頻繁創(chuàng)建或銷毀線程。
3.使用位移替換乘除法for(int?i=1;i<100;i++){
int?a?=?i?*?8;
int?b?=?i?/?2;
Sysout.out.println(a?+?“-----”?+?b);
}
替換為
for(int?i=1;i<100;i++){
int?a?=?i?<
int?b?=?i?>>?1;
Sysout.out.println(a?+?“-----”?+?b);
}
位移操作方便快捷,可以極大的提高性能
4.循環(huán)內(nèi)避免不斷的創(chuàng)建對象for(int?i=1;i<100;i++){
Object?ob?=?new?Object();
}
替換為
Object?ob?=?null;
for(int?i=1;i<100;i++){
ob?=?new?Object();
}
替換之后內(nèi)存中只有一個Object對象引用,從而執(zhí)行不同的Object對象,其實內(nèi)存中只有一個,節(jié)省了內(nèi)存消耗。
5.慎用異常
1)拋出異常首先創(chuàng)建一個新的對象,Throwable接口調(diào)用fillInStackTrace()的本地同步方法,檢查堆棧收集調(diào)用跟蹤信息。只要異常被拋出,Java虛擬機就會調(diào)用堆棧,異常適用于處理錯誤,不適用于控制程序流程。
2)避免在循環(huán)中使用try{….}catch(Exception e){}處理異常,盡量在循環(huán)外處理
6.I/O流
Java對數(shù)據(jù)庫進行連接或讀取文件時,操作I/O流在使用完之后一定要及時關(guān)閉以釋放資源
7.減少對變量的重復計算for(int?i=1;i
…
}
替換為
for(int?i=1,length?=?list.size();i
…
}
8.static final常量聲明,并以大寫命名
編譯時放入常量池中,從而避免在運行程序時再計算生成常量的值,以大寫命名方便區(qū)分常量與變量,習慣寫法。
9.避免創(chuàng)建不使用的對象或?qū)氲念?/p>
在導入類時有個黃色小燈泡顯示“The value of the local variable i is not used”,此時的類是沒有用的建議刪除掉,刪除所有引入但是沒有使用的類快捷鍵 Shift+Ctril+O
10.參數(shù)判斷,”if (ia== 1){…}”和”if (1== a){…}”是沒有區(qū)別的,個人習慣建議使用if(a==1){…}
11. 使用帶緩沖的輸入輸出流進行IO操作
帶緩沖的I/O流為BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,可以極大地提升IO效率
12. 單例模式優(yōu)缺點以及在合理的場合使用單例模式
【優(yōu)點】
1)實例控制
單例模式會阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。
2)靈活性
因為類控制了實例化過程,所以類可以靈活更改實例化過程。
【缺點】
1)開銷
雖然數(shù)量很少,但如果每次對象請求引用時都要檢查是否存在類的實例,將仍然需要一些開銷。可以通過使用靜態(tài)初始化解決此問題。
2)可能的開發(fā)混淆
使用單例對象(尤其在類庫中定義的對象)時,開發(fā)人員必須記住自己不能使用new關(guān)鍵字實例化對象。因為可能無法訪問庫源代碼,因此應(yīng)用程序開發(fā)人員可能會意外發(fā)現(xiàn)自己無法直接實例化此類。
3)對象生存期
不能解決刪除單個對象的問題。在提供內(nèi)存管理的語言中(例如基于.NET Framework的語言),只有單例類能夠?qū)е聦嵗蝗∠峙?#xff0c;因為它包含對該實例的私有引用。在某些語言中(如 C++),其他類可以刪除對象實例,但這樣會導致單例類中出現(xiàn)懸浮引用。
使用場合情況:
1)限制創(chuàng)建示例(讀取配置文件),節(jié)約資源
2)限制資源使用情況,通過線程同步來控制資源的并發(fā)訪問
3)限制共享數(shù)據(jù),在未建立直接關(guān)聯(lián)的條件下讓多個不相關(guān)的進程或線程之間實現(xiàn)通信
總結(jié)
以上是生活随笔為你收集整理的java程序优化快捷键_Java 代码中针对性能优化的总结方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mui HTML5 plus 下载文件
- 下一篇: 的底层实现 ios_iOS 面试梳理