原创 新型領導設計模式—設計可擴展性的業務架構

開閉原則是軟件設計最重要的原則之一,設計具有良好可擴展性的業務架構極其依賴該原則。業務品種在增多,已有業務自身也在發展,需要設計一套統一,靈活,互相獨立的業務架構。筆者在多個項目中,多次使用新型領導設計模式來設計可擴展的業務架構,

原创 Java 8 之默認方法(Default Methods)

Oracle官網是這樣介紹默認方法的,使用默認方法,可以達到往接口裏面增加新的功能,而且保持與老版本代碼兼容,也就是原來的實現類可以不需要被動修改。所以,默認方法位置是在接口裏面;默認方法具有實現,不會強制具體類來現。Java 8

原创 Java 8之Stream適用場景

Stream是Java 8中的一個大的改進。Stream的功能是,支持集合的各種操作,比如filter, sum, max, min, average, map, reduce等等。所以我個人認爲Stream的出現是基於以下原因:

原创 使用mod_jk整合Apache HTTP Server和Tomcat

前言 我們的一個新項目是一個RESTful架構風格的程序,服務器端用Java編寫,對客戶端提供REST Web Service。使用Tomcat作爲Servlet Container,Tomcat本身是無狀態的(stateless

原创 JavaScript之this釋疑

最近進修JavaScript,看了“You Don't Know JS”這本書,覺得是本JavaScript內功上乘心法,有一定JavaScript基礎朋友一定要看看(不推薦入門小朋友看,怕走火入魔)。作者知識淵博,理解透徹,行文流暢,案

原创 John Carmack談軟件工程中藝術與科學

雖然我不是個遊戲超級玩家,但卻是因喜歡遊戲而開始學習編程的(特別是圖像渲染算法)。所以當我看到John Carmack在2012 Quake­Con上的發言時,我覺得自己該聽聽,學習遊戲設計以及開發相關的知識。不過我所聽到的是一個

原创 OpenSSL與KeyStore指令小集

前言 最近項目裏面用到了SSL雙向認證和傳輸加密的技術,研究了一下,想把相關的指令和代碼分享出來,以期後來者能夠少踩坑,順利解決問題。我們的項目服務器是C,客戶端爲Java,CS架構,中間通過Socket通訊。 OpenSSL和Java

原创 UML之類圖(Class Diagram)

類圖是類的靜態關係描述圖,簡單來講有兩個方面,有哪些類,這些類之間的關係是什麼?需要注意的是類圖描述的是靜態關係,動態行爲的如流程,判斷,循環等類圖無法描述,需要搭配其它UML圖。 類自身的描述 生物由細胞構成,類圖由類構成,我們先看看類

原创 UML之包圖(Package Diagram)

軟件的架構設計,思路遵循由大及小。相較於Class Diagram,Package Diagram從更宏觀的角度來展示軟件的架構設計,主要體現在代碼組織方面。Package Diagram對一些大型的項目特別有用。順便說一句,良好的代碼組

原创 Java SSL Socket通訊示例

上一篇《OpenSSL與KeyStore指令小集》裏面說到,最近研究SSL加密,會給出一個Java的小示例。複製一份可以運行的代碼到生產上是非常不負責任的行爲,不過小示例可以帶我們入門,快速看清事物的本質。羅馬不是一天建成的。 本文將給出

原创 24歲纔開始學習編程是否太晚?

我24歲了,剛剛開始學習編程,想成爲一個程序員。是否爲時已晚? 這是個以前我碰到過很多次的問題,對我來說,答案很簡單:什麼纔是你真正喜歡做的? 編程有很多種類型,比如Web工程師或者軟件工程師。有很多的編程語言和開發環境,一直處於演進之中

原创 UML之部署圖(Deployment Diagram)

計算機系統由硬件和軟件組成,應用軟件的命令,先轉化爲操作系統命令,再轉化爲彙編語言,最後再轉化爲二進制命令,由硬件來執行。軟件要部署到硬件上才具有生命。Deployment Diagram展示的就是把什麼樣的軟件部署到什麼樣的硬件上的過程

原创 UML之序列圖(Sequence Diagram)

類圖描述的是類之間的靜態關係,而序列圖展示的是對象之間的溝通方法,描述運行時的交互關係。 OOP編程語言裏面合理的直接交互方式只有一種,方法調用(Event通訊是間接的)。所以序列圖也可以 理解爲方法調用交互圖。方法調用有四個元素,參與者

原创 Java 8之方法引用(Method References)

Java 8中方法也是一種對象,可以By名字來引用。不過方法引用的唯一用途是支持Lambda的簡寫,使用方法名稱來表示Lambda。不能通過方法引用來獲得諸如方法簽名的相關信息。 方法引用的分類 方法引用分爲4類,常用的是前兩種。

原创 Java 8之Lambda

公司內部的一些新項目相繼採用了Java 8,這纔有了動力好好的研究一下Java 8這個傳說中的大殺器。Java 8文檔裏面提到的第一個改進就是Lambda,就從它入手好了。社區好多大神都已經研究幾年了,拜一下。有不準確的地方,望指