1. 程式人生 > >錯題集04

錯題集04

相互 server 修改 set 屬性 之間 ces 最大的 gin

技術分享圖片

總結:

1、瀏覽器根據jsp頁面開頭聲明的編碼方式對request中參數編碼;

2、tomcat默認解碼是ISO-8859-1, 但是我們可以顯示指定解碼格式通過調用 request.setCharacterEncoding("UTF-8"),或者修改tomcat的配置文件server.xml中的編碼,添加uriEncoding屬性。

技術分享圖片

總結:

程序運行到 try塊,b=20;並沒有發生異常,不運行catch塊,運行到return b;因為finally塊無論如何都要運行,因此並不發生返回動作,進行運行finally塊,b=30;

進行程序返回輸出;

技術分享圖片

總結:

HttpServletRequest類主要處理:

1.讀取和寫入HTTP頭標

2.取得和設置cookies

3.取得路徑信息

4.標識HTTP會話

技術分享圖片

總結:

1、ThreadLocal的類聲明:

public class ThreadLocal<T>

可以看出ThreadLocal並沒有繼承自Thread,也沒有實現Runnable接口。所以AB都不對。

2、ThreadLocal類為每一個線程都維護了自己獨有的變量拷貝。每個線程都擁有了自己獨立的一個變量。

所以ThreadLocal重要作用並不在於多線程間的數據共享,而是數據的獨立,C選項錯。

由於每個線程在訪問該變量時,讀取和修改的,都是自己獨有的那一份變量拷貝,不會被其他線程訪問,

變量被徹底封閉在每個訪問的線程中。所以E對。

3、ThreadLocal中定義了一個哈希表用於為每個線程都提供一個變量的副本:

技術分享圖片

總結:

1. 只看尖括號裏邊的!!明確點和範圍兩個概念

2. 如果尖括號裏的是一個類,那麽尖括號裏的就是一個點,比如List<A>,List<B>,List<Object>

3. 如果尖括號裏面帶有問號,那麽代表一個範圍,<? extends A> 代表小於等於A的範圍,<? super A>代表大於等於A的範圍,<?>代表全部範圍

4. 尖括號裏的所有點之間互相賦值都是錯,除非是倆相同的點

5. 尖括號小範圍賦值給大範圍,對,大範圍賦值給小範圍,錯。如果某點包含在某個範圍裏,那麽可以賦值,否則,不能賦值

6. List<?>和List 是相等的,都代表最大範圍

----------------------------------------------------------------------------------

7.補充:List既是點也是範圍,當表示範圍時,表示最大範圍

public static void main(String[] args) {        
    List<A> a;        
    List list;        
    list = a;   //A對,因為List就是List<?>,代表最大的範圍,A只是其中的一個點,肯定被包含在內        
    List<B> b;        
    a = b;      //B錯,點之間不能相互賦值        
    List<?> qm;        
    List<Object> o;        
    qm = o;     //C對,List<?>代表最大的範圍,List<Object>只是一個點,肯定被包含在內        
    List<D> d;        
    List<? extends B> downB;        
    downB = d;  //D對,List<? extends B>代表小於等於B的範圍,List<D>是一個點,在其中        
    List<?extends A> downA;        
    a = downA;  //E錯,範圍不能賦值給點        
    a = o;      //F錯,List<Object>只是一個點        
    downA = downB;  //G對,小於等於A的範圍包含小於等於B的範圍,因為B本來就比A小,B時A的子類嘛    
}



錯題集04