java.sql.ResultSet absolute造成out of memory

Posted in Exception, Java, database, jsp, 程式 on 2009/7/31 by yku 瀏覽:323人次 — 留下回應

java.sql.ResultSet 使用absolute方法可以移動ResultSet的指標到想要的筆數,

當 JDBC跟資料庫要資料時,會回傳一個ResultSet,但不是把所有查詢的結果均回傳至Web Server端,

而是只給前面幾筆資料,可以利用ResultSet的方法setFetchSize來設定一次回傳的筆數,

(一次傳的多,等待的時間就比較長,傳的太少,要一直跟資料庫要ResultSet.next()也會比較慢)

當ResultSet向下移動碰觸或是快要碰觸到目前回傳的筆數時,會自動再跟資料庫要設定好的筆數,

而把目前筆數以上的資料全都暫存在記憶體裡。

以上是ResulSet的基本原理,當一次查詢的量夠大時,而利用absolute來移動到想要的Row時,

就有可能發生out of memory的問題,

舉個列子:

...詳細文章

好用的封裝軟體CreateInstall Free

Posted in VisualStudio on 2009/7/29 by yku 瀏覽:262人次 — 留下回應

如果使用VisualStudio Express 2008開發軟體的話,想要發佈給其它人使用,這倒是個麻煩,

可以利用內建的OneClick方式封裝,或是利用功能強大的InstallShield Express來做,不過InstallShield並非免費,

CreateInstall Free是一套免費的封裝Install的軟體,沒有註冊的狀況下,在安裝時下方有會提示CreateInstall Free字樣,

它不但可以把程式整個封裝進入一個setup.exe的執行檔,還可以對內容進行壓縮、放入startup目錄,

對付一些簡單的程式的封裝是個很好的選擇,不過它也不是完全沒有缺點,

像是沒法子自動檢查是否存在Framework .net 等。

C# Thread應用

Posted in VisualStudio, 程式 on 2009/7/27 by yku 瀏覽:514人次 — 留下回應

Java的Thread是利用繼承Thread或是實作Runable來實現的,而C#確是不一樣的,

C#利用一個new System.Threading.Thread物件,建構時傳入想要在執行緒裡動作的事件,

啟動方法跟Java一樣,利用Start()來開始這個執行序,

System.Threading.Thread t = new System.Threading.Thread(要執行的Function名稱);

啟動方式

t.Start();

那如果有參數要傳入呢?

可以撰寫一個Class,先建構及設定好需要的參數,再把這個class實作的物件及方法傳入實作的System.Threading.Thread物件裡

就可以啦

Object x = new Object();

System.Threading.Thread t = new System.Threading.Thread(x.方法);

這裡有一個範例可以參考一下

先建立一個Class,名叫thread1

利用無窮迴圈讓內容一直跑,再利用Sleep(毫秒)來使其停一秒再執行。

...詳細文章

Serializable序列化Socket傳送範例

Posted in Java, 程式 on 2009/7/24 by yku 瀏覽:1,417人次 — 3 回應

在socket傳送過程中,

利用ObjectInputStream及ObjectOutputStream傳接送資料

先定義一個Object,

而Object必需implements java.io.Serializable介面

Serializable可以參考Serializable序列化

...詳細文章

Serializable序列化

Posted in Java, 程式 on 2009/7/22 by yku 瀏覽:1,087人次 — 留下回應

Java的Serializable序列化是個很好用的東西,平常可能很少會遇到使用,

Serializable大概來說就是把Java Object變成序列,可以傳輸到其它Java的應用上,

最好的例子就是ServerSocket應用,大部份的二個不同的Service要相互利用socket溝通,

最簡單的方式就是傳送文字指令、xml、編碼過的資訊,而在Java裡提供了一個很好用的機制,

當二邊Socket Service均使用Java開發時,則可在二邊放置相同的class Object(含有相同的package路徑),

再利用java.io.ObjectInputStreamjava.io.ObjectOutputStream來傳送及接到,

可以設計一個Java Bean,在client接設定屬性後傳送給Server,在由Server接收後,

直接取用Bean的值,底下提供一個Java Bean implements Serializable的範列

...詳細文章