原创 安卓應用調用QQ登錄接口

安卓應用調用QQ登錄接口 註冊成爲開發者並提交APP審覈 先在QQ互聯網站註冊成爲開發者,進行郵箱驗證 此時你填寫完信息後只是保存到騰訊服務器了,而沒有提交審覈,你個人信息狀態顯示未提交審覈,提交審覈,並等待,一般很快就會通過。 審

原创 多分派技術及其應用——訪問者模式

多分派技術及其應用——訪問者模式 分派是什麼 分派就是在調用一個方法(把調用方法看成是一個請求)時,確定請求接收者以及確定要執行哪段代碼的問題。乍看起來,這個解釋很蠢(調用哪個方法不就是執行哪個方法的代碼嗎?),思考之後卻有道理。比如

原创 使用 Apache Commons CLI 來解析命令行參數

使用 Apache Commons CLI 來解析命令行參數 入門 介紹 命令行處理有三個階段。它們是定義,解析和審訊階段。 定義 每個命令行必須定義將用於定義應用程序接口的選項集。 CLI使用Options類作爲Option實例的容

原创 Apache Commons CLI 如何處理無選項名的參數

Apache Commons CLI 如何處理無選項名的參數 形如 java class文件 命令 class文件 就是沒有選項名的參數,那麼如何使用CLI來解析呢? 像這樣的參數是不需要在定義階段定義的,CLI在解析的時候會把這類參

原创 UML精粹之類圖

UML精粹之類圖 本博客源自《UML精粹》一書,向Martin Fower致敬。UML圖使用PlantUML的DSL繪製。 類的屬性: 形如:visibility name: type multiplicity = default {

原创 組合方法

組合方法 在面向對象的編碼中,我們更傾向於使用小方法,並用小方法來組合成另一個小方法,組合而成的這個方法就被稱爲組合方法。我覺得組合方法也可以當做動詞來理解,這裏就不贅述了。這也算是一種模式,一種簡單得被人嘲笑的模式。那我們應該如何組

原创 使用Lombok

使用Lombok lombok是一個可以通過簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 Java 代碼(比如setter代碼和getter代碼)的工具。 Lombok的使用 安裝 下載Lombok的jar包 java

原创 Java 泛型 ? E T K V Object

Java 泛型 ? E T K V Object ? 表示不確定類型,和Object類型不同 E 一般表示Element,T 一般表示Type,K一般表示Key,V一般表示Value,不過這些可以混用,沒有限制 Object則是包含

原创 Java併發編程 避免活躍性問題

Java併發編程 避免活躍性問題 在安全性與活躍性之間通常存在着某種制衡 我們使用加鎖機制來確保線程安全,但過度的使用加鎖,則可能導致鎖順序死鎖 使用線程池和信號量來限制對資源的使用,可能導致資源死鎖 Java應用程序無法從死鎖中恢

原创 使用Cactus測試Servlet 入門

使用Cactus測試Servlet 入門 Maven依賴: <!-- Cactus使用的是JUnit3,也可以使用JUnit4,因爲JUnit4兼容JUnit3 --> <dependency> <groupId>junit<

原创 重構實現Command模式

重構實現Command模式 一個簡單的場景 描述 請求者發送請求,接受者接收請求,並作出響應,這有點類似於Web中的get和post等請求。一般,我們會使用條件判斷語句來處理請求,if請求類型爲這個,就執行這個方法,else if請求

原创 用Factory來創建對象(Java篇)

用Factory來創建對象(Java篇) 最簡單的對象只有一個無參的構造方法,我們可以輕鬆new出一個對象。當構造方法不能滿足當前創建需要時,我們會爲對象增加構造方法,這時我們想new出一個對象,就要考慮使用哪個構造方法了。當有多個構造

原创 去除多餘的Singleton(Java篇)

去除多餘的Singleton(Java篇) Singleton簡單、實用,學過設計模式的我們都可以輕鬆的使用Singleton模式來創建單例,並提供它的全局訪問方法。 使用Singleton時,我們往往只注重它的單一性,而忽視了它的可見

原创 淺談Builder模式(Java篇)

淺談Builder模式(Java篇) Factory主要通過選擇構造方法來創建合適的對象,而Builder負責更復雜的創建行爲,比如設置對象的屬性。 一個簡單的JavaBean,只有get、set方法,我們可以使用它的構造方法或是一系列

原创 Java方法返回值前面的<T>是什麼?

Java方法返回值前面的<T>是什麼? 它的作用是“定義泛型” 一段簡單的代碼 class Show<T> { public void print1(T t) { System.out.println(t);