前一陣子去參加OSSF的Annotation講座
裡面有提到JUnit4作單元測試
下面一個參考網站
http://liyiye.javaeye.com/blog/443239
以往作單元測試的時候都必須去繼承TestCase類別
這無疑阻礙了測試程式的設計,但是使用Annotation為基礎作Unit test的話
不只函式名稱不用被綁死,在設計上也更簡單
2009年12月17日 星期四
2009年12月14日 星期一
[Java]Java呼叫C/C++ DLL
接續上一篇,這一陣子要寫可以動態連結的程式,其實我最先開始想到的就是用windows的DLL(Dynamic-link library )或是Linux的SO(Shared Object)
一來這樣速度快二來這樣子也有個更新的彈性,只是這樣一來可能就無法實現跨平台的優點。
在Java有提供JNI來實驗呼叫c\c++的dll功能
放幾個我參考的網站
一般來說會先寫個.java檔去產生Header。假設今天我一隻程式叫Hello.java
那我可以寫一個批次檔(.bat)去幫我產生要用的header
makeHeader.bat
其中javah這個指令就是用來產生JNI Header,之後產生一個標頭檔叫Hello.h
寫一個.c或是.cpp去實作他產生DLL之後就可以給Java呼叫
不過老實說這樣很不方便,萬一Hello.java要增加新函式就會變得很不方便
因此我會比較建議用JNA+CDT的方式去做,如果要用Windows+Eclipse去開發C++的話,有兩個套件要先裝起來,一個是MinGW,另一個則是CDT
一來這樣速度快二來這樣子也有個更新的彈性,只是這樣一來可能就無法實現跨平台的優點。
在Java有提供JNI來實驗呼叫c\c++的dll功能
放幾個我參考的網站
- http://blog.ring.idv.tw/comment.ser?i=127
- http://www.blogjava.net/orangewhy/archive/2007/05/24/119645.html
- http://enijmax.2y.idv.tw/linux/CLib_Jni.html
- http://topatis.blog.ithome.com.tw/post/613/17245
- http://mqjing.blogspot.com/2009/04/c-gcc-library.html
一般來說會先寫個.java檔去產生Header。假設今天我一隻程式叫Hello.java
那我可以寫一個批次檔(.bat)去幫我產生要用的header
makeHeader.bat
javac Hello.java
javah -jni Hello
@pause
其中javah這個指令就是用來產生JNI Header,之後產生一個標頭檔叫Hello.h
寫一個.c或是.cpp去實作他產生DLL之後就可以給Java呼叫
不過老實說這樣很不方便,萬一Hello.java要增加新函式就會變得很不方便
因此我會比較建議用JNA+CDT的方式去做,如果要用Windows+Eclipse去開發C++的話,有兩個套件要先裝起來,一個是MinGW,另一個則是CDT
[Java]URLClassLoader運用上的一點筆記
這一陣子接了一個case必須要撈一些網站的資料
由於這是必須多人maintain 的一個系統,要防止對方網頁改版而撈不到資料
因此我想到了Java的dynamic binding功能
在Java原生支援dynamic binding,而他主要又分成Implicit(隱式)跟explicit(顯式)兩大類
參考資料:http://www.yuloo.com/news/2008-08-27/112873.html
由於這是必須多人maintain 的一個系統,要防止對方網頁改版而撈不到資料
因此我想到了Java的dynamic binding功能
在Java原生支援dynamic binding,而他主要又分成Implicit(隱式)跟explicit(顯式)兩大類
參考資料:http://www.yuloo.com/news/2008-08-27/112873.html
2009年11月3日 星期二
PHP:mail函式 標題出現亂碼問題
今天受託替人寫自動回信的功能
因為功能很小,所以我很自然使用mail()函式去做
但是卻出現了標題有全形符號變成亂碼的問題,像是『』,≠ 等等
後來找的一些資料
http://blog.roodo.com/rocksaying/archives/2998451.html
http://blog.roodo.com/rocksaying/archives/2950655.html
原來這問題存在已久了,mail()函式之下還有個mb_send_mail()函式,mail()函式裡面會用到mb_send_mail()進行傳信的動作,所以我只要將原先的寄信程式
修改成用mb_send_mail()的方式去自定編碼寄送就可以解決問題
不過這種函式處裡太底層了點,所以還是用別人寫好的套件像是PHPMailer來進行工作或許會是比較好的選擇
因為功能很小,所以我很自然使用mail()函式去做
但是卻出現了標題有全形符號變成亂碼的問題,像是『』,≠ 等等
後來找的一些資料
http://blog.roodo.com/rocksaying/archives/2998451.html
http://blog.roodo.com/rocksaying/archives/2950655.html
原來這問題存在已久了,mail()函式之下還有個mb_send_mail()函式,mail()函式裡面會用到mb_send_mail()進行傳信的動作,所以我只要將原先的寄信程式
mail("del680202@gmail.com",$title,$count,$option);
修改成用mb_send_mail()的方式去自定編碼寄送就可以解決問題
mb_internal_encoding("UTF-8"); \\定義編碼方式
mb_send_mail("del680202@gmail.com",$title,$count,$option);
不過這種函式處裡太底層了點,所以還是用別人寫好的套件像是PHPMailer來進行工作或許會是比較好的選擇
訂閱:
文章 (Atom)