日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java编写提升性能的代码

發(fā)布時間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java编写提升性能的代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、ConcurrentHashMap是Java 5中支持高并發(fā)、高吞吐量的線程安全HashMap實現(xiàn),既兼顧安全,又保證高并發(fā),HashMap的升級版本,建議使用。

2、List中的三種循環(huán)方法:迭代循環(huán)、for-each循環(huán)、for循環(huán),其中for循環(huán)效率最高,迭代循環(huán)其次,這下你應(yīng)該知道選擇哪一個了吧。

3、使用二元操作替代if-else,代碼簡潔,如:

int number >= 20 ? 20 : (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1;

4、慎用String.split()方法,效率極其低下,可以考慮indexOf()、substring()組合,效率高不止多少倍。

5、new ConcurrentHashMap<K,V>(int capacity),new ArrayList<K,V>(int capacity),如果事先知道多少元素,加個初始參數(shù),減少集合內(nèi)部的移位操作,提高性能。

6、最后不要用反射,太耗內(nèi)存,而且效率也不高,如果非要使用,建議用開源commons-beanutils-1.7.0.jar包里面的PropertyUtils類。

7、數(shù)據(jù)庫表數(shù)據(jù)不經(jīng)常修改的,用緩存機制,不需要每次都進行數(shù)據(jù)庫連接,節(jié)省時間,可以加定時刷新功能,來同步數(shù)據(jù)庫表數(shù)據(jù)。

8、如果要經(jīng)常操作字符串,建議StringBuffer(線程安全)和StringBuilder(線程不安全)取代String。

9、盡量減少對象的創(chuàng)建,考慮使用單例模式,資源共享的情況下,避免由于資源操作時導致的性能或損耗等。如日志文件,應(yīng)用配置,還有就是控制資源的情況下,方便資源之間的互相通信。如線程池等。

10、程序中使用到的資使用完之后要記得釋放。這最好在finally塊中去做。不管程序執(zhí)行的結(jié)果如何,finally塊總是會執(zhí)行的,以確保資源的正確關(guān)閉。

11、使用'system.arraycopy ()'代替通過來循環(huán)復制數(shù)組。

12、簡單的getter/setter方法應(yīng)該被置成final,這會告訴編譯器,這個方法不會被重載,所以,可以變成”inlined” 。

13、如果只是查找單個字符的話,用charat()代替startswith() 。

14、使用移位操作來代替'a / b'操作 。

15、把try/catch塊放入循環(huán)體內(nèi),會極大的影響性能,如果編譯jit被關(guān)閉或者你所使用的是一個不帶jit的jvm,性能會將下降21%之多。

16、如果一個變量需要經(jīng)常訪問,那么你就需要考慮這個變量的作用域了。static? local?還是實例變量?訪問靜態(tài)變量和實例變量將會比訪問局部變量多耗費2-3個時鐘周期。

17、在java+Oracle的應(yīng)用系統(tǒng)開發(fā)中,java中內(nèi)嵌的SQL語言應(yīng)盡量使用大寫形式,以減少Oracle解析器的解析負擔。

19、過分的創(chuàng)建對象會消耗系統(tǒng)的大量內(nèi)存,嚴重時,會導致內(nèi)存泄漏,因此,保證過期的對象的及時回收具有重要意義。
JVM的GC并非十分智能,因此建議在對象使用完畢后,手動設(shè)置成null。

20、不要重復計算,特別是size()方法。

比如:

for(int i=0;i<list.size();i++)

應(yīng)修改為

for(int i=0,len=list.size();i<len;i++)

21、采用在需要的時候才開始創(chuàng)建的策略

例如:

String str="abc";if(i==1){ list.add(str);}

應(yīng)修改為:

if(i==1){String str="abc"; list.add(str);}

22、HaspMap的遍歷。

Map<String, String[]> paraMap = new HashMap<String, String[]>(); for( Entry<String, String[]> entry : paraMap.entrySet() ) {String appFieldDefId = entry.getKey();String[] values = entry.getValue(); }

利用散列值取出相應(yīng)的Entry做比較得到結(jié)果,取得entry的值之后直接取key和 value。

23、數(shù)據(jù)轉(zhuǎn)換成列表:Collections.addAll(aa, bb);

//aa:表示list<String>對象,bb表示數(shù)組對象

總結(jié)

以上是生活随笔為你收集整理的java编写提升性能的代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。