Time of Update: 2018-12-06
衡量一個軟體系統最重要的2個特性是:1)可維護性(maintanability)2)可重用性(reuseability) , 也稱複用性 為了設計出一個具有良好可維護性和可重用性的軟體系統,有以下幾個重要設計原則,不過這些原則首先是複用的原則,遵循這些原則可以有效提高可維護性:1. 開閉原則 (OCP = Open-Closed principle) 什麼是開閉原則呢?一個軟體實體應當對擴充開放,對修改關閉。(Software entites should be open for
Time of Update: 2018-12-06
Key Tool Gui 1.7/*** <p>Title: Light Weight APIs for crypto </p>* <p>Description: 一個上海CA認證(根憑證和使用者認證)進行處理的例子</p>* <p>Copyright: Copyright (c) 2003</p>* <p>Company: 中國資訊安全性群組織(CISO) </p>* @author
Time of Update: 2018-12-06
利用java excel api 修改一個excel檔案。package modifyexcel;import java.io.File;import java.io.IOException;import jxl.*;import jxl.read.biff.BiffException;import jxl.write.*;public class Modifyexcel { public static void main(String[] args) throws BiffException,
Time of Update: 2018-12-06
JAVA對數位憑證的常用操作 一:需要包含的包 import java.security.*; import java.io.*; import java.util.*; import java.security.*; import java.security.cert.*; import sun.security.x509.* import java.security.cert.Certificate; import java.security.
Time of Update: 2018-12-06
最近在做一個Java開發的GUI程式,後台操作資料庫部分通過EJB遠端連線Weblogic伺服器。EJB部分使用的是SessionBean的形式。實際串連資料庫使用的是IBatis其中有一個業務是查出資料在JTable中顯示,由於資料量較大,每次顯示的大概有5000條資料,第一次顯示正確,第二次再查時報錯:Out of Memory。開始懷疑EJB問題,後來又懷疑IBatis的效能問題 ....,查了半天,結果是用戶端記憶體配置太小了設定Java的啟動參數:set MEM_ARGS=-Xms12
Time of Update: 2018-12-06
為什麼會有JAVA,為什麼會有.Net有人說,JAVA是為了跨WINDOWS和UNIX而產生的。是這樣嗎?SUN有自己的作業系統solaris,並且打的是高端市場,而JAVA發展早期階段,WINDOWS還主要定位在中小型企業,並沒有打算與SUN一爭高端客戶。而且SUN的使用者大部分都是大型企業級,而WINDOWS定位在家庭消費使用者,由於WINDOWS已經成為案頭OS的事實標準,SUN根本無意搶奪WINDOWS的地盤,而且SUN有自己的作業系統,擴大自己產品銷售才是第一。但是UNIX一直是個混亂
Time of Update: 2018-12-06
目的 把變動的事物和不變的事物區分開來,類庫的消費者才能使用。包:庫單元 編寫Java原始碼檔案時(編譯單元:一個.java檔案),每個編譯單元只有一個public class,且名稱與檔案名稱相同,編譯單元上的其他類主要為此public類服務,在包外部無法看到。許可權 取得對某成員的訪問權的途徑: 1 設定改成員為public。各處都可以訪問。 2 不加許可權修飾符,將其他類放入同一個包中,通過包訪問權訪問。 3
Time of Update: 2018-12-06
***概述 泛型實現了參數化型別的概念,使代碼可以應用於多種類型。泛型的最初目的是為了使類或方法具有最廣泛的表達能力,這點可以通過解耦類或方法與所使用的類型之間的約束來實現。在建立參數化型別的一個執行個體時,編譯器為你負責轉型操作,並且保證類型的正確性。***簡單泛型 許多原因促使泛型的出現,最顯著的一個是為了創造容器類。有時,需要能同時持有多個對象。但通常只會使用容器來儲存一種類型的對象。泛型的主要目的之一就是指定容器要持有的物件類型,有編譯器來保證類型的正確性。***元組 一次方
Time of Update: 2018-12-06
***Collections類 public static <T> List<T> nCopies( int n, T o) 用單個對象的引用填充Collection public static <T> void fill (List<? super T> list, T obj)
Time of Update: 2018-12-06
抽象類別和抽象方法 抽象類別目的:建立一個通用介面來操縱一系列類,但不允許類本身執行個體化。因為抽象類別中沒有具體的實現內容,建立其對象沒有實質意義。 包含抽象方法的類一定是抽象類別,抽象類別可以不包含抽象方法。抽象方法是不完整的,只有聲明而沒有方法體。子類必須為父類中的抽象方法提供定義,若不定義,則也為抽象類別。
Time of Update: 2018-12-06
方法重載 重載的原因: 1)相同的方法名可包含不同的含義,不能要求具有細微差別的方法都具有不同的方法名。 2)構造器名由類名決定,只能由一個構造器名,想用多種方式建立一個對象,必須實現重載。 每個重載的方法必須有獨一無二的參數類型列表。參數類型列表包括類名和方法的形參列表,不包含傳回值類型。因為有時你並不關心方法的傳回值,想要的只是方法調用的其他效果(為了副作用而調用),這時你可能會調用方法而忽略其傳回值。如void f() {};
Time of Update: 2018-12-06
組合 編譯器並不是簡單的為每一個引用都建立預設對象,這樣可以減少很多不必要的負擔。如果想初始化這些引用,可以在如下位置進行: 1 在定義對象的地方 2 在類的構造器中 3 在使用對象之前(惰性初始化) 4
Time of Update: 2018-12-06
***數組的特點 數組與其他容器的區別:效率、類型和儲存基本類型的能力。java中數組是一種效率最高的儲存和隨機訪問對象引用序列的方式。數組就是一個簡單的線性序列,這使得元素訪問非常快速。但其代價是數組對象的大小被固定,並且在其生命週期不可被改變。 數組之所有優於泛型之前的容器,因為: 1 可以建立一個數組去持有某個類型,通過編譯器檢查來防止插入的錯誤類型和抽取不當類型。 2
Time of Update: 2018-12-06
***訪問 1.從外部類的(非靜態方法)之外的地方建立內部類對象時,需要使用Outerclass.innerclass來指明類型 2.內部類擁有對外部類所有元素的訪問權,內部類隱式地儲存了一個指向外部類對象的引用。 3..this .new 在內部類中,可以使用OuterClass.this擷取對外部類對象的引用。 不能直接生產內部類對象,而是通過外部類對象來建立,如 OutClass outer= new OutClass();
Time of Update: 2018-12-06
***File File類實際描述的是FilePath。 File path = new File("./bin/OutputVerifier.py"); //得到檔案 File path = new File("./bin"); //得到檔案夾 String[] list = path.list(); //得到path下檔案和資料夾清單 File.list(FilenameFilter
Time of Update: 2018-12-06
多態 多態通過分離做什麼和怎麼做,從另一角度將介面和實現分離開來。它不但能改善代碼的組織圖和可讀性,還能建立可擴充的程式。封裝通過合并特徵和行為來建立新的資料類型,‘實現隱藏’通過將細節私人化把介面和實現分離開來。多態的作用是消除類型之間的耦合關係。多態允許同一基類產生的不同子類之間根據方法的行為不同展現出差別(通過子類覆蓋父類的方法實現),而這些方法的調用方式相同。
Time of Update: 2018-12-06
***基本概念 java容器類庫用途是儲存對象。分為2類: 1 Collection 一個獨立元素的序列,這些元素都服從一條或多條規則。List必須按照插入的順序儲存元素,Set不能有重複元素。Queue按照排隊規則來確定對象產生的順序(通常與插入的順序相同)。 2 Map 一組成對的索引值對對象,允許使用鍵來尋找值,將數字和對象關聯到一起。映射表允許我們使用另一個對象來尋找某個對象,也被稱為關聯陣列或字典。
Time of Update: 2018-12-06
用引用操作對象 在Java中,一切都被視作對象,因此可採用單一固定的文法,但操縱的標識符實際上是對象的一個引用(reference)。 擁有一個引用,並不一定需要有一個對象和它關聯,如 String s; 此處建立的只是引用,而不是對象。如果此時向s發送一個訊息,就會返回一個執行階段錯誤,因為s並未與任何事物關聯。因此,建立一個引用的時候便進行初始化是更安全的做法。資料存放區位置 1)寄存器 最快,位於處理器內部,數量有限,不能直接控制。
Time of Update: 2018-12-06
java操作符 幾乎所有的操作符都只能操作基本類型,但"=","==","!="可以操作所有對象。String類支援"+","+="。 賦值 對對象進行操作時,操作的是對對象的引用。所以,將一個對象賦值給另一個對象,實際上是將引用從一個地方複製到另一個地方。如c=d,則c和d都指向原先d指向的對象。算術操作符 %求餘數,/ 整數除法會直接去掉結果的小數位,而不是四捨五入(Math.round())自動遞增和遞減 ++i(首碼遞增)和--i先執行計算,再產生值,i++
Time of Update: 2018-12-06
***不可變String String類中的每個看起來會修改String值的方法,實際上是建立了新的String對象。***StringBuilder 簡單的字串操作可以使用java的操作符+,複雜的字串拼接等操作(比如有迴圈),應優先採用StringBuilder,因為如果採用預設操作符,在迴圈體內,java編譯器會在每次迴圈時new一個StringBuilder來操作字串,效率會低。***格式化輸出 public class SimpleFormat