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

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

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

    I want to fly higher
    programming Explorer
    posts - 114,comments - 263,trackbacks - 0
    一.常用技巧

        1.避免使用不易理解的數字,用有意義的常量來代替。

        2.不要使用難懂的技巧性很高的語句。

        3.在處理String的時候,推薦使用StringBuffer類。

         String類將StringBuffer類封裝了起來,(以花費更多時間為代價)為開發人員提供了一個安全的接口。當我們在構造字符串的時候,我們應該用StringBuffer來實現大部分的工作,當工作完成后將StringBuffer對象再轉換為需要的String對象。如果用String對象代替StringBuffer對象的話,會花費許多不必要的創建和釋放對象的CPU時間。  
          ○ StringBuffer description = new StringBuffer();

        ○ description.append(str1).append(str2) .append(str3);

        ○ model.setDescription(description.toString());

        × String description = “”;

        × description = str1 + str2 + str3;

        × model.setDescription(description);
        但是在上述例子中,如果被拼接的對象是靜態常量的話,直接使用“+”來拼接會效率更高一些。

        4.為了避免死鎖,請不要濫用或者使用不必要的synchronized關鍵字,應該在必要的時候才使用它。

        5.在寫代碼的時候,請考慮性能的問題。但是并不是說要花很多時間在優化代碼上,而是我們時刻應該提醒自己要注意代碼的效率。

        6.內存中的靜態集合類要清楚的知道何時清理,否則可能出現內存泄露的情況。

        7.避免使用while循環時出現死循環或者長時間無法跳出的情況。

        8.對Collection,Map接口的類對象初始化時最好要先分配好合理的空間大?。ńㄗh),并且根據自己的需求選擇合適的對象,我們常用的集合對象包括ArrayLIist,HashMap,TreeMap,當然還包括Concurrent類庫,ConcurrentHashMap,CopyOnWriteArrayList等。

        大家調用ArrayList的構造函數時,其源碼為:

    1 public ArrayList()
    2
    3    {
    4
    5        this(10);
    6
    7    }

    8

     

        9.不要用Timer定時執行任務,因為Timer有很多弊端,其采用單線程方式執行所有的TimeTask,如果某個TimerTask很耗時則會影響到其他TimerTask的執行。另外Timer不會捕獲由TimerTask拋出的未檢查的異常,故當有異常拋出時,Timer會終止,導致未執行完得TimerTask不再執行,新的TimerTask也不能被調度,最后Timer對調度的支持是基于絕對時間的。

        所以我們選擇jdk1.5引入的ScheduledThreadPoolExecutor或者ScheduledExecutorService。

        10.開發人員慎用線程,除了上面的定時任務執行使用的ScheduledExecutor,因為如果線程不當的話,會造成很大的麻煩。

        11.注意優化循環體,循環是重復運行的地方,如果循環次數很大的話,循環體內不好的代碼將被放大而突出。

        12盡量少用new實例,盡量在使用時再創建該對象,盡量重用對象。如ByteBuffer,每次不要都申請一個空間,而要clear后復用。

        13.盡可能的優先使用Jdk提供的API,而不是自己寫,如數組復制等,因為一般API都處于了性能的考慮。

        14.針對異常處理,一定要調用e.printStackTrace()方法打印堆棧而不是調用e.getMessage()這樣的方法。

        15.統一用Log4j等log工具而不是用System.out.println()等方法打印調試,非常不方便維護。

        16.一定要有緩存的概念,玩家游戲的一個操作都不能直接操作db,都是直接更新緩存中的數據,最常用的緩存就是本地內存。

        17.對于DB的處理,大家最好同一規范,都用一個專門的JdbcTemplate或者一個封裝數據庫操作,接口的facade。

        18.慎用反射,反射效率很低。

        19.字符串操作很復雜的話,推薦使用強大的正則表達式進行處理。

        20.設計到游戲中狀態的判斷,推薦使用位運算。

        21.用統一的序列化接口序列化游戲中的數據。    

        22.游戲服務器代碼中除了注釋通常不能出現中文。

        23.服務器通訊時能用byte的不用short,能用int的不用String,盡量減少通訊時的數據承載。

        24.盡量不要在方法上加synchronized,這樣效率會非常低。

        25.涉及到到db編碼時,原則即"一個東西不能存到兩個地方",保證唯一性,避免不一致。

        26.時間處理上要統一,統一用毫秒。

        27.數據運算過程中,要注意數據的溢出處理。

        28.對Concurrent類庫有足夠熟悉后才可以使用,不要認為用了就不必同步了。

        29.盡量使用局部變量,調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧中,速度較快。

        30.寫代碼過程中要結合Junit反復測試,要寫測試文檔,畫UML圖等。
    二.面向對象設計原則

        1.單一職責原則:SRP-single responsibility principle

        每個類應該只有一個職責,對外提供一種功能。

        2.開閉原則:OCP-open for extendsion,close for modification

        對類的改動是通過增加代碼進行的,而不是改動現有的代碼。

        3.里氏替換原則:LSP-liskov substitution principle

        在任何出現父類的地方都可以用它的子類來替代;同一個繼承體系中的對象應該有共同的行為特征。

        4.依賴注入原則:DIP-dependence inversion principle

        要依賴于抽象,不要依賴于具體的實現。

        5.接口分離原則:ISP-interface segregation principle

        不應該強迫客戶端程序依賴他們不需要使用的方法,一個接口不需要提供太多的行為。

        6.迪米特原則:LOD-law of demeter

        降低各個對象之間的耦合,提高系統的可維護性。在模塊之間,應該通過接口進行通信,而不會理會模塊的內部的工作原理。

        7.優先使用組合而不是繼承原則:CARP-composite/aggregate reuse principle

        復用對象的時候,優先考慮組合,而不是繼承。因為在使用繼承時,父類的任何改變都可能影響子類的行為。

    三.附eclipse開發最常用快捷鍵

        Ctrl+L-查找行數

        Ctrl+T-查找當前接口的實現類    

        Ctrl+ShiftO-快速生成import/去掉未使用的import聲明

        Alt+/-內容輔助

        Ctrl+O-顯示大綱

        Ctrl+/-行注釋,取消行注釋

        Ctrl+D-刪除當前行

        Ctrl+K-快速向下查找

        Ctrl+Shift+K-快速向上查找

        Ctrl+Shift+T-查找當前workspace的type

        Ctrl+Shift+R-查找resource

        Ctrl+Shift+G-查找類方法和屬性的引用

        Ctrl+Shift+F-格式化代碼

        Alt+左右方向鍵-前進和后退歷史記錄

        F2-重命名(Alt+Shift+R)

        F3-快速定位光標位置的類,方法或屬性

        F4-顯示類的繼承關系

        Ctrl+Shit+/-塊注釋

        Ctrl+Shift+\-取消行注釋

        Ctrl+1-快速修正

        Ctrl+G/Ctrl+鼠標左鍵-查找當前元素的聲明

        Ctrl+H-綜合搜索

        Ctrl+Alt+上下方向鍵-復制一份代碼
     

    posted on 2011-08-06 18:12 landon 閱讀(2217) 評論(0)  編輯  收藏 所屬分類: ProgramGameServer
    主站蜘蛛池模板: 亚洲高清视频在线| 天堂亚洲免费视频| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲一区二区三区四区视频 | 亚洲综合无码AV一区二区 | 亚洲精品天堂在线观看| 18国产精品白浆在线观看免费 | 57pao一国产成视频永久免费| 在线精品免费视频无码的| 亚洲色婷婷综合开心网| 91久久亚洲国产成人精品性色| 亚洲精品伦理熟女国产一区二区| 久久不见久久见免费影院www日本| 18成禁人视频免费网站| 91午夜精品亚洲一区二区三区| 久久毛片免费看一区二区三区| 亚洲熟妇无码八AV在线播放| 亚洲AV永久无码精品网站在线观看| 免费网站观看WWW在线观看| 久久不见久久见中文字幕免费| 亚洲精品午夜国产VA久久成人 | 免费一级e一片在线播放| 亚洲国产精品线观看不卡| 国产精品免费αv视频| 日韩在线天堂免费观看| 亚洲午夜精品一区二区| eeuss影院免费92242部| 亚洲AV成人无码久久精品老人| 老司机午夜性生免费福利| 亚洲人成网站免费播放| 亚洲综合无码一区二区三区| 99在线免费视频| 中文字幕精品亚洲无线码一区应用| 中文字幕无码免费久久| 亚洲人成网站在线观看播放青青| 日韩中文无码有码免费视频 | 四虎精品成人免费视频| 中文字幕亚洲免费无线观看日本 | 永久免费av无码网站yy| 亚洲午夜无码久久| 成年丰满熟妇午夜免费视频|