2014年3月5日

          題目描述:
          輸入一個(gè)整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。數(shù)組中連續(xù)的一個(gè)或多個(gè)整數(shù)組成一個(gè)子數(shù)組,每個(gè)子數(shù)組都有一個(gè)和。

          求所有子數(shù)組的和的最大值。要求時(shí)間復(fù)雜度為O(n)。

          思路:

          我們可以使用分治法或者減治法來(lái)處理這個(gè)問(wèn)題。

          分治法    
          目標(biāo):把1個(gè)大問(wèn)題分成2個(gè)小問(wèn)題,2個(gè)小問(wèn)題還可以再分,直到問(wèn)題規(guī)模小的可以簡(jiǎn)單解決。

          將該數(shù)組等分成兩個(gè)子數(shù)組,假如知道左右兩側(cè)兩個(gè)數(shù)組的各自的最大子數(shù)組和,那么整個(gè)數(shù)組的最大子數(shù)組和可能為三種情況:

          • 右側(cè)數(shù)組的最大子數(shù)組和
          • 左側(cè)數(shù)組的最大子數(shù)組和
          • 左右兩側(cè)數(shù)組中間毗鄰位置連接形成的子數(shù)組的和的最大值(如-6,4,-3,2####5,-6,9,-8,左側(cè)最大值為4,右側(cè)為9,中間毗鄰位置從2和5向兩側(cè)相加,得到中間毗鄰子數(shù)組4,-3,2,5,-6,9和為11,三者比較得最大子數(shù)組和為11)。

          遞歸到數(shù)組中只包含一個(gè)數(shù)字。

          這種思路也是可行的。進(jìn)行l(wèi)n(n)次拆分,每次拆分后進(jìn)行n次比較,所以算法復(fù)雜度為n*ln(n)。但還達(dá)不到題目的要求。

          java代碼:

           1 package com.island.info;
           2 /**
           3  * <p>Title: TestMaxArray.java</p>
           4  * <p>Description: 分治法求解連續(xù)和最大</p>
           5  * @date 2014-3-05
           6  *
           7  */
           8  
           9 public class MaxSub {
          10         static int arr[] = {4,-3,5,-2,-1,2,6,-2};    //也可以隨機(jī)生成
          11         public static void main(String args[]){
          12             System.out.println(max(arr));
          13         }
          14  
          15         //包裝函數(shù)
          16         public static int max(final int[] arr){
          17             System.out.println("(1)*****arr.length-1----------------->:"+ (arr.length-1));
          18             return max(arr,0,arr.length-1);
          19         }
          20  
          21         //核心代碼:遞歸調(diào)用max()
          22         public static int max(final int[] arr,int leftIndex, int rightIndex){
          23             System.out.println("(2)*****leftIndex--------rightIndex--->:"+leftIndex+"|***************|"+rightIndex);
          24             int sum = 0,leftHalfMax = 0, rightHalfMax = 0;
          25             if (rightIndex-leftIndex==0){
          26                 return arr[rightIndex];
          27             } else {
          28                 int center = (leftIndex+rightIndex)/2;//2分查找中間節(jié)點(diǎn)
          29                 int maxLeft = max(arr,leftIndex,center);//左邊最大的
          30                 int maxRight = max(arr,center+1,rightIndex);//右邊最大的
          31                 //以下是查找跨越中間點(diǎn)的最大子序列
          32                 //從中點(diǎn)到左側(cè):
          33                 for (int i=center;i>=leftIndex;--i){
          34                     sum+=arr[i];
          35                     if (sum>leftHalfMax){
          36                         leftHalfMax = sum;
          37                     }
          38                 }
          39                 System.out.println("左邊的sum----------->:"+sum);
          40                 sum=0;
          41                 //從中點(diǎn)到右側(cè)
          42                 for (int i=center+1;i<=rightIndex;++i){
          43                     sum+=arr[i];
          44                     if (sum>rightHalfMax){
          45                         rightHalfMax = sum;
          46                     }
          47                 }
          48                 System.out.println("右邊的sum----------->:"+sum);
          49                 return max(maxLeft,maxRight,leftHalfMax+rightHalfMax);
          50             }
          51         }
          52  
          53         //三者取最大值
          54         public static int max(int a,int b,int c){
          55             return a>b?(a>c?a:c):(b>c?b:c);
          56         }
          57     }

          減治法

          目標(biāo):將問(wèn)題規(guī)模不斷減小,直到可以簡(jiǎn)單處理為止。

          假設(shè)我們已知一個(gè)數(shù)組的最大子數(shù)組和,現(xiàn)在在該數(shù)組后面增加一個(gè)數(shù)字,新數(shù)組的最大子數(shù)組和可能是什么呢:

          • 原數(shù)組的最大子數(shù)組和;
          • 新增加的數(shù)字為正數(shù),和最右側(cè)的子數(shù)組形成了一個(gè)新的最大子數(shù)組和(所以為了通過(guò)一次遍歷完成,我們需要保存最右側(cè)的子數(shù)組的最大和)。

          然后將兩個(gè)數(shù)字進(jìn)行比較即可。

          所以減治至數(shù)組只包含最左側(cè)一個(gè)數(shù)字,我們知道它的最大子數(shù)組和和最右側(cè)子數(shù)組最大和都為還數(shù)字,逐次加1個(gè)數(shù)字直到整個(gè)數(shù)組即可。

          java代碼:

           1 package com.island.info;
           2  
           3 /**
           4  * <p>Title: TestMaxArray.java</p>
           5  * <p>Description: 分治法求解連續(xù)和最大</p>
           6  * @date 2014-3-05
           7  *
           8  */
           9 public class MaxSubArraySum {
          10  
          11     private static long getMax(long a, long b) {
          12         return a > b ? a : b;
          13     }
          14      
          15     /** 
          16     * 獲得連續(xù)子數(shù)組的最大和 
          17     * @param array 
          18     * @return 最大和,此處用了Long型是為了表示當(dāng)參數(shù)為null或空時(shí),可以返回null,返回其它任何數(shù)字都可能引起歧義。 
          19     */ 
          20  
          21     public static Long getMax(int[] array) {
          22          
          23         if (array == null || array.length <= 0) {
          24             return null;
          25         }
          26          
          27         long maxSum = array[0]; //所有子數(shù)組中最大的和 
          28         long righteEdge = array[0]; //右側(cè)子數(shù)組的最大和
          29         for (int i = 1; i < array.length; i++) {
          30             //當(dāng)右側(cè)子數(shù)組的最大和為負(fù)數(shù)時(shí),對(duì)于新數(shù)組,右側(cè)子數(shù)組的最大和為新增加的數(shù)。  
          31             if (righteEdge < 0) {
          32                 righteEdge = array[i];
          33             } else { //為正數(shù)時(shí),對(duì)于新數(shù)組,右側(cè)子數(shù)組的最大和為新增加的數(shù) + 原來(lái)的最大和。  
          34                 righteEdge += array[i];
          35             }
          36             //所有子數(shù)組中最大的和  
          37             System.out.println("righteEdge-------------maxSum:"+righteEdge+"****************"+maxSum);
          38             maxSum = getMax(righteEdge, maxSum);
          39         }
          40         return maxSum;
          41     }
          42  
          43     public static void main(String[] args) {
          44         int[] array = {1-2310-472-5};
          45         //int arr[] = {4,-3,5,-2,-1,2,6,-2};  
          46         System.out.println("Max sum: " + MaxSubArraySum.getMax(array));
          47     }
          48  
          49 }

          posted @ 2014-03-05 11:47 dongisland 閱讀(1714) | 評(píng)論 (0)編輯 收藏

          Ajax的原理就是:通過(guò)javascript的方式,將前臺(tái)數(shù)據(jù)通過(guò)xmlhttp對(duì)象傳遞到后臺(tái),后臺(tái)在接收到請(qǐng)求后,將需要的結(jié)果,再傳回到前臺(tái),這樣就可以實(shí)現(xiàn)不需要頁(yè)面的回發(fā),頁(yè)是數(shù)據(jù)實(shí)現(xiàn)來(lái)回傳遞,從頁(yè)實(shí)現(xiàn)無(wú)刷新。 
          Ajax的原理簡(jiǎn)單來(lái)說(shuō),實(shí)際上就是通過(guò)XmlHttpRequest對(duì)象來(lái)向服務(wù)器發(fā)異步請(qǐng)求,從服務(wù)器獲得數(shù)據(jù),然后用javascript來(lái)操作DOM而更新頁(yè)面。 
          這其中最關(guān)鍵的一步就是從服務(wù)器獲得請(qǐng)求數(shù)據(jù)。要清楚這個(gè)過(guò)程和原理,我們必須對(duì) XMLHttpRequest有所了解。 
          我們可以看出,XMLHttpRequest對(duì)象完全用來(lái)向服務(wù)器發(fā)出一個(gè)請(qǐng)求的,它的作用也局限于此,但它的作用是整個(gè)ajax實(shí)現(xiàn)的關(guān)鍵,我們可以把服務(wù)器端看成一個(gè)數(shù)據(jù)接口,它返回的是一個(gè)純文本流,當(dāng)然,這個(gè)文本流可以是XML格式,可以是Html,可以是Javascript代碼,也可以只是一個(gè)字符串。這時(shí)候,XMLHttpRequest向服務(wù)器端請(qǐng)求這個(gè)頁(yè)面,服務(wù)器端將文本的結(jié)果寫(xiě)入頁(yè)面,這和普通的web開(kāi)發(fā)流程是一樣的,不同的是,客戶(hù)端在異步獲取這個(gè)結(jié)果后,不是直接顯示在頁(yè)面,而是先由javascript來(lái)處理,然后再顯示在頁(yè)面。

          posted @ 2014-03-05 11:27 dongisland 閱讀(614) | 評(píng)論 (0)編輯 收藏

          內(nèi)連接:INNER  JOIN或者JOIN,把兩個(gè)表中數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)查出來(lái)。 
          外連接:OUTER  JOIN,以某個(gè)表為基礎(chǔ)把對(duì)應(yīng)數(shù)據(jù)查出來(lái),分為左外連接和右外連接。 
          左外連接:LEFT  JOIN或者LEFT  OUTER  JOIN,以某個(gè)表為基礎(chǔ)把對(duì)應(yīng)數(shù)據(jù)查出來(lái)。 
          右外連接:RIGHT  JOIN或者RIGHT  OUTER  JOIN,以某個(gè)表為基礎(chǔ)把對(duì)應(yīng)數(shù)據(jù)查出來(lái)。 
          全連接:FULL  JOIN,以多個(gè)表為基礎(chǔ)

          例子:   
             a表      id   name    
                        1   張3                 
                        2   李四                  
                        3   王武                 

              b表     id     job   parent_id   
                        1     23     1   
                         2     34     2   
                        3     34     4  
            a.id同b.parent_id   存在關(guān)系   
          內(nèi)連接   
            select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id   
           結(jié)果是     
            1   張3          1     23     1   
            2   李四         2     34     2   
           左連接   
            select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id   
          結(jié)果是     
            1   張3           1     23     1   
            2   李四          2     34     2   
            3   王武          null  
          右連接   
            select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id   
            結(jié)果是     
            1   張3            1     23     1   
            2   李四           2     34     2   
            null                 3     34     4   
            完全連接   
            select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id  
            結(jié)果是     
            1   張3            1     23     1   
            2   李四           2     34     2   
            null                 3     34     4   
            3   王武           null

          posted @ 2014-03-05 11:26 dongisland 閱讀(199) | 評(píng)論 (0)編輯 收藏

          一、Collections類(lèi)和Collection接口

               Collections是針對(duì)集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線(xiàn)程安全化等操作。

              Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的 類(lèi),Java SDK提供的類(lèi)都是繼承自Collection的“子接口”如List和Set。

          二、現(xiàn)在來(lái)談?wù)凧ava集合的一些實(shí)現(xiàn)類(lèi)。

          Collection
          List

          ArreyList 

          Vector

          LinkedList

          │└Stack

          └Set

          HashSet
          LinkedHashSet

          │└TreeSet

          List代表有序、重復(fù)的集合

          1.ArrayList類(lèi)
            ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒(méi)有同步。
          size,isEmpty,get,set方法運(yùn)行時(shí)間為常數(shù)。但是add方法開(kāi)銷(xiāo)為分?jǐn)偟某?shù),添加n個(gè)元素需要O(n)的時(shí)間。其他的方法運(yùn)行時(shí)間為線(xiàn)性。
            每個(gè)ArrayList實(shí)例都有一個(gè)容量(Capacity),即用于存儲(chǔ)元素的數(shù)組的大小。這個(gè)容量可隨著不斷添加新元素而自動(dòng)增加,但是增長(zhǎng)算法 并沒(méi)有定義。當(dāng)需要插入大量元素時(shí),在插入前可以調(diào)用ensureCapacity方法來(lái)增加ArrayList的容量以提高插入效率。
            和LinkedList一樣,ArrayList也是非同步的(unsynchronized)。

          2.Vector類(lèi)
            Vector非常類(lèi)似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的Iterator是同一接口,但是,因?yàn)閂ector是同步的,當(dāng)一個(gè)Iterator被創(chuàng)建而且正在被使用,另一個(gè)線(xiàn)程改變了Vector的狀態(tài)(例如,添加或刪除了一些元素),這時(shí)調(diào)用Iterator的方法時(shí)將拋出ConcurrentModificationException,因此必須捕獲該異常。

          3.LinkedList類(lèi)
            LinkedList實(shí)現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在 LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊(duì)列(queue)或雙向隊(duì)列(deque)。
            注意LinkedList沒(méi)有同步方法。如果多個(gè)線(xiàn)程同時(shí)訪問(wèn)一個(gè)List,則必須自己實(shí)現(xiàn)訪問(wèn)同步。一種解決方法是在創(chuàng)建List時(shí)構(gòu)造一個(gè)同步的List:
              List list = Collections.synchronizedList(new LinkedList(...));

          4.Stack 類(lèi)
            Stack繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧。Stack提供5個(gè)額外的方法使得Vector得以被當(dāng)作堆棧使用。基本的push和pop方法,還有peek方法得到棧頂?shù)脑兀琫mpty方法測(cè)試堆棧是否為空,search方法檢測(cè)一個(gè)元素在堆棧中的位置。Stack剛創(chuàng)建后是空棧。

          Set代表無(wú)序、不可重復(fù)的集合
          HashSet和TreeSet的區(qū)別
          HashSet無(wú)序,TreeSet有序,兩者均不能有重復(fù)的對(duì)象

          Map
          HashMap

          Hashtable

          TreeMap
          └WeakHashMap

          Map沒(méi)有繼承Collection接口

          1.Hashtable類(lèi)
            Hashtable繼承Map接口,實(shí)現(xiàn)一個(gè)key-value映射的哈希表。任何非空(non-null)的對(duì)象都可作為key或者value。Hashtable是同步的。

          2.HashMap類(lèi)
            HashMap和Hashtable類(lèi)似,不同之處在于 HashMap是非同步的,并且允許null,即null value和null key。,但是將HashMap視為Collection時(shí) (values()方法可返回Collection),其迭代子操作時(shí)間開(kāi)銷(xiāo)和HashMap的容量成比例。因此,如果迭代操作的性能相當(dāng)重要的話(huà),不要 將HashMap的初始化容量設(shè)得過(guò)高,或者load factor過(guò)低。

          3.WeakHashMap類(lèi)
            WeakHashMap是一種改進(jìn)的HashMap,它對(duì)key實(shí)行“弱引用”,如果一個(gè)key不再被外部所引用,那么該key可以被GC回收。

          三、集合類(lèi)的遍歷

          遍歷通用Collection

          Iterator it = collection.iterator(); // 獲得一個(gè)迭代子
            while(it.hasNext()) {
             Object obj = it.next(); // 得到下一個(gè)元素
          }

          posted @ 2014-03-05 11:07 dongisland 閱讀(273) | 評(píng)論 (0)編輯 收藏

          1) 在Action實(shí)現(xiàn)類(lèi)方面的對(duì)比:Struts 1要求Action類(lèi)繼承一個(gè)抽象基類(lèi);Struts 1的一個(gè)具體問(wèn)題是使用抽象類(lèi)編程而不是接口。Struts 2 Action類(lèi)可以實(shí)現(xiàn)一個(gè)Action接口,也可以實(shí)現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。Struts 2提供一個(gè)ActionSupport基類(lèi)去實(shí)現(xiàn)常用的接口。即使Action接口不是必須實(shí)現(xiàn)的,只有一個(gè)包含execute方法的POJO類(lèi)都可以用作Struts 2的Action。 
          2) 線(xiàn)程模式方面的對(duì)比:Struts 1 Action是單例模式并且必須是線(xiàn)程安全的,因?yàn)閮H有Action的一個(gè)實(shí)例來(lái)處理所有的請(qǐng)求。單例策略限制了Struts 1 Action能做的事,并且要在開(kāi)發(fā)時(shí)特別小心。Action資源必須是線(xiàn)程安全的或同步的;Struts 2 Action對(duì)象為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例,因此沒(méi)有線(xiàn)程安全問(wèn)題。 即struts1每個(gè)action只有1個(gè)實(shí)例,struts2每一個(gè)請(qǐng)求都會(huì)new一個(gè)實(shí)例,所以struts2是線(xiàn)程安全的
          3) Servlet依賴(lài)方面的對(duì)比:Struts 1 Action依賴(lài)于Servlet API,因?yàn)镾truts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依賴(lài)于Servlet API,從而允許Action脫離Web容器運(yùn)行,從而降低了測(cè)試Action的難度。 當(dāng)然,如果Action需要直接訪問(wèn)HttpServletRequest和HttpServletResponse參數(shù),Struts 2 Action仍然可以訪問(wèn)它們。但是,大部分時(shí)候,Action都無(wú)需直接訪問(wèn)HttpServetRequest和HttpServletResponse,從而給開(kāi)發(fā)者更多靈活的選擇。 
          4) 可測(cè)性方面的對(duì)比:測(cè)試Struts 1 Action的一個(gè)主要問(wèn)題是execute方法依賴(lài)于Servlet API,這使得Action的測(cè)試要依賴(lài)于Web容器。為了脫離Web容器測(cè)試Struts 1的Action,必須借助于第三方擴(kuò)展:Struts TestCase,該擴(kuò)展下包含了系列的Mock對(duì)象(模擬了HttpServetRequest和HttpServletResponse對(duì)象),從而可以脫離Web容器測(cè)試Struts 1的Action類(lèi)。Struts 2 Action可以通過(guò)初始化、設(shè)置屬性、調(diào)用方法來(lái)測(cè)試。 
          5) 封裝請(qǐng)求參數(shù)的對(duì)比:Struts 1使用ActionForm對(duì)象封裝用戶(hù)的請(qǐng)求參數(shù),所有的ActionForm必須繼承一個(gè)基類(lèi):ActionForm。普通的JavaBean不能用作ActionForm,因此,開(kāi)發(fā)者必須創(chuàng)建大量的ActionForm類(lèi)封裝用戶(hù)請(qǐng)求參數(shù)。雖然Struts 1提供了動(dòng)態(tài)ActionForm來(lái)簡(jiǎn)化ActionForm的開(kāi)發(fā),但依然需要在配置文件中定義ActionForm;Struts 2直接使用Action屬性來(lái)封裝用戶(hù)請(qǐng)求屬性,避免了開(kāi)發(fā)者需要大量開(kāi)發(fā)ActionForm類(lèi)的煩瑣,實(shí)際上,這些屬性還可以是包含子屬性的Rich對(duì)象類(lèi)型。如果開(kāi)發(fā)者依然懷念Struts 1 ActionForm的模式,Struts 2提供了ModelDriven模式,可以讓開(kāi)發(fā)者使用單獨(dú)的Model對(duì)象來(lái)封裝用戶(hù)請(qǐng)求參數(shù),但該Model對(duì)象無(wú)需繼承任何Struts 2基類(lèi),是一個(gè)POJO,從而降低了代碼污染。 
          6) 表達(dá)式語(yǔ)言方面的對(duì)比:Struts 1整合了JSTL,因此可以使用JSTL表達(dá)式語(yǔ)言。這種表達(dá)式語(yǔ)言有基本對(duì)象圖遍歷,但在對(duì)集合和索引屬性的支持上則功能不強(qiáng);Struts 2可以使用JSTL,但它整合了一種更強(qiáng)大和靈活的表達(dá)式語(yǔ)言:OGNL(Object Graph Notation Language),因此,Struts 2下的表達(dá)式語(yǔ)言功能更加強(qiáng)大。 
          7) — 綁定值到視圖的對(duì)比:Struts 1使用標(biāo)準(zhǔn)JSP機(jī)制把對(duì)象綁定到視圖頁(yè)面;Struts 2使用“ValueStack”技術(shù),使標(biāo)簽庫(kù)能夠訪問(wèn)值,而不需要把對(duì)象和視圖頁(yè)面綁定在一起。 
          8) 類(lèi)型轉(zhuǎn)換的對(duì)比:Struts 1 ActionForm 屬性通常都是String類(lèi)型。Struts 1使用Commons-Beanutils進(jìn)行類(lèi)型轉(zhuǎn)換,每個(gè)類(lèi)一個(gè)轉(zhuǎn)換器,轉(zhuǎn)換器是不可配置的;Struts 2使用OGNL進(jìn)行類(lèi)型轉(zhuǎn)換,支持基本數(shù)據(jù)類(lèi)型和常用對(duì)象之間的轉(zhuǎn)換。 
          9) 數(shù)據(jù)校驗(yàn)的對(duì)比:Struts 1支持在ActionForm重寫(xiě)validate方法中手動(dòng)校驗(yàn),或者通過(guò)整合Commons alidator框架來(lái)完成數(shù)據(jù)校驗(yàn)。Struts 2支持通過(guò)重寫(xiě)validate方法進(jìn)行校驗(yàn),也支持整合XWork校驗(yàn)框架進(jìn)行校驗(yàn)。 
          10) Action執(zhí)行控制的對(duì)比:Struts 1支持每一個(gè)模塊對(duì)應(yīng)一個(gè)請(qǐng)求處理(即生命周期的概念),但是模塊中的所有Action必須共享相同的生命周期。Struts 2支持通過(guò)攔截器堆棧(Interceptor Stacks)為每一個(gè)Action創(chuàng)建不同的生命周期。開(kāi)發(fā)者可以根據(jù)需要?jiǎng)?chuàng)建相應(yīng)堆棧,從而和不同的Action一起使用。 
          11) 捕獲輸入:Struts1 使用ActionForm對(duì)象捕獲輸入。所有的ActionForm必須繼承一個(gè)基類(lèi)。因?yàn)槠渌鸍avaBean不能用作ActionForm,開(kāi)發(fā)者經(jīng)常創(chuàng)建多余的類(lèi)捕獲輸入。動(dòng)態(tài)Bean(DynaBeans)可以作為創(chuàng)建傳統(tǒng)ActionForm的選擇,但是,開(kāi)發(fā)者可能是在重新描述(創(chuàng)建)已經(jīng)存在的JavaBean(仍然會(huì)導(dǎo)致有冗余的javabean)。Struts 2直接使用Action屬性作為輸入屬性,消除了對(duì)第二個(gè)輸入對(duì)象的需求。輸入屬性可能是有自己(子)屬性的rich對(duì)象類(lèi)型。Action屬性能夠通過(guò) web頁(yè)面上的taglibs訪問(wèn)。Struts2也支持ActionForm模式。rich對(duì)象類(lèi)型,包括業(yè)務(wù)對(duì)象,能夠用作輸入/輸出對(duì)象。這種 ModelDriven 特性簡(jiǎn)化了taglib對(duì)POJO輸入對(duì)象的引用。

          posted @ 2014-03-05 10:52 dongisland 閱讀(193) | 評(píng)論 (0)編輯 收藏


          僅列出標(biāo)題  

          posts - 5, comments - 0, trackbacks - 0, articles - 0

          Copyright © dongisland

          主站蜘蛛池模板: 瑞金市| 文昌市| 清河县| 营山县| 大理市| 枝江市| 马公市| 新沂市| 太湖县| 隆德县| 同仁县| 探索| 永济市| 祥云县| 宁远县| 垫江县| 新蔡县| 南阳市| 土默特左旗| 威信县| 文登市| 七台河市| 泽库县| 新兴县| 虹口区| 三河市| 曲松县| 黑龙江省| 甘孜县| 林口县| 沈丘县| 青河县| 吴江市| 濮阳市| 会宁县| 海安县| 政和县| 新干县| 安仁县| 乐昌市| 新乡县|