原创 設計模式-策略模式

【應用場景】 定義算法族,封裝起來,使他們之間可以相互替換。個人覺得一般體現在MVC結構的邏輯控制層 【優勢】 使算法的變化獨立於使用算法的用戶,提高系統的靈活性和可維護性 【應注意】 1,剝離類中易於變化的行爲,通過組合的方式嵌入抽象基

原创 Hadoop學習線路

截止到2013年,根據cloudera的統計,Hadoop家族產品已經達到20個   一句話產品介紹: Apache Hadoop: 是Apache

原创 A*算法

    A*算法在人工智能中是一種典型的啓發式搜索算法,在說它之前先提提狀態空間搜索。     狀態空間搜索,如果按專業點的說法就是將問題求解過程表現爲從初始狀態到目標狀態尋找這個路徑的過程。由於求解問題的過程中分枝有很多,主要是求解過程

原创 openfire 分析

在Openfire中主要用filter這種機制來進行數據轉換。 Protocol Codec Factory:        Protocol Codec Factory提供了方便的Protocol支持,通過它的Encoder和Decod

原创 大型高性能ASP.NET系統架構設計

大型動態應用系統平臺主要是針對於大流量、高併發網站建立的底層系統架構。大型網站的運行需要一個可靠、安全、可擴展、易維護的應用系統平臺做爲支撐,以保證網站應用的平穩運行。   大型動態應用系統又可分爲幾個子系統: Web前端系統 負載均衡系

原创 設計模式-單例模式

【應用場景】 確保程序運行期某個類,只有一份實例,用於進行資源共享控制。 【優勢】 使用簡單,易於跨模塊 【應注意】 確保使用者只能通過 getInstance方法才能獲得,單例類的唯一實例和如何管理實例化後的內存。 【敏捷原則】 單一職

原创 設計模式-工廠模式

【應用場景】 工廠方式創建類的實例,多與proxy模式配合,創建可替換代理類。 【優勢】 易於替換,面向抽象編程,application只與抽象工廠和易變類的共性抽象類發生調用關係。 【應注意】 項目初期,軟件結構和需求都沒有穩定下來時,

原创 Mina 在項目中的位置

首先,看Mina在項目中所處的位置,如下圖: Mina處於中間層,它不關心底層網絡數據如何傳輸,只負責接收底層數據,過濾並轉換爲Java對象提供給我們的應用程序,然後把應用程序響應值過濾並轉換爲底層識別的字節,提供給底層傳輸; ---

原创 Mina 通訊原理

異步 IO 模型 異步 I/O 模型大體上可以分爲兩種,反應式 (Reactive) 模型和前攝式 (Proactive) 模型: 1. 傳統的 select /epoll / kqueue 模型,以及 Java NIO 模型,都是典型的

原创 設計模式-MVC模式

【應用場景】 MVC模式是一中非常古老的設計模式,通過數據模型,控制器邏輯,視圖展示將應用程序進行邏輯劃分。 【優勢】 使系統,層次清晰,職責分明,易於維護 【應注意】 如何建立好數據模型;如何實現C層對UI展現和數據交互的邏輯控制 【敏

原创 IoFilter接口

Mina最主要的工作就是把底層傳輸的字節碼轉換爲Java對象,提供給應用程序;或者把應用程序返回的結果轉換爲字節碼,交給底層傳輸。這些都是由IoFilter完成的,因此IoFilter是Mina的精髓所在。     在Mina程序中,Io

原创 Hadoop簡介

    談到Hadoop就不得不提到Lucene和Nutch。首先,Lucene並不是一個應用程序,而是提供了一個純Java的高性能全文索引引擎工具包,它可以方便的嵌入到各種實際應用中實現全文搜索/索引功能。Nutch是一個應用程序,是一

原创 Mina簡介

Apache的Mina(Multipurpose Infrastructure Networked Applications)是一個網絡應用框架,可以幫助用戶開發高性能和高擴展性的網絡應用程序;它提供了一個抽象的、事件驅動的異步API,使

原创 設計模式-代理模式

【應用場景】 當一個類的某些功能需要由別的類來實現,但是又不確定具體會是哪個類實現。 【優勢】 解耦合(減弱對象之間的耦合程度) 【應注意】 不穩定。 個人覺得在調用委託的時候容易出現程序崩潰,例如我聲明瞭委託類:LCLChatDele

原创 自定義Mina編解碼器

協議編解碼器是在使用Mina 的時候最需要關注的對象,因爲網絡傳輸的數據都是二進制數據(byte),而在程序中面向的是JAVA 對象,這就需要在發送數據時將JAVA 對象編碼二進制數據,接收數據時將二進制數據解碼爲JAVA 對象。 編解碼