發表文章

目前顯示的是 6月, 2009的文章

Dom4j 如何新增 standalone?

在Java中處理xml檔案的套件有很多, 如:DOM(JAXP Crimson解析器)、SAX 、JDOM和 Dom4j 其詳細介紹和大致的比較可見: Java中四種操作xml方式的比較 其中因為 Dom4j 在效能上比其他的好,所以我就用了Dom4j。 然而好景不常,才一開始便遇到了問題, 翻遍了 Dom4j 1.6.1 的 API文件 也找不到如何在 xml 中新增 standalone="yes" 的字樣, 最後搜尋了網路發現是 Dom4j 1.6.1 還不支援這樣做, 如果還是要使用 Dom4j 1.6.1 ,那只能自己再寫一個新的 class 了。 以下是新的 class 的程式碼,分別參考自 DOM4j 学习笔记 和 [dom4j-user] How do I get standalone='yes' in the header 。 import java . io . FileOutputStream ; import java . io . FileWriter ; import java . io . IOException ; import java . io . UnsupportedEncodingException ; import org . dom4j . io . OutputFormat ; import org . dom4j . io . XMLWriter ; public class StandaloneWriter extends XMLWriter { public StandaloneWriter ( FileOutputStream fileOutputStream , OutputFormat format ) throws UnsupportedEncodingException { super ( fileOutputStream , format ); } public StandaloneWriter ( FileWriter fileWriter , OutputFormat format ) throws UnsupportedEncodingException {

Java:程式執行時間計算

在程式執行時我們常需要注意程式的效能, 而其中比較而易計算的就是程式的執行時間。 以下的程式碼是列出 doSomething() 和 doAnotherthing() 各執行了多少秒。 class ExcutingTime { public static void main ( String [] args ) { long time1 , time2 , time3 ; time1 = System . currentTimeMillis (); // doSomething() time2 = System . currentTimeMillis (); // doAnotherthing() time3 = System . currentTimeMillis (); System . out . println ( "doSomething()花了:" + ( time2 - time1 )/ 1000 + "秒" ); System . out . println ( "doAnotherthing()花了:" + ( time3 - time2 )/ 1000 + "秒" ); } } 關鍵字:Java效能, Java程式執行時間, 計算 參考資料: 1. Java計算執行時間

form在onsubmit檢查後還是直接submit了?

我們常在網頁中使用form表單來傳遞資料, 然而在傳送之前我們必定要檢查每個欄位的資料, 看看是不是必填的都填了、資料格式是否正確等等。 通常我們會使用Javascript裡的 onsubmit來檢查,如: <form onsubmit="checkForm(this);"> ...... ...... </form> 但後來卻常常發現就算在 checkForm() 中沒有呼叫 form.submit(), form還是會自己忍不住就被丟出去了 orz, 這究竟是怎麼一回事呢? 後來在 網路上 查到了解決方法, 只要在 onsubmit="checkForm(this);" 加上 return , 也就是變成這樣: onsubmit="return checkForm(this);" , 然後不想送出 form時在 checkForm() 裡面 return false就好。 更多細節可以看原始連結: onSubmit after checking return false and still submit 關鍵字:Javascript, form, 表單, submit, check, 送出, 檢查, 不要送出 參考資料: 1. onSubmit after checking return false and still submit

System.getProperty的參數用法

圖片
在寫java程式時我們常需要用到使用者系統的資訊, 而這可以使用System.getProperty來取得我們所需, 但是究竟要下什麼參數才能得到我們想要的呢? 圖片來源: http://www.gt4.co.uk/specialisms/property_marketing.asp 以下的參數用法是取自於: Java 技術文件正體中文版 的 JDK_API_1_6_zh_TW_2008122501.chm 若是想看最新的英文版本也可以到 Java System.getProperties() 查看。 java.version Java 執行期環境版本 java.vendor Java 執行期環境供應商 java.vendor.url Java 供應商的 URL java.home Java 安裝目錄 java.vm.specification.version Java 虛擬機規範版本 java.vm.specification.vendor Java 虛擬機規範供應商 java.vm.specification.name Java 虛擬機規範名稱 java.vm.version Java 虛擬機實現版本 java.vm.vendor Java 虛擬機實現供應商 java.vm.name Java 虛擬機實現名稱 java.specification.version Java 執行期環境規範版本 java.specification.vendor Java 執行期環境規範供應商 java.specification.name Java 執行期環境規範名稱 java.class.version Java 類別格式版本號 java.class.path Java 類別路徑 java.library.path 加載庫時搜索的路徑串列(linked-list) java.io.tmpdir 預設的暫時檔路徑 java.compiler 要使用的 JIT 編譯器的名稱 java.ext.dirs 一個或多個擴展目錄的路徑 os.name 作業系統 的名稱 os.arch 作業系統 的架構 os.version 作業系

StringBuilder和StringBuffer的差別及清空內容方式

在Java中常用到字串的處理, 但String本身是固定長度不能改變內容的, 我們常用 + 來連結附加字串其實相當耗費資源, 在大量處理字串的情況下我們有更好的選擇。 Java在J2SE5.0之後提供了StringBuilder類別, 他有許多好用的操作字串的方法如: insert()、reverse()、replace()、append()等, 更多詳細的API可見: java.lang.StringBuilder 的API說明。 而很多人會有這樣的疑問(我也是一直弄不清楚才來寫這篇的XD), StringBuilder和StringBuffer有什麼差別呢? 他們兩個提供了相同的介面, 然而在 不需考量多執行緒同步的時候我們使用StringBuilder來獲得最佳的效率 , 要考慮多執行緒的情況下使用StringBuffer來讓類別自動處理同步的問題 。 另外這兩個類別雖然相當好用, 但似乎許多人都會找不到如何清空他, 這大概是因為單純看 method 時沒有看到叫做 clear() 之類的 method, 但其實我們還是可以透過 delete(int start, int end) 這個 method 來達成目的。 用法就像這樣: stringBuffer.delete(0, stringBuffer.length()); 關鍵字:StringBuilder, StringBuffer, String, 字串處理, 不同, 清空, 內容, 如何 參考資料: java.lang.StringBuilder Java Gossip: StringBuilder 類別 StringBuffer 类型如何清空呢!!!!