在現有圖片中加亂數碼(文字)

構想:

在現有的圖片裡,列如樣版票圖,再加入亂數碼,以區別每個票圖的唯一性。

想法:

取得亂數碼,打開樣版票圖,取得畫筆(Graphics2D),把亂數碼設定到TextLayout圖層上,

計算放置TextLayout圖層的x及y坐標,把圖層draw到樣版圖上,輸出到以亂數碼為名稱之圖檔。

以下是範例程式:

程式大樣分成二大部份,一是圖形的加註文字,二是取得亂數編號的方式。

Read More

java.sql.ResultSet absolute造成out of memory

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

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

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

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

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

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

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

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

舉個列子:

Read More

[Java]Serializable序列化Socket傳送範例

java 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

[Java]Serializable序列化

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的範列

Read More