Time of Update: 2018-12-05
Time of Update: 2018-12-05
TDD(Test-Driven Development) 測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方法論。TDD得原理是在開發功能代碼之前,先編寫單元測試用例代碼,測試代碼確定需要編寫什麼產品代碼。TDD雖是敏捷方法的核心實踐,但不只適用於XP(Extreme
Time of Update: 2018-12-05
單一職責原則(Single Responsibility Principle,SRP)最初是誰提出的我沒有考證,不過大師Robert C. Martin對SRP的解釋是:Each class should have one and only one reason to
Time of Update: 2018-12-05
依賴倒置原則(Dependency-Inversion Principle)是Robert C. Martin(!)在1996年為《C++ Reporter》所寫的專欄Engineering Notebook的第三篇(原文),後來加入到他在2002年出版的經典著作《Agile Software Development Principles Patterns and Practices》 中提到的,它由兩條構成:A。High level modules should not depend
Time of Update: 2018-12-05
介面隔離原則(Interface Segregation Principle)是Robert C. Martin(!)在1996年為《C++ Reporter》所寫的專欄Engineering Notebook的第四篇(原文),這個原則說的是如何處理介面“臃腫”帶來的麻煩。這個原則概括起來只有一句話:Clients should not be forced to depend upon methods that they do not use.
Time of Update: 2018-12-05
迪米特法則(Law of Demeter, LoD)又叫最少知識原則(Least Knowledge Principle, LKP)。1987年秋天由美國Northeastern University的Ian Holland提出,被UML的創始者之一Booch等普及。後來,因為在經典著作《 The Pragmatic Programmer》而廣為人知。 迪米特法則可以簡單說成:talk only to your immediate
Time of Update: 2018-12-05
合成/彙總複用原則(Composite/Aggregate Reuse Principle, CARP)也可以簡稱為合成複用原則(Composite Reuse Principle,
Time of Update: 2018-12-05
在物件導向大師Robert C. Martin的《Agile software development: Principles, Patterns and Practices》一書中,只把前面提到的OCP、LSP、SRP、DIP和ISP列為OOD的設計原則。確實,這幾個原則是物件導向設計中基石性的原則。在我看來,不能明了這些原則的本義,是根本談不到OOD的。而後面的LoD、CARP也被廣泛傳播,尤其是CARP因為《Desgin Pattern》的影響力而被普遍接受。在Martin的《Agile.
Time of Update: 2018-12-05
1.什麼是Hibernate? 首先,Hibernate是資料持久層的一個輕量級架構。資料持久層的架構有很多比如:iBATIS,myBatis,Nhibernate,Siena等等。 並且Hibernate是一個開源的orm(object relations model)架構,提供了查詢擷取資料的方法,用物件導向的思想來操作資料庫,節省了我們開發處理資料的時間。2.那使用Hibernate的優點呢?
Time of Update: 2018-12-05
設計模式(Design Patterns)相關的文章很多很多,csdn,部落格園,很多原創的或者轉載的。這樣看來,我是沒必要再來畫蛇添足的——這個說法不確切,那些蛇本來就不是我畫的,而是GoF,Cooper,還有許許多多的前輩。其實,我知道Design
Time of Update: 2018-12-05
在ASP.Net中,為了方便表單的驗證,提供了驗證控制項來完成表單輸入資料的驗證。這些驗證控制項確實是功能強大,為寫表單程式提供了極大的便利。但是,在不熟悉的情況下,經常碰到問題。其中,最常見的是遇到錯誤:在驗證發生前無法調用
Time of Update: 2018-12-05
一. Factory 方法模式簡介 在簡單原廠模式中,由一個工廠類(實際上是其中的某一個具體方法)負責決定執行個體化哪一個具體產品,從而接觸客戶和具體產品類直接的依賴關係。而Factory 方法模式對這種思想進行了進一步的擴充,把這個執行個體化產品的方法抽象化(從而也抽象化了這個工廠類),把執行個體化哪一個具體產品類的決策延遲到它的子類中去。也就是說,這個抽象方法只定義了應該建立一個什麼類(抽象),讓子類去決定建立哪一個對象。 GoF的《設計模式》中這樣描述Factory
Time of Update: 2018-12-05
一. 抽象原廠模式概述 抽象原廠模式是原廠模式中最一般、最抽象的一種表現形式,是對Factory 方法模式的進一步擴充。Factory 方法模式可以對一類產品的建造進行管理,將建造具體產品的建造過程交給到具體的子類中完成。如果需要管理兩類及以上產品的建造過程呢?當然很自然的就可以想到可以使用多個Factory
Time of Update: 2018-12-05
在Java中,處理中文亂碼一直是一個頭疼的問題。這個問題的是由於地區設定和字元集引起的,具體這裡不深究。我們都知道,在Java中,預設是使用latin1(iso8859-1)字元集的。我們處理中文的方式經常是這樣:以從資料庫中讀取中文為例:String sName=getName();String sName_cn=new String(sName.getBytes("ISO8859-1"),"GB2312");通過這種方式,中文就可以正常顯示了。但是,在很多使用Resource資源檔的情況下,
Time of Update: 2018-12-05
最近在開發一個項目的時候,希望在IE的右鍵菜單中添加快捷操作。因為暫時還來不及開發外掛程式,通過安裝程式添加IE右鍵菜單,因此想到的最簡單的方法就是修改註冊表。IE的右鍵菜單擴充位於註冊表[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt] 項下。在此建立一個新項,項的名稱就是出現在右鍵菜單中的標題,因此我建立了一個新項“在GoWords.cn搜尋”。這樣,在IE中點擊滑鼠右鍵的時候就會出現“在GoWords.cn搜尋”
Time of Update: 2018-12-05
是在伺服器重裝之後,配置郵件伺服器(imail)的時候遇到這個問題的。以前伺服器配置無數次,輕車熟路,怎麼這次忽然就發生這個問題了?單從提示來看,原因很明顯:SMTP驗證失敗。可是,Foxmail裡已經選了SMTP伺服器需要驗證選項呀?以前Foxmail有這個Bug,但是其他伺服器都正常,因此可以肯定,不是Foxmail的問題。那問題就只能出現在Imail伺服器了。試著關掉Imail-SMTP安全設定裡的“寄送著身分識別驗證”選項,仍是同樣的問題!這就有點不正常了!進一步使用Imail內建的用戶
Time of Update: 2018-12-05
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html;
Time of Update: 2018-12-05
ArrayList是List介面的一個可變長數組實現。實現了所有List介面的操作,並允許儲存null值。除了沒有進行同步,ArrayList基本等同於Vector。在Vector中幾乎對所有的方法都進行了同步,但ArrayList僅對writeObject和readObject進行了同步,其它比如add(Object)、remove(int)等都沒有同步。 1.儲存 ArrayList使用一個Object的數組儲存元素。private transient Object
Time of Update: 2018-12-05
編寫背景: 今天下午,在寫一個多線程的測試程式《讀者寫者-【寫者優先】》(該文章會在晚些的時候發出來)的時候,想看一下控制台的列印效果,但是你懂的,eclipse控制台只能儲存一部分的資料。配置log4j又有點大材小用。所以就自己寫了這個可以寫入本地檔案的工具類: 工具類實現的功能:1.按照[時間-調用類-調用方法-調用方法所在行號-message]的格式 斷行符號寫入檔案2.實現了每天一個記錄檔的功能閑話不說,上代碼: Write2File.javapackage com.
Time of Update: 2018-12-05
Java代碼List<String> list = new ArrayList<String>(); list.add("a1"); list.add("a2"); String[] toBeStored = list.toArray(new String[list.size()]); for(String s : toBeStored) { System.out.println(s); } List<String>