搜尋此網誌

2011年8月31日

JAVA 基本 programming 的不錯路徑

我對 JAVA 不熟,所以把我覺得目前還不錯的學習路徑簡述
1.          Basic JAVA 語法課程 (一般的教育訓練機構 & 書本都有不錯的介紹,主要是學習基本語法例如迴圈、變數、類別等)

這個路經應該是可以滿足一般的 J2SE 應用、Android 程式開發、大型純 JAVA  軟體 AP

2011年8月17日

Handler / Looper / Message 的操作

Handler / Looper / Message 主要的目的,主要在 Main UI thread / Sub thread 之間交換tag (Messagewhat & obj),然後透過這個tag進行某些事情的處理,例如trigger一個動作,或者更新 Main UI

就我的認知做個簡單的定義:
l   Handler:
1.          Main thread / Sub thread都可以有Handler,但是只有Main threadHandler可以更新UI
2.          Handler透過obtainMessage() 打包Message送出
3.          Handler透過sendMessage() Message送給LooperLooper一收到sendMessage(),就去Message PoolMessage撈出來,然後Call backHandlerhandleMessage() 做處理。
l   Looper:
1.          Main thread / Sub thread都可以有Looper,但是預設只有Main threadcreateSub threadLooper要自己create (透過prepare)
2.          可以調用Main thread / Sub threadLooper,透過getMainLooper() or myLooper() 來調用。
l   Message Queue:
1.          Main thread / Sub thread都可以有Message queue,但是預設只有Main threadcreateSub thread的要自己create (透過prepare)
2.          Looper一旦建立了,相對應的Message queue就會產生。

Study大陸一些博客和高煥堂老師的文章後,發覺主要有四種應用模式:
1.          Main thread -> (Send msg) -> Main thread -> Handler(Main thread) -> (Display on Main UI)
2.          Main thread -> (Send msg) -> Sub thread -> Handler(Main thread) -> (Display on Main UI)
3.          Sub thread -> (Send msg) -> Main thread -> Handler(Main thread) -> (Display on Main UI)
4.          Sub thread -> (Send msg) -> Sub thread -> Handler(Main thread) -> (Display on Main UI)

整個過程就是在Main / SubHandler / Looper一直切換,而最終就是要靠Main threadHandler來更新UI畫面,這也是Android對於畫面處理的唯一定義,如果從Sub thread直接更新UI,就會出現Exception

Ref URL:

2011年8月10日

圖像比對 / Image Compare / Photo Compare / Picture Compare

目前看到幾種圖像比對的工具,主要有:
l   比對圖檔的檔名、大小、日期等資訊,用來排除可能的重複圖檔
l   用數學與圖像分析演算法,真實比對圖片的相似度,有點類似刑事人臉比對系統的功能

其實有很多比對的軟體,大部分要 co co
剛剛發現一個 open source,還可以 run Windows / Unix 上,叫做 ImageMagick / OpenCV
正在思索如何用這個軟體來做圖像比對和辨識,以後再分享結果了

  • http://search.cpan.org/~avif/Image-Compare-0.3/Compare.pm
  • http://www.tineye.com/
  •  http://www.imagemagick.org/script/index.php
  • http://opencv.willowgarage.com/wiki/