国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
提高J2SE性能的代碼技巧
 提高J2SE性能的代碼技巧(上)

        www.InnovateDigital.com 整理

 
1.JAVA開發(fā)工具集(JDK)

 
      ■ 設(shè)計了一組通用用途的類
      ■ 設(shè)計的質(zhì)量和實現(xiàn)多樣化
         一 有些部分設(shè)計和實現(xiàn)得很好
         一 而有些部分...
      ■ 你可以訪問JDK的源代碼
         一  %JAVA_HOME%\src.jar
         一 不要直接修改源代碼,但如果識別出一個JDK的方法是一個瓶頸,檢查源代碼以理解為什么
 
2.數(shù)據(jù)結(jié)構(gòu)和算法

 
      ■ 推薦JAVA集合框架
         一 指南 java.sun.com/docs/books/tutorial/collections
      ■ 設(shè)計得很好的基本的數(shù)據(jù)結(jié)構(gòu)和算法
 
3.集合框架

 
      ■ 調(diào)換實現(xiàn)達到不同的性能特性
 
4.集合框架:接口與具體類

 
      ■ 面向接口編程,而不是具體類
         一 特別是對于方法參數(shù)
         一 在性能優(yōu)化時更容易改變實現(xiàn)
 
5.集合框架:具體類

 
      ■ 當一個集合創(chuàng)建時要消除動態(tài)增長的代價,為其指定一個實際初始大小
         一 一些具體類(如:ArrayList)的動態(tài)增長的代價是很高的
      ■ 在適當?shù)牡胤娇紤]重用集合對象
         一  調(diào)用集合的clear()方法清楚它的所有元素
      ■ Object.hashCode()
         一  選擇一個算法保證哈希表的統(tǒng)一分配
         一  覆蓋繼承的Object.hashCode()方法, 默認的實現(xiàn)返回的是對象引用值,沒有展示一個一致的分配
         一  從不返回一個常量
         一 非常小心地改變鍵的值的底層狀態(tài)
 
6.集合框架:實現(xiàn)數(shù)據(jù)結(jié)構(gòu)

 
      ■ 如果一定要實現(xiàn)自己的數(shù)據(jù)結(jié)構(gòu),依賴于集合接口實現(xiàn)你的類
         一 可以使用java.util.Collections工具方法恰當?shù)貙崿F(xiàn)你的具體數(shù)據(jù)結(jié)構(gòu)
      ■ 擴大數(shù)據(jù)結(jié)構(gòu)集合,你可以插入其它的開發(fā)成果
 
7.集合框架:基礎(chǔ)算法

 
      ■ Java.util.Collections類里的算法
         一 sort(…..)
           以升序重新排列List的元素
           輕微地優(yōu)化MergeSort-O(nlog(n))的版本
         一 binarySearch(….)
           在一個已排序的List里查找指定的元素
         一 極限值
           min(…) max(….)
         一 其它
           reverse(….),fill(….), copy(…)
 
8.數(shù)組

 
      ■ 數(shù)組與ArrayList與Vector
         一 數(shù)組的速度大約比ArrayList快十倍
         一 數(shù)組的速度大約比Vector快40倍
         一 ArrayList的速度大約比Vevtor快3-4倍
      ■ 當拷貝一個數(shù)組的元素到另一個數(shù)組時,使用System.arrycopy(…)
 
9.數(shù)組:基礎(chǔ)算法

 
      ■ JAVA2的java.util.Arrays類提供了一組重載方法,為基礎(chǔ)數(shù)組實現(xiàn)了最佳化的算法(與java.util.Collections類相似)
      ■ Java.util.Arrays類的里的算法
         一 binarySearch(…)
         一 equals(…)
         一 fill(…)
         一 sort(…)
(北京鑄銳數(shù)碼科技有限公司 www.InnovateDigital.com

 
 


 提高J2SE性能的代碼技巧(下)


        www.InnovateDigital.com 整理

1.格式化


      ■ 文本格式化類:

         一 java.text.DateFaormat

         一 java.text.NumberFaormat

         一 java.text.MessageFaormat

           可能非常慢

      ■ 例如:第一次調(diào)用DateFormat.geInstance()創(chuàng)建超過12000個對象

      ■ 每次調(diào)用DateFormat.format創(chuàng)建13個對象,加上第一次調(diào)用時的那次

         一 重用同一個DateFormat實例而不是重復(fù)調(diào)用DateFormat.getInstance是很值得做的

      ■ 其它的格式化類有相似的特點

2.XML處理:SAX


      ■ 處理XML文檔的低級,事件驅(qū)動庫

      ■ 最好的選擇,如果:

         一 你需要以線性的方式遍歷整個文檔

         一 你只需要查看幾項

         一 內(nèi)存效率是一個問題

3.XML處理


      ■ 試著在你的應(yīng)用程序里消除處理特定XML對象

      ■ 通過一個RMI調(diào)用傳遞DOM樹,結(jié)果會使整個java對象樹序列化。。。通常會4倍甚至更多的空間

4.Buffered I/O


      ■ I/O類默認不緩沖

      ■ 為你的I/O流使用緩沖的包裝器

           BufferedOutputStream

           BufferedInputStream

           BufferedReader

           BufferedWriter

      ■ 嘗試在構(gòu)造方法中使用緩沖大小參數(shù)

         一 BufferedInputStream:默認2048個字節(jié)(JDK1.4.1)

         一 BufferedReader:默認8192個字符(JDK1.4.1)

5.流與Readers


      ■ 在java里有兩個并行的I/O接口

        Reader和Writer

           一 BufferedInputStream:字符序列(16-bit)

        InputStream和OutputStream

           一 字節(jié)序列(8-bit)

      ■ 處理基于文本的文件,Readers&Writers更快

        更快的幅度達50%

        參考O'Reilly的"java Performance Tuning"第八章

6.新I/O


      ■ 在JDK1.4或更高版本,java.nio包給出了更多I/O選項

         一 正則表達式匹配

         一 內(nèi)存映射緩存

         一 非中斷I/O

      ■ 這些能提供更高的I/O性能


7.序列化


      ■ 使一個對象"變平"允許使它流化成一個文件(為了存儲)或者網(wǎng)絡(luò)連接(為了傳輸)

         一 添加Serializeable接口標記你的類

         一 通過ObjectInputStream/ObjectOutputStream

      ■ 序列化被遠程方法調(diào)用廣泛使用

      ■ 序列化可能會非常昂貴

         一 當你序列化一個對象時,這個對象可達的每個對象都會被序列化,可能會有非常多的對象

         一 除了內(nèi)部虛擬機程序,還會大量使用反射

         一 序列化是非常繁冗的

             只有一個int數(shù)據(jù)的類占用37個字節(jié)

             序列化的對象包括了每個類成員及其值的全限定名

         一 速度是不對稱的,反序列化比序列化速度更慢

8.序列化:transient關(guān)鍵字


      ■ 可以重新定義序列化動作

         一 使用transient關(guān)鍵字指出不需要在序列化流中包含的成員變量

             Private transient String name;

         一 這讓你可以指出對象里不重要的成員變量或者當對象讀入內(nèi)存時可以重新計算的成員變量

9.序列化:Externalizable接口


      ■ 消除序列化負載,實現(xiàn)Externalizable接口而不是Serializable

            Public void readExternal(ObjectInput out)

             Public void writerExternal(ObjectOutput out)

      ■ 程序員完全要負責:

         一 管理序列化內(nèi)容

         一 調(diào)用readExternal()/wirteExternal()方法序列化對象

10.Externalizable


(北京鑄銳數(shù)碼科技有限公司 www.InnovateDigital.com)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java對象序列化學習筆記_Love Sun,Love Life
java序列化(Serializable)的作用和反序列化
什么是writeObject 和readObject?可定制的序列化過程
Java程序員必備:序列化全方位解析
講真,下次打死我也不敢隨便改serialVersionUID了
Java transient關(guān)鍵字使用小記
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服