構想:
在現有的圖片裡,列如樣版票圖,再加入亂數碼,以區別每個票圖的唯一性。
想法:
取得亂數碼,打開樣版票圖,取得畫筆(Graphics2D),把亂數碼設定到TextLayout圖層上,
計算放置TextLayout圖層的x及y坐標,把圖層draw到樣版圖上,輸出到以亂數碼為名稱之圖檔。
以下是範例程式:
程式大樣分成二大部份,一是圖形的加註文字,二是取得亂數編號的方式。
Read More構想:
在現有的圖片裡,列如樣版票圖,再加入亂數碼,以區別每個票圖的唯一性。
想法:
取得亂數碼,打開樣版票圖,取得畫筆(Graphics2D),把亂數碼設定到TextLayout圖層上,
計算放置TextLayout圖層的x及y坐標,把圖層draw到樣版圖上,輸出到以亂數碼為名稱之圖檔。
以下是範例程式:
程式大樣分成二大部份,一是圖形的加註文字,二是取得亂數編號的方式。
Read Morejava.sql.ResultSet 使用absolute方法可以移動ResultSet的指標到想要的筆數,
當 JDBC跟資料庫要資料時,會回傳一個ResultSet,但不是把所有查詢的結果均回傳至Web Server端,
而是只給前面幾筆資料,可以利用ResultSet的方法setFetchSize來設定一次回傳的筆數,
(一次傳的多,等待的時間就比較長,傳的太少,要一直跟資料庫要ResultSet.next()也會比較慢)
當ResultSet向下移動碰觸或是快要碰觸到目前回傳的筆數時,會自動再跟資料庫要設定好的筆數,
而把目前筆數以上的資料全都暫存在記憶體裡。
以上是ResulSet的基本原理,當一次查詢的量夠大時,而利用absolute來移動到想要的Row時,
就有可能發生out of memory的問題,
舉個列子:
Read More如果使用VisualStudio Express 2008開發軟體的話,想要發佈給其它人使用,這倒是個麻煩,
可以利用內建的OneClick方式封裝,或是利用功能強大的InstallShield Express來做,不過InstallShield並非免費,
CreateInstall Free是一套免費的封裝Install的軟體,沒有註冊的狀況下,在安裝時下方有會提示CreateInstall Free字樣,
它不但可以把程式整個封裝進入一個setup.exe的執行檔,還可以對內容進行壓縮、放入startup目錄,
對付一些簡單的程式的封裝是個很好的選擇,不過它也不是完全沒有缺點,
像是沒法子自動檢查是否存在Framework .net 等。
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(毫秒)來使其停一秒再執行。
Read Morejava Socket傳送過程中,可利用ObjectInputStream及ObjectOutputStream傳接送物件當做資料,傳送後的資料可以直接取用,省去需要再讀取xml、文字、json等格式的麻煩。
要利用socket傳送首先需先定義一個Object,而Object必需implements java.io.Serializable介面才可以。Serializable可以參考Serializable序列化
package test; public class DataTest implements java.io.Serializable { private int x = 0 ; public DataTest() { } public void setP(int x) { this.x = x; } public int getP() { return x; } }Read More