Deadlock!

Friday, July 11th, 2008

private boolean insertRecordOnMultipleTables() { Connection conn = getConnection(); conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement("insert into person values ('Ada', 36)"); ps.executeUpdate(); int totalRecords = selectRecord(); ...

浮點運算(IEEE 754)

Thursday, April 17th, 2008

今天又碰到這個問題(是人家的錯),寫下來跟大家分享一下。 double d1 = 0.6L; String s1 = "0.6"; BigDecimal bd1 = new BigDecimal(d1); BigDecimal bd2 = new BigDecimal(s1); System.out.println(bd1); System.out.println(bd2); 其實基本上不只 Java,使用浮點運算的平台都會有這個問題。主因是二進位數字系統並不能完全表示十進位數字(大約值等於 0.5999.... 吧),要精準度高就不能用 double 而使用其他特別類別或函式庫,如 BigDecimal(如以上程式碼所示)或 GMP (C/C++)。 但以上的程式碼一早就轉成了 double,所以結果一樣會未如預期。

聖誕快樂

Monday, December 24th, 2007

先祝各位聖誕快樂! 應節應該唱聖誕歌,我也來登一首家傳戶曉的好了。 本來打算貼一篇 shell script 版,想不起來唯有即席另寫 Java 版本吧。 /* *Santa Claus is Coming to Town */ import org.santaclaus.*; class SantaClausIsComingToTown { public static void main(String args[]) { this.watch(System.out); this.setCry(false); this.setPout(false); System.out.println(why); SantaClaus.go(town); List list = new ArrayList(); for (int i=0; i<2; i++) SantaClaus.check(list); SantaClaus.setNaughtyList(Collections.binarySearch(list, "naughty")); SantaClaus.setNiceList(Collections.binarySearch(list, "nice")); SantaClaus.go(town); while(this.sleep()) SantaClaus.see(this); while(this.awake()) SantaClaus.know(this); if (this.isBad() || this.isGood()) SantaClaus.know(this); for ( ; goodnessSake(); ) this.setGood(true); this.watch(System.out); this.setCry(false); this.setPout(false); System.out.println(why); SantaClaus.go(town); } }

終於做好了

Wednesday, April 11th, 2007

終於在今天早上把臭蟲除掉,把 FYP弄得有個樣子。我是個愛臨抱佛腳的人,總喜歡把工作堆到最後關頭才做,這兩晚也沒有好好睡過(今天整個人便垮在案頭前)。自作孽啊! 其實真的要多謝 Spring Framework,要不然給我多幾個晚上也趕不上 。Spring IoC 構思真的很奇妙,只要把 XML 設定好便不用理會啟動時不同元件初始化的先後次序,跟 Hibernate 合起來用非常方便。Spring 對諸多 J2EE 的功能也充份支援,諸如一個完整的 MVC 框架,JNDI 設定甚至電子郵件也有相應的類別提供。相比以前接觸過的 Framework,Spring 算是上手速度最快(是 SimpleFormController 初期有點困難,慶幸互聯網相關資料很豐富),出錯最少兼除錯比較簡易的框架啦。可惜啦,因為時間關係,沒有好好學過 AoP,不然寫起的程式碼可能會更少。 今天晚上要好好的睡個覺!

PHP 7 決定全面使用 Java 語法

Sunday, April 1st, 2007

據一份內部流出的會議紀錄顯示,開發群決定多次借用 Java 語法的 PHP 腳本語言將在版本 7 完全放棄繼承自 C 以及 Perl 的語法,完全擁抱 Java。而 J2EE 的 Servlet/JSP 架構將會完全引入 PHP 裏。 也因為如此,PHP 再不會以 $ 來識別變數,而物件存取運算子亦會以 . 代替。傳言指出在 PHP 6 引入的 namespace 名稱亦會改變成 package,而不同 package 的 PHP 腳本也必須放到不同目錄以資識別。 可是,由於改寫整個 PHP 核心是一件繁複的工程,他們預料 PHP 7 將會延期推出。但是這樣應該也是值得,因為重寫整個核心和使用新的語法將會有助解決困擾 PHP 開發者的安全問題。 此外,據該流出文件指出,某部份核心可能將會以 Java 語言編寫,不過他們得先解決 Java 執行效能的問題。 Update: 所以說,愚人節快樂!

期待名單

Monday, September 18th, 2006

PC Game: Half-Life 2 Episode 2 (01/2007) 其實最重要還是附帶的 Team Fortress 2 吧... 我一直一直在等...在試影片看見遺忘已久的 2fort5 版圖啊(有沒有人玩過 QW?).. 現在成了 2farm =_= Battlefield 2142 (10/2006) 漂亮死人的畫面!一向喜歡這個「多人線上作戰」系列,一直覺得操控及遊戲性不錯,新一版不能不捧場吧? Supreme Commander(TBA 2007) RTS 咯。畫面細緻,而且武器種類多樣化(核彈頭真的把整個畫面轟掉,絕不如 C&C 系列那種小兒科),所以也是期待名單呢。 星塵回憶錄 3.0 Mod 以及 SEED mod for Homeworld 2 3.0 裏有 GP-03操控,自護加送 AMX-002!SEED 看見 Freedom 四砲齊射就很吸引了(可惜光線顏色不能改)。內地朋友真的厲害哩... Technology/Programming: Java 6 (12/2006) 有可以讀入其他 scripting language 例如PHP,JavaScript,以及Python 等等的模組,還可以在程式碼直接叫編譯器!想必是反擊 .NET 平台吧! PHP 6 (TBA) Namespace!Type Hinting!這兩個就夠了... Anime: 涼宮春日的憂鬱 - ...

SSL Tunnel implementation on Java(3)

Wednesday, February 8th, 2006

最後的步驟其實簡單得很。我們客戶端有了 ServerSocket 和一個對外的SSL Socket 連線,伺服器端當然要一個 SSL 的 ServerSocket 和 普通對內 Socket 連線。SSL 的 Socket 我們可以以自行撰寫的 SocketFactory 產生(第一章的 MySocketFactory class),那麼 ServerSocket 呢? 程式碼:(摘自 JavaWorld)