Time of Update: 2017-01-19
正論:命令模式把一個請求或者操作封裝到一個對象中。命令模式運行系統使用不同的請求把用戶端參數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢複功能。通俗:其實很好理解。命令模式,關心的就是命令(或者稱為操作)。打個比方。在一個公司裡面,整個運作就像一個系統。某個boss發布了一個命令,中層領導接到這個命令,然後指派給具體負責這個員工。整個流程很清晰吧。有一個需求,如何將這個流程固定下來,形成一個系統。我們只要抓住了重點:命令。將它抽取出來,其他的都迎刃而解了。抽取出命令,封裝成一個獨立的對
Time of Update: 2017-01-19
在前端:1.如果json是List對象轉換的,可以直接遍曆json,讀取資料。2.如果是需要把前端的List對象轉換為json傳到後台,param是ajax的參數,那麼轉換如下所示:var jsonStr = JSON.stringify(list); var param= {}; param.jsonStr=jsonStr; 在後台:1.把String轉換為List(str轉換為list)List<T> list = new ArrayList<T>();
Time of Update: 2017-01-19
介紹眾所周知,AOP(面向切面編程)是Spring架構的特色功能之一。通過設定橫切關注點(cross cutting concerns),AOP提供了極高的擴充性。那AOP在Spring中是怎樣運作的呢?當你只能使用core java,卻需要AOP技術時,這個問題的解答變得極為關鍵。不僅如此,在進階技術崗位的面試中,此類問題也常作為考題出現。這不,我的朋友最近參加了一個面試,就被問到了這樣一個棘手的問題——如何在不使用Spring及相關庫,只用core
Time of Update: 2017-01-19
簡介面向切面編程(AOP)提供另外一種角度來思考程式結構,通過這種方式彌補了物件導向編程(OOP)的不足。 除了類(classes)以外,AOP提供了 切面。切面對關注點進行模組化,例如橫切多個類型和對象的交易管理。 (這些關注點術語通常稱作 橫切(crosscutting) 關注點。)Spring的一個關鍵的組件就是 AOP架構。 儘管如此,Spring IoC容器並不依賴於AOP,這意味著你可以自由選擇是否使用AOP,AOP提供強大的中介軟體解決方案,這使得Spring IoC容器更加完善。
Time of Update: 2017-01-19
0.關於AOP面向切面編程(也叫面向方面編程):Aspect Oriented
Time of Update: 2017-01-19
1、什麼是AOPAOP是Aspect Oriented Programming的縮寫,意思是面向方面編程,AOP實際是GoF設計模式的延續。2、關於Spring AOP的一些術語: A、切面(Aspect):在Spring AOP中,切面可以使用通用類或者在普通類中以@Aspect 註解(@AspectJ風格)來實現B、連接點(Joinpoint):在Spring AOP中一個連接點代表一個方法的執行C、通知(Advice):在切面的某個特定的連接點(Joinpoint)上執行的動作。
Time of Update: 2017-01-19
享元(Flyweight)模式:通過共用技術以便有效支援大量細粒度的對象。享元模式在閻宏的《java與模式》中分為單純享元模式和複合享元模式,複合模式的複合享元是不可以共用的,享元對象能做到共用的關鍵是區分內蘊態(Internal State)和外蘊態( External State)。這兩個“蘊態”翻譯的太難懂,我不是說翻譯的不好,可能是我理解能力差,還是《Design Pattern Elements of Reusable Object-Oriented
Time of Update: 2017-01-19
為了能在Java應用程式中正確的使用狀態模式和策略模式,開發人員需要清楚地知道這兩種模式之間的區別。儘管狀態模式和策略模式的結構非常相似,它們又同樣遵循開閉原則,都代表著SOLID設計原則的'O',但它們的意圖是完全不同的。Java中的策略模式是對一組相關的演算法進行封裝,給調用方提供了運行時的靈活性。調用方可以在運行時選擇不同的演算法,而不用修改使用原則的那個Context類。使用原則模式的經典例子包括實現密碼編譯演算法,壓縮演算法,以及排序演算法。另一方面,狀態模式使用一個對象可以在不同的狀
Time of Update: 2017-01-19
關於枚舉大多數地方寫的枚舉都是給一個枚舉然後例子就開始switch,可是我想說,我代碼裡頭來源的資料不太可能就是枚舉,通常是字串或數字,比如一個SQL我解析後首先判定SQL類型,通過截取SQL的token,截取出來可能是SELECT、DELETE、UPDATE、INSERT、ALTER等等,但是都是字串,此時我想用枚舉就不行了,我要將字串轉換成枚舉怎麼轉呢,類似的情況還有從資料庫取出資料根據一些類型做判定,從頁面傳入資料,根據不同的類型做不同的操作,但是都是字串,不是枚舉,悲劇的是我很少看到有人
Time of Update: 2017-01-19
本文執行個體為大家分享了form表單回寫技術,供大家參考,具體內容如下回寫支援的java拼js的方法: /** * 回寫表單 * * @param mRequest * @return */ public static String writeBackMapToForm(Map mRequest) { return writeBackMapToForm(mRequest, new String[]{}, "writeBackMapToForm"); } /**
Time of Update: 2017-01-19
本文執行個體為大家分享了java隨機數產生代碼,供大家參考,具體內容如下package com.gonvan.common.utils; import java.util.*; /** * 隨機數工具 * * @author yuerzm * */public final class LotteryAliasMethod { /** * The random number generator used to sample from the distribution. */
Time of Update: 2017-01-19
本文執行個體為大家分享了java驗證碼產生的範例程式碼,供大家參考,具體內容如下package com.gonvan.component.captcha; import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Random; import
Time of Update: 2017-01-19
1.建造者模式概念定義: 將一個複雜的對象構建與其表示相分離,使得同樣的構建過程可以建立不同的表示;核心 : 構建與表示分離,同構建不同表示區別於 抽象原廠模式 :(1)與抽象原廠模式 相似,因為它也可以建立複雜物件。主要的區別是建造者模式著重於 一步步構造一個複雜物件,關注的是零件類型和裝配工藝的順序
Time of Update: 2017-01-19
synchronized關鍵字顧名思義,是用於同步互斥的作用的。這裡精簡的記一下它的使用方法以及意義:1. 當synchronized修飾 this或者非靜態方法或者是一個執行個體的時候,所同步的鎖是加在this或者執行個體對象引用上面的。比如a,b同為Main類的執行個體化對象,a調用被同步的方法,和b調用被同步的方法,沒有形成互斥。但是不同線程的a對象調用被同步的方法就被互斥了。public synchronized void method(){ //…. } public void
Time of Update: 2017-01-19
0.解譯器(Interpreter)模式定義 :給定一門語言,定義它的文法的一種表示,並定義一個解譯器,該解譯器使用該表示來解釋語言中句子。
Time of Update: 2017-01-19
import java.util.Arrays; import java.util.Collections; import java.util.List; /** * @author shuang.gao Date: 2016/1/28 Time: 12:26 */ public class Pager<T> { /** * 每頁顯示條數 */ private int pageSize; /** * 原集合 */ private
Time of Update: 2017-01-19
FreeMarker是一個模板引擎,一個基於模板產生文本輸出的通用工具,使用純Java編寫FreeMarker被設計用來產生HTML
Time of Update: 2017-01-19
在前兩篇中我們已經介紹了Dwr零配置文化化和前端調用後端的方法,想必大家應該已經會熟練掌握了,下來我們主要探討一下後端怎麼反向調用前端的js方法;就如前兩篇說到了用Dwr註冊了兩個Service組件,一個是remote,另外一個是頁面使用到的controller,這個remote是在頁面一載入進來就會被調用的,這樣就使得會話和頁面ScriptSession建立了綁定的關係,方便我們後面使用它的scriptSessionId進行頁面定向推送;下面是建立會話和頁面ScriptSession的方法(頁
Time of Update: 2017-01-19
//Annotation configuration dwr servletprivate void initializeDwrServlet(ServletContext container) {DwrServlet dwrServlet = new DwrServlet();ServletRegistration.Dynamic dynamic = container.addServlet("dwr-invoker", dwrServlet
Time of Update: 2017-01-19
首先當我們將Dwr3配置好以後,我們可以在瀏覽器中測試一下,查看一下我們配置的Dwr有沒有生效,方法是http://localhost:[你的伺服器連接埠號碼,預設不寫為80]/[