<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    Practical Java

    1一般技術(GeneralTechniques)


    實踐1:參數以byvalue方式而非byreference方式傳遞

    實踐2:對不變的data和objectreference使用final

    實踐3:缺省情況下所有non-static函數都可被覆寫

    實踐4:在arrays和vectors之間慎重選擇

    實踐5:多態(po1ymorphism)優于instanceof

    實踐6:必要時才使用instanceof

    實踐7:一旦不再需要objectreferences,就將它設為null

    2對象與相等性(ObjectsandEquality)


    實踐8:區分reference型別和primitive型別

    實踐9:區分==和equals()

    實踐10:不要依賴equals()的缺省實現

    實踐11:實現equals()時必須深思熟慮

    實踐12:實現equals()時優先考慮使用getClass()

    實踐13:調用super.equals()以喚起baseclass的相關行為

    實踐14:在equals()函數中謹慎使用instanceof

    實踐15:實現equals()時需遵循某些規則

    3異常處理(ExceptionHandling)


    實踐16:認識[異常控制流](exceptioncontrolflow)機制

    實踐17:絕對不可輕忽異常(Neverignoreanexception)

    實踐18:千萬不要遮掩異常(Neverhideanexception)

    實踐19:明察throws子句的缺點

    實踐20:細致而全面地理解throws子句

    實踐21:使用finally避免資源泄漏(resourceleaks)

    實踐22:不要從try區段中返回

    實踐23:將try/catch區段置于循環之外

    實踐24:不要將異常(exceptions)用于流程控制

    實踐25:不要每逢出錯就使用異常(exceptions)

    實踐26:在構造函數(constructors)中拋出異常

    實踐27:拋出異常之前先將對象恢復為有效狀態(validstate)

    4性能(Performance)


    實踐28:先把焦點放在設計.數據結構和算法身上

    實踐29:不要倚賴編譯期(compile-time)優化技術

    實踐30:理解運行期(mntime)代碼優化技術

    實踐31:如欲進行字符串接合,StringBuffer優于String

    實踐32:將對象的創建成本(creationcost)降至最小

    實踐33:慎防未用上的對象(unusedobjects)

    實踐34:將同步化(synchronization)降至最低

    實踐35:盡可能使用stack變量

    實踐36:使用static.final和private函數以促成inlining

    實踐37:instance變量的初始化一次就好

    實踐38:使用基本型別(primitivetypes)使代碼更快更小

    實踐39:不要使用Enumeration或Iterator來遍歷vector

    實踐40:使用System.arraycopy()來復制arrays

    實踐41:優先使用array,然后才考慮Vector和ArrayList

    實踐42:盡可能復用(reuse)對象

    實踐43:使用緩式評估(延遲求值,lazyevaluation)

    實踐44:以手工方式將代碼優化

    實踐45:編譯為本機代碼(Compiletonativecode)

    5多線程(Multithreading)


    實踐46:面對instance函數,synchronized鎖定的是對象(objects)而非函數(methods)或代碼(code)

    實踐47:弄清楚synchronizedstatics函數與synchronizedinstance函數之間的差異

    實踐48:以[private數據十相應訪問函數(accessor)]替換[public/protected數據]

    實踐49:避免無謂的同步控制

    實踐50:訪問共享變量時請使用synchronized或volatile

    實踐51:在單一操作(singleoperation)中鎖定所有用到的對象

    實踐52:以固定而全局性的順序取得多個locks(機鎖)以避免死鎖

    實踐53:優先使用notifyAll()而非notify()

    實踐54:針對wait()和notifyAll()使用旋鎖(spinlocks)

    實踐55:使用wait()和notifyAll()替換輪詢循環(pollingloops)

    實踐56:不要對lockedobject(上鎖對象)之objectreference重新賦值

    實踐57:不要調用stop()或suspend()

    實踐58:通過線程(threads)之間的協作來中止線程

    6類與接口(ClassesandInterfaces)


    實踐59:運用interfaces支持多重繼承(multipleinheritance)

    實踐60:避免interfaces中的函數發生沖突

    實踐61:如需提供部分實現(partialimplementation)請使用abstractclasses(抽象類)

    實踐62:區分interface.abstractclass和concreteclass

    實踐63:審慎地定義和實現immutableclasses(不可變類)

    實踐64:欲傳遞或接收mutableobjects(可變對象)之objectreferences時,請實施clone()

    實踐65:使用繼承(inheritance)或委托(delegation)來定義immutableclasses(不可變類)

    實踐66:實現clone()時記得調用super.clone()

    實踐67:別只依賴finalize()清理non-memory(內存以外)的資源

    實踐68:在構造函數內調用non-final函數時要當心

    附錄:如何學習Java

    進階讀物(FurtherReading)

    索引(Index)


    posted on 2006-02-20 21:10 Vincent.Chen 閱讀(137) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 小说专区亚洲春色校园| 亚洲爆乳大丰满无码专区| 免费网站观看WWW在线观看| 亚洲成?Ⅴ人在线观看无码| 国产大陆亚洲精品国产| 国产一级高清免费观看| 曰批全过程免费视频观看免费软件 | 亚洲欧美国产日韩av野草社区| 真人做人试看60分钟免费视频| 国产成人精品日本亚洲网址 | 国产成人精品免费视| 亚洲一级毛片在线播放| 女人18毛片特级一级免费视频 | 亚洲av色香蕉一区二区三区| 在线观看国产情趣免费视频| 污污的视频在线免费观看| 亚洲人成网站在线观看青青 | 免费成人激情视频| 亚洲欧美日韩中文字幕一区二区三区| 免费毛片在线播放| 无忧传媒视频免费观看入口| 亚洲一区二区三区AV无码| 亚洲国产日产无码精品| 男的把j放进女人下面视频免费| 五月天网站亚洲小说| 在线永久免费的视频草莓| 美女被免费视频网站a| 亚洲啪啪综合AV一区| 亚洲精品视频在线观看免费| 亚洲AV无码一区二区三区久久精品 | 亚洲精品A在线观看| 99re免费99re在线视频手机版| 77777午夜亚洲| 精品国产亚洲一区二区在线观看| 永久免费av无码网站yy| 亚洲人成人网毛片在线播放| 免费在线一级毛片| 国产高清免费视频| 四虎国产精品永免费| 亚洲永久中文字幕在线| 亚洲国产av一区二区三区|