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

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

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

    春風博客

    春天里,百花香...

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    #

    面向對象編程中常見類的功能和形態

    在面向對象編程中,我們一般采用從頂向下的編程方式,即先設計類的層次,如View,Controller,Service,Dao,Domain,Util等,再完善各層中的類。在這個過程中,我發現按功能和形態來分,系統中類可分為以下幾個類別:  

    1.實體類(Entity Classes):這種類一般是現實世界事物在代碼世界中的抽象表示,和現實事物有著一一對應關系.存儲到持久介質中時一般對應著一條記錄.如MIS系統中常見的雇員類Employee,論壇系統中常見的Topic等.由于這些類可以直接從現實事物中歸納抽象得來,寫出它們的框架代碼一般相對方便容易,但要真正理順實體類之間的關系需要投入不少精力,這些類一般處于Domain層中. 

    2.通道類(Plumbing Classes):這種類一般用于充當傳輸實體類的通道,在編程中,經常需要從持久層取出一個或多個實體類的對象或是將實體類的對象存儲到持久層中,這種任務一般由通道類來完成.它們一般由Service或是Dao層中的類來承擔.這些類一般不保存狀態,對外界來說,它們的對外接口(Public Interface)一般比具體的實現重要,在數量較多時,也經常抽象出一些上層的抽象類或是接口出來以方便調用. 

    3.輔助類(Assistant Classes):這些類一般起輔助任務,一般可以把共通的處理和變量放在其中供其他層次類調用,這樣做一能避免散彈式修改,二能減少重復代碼,三能提高代碼復用度.輔助類一般放在Util包中. 

    4.框架類(Framework Classes):這些類一般由固定的框架提供,程序員不能改變.在類的層次上它一般處于界面和業務層之間,即控制層的位置,jsp/servlet中的Servlet,Struts1,2中的Action都是這樣的類,它承擔了接受用戶輸入,并展示業務處理的結果的任務.

    posted @ 2008-08-08 12:53 sitinspring 閱讀(371) | 評論 (0)編輯 收藏

    技術人之道

    一個技術人員要生存,要發展,要成一番事業,必須遵循一定固定的法則,若逆天而行而不自覺,輕則徒勞無功,白費精力;重則無法立足,庸碌一生。因此把握住自己的發展之道是技術人首要的大事,只有走在正確的道路上,前進才有意義。 

    一個技術人員,首先要固本培元,什么是技術人的根本呢?無論語言,框架和技術如何發展,數據結構和算法都是其核心內容,所謂萬變不離其宗,有了良好的數據結構和算法的根基,接受并掌握一個新興事物不過旬月時間,若沒有而盲目跟隨,事倍而功半矣。另外面向對象的精髓也要把握,從根本上來講,任何現代框架其核心思想還是沒有超越面向對象的范疇,都是面向對象的繼承和發展,理解掌握了面向對象的思想,就把握住了框架根本性的東西,學習掌握起來就更容易把握其本質. 

    其次,技術人員必須把握主流技術方向才不至于迷失自己。若在支流中迷失自己恐有空執屠龍之技無用武之地之憂,古代也許還能自娛自樂,現代社會這樣做溫飽都無法解決,房子,車子,孩子更是白扯;只有置身主流,才能繼續奮斗下去。當前的主流技術方向,無非SSH(Struts1/2,Spring,Hibernate)而已,徹底弄清楚它們,才有安身立命之本.君不見諸多招聘廣告,均寫SSH乎.這三項其實也不好掌握,尤其Hibernate,掌握不精深也不行,有些大俠也曾陰溝里翻過船。 

    其三,技術人員要樂于善于總結提高,對于已經掌握的內容,要及時歸納總結到紙面上,這樣做一能梳理脈絡,讓自己掌握得更全面細致;二能查漏補缺,發現以前忽視或是未接觸過的領域;三能求其友聲,放在博客上供大家分析閱讀討論,彌補自己的不足.有此三益,于己于人都是一件大好事,何樂而不為呢? 

    其四,技術人員要展示自己的能力和價值,應該具備自己的產品,它可以用來鞏固和展現自己的實力,在產品的研發過程中,技術人員能把自己的知識智慧實用化,可避免走入象牙塔之患;外界也能通過產品來了解發掘自己.這也是一件于己于人都有利的事情. 

    其五,技術人員應該具備完整的思想體系,有自己獨到的見解并能有所突破創新. 人云亦云無異于鸚鵡學舌,有何能哉? 要想上一個層次,必須鯉魚躍龍門. Gosing和Kaven兩人可作為最好的榜樣。 

    最后,廣博的知識不可少.拘泥于一處難免死鉆牛角尖,很多情況下換一種思維頓時有撥云見日之感,如有閑暇,技術人員應該跳出圈子,廣采能用之材為我所用.

    posted @ 2008-08-08 12:51 sitinspring 閱讀(292) | 評論 (1)編輯 收藏

    用遞歸和掃描解決稱球問題

         摘要: 稱球問題經常是面試中的常客,這里我用做了一個稱球的程序,主要的方法就是遞歸和掃描,貼出來請大家指正。  閱讀全文

    posted @ 2008-07-27 00:11 sitinspring 閱讀(1202) | 評論 (2)編輯 收藏

    二叉樹搜索樹代碼

         摘要: /** *//**  * 二叉樹節點類  * @author HEYANG  * @since 2008-7-26 下午02:59:06  */ class Node<T extends Comparable> {  ...  閱讀全文

    posted @ 2008-07-26 16:25 sitinspring 閱讀(1179) | 評論 (1)編輯 收藏

    蔓延法判斷兩個城市的連接狀態

         摘要: 這是一個美國IT企業的面試題,原題大意是從一個文件中讀取出可連通的城市對,給出兩個城市,判斷是否可連通,如果可連通就輸出yes,不可連通就輸出no,否則給出命令行幫助。

    其實判斷連接狀態不用遍歷圖,用蔓延法即可,具體做法就是從起始城市開始,依次改變其周邊連通城市的連通狀態,再從周邊開始向周邊連通城市蔓延,如果能蔓延到結束城市的周邊可連通城市,則說明兩個城市是完全可連通的。這種做法和多米諾骨牌效應很像。我姑且稱之為蔓延法。
      閱讀全文

    posted @ 2008-07-24 21:49 sitinspring 閱讀(1234) | 評論 (1)編輯 收藏

    用正則表達式找出每個屬性對應的值

    找出以下字符串=符號后面對應的屬性值

    "職務=GM 薪水=50000 , 姓名=職業經理人 ; 性別=男  年齡=45 ";

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
     * 用正則表達式找出每個屬性對應的值
     * 
    @author HEYANG
     * 
    @since 2008-7-23 下午08:12:45
     
    */

    public class RegexFindProperty {

      
    public static void main(String[] args) {
        String input 
    = "職務=GM 薪水=50000 , 姓名=職業經理人 ; 性別=男  年齡=45 ";
        
        
    // =號和空白符之間是非空格字符,這種寫法比去分開組合字母,數字和漢字的方式要快捷
        Pattern pattern = Pattern.compile("=(\\S+)\\s*");

        
    // 用Pattern類的matcher()方法生成一個Matcher對象
        Matcher m = pattern.matcher(input);

        
    // 使用find()方法查找第一個匹配的對象
        boolean result = m.find();

        
    // 使用循環找出模式匹配的內容打印
        while (result) {
          
    // 取得匹配的結果
              String replaceStr = m.group(1);
              System.out.println(
    "匹配的屬性等于=" + replaceStr);
              
          result 
    = m.find();
        }

      }

    }

    posted @ 2008-07-24 21:37 sitinspring 閱讀(531) | 評論 (0)編輯 收藏

    動態生成日歷

         摘要: package com.sitinspring.datetime; import java.util.ArrayList; import java.util.List; public class MonthlyCalendar{     private static f...  閱讀全文

    posted @ 2008-07-19 22:14 sitinspring 閱讀(1083) | 評論 (0)編輯 收藏

    日期時間處理實用類

         摘要: 輸出示例:

    當前日期時間為:2008.07.18 10:48:57
    當前日期為:2008.07.18
    當前日期為:2008.7.18
    當前時間為:10:48:57
    2008.07.05與2008.07.18之間相隔:13天
    當前年月為:2008.07
    本月第一天為周2
    本月有31天
      閱讀全文

    posted @ 2008-07-18 10:52 sitinspring 閱讀(535) | 評論 (0)編輯 收藏

    java.util.Comparator使用示例

    Comparator的具體實現類
    public class AgeComparator implements Comparator {
      
    public int compare(Object op1, Object op2) {
        Employee eOp1 
    = (Employee) op1;
        Employee eOp2 
    = (Employee) op2;

        
    // 按年齡排序
        return eOp1.getAge()-(eOp2.getAge());
      }

    }


    public class NameComparator implements Comparator {
      
    public int compare(Object op1, Object op2) {
        Employee eOp1 
    = (Employee) op1;
        Employee eOp2 
    = (Employee) op2;

        
    // 按姓名排序
        return eOp1.getName().compareTo(eOp2.getName());
      }

    }


    public class SalaryComparator implements Comparator {
      
    public int compare(Object op1, Object op2) {
        Employee eOp1 
    = (Employee) op1;
        Employee eOp2 
    = (Employee) op2;

        
    // 按薪水排序
        return eOp1.getSalary()-(eOp2.getSalary());
      }

    }


    Employee類:

    public class Employee{
      
    protected String name;
      
    protected int age;
      
    protected int salary;
      
      
    public Employee(String name,int age,int salary){
        
    this.name=name;
        
    this.age=age;
        
    this.salary=salary;
      }

      
      
    public int getAge() {
        
    return age;
      }

      
    public void setAge(int age) {
        
    this.age = age;
      }

      
    public String getName() {
        
    return name;
      }

      
    public void setName(String name) {
        
    this.name = name;
      }

      
    public int getSalary() {
        
    return salary;
      }

      
    public void setSalary(int salary) {
        
    this.salary = salary;
      }
     
    }


    測試:
    public class Main{
      
    public static void main(String[] args){
        List
    <Employee> employees=new ArrayList<Employee>();
        
        employees.add(
    new Employee("Andy",21,2000));
        employees.add(
    new Employee("Felix",21,3000));
        employees.add(
    new Employee("Bill",35,20000));
        employees.add(
    new Employee("Helen",21,10000));
        employees.add(
    new Employee("Cindy",28,8000));
        employees.add(
    new Employee("Douglas",25,5000));
            
        
    // 按名稱排序
          Collections.sort(employees,new NameComparator());
          display(employees);

          
    // 按年齡排序
          Collections.sort(employees,new AgeComparator());
          display(employees);
          
          
    // 按薪水排序
          Collections.sort(employees,new SalaryComparator());
          display(employees);
      }

      
      
    public static void display(List<Employee> employees){
        
    for(Employee e:employees){
          System.out.println(
    "雇員名="+e.getName()+" 年齡="+e.age+" 薪水="+e.getSalary());
        }

        
        System.out.println();
      }

    }


    輸出:
    雇員名=Andy 年齡=21 薪水=2000
    雇員名
    =Bill 年齡=35 薪水=20000
    雇員名
    =Cindy 年齡=28 薪水=8000
    雇員名
    =Douglas 年齡=25 薪水=5000
    雇員名
    =Felix 年齡=21 薪水=3000
    雇員名
    =Helen 年齡=21 薪水=10000

    雇員名
    =Andy 年齡=21 薪水=2000
    雇員名
    =Felix 年齡=21 薪水=3000
    雇員名
    =Helen 年齡=21 薪水=10000
    雇員名
    =Douglas 年齡=25 薪水=5000
    雇員名
    =Cindy 年齡=28 薪水=8000
    雇員名
    =Bill 年齡=35 薪水=20000

    雇員名
    =Andy 年齡=21 薪水=2000
    雇員名
    =Felix 年齡=21 薪水=3000
    雇員名
    =Douglas 年齡=25 薪水=5000
    雇員名
    =Cindy 年齡=28 薪水=8000
    雇員名
    =Helen 年齡=21 薪水=10000
    雇員名
    =Bill 年齡=35 薪水=20000


    posted @ 2008-07-15 11:52 sitinspring 閱讀(7582) | 評論 (1)編輯 收藏

    八皇后回溯版

         摘要: 回溯法有“通用的解題法“之稱。用它可以系統的搜索一個問題的所有解或任一解。會所法是一個既帶有系統性又帶有跳躍性的搜索算法,他在包含問題的所有解的解空間樹中,按照深度有限的策略,從根節點出發搜索解空間樹,算法搜索至解空間樹的任一節點時,總是先判斷該節點是否肯定不包含問題的解。如果肯定不包含,則跳過對該節點為根的子樹的系統搜索,逐層向其祖先節點回溯,否則進入該子樹,繼續按照深度優先的策略進行搜索。回溯法在用來求問題的任一接時,只要搜索到問題的一個解就可以結束。
    這種深度優先的解的算法稱為回溯法,它適合于解一些組合數較大的問題。

    用回溯法解n皇后問題時,可以用一棵完全n叉樹來表示其解空間。剪去不滿足行列和斜線攻擊的子樹后,剩下的就是問題的解答。
      閱讀全文

    posted @ 2008-07-08 11:38 sitinspring 閱讀(768) | 評論 (0)編輯 收藏

    僅列出標題
    共13頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    sitinspring(http://www.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲国产成人久久综合碰| 国产一区二区三区免费看| 亚洲精品国产国语| 国产一级一片免费播放| 久久国产精品成人免费| 亚洲jjzzjjzz在线播放| 亚洲成a人片在线观看日本麻豆| 免费在线看污视频| 亚洲欧美成人综合久久久| 亚洲无人区午夜福利码高清完整版| 久久久免费精品re6| 美女18毛片免费视频| 久久精品亚洲一区二区三区浴池 | 亚洲成a人片在线观看播放| 国产美女a做受大片免费| 免费一级毛片无毒不卡| 精品无码专区亚洲| 久久夜色精品国产噜噜亚洲AV| 国产伦精品一区二区三区免费迷 | 羞羞漫画小舞被黄漫免费| 亚洲AV日韩AV永久无码免下载 | 亚洲A∨无码一区二区三区| 在线观看的免费网站无遮挡| 亚洲春色另类小说| 国产色婷婷精品免费视频| 国产免费人成视频在线播放播| 亚洲国产精品一区| 四虎影院免费在线播放| 人碰人碰人成人免费视频| 亚洲人成影院在线| 亚洲成AV人片在| 91香蕉成人免费网站| 日韩视频在线观看免费| eeuss在线兵区免费观看| 亚洲AV永久无码天堂影院| 亚洲人成在线中文字幕| 色噜噜综合亚洲av中文无码| 亚洲日本乱码在线观看| 亚洲乱码中文字幕综合234| 国产精品无码免费视频二三区 | 999国内精品永久免费观看|