C/C++分類文章 顯示方式:簡文 | 列表

2009年12月21日

Java Json-lib note

  1. JSON array: convert to Java JSONArray.
  2. JSONArray instance: convert to List.
  3. List: convert to Java JSONArray.
  4. JSONArray instance: convert to JSON array(String).
  5. ClassCastException.
  6. You can not use iterator() for enhanced for-loop.
...繼續閱讀

Posted by shirock at 樂多Roodo!16:16回應(0)引用(0)
標籤:java-json

Hibernate 查詢某個欄位的絕對值

當我們試圖從資料庫中查詢某個欄位的絕對值時,我們有兩種途徑。第一種是自定新的 Hibernate UserType ,再透過 HQL 查詢。 第二種則是利用 SQL abs() 函數,透過 SQL 查詢。

自定新的 Hibernate UserType 並不太難,僅需實作 UserType 介面,再套用一個範例來修改即可。 範例可參考 https://www.hibernate.org/388.html 。

...繼續閱讀

Posted by shirock at 樂多Roodo!15:09回應(0)引用(0)
標籤:hibernate

2009年12月9日

Java Enum 範例 - enum HttpStatusCode

HTTP 協定規範了 HTTP Status Code,這個狀態碼本身就包含了兩種表達形式,即三位數字的狀態碼,與文字訊息的狀態訊息。

加上 Enum 的定義後,在 Java 語言內就可以用三種表達形式,例如: 200, "Ok", HttpStatusCode.Ok。這實在是用來展示 Enum 用法的絕佳範例。

...繼續閱讀

Posted by shirock at 樂多Roodo!22:35回應(0)引用(0)
標籤:enum

Java Enum and Generic

Enum(列舉) 在 C 語言時代就是賦予常數值可讀意義的簡便方法。 C# 也是一開始就提供 Enum 型別。 Java 則遲到 5.0 才提供。不過遲來總比不來好。

本文是 Java 語言的 Enum (列舉)型別與 Generic (泛型) 能力共同運作的筆記。 Java 的列舉型別是一種特殊型別,當我們要在列舉型別的場合中加上泛型能力時,需要運用一些不同的處理手段。我們也需要用到 Reflection (反射)。

...繼續閱讀

Posted by shirock at 樂多Roodo!0:10回應(5)引用(0)
標籤:java,generic,enum

2009年12月3日

與 metavige 和 alexchen 對話 Java 語言

所以當然這個 Java 老語言來說,自然沒得比了~

目前的開發方式或者是環境變遷,強調的是快速開發,以往那種慢工出細活的方式已經有點不合時宜了

metavige

有趣的是,Java一點都不老。我在 從中介編程與反射能力來談 Java 語言 列出十年世代的程式語言列表,Java 名列其中。它比Python 年輕3歲,跟Ruby, PHP, JavaScript 同年發佈。單純看語言的特性,Smalltalk這個40歲的程式語言都比 Java 靈活,這才是 Java 令我們老輩程序員驚奇的事。

...繼續閱讀

2009年12月1日

從 C++ Template 到 Java Generic,一步一步來

Java 實作了泛型(generic)機制以實現 C++ 樣板(template) 的一部份能力,兩者的語法乍看之下也有些相似。 雖然我覺得 C++ 樣板很難搞,而且兩者的語法有點像,但是相較於完全陌生的 Java 泛型,我用起 C++ 樣板來還是比較熟練的。很自然的,當我試圖要用 Java 的泛型重構程式碼時,我會先從 C++ 樣板的觀點來思考。

我將日前工作中碰到的一段我想用泛型重構的程式碼,取其大綱出來練習。本文紀錄了大致的改寫過程。

...繼續閱讀

Posted by shirock at 樂多Roodo!20:35回應(2)引用(3)
標籤:template, generic, 樣板, 泛型

2009年11月30日

嘗試使用 Java 的 reflection 重構指派資料欄位值的程式碼

如果你熟悉動態語言,你大概會嘗試使用 Java 的反射(reflection)來重構程式碼。我個人提供一個重構經驗,告訴你使用 Java 的反射時,你可能會感到失望。

這是一段透過 Hibernate 進行的資料更新動作。我從使用者端取得要更新的資料項,接著先向 Hibernate 查詢要更新的資料項目是否存在,存在的話再把新的資料內容更新進去。

...繼續閱讀

Posted by shirock at 樂多Roodo!0:33回應(18)引用(1)
標籤:reflection,反射,refactor,DRY,重構

2009年11月15日

從中介編程與反射能力來談 Java 語言

公司這個月開始一件專案,我分配到用 Java 開發 web service 那一塊。 於是我親身體驗到一本書說的故事。

找一個很聰明,但是沒有 Java 經驗的開發者,讓他去學學 Java web 企業應用的那一堆技術,然後再問問他的想法。問題是兩方面的,首先,它很難;再者,失敗的後果很悲慘。

對我來說,或許這意味者程式碼應該在較高等級的抽象中,而我們無法在 Java 中做到這一點。

《超越 Java》(Beyond Java),Bruce Tate,O'Reilly出版

我不算聰明的開發者,但十幾年基本功練下來,功底還算紥實。OOP, ORM, Design pattern 這些概念都懂。Web 架構更是熟悉。儘管如此,當我試圖使用 Spring, Hibernate 等框架時,我完全無法理解為什麼 Java 語言可以把一件簡單的事搞成這麼複雜。這件事促成我寫出《不同程式語言的中介編程與反射能力系列文章》。

...繼續閱讀

2009年11月14日

擁抱變化,從函數指標到函數個體

我來說個關於函數指標(在 C 語言中,function 就是一個 function pointer)與函數個體(function object)的小故事。這個故事還有一個 Java 版的,在本文的最後一節。只對 Java 語言有興趣的,可以先看後面的 Java 版,再回頭看前面。

有一天,"偉大的"架構設計師交代甲和乙兩位程序員共同負責撰寫一個小程式。這個程式配置了兩個陣列,一個是傳統的整數陣列,一個是整數vector。這個程式要將這兩個陣列的內容傾印出來。

...繼續閱讀

2009年04月15日

Openchange/libmapi API 用例

在 libmapi 中,主要的封包結構是 mapi_object_t。使用 mapi_object_init() 建構內容。 主要的函數回傳值是 enum MAPISTATUS,並以 MAPI_E_SUCCESS 表示成功執行。 通常在呼叫 libmapi API 後使用 if (retval != MAPI_E_SUCCESS) return false; 判斷程式流程。

就設計架構而言, libmapi 運作時會管理記憶體資源。使用 MAPIFreeBuffer(), mapi_object_release() 便可釋放閒置的記憶體空間。 但就我實測結果顯示,它目前存有 memory lack 問題。以擷取連絡人清單為例,在擁有 256MB 實際記憶體與 384MB Swap 空間的 GNU/Linux 系統上, 大約在擷取200筆訊息後,就會因為記憶體不足而被系統中止程序。

openchangeclient -p rock --fetch-items=contact

這是目前使用 libmapi 開發大型客戶軟體時必須注意之處。其他Bug可以參考 Openchange開發工具補遺

...繼續閱讀

Posted by shirock at 樂多Roodo!13:09回應(0)引用(0)
標籤:Exchange,MAPI,Openchange
 [1]  [2]  [3]  [4]  [最終頁]