2013 九月多的些些筆記_第1頁(yè)
2013 九月多的些些筆記_第2頁(yè)
2013 九月多的些些筆記_第3頁(yè)
2013 九月多的些些筆記_第4頁(yè)
2013 九月多的些些筆記_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2013/9/24JDK1。5 增強(qiáng)for循環(huán)對(duì)于遍歷array或collection的時(shí)候相當(dāng)?shù)暮?jiǎn)便缺陷數(shù)組 不能方便的訪問(wèn)下標(biāo)值集合與使用iterator相比,不能方便的刪除集合的內(nèi)容 在內(nèi)部也是使用iterator總結(jié): 除了簡(jiǎn)單遍歷并讀出其中的內(nèi)容外,不建議使用增強(qiáng)forSet接口 是collection的子接口 重復(fù)的元素不能加入Set sn = new HashSet(s1);將s1的東西復(fù)制到sn中Sn.retainAll(s2)找sn s2的交集Public static void main(String args) Set s1 = new HashSet();Set s2

2、= new HashSet();S1.add(“a”); s1.add(“b”); s1.add(“c”);S2.add(“d”); s2.add(“a”); s2(“b”);/set 和 list 容器類都具有constructor(Collection c)/構(gòu)造方法用以初始化容器類Set sn = new HashSet(s1);Sn.retainAll(s2);Set su = new HashSet(s1);Su.addAll(s2);輸出List接口是Collection的子接口,實(shí)現(xiàn)List接口的容器類中的元素的是有順序的,而且可以重復(fù)Java.util.Collections

3、提供了關(guān)于list的常用算法比較大小排序 實(shí)現(xiàn)Comparable接口 重寫comparaTo方法String類實(shí)現(xiàn)了compareTo方法2013/9/25如何選擇數(shù)據(jù)結(jié)構(gòu)衡量標(biāo)準(zhǔn):讀的效率和改的效率Array讀快改慢Linked改快讀慢Hash兩者之間TreeMap使用二叉樹(shù)實(shí)現(xiàn)9-27理解概念TreeMap HashMap和 page-Encoding charset contentTypeJava中HashMap和TreeMap的區(qū)別深入理解首先介紹一下什么是Map。在數(shù)組中我們是通過(guò)數(shù)組下標(biāo)來(lái)對(duì)其內(nèi)容索引的,而在Map中我們通過(guò)對(duì)象來(lái)對(duì)對(duì)象進(jìn)行索引,用來(lái)索引的對(duì)象叫做key,其對(duì)應(yīng)的

4、對(duì)象叫做value。這就是我們平時(shí)說(shuō)的鍵值對(duì)。HashMap通過(guò)hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而 TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個(gè)有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。 HashMap 非線程安全 TreeMap 非線程安全 線程安全 在Java里,線程安全一般體現(xiàn)在兩個(gè)方面: 1、多個(gè)thread對(duì)同一個(gè)java實(shí)例的訪問(wèn)(read和modify)不會(huì)相互干擾,它主要體現(xiàn)在關(guān)鍵字synchronized。如ArrayList和Vector,HashMap和Hashtable (后者每個(gè)方法前都有synch

5、ronized關(guān)鍵字)。如果你在interator一個(gè)List對(duì)象時(shí),其它線程remove一個(gè)element,問(wèn)題就出現(xiàn)了。 2、每個(gè)線程都有自己的字段,而不會(huì)在多個(gè)線程之間共享。它主要體現(xiàn)在java.lang.ThreadLocal類,而沒(méi)有Java關(guān)鍵字支持,如像static、transient那樣。 1.AbstractMap抽象類和SortedMap接口 AbstractMap抽象類:(HashMap繼承AbstractMap)覆蓋了equals()和hashCode()方法以確保兩個(gè)相等映射返回相同的哈希碼。如果兩個(gè)映射大小相等、包含同樣的鍵且每個(gè)鍵在這兩個(gè)映射中對(duì)應(yīng)的值都相同,則這

6、兩個(gè)映射相等。映射的哈希碼是映射元素哈希碼的總和,其中每個(gè)元素是Map.Entry接口的一個(gè)實(shí)現(xiàn)。因此,不論映射內(nèi)部順序如何,兩個(gè)相等映射會(huì)報(bào)告相同的哈希碼。 SortedMap接口:(TreeMap繼承自SortedMap)它用來(lái)保持鍵的有序順序。SortedMap接口為映像的視圖(子集),包括兩個(gè)端點(diǎn)提供了訪問(wèn)方法。除了排序是作用于映射的鍵以外,處理SortedMap和處理SortedSet一樣。添加到SortedMap實(shí)現(xiàn)類的元素必須實(shí)現(xiàn)Comparable接口,否則您必須給它的構(gòu)造函數(shù)提供一個(gè)Comparator接口的實(shí)現(xiàn)。TreeMap類是它的唯一一份實(shí)現(xiàn)。 2.兩種常規(guī)Map實(shí)現(xiàn)

7、HashMap:基于哈希表實(shí)現(xiàn)。使用HashMap要求添加的鍵類明確定義了hashCode()和equals()可以重寫hashCode()和equals(),為了優(yōu)化HashMap空間的使用,您可以調(diào)優(yōu)初始容量和負(fù)載因子。 (1)HashMap(): 構(gòu)建一個(gè)空的哈希映像 (2)HashMap(Map m): 構(gòu)建一個(gè)哈希映像,并且添加映像m的所有映射 (3)HashMap(int initialCapacity): 構(gòu)建一個(gè)擁有特定容量的空的哈希映像 (4)HashMap(int initialCapacity, float loadFactor): 構(gòu)建一個(gè)擁有特定容量和加載因子的空的哈

8、希映像 TreeMap:基于紅黑樹(shù)實(shí)現(xiàn)。TreeMap沒(méi)有調(diào)優(yōu)選項(xiàng),因?yàn)樵摌?shù)總處于平衡狀態(tài)。 (1)TreeMap():構(gòu)建一個(gè)空的映像樹(shù) (2)TreeMap(Map m): 構(gòu)建一個(gè)映像樹(shù),并且添加映像m中所有元素 (3)TreeMap(Comparator c): 構(gòu)建一個(gè)映像樹(shù),并且使用特定的比較器對(duì)關(guān)鍵字進(jìn)行排序 (4)TreeMap(SortedMap s): 構(gòu)建一個(gè)映像樹(shù),添加映像樹(shù)s中所有映射,并且使用與有序映像s相同的比較器排序 3.兩種常規(guī)Map性能 HashMap:適用于在Map中插入、刪除和定位元素。 Treemap:適用于按自然順序或自定義順序遍歷鍵(key)。 4

9、.總結(jié) HashMap通常比TreeMap快一點(diǎn)(樹(shù)和哈希表的數(shù)據(jù)結(jié)構(gòu)使然),建議多使用HashMap,在需要排序的Map時(shí)候才用TreeMap。關(guān)于JSP頁(yè)面中的pageEncoding和contentType兩種屬性的區(qū)別:pageEncoding是jsp文件本身的編碼contentType的charset是指服務(wù)器發(fā)送給客戶端時(shí)的內(nèi)容編碼JSP要經(jīng)過(guò)兩次的“編碼”,第一階段會(huì)用pageEncoding,第二階段會(huì)用utf-8至utf-8,第三階段就是由Tomcat出來(lái)的網(wǎng)頁(yè), 用的是contentType。第一階段是jsp編譯成java它會(huì)根據(jù)pageEncoding的設(shè)定讀取jsp,結(jié)

10、果是由指定的編碼方案翻譯成統(tǒng)一的UTF-8 JAVA源碼(即.java),如果pageEncoding設(shè)定錯(cuò)了,或沒(méi)有設(shè)定,出來(lái)的就是中文亂碼。第二階段是由JAVAC的JAVA源碼至java byteCode的編譯不論JSP編寫時(shí)候用的是什么編碼方案,經(jīng)過(guò)這個(gè)階段的結(jié)果全部是UTF-8的encoding的java源碼。JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8 encoding的二進(jìn)制碼(即.class),這是JVM對(duì)常數(shù)字串在二進(jìn)制碼(java encoding)內(nèi)表達(dá)的規(guī)范。第三階段是Tomcat(或其的application container)載入和執(zhí)行

11、階段二的來(lái)的JAVA二進(jìn)制碼輸出的結(jié)果,也就是在客戶端見(jiàn)到的,這時(shí)隱藏在階段一和階段二的參數(shù)contentType就發(fā)揮了功效contentTypepageEncoding 和contentType的預(yù)設(shè)都是 ISO8859-1. 而隨便設(shè)定了其中一個(gè), 另一個(gè)就跟著一樣了(TOMCAT4.1.27是如此). 但這不是絕對(duì)的, 這要看各自JSPC的處理方式. 而pageEncoding不等于contentType, 更有利亞洲區(qū)的文字 CJKV系JSP網(wǎng)頁(yè)的開(kāi)發(fā)和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。jsp文件不像.java,.jav

12、a 在被編譯器讀入的時(shí)候默認(rèn)采用的是操作系統(tǒng)所設(shè)定的locale所對(duì)應(yīng)的編碼,比如中國(guó)大陸就是GBK,臺(tái)灣就是BIG5或者M(jìn)S950。而一般我們不管 是在記事本還是在ue中寫代碼,如果沒(méi)有經(jīng)過(guò)特別轉(zhuǎn)碼的話,寫出來(lái)的都是本地編碼格式的內(nèi)容。所以編譯器采用的方法剛好可以讓虛擬機(jī)得到正確的資料。但是jsp文件不是這樣,它沒(méi)有這個(gè)默認(rèn)轉(zhuǎn)碼過(guò)程,但是指定了pageEncoding就可以實(shí)現(xiàn)正確轉(zhuǎn)碼了。舉個(gè)例子:1. 大都會(huì)打印出亂碼,因?yàn)檩斎氲摹澳愫谩笔莋bk的,但是服務(wù)器是否正確抓到“你好”不得而知。但是如果更改為1. 這樣就服務(wù)器一定會(huì)是正確抓到“你好”了。2013/9/282013/10/17JS

13、P與javascript的區(qū)別 Servlet/JSP是執(zhí)行于服務(wù)器上的一種技術(shù),客戶端通過(guò)HTTP和網(wǎng)絡(luò)請(qǐng)求的給Servlet/JSP,服務(wù)器上的Servlet/JSP經(jīng)過(guò)運(yùn)算處理后再將響應(yīng)返回給客戶端,所有一切程序的處理都是在服務(wù)器上發(fā)生的Javascript則是執(zhí)行于客戶端瀏覽器中的一個(gè)技術(shù),可以讓你與瀏覽器溝通,操作瀏覽器中的網(wǎng)頁(yè)頁(yè)面與行為,也可以通過(guò)javascript來(lái)要求瀏覽器發(fā)出請(qǐng)求給服務(wù)器,基本上,可以將javascript編寫的程序看成是個(gè)人計(jì)算機(jī)桌面上的應(yīng)用程序,如即時(shí)通信這樣的用戶接口程序??梢栽贘SP網(wǎng)頁(yè)中寫一些內(nèi)嵌的javascript,這些javascript并不

14、是在服務(wù)器上執(zhí)行,服務(wù)器會(huì)如同處理那些HTML標(biāo)簽一樣,將這些javascript原封不動(dòng)的傳給瀏覽器,瀏覽器收到響應(yīng)后再處理標(biāo)簽與執(zhí)行javascript,和普通標(biāo)簽一樣。Servlet是運(yùn)行在容器中的,容器是由服務(wù)器上的JVM啟動(dòng)的,JVM本身就是服務(wù)器上的一個(gè)可執(zhí)行程序計(jì)算機(jī) HTTP服務(wù)器程序Web容器(包括各種Servlet)Web容器不是HTTP服務(wù)器,Web容器是一個(gè)用java所編寫的程序,用來(lái)加載管理servletTomcat本身附帶一個(gè)簡(jiǎn)單的HTTP服務(wù)器,啟動(dòng)服務(wù)器就可以打開(kāi)該服務(wù)器,就可以在上面的Web容器中部署servlet。Tomcat與HTTP服務(wù)區(qū)別,還有Web服

15、務(wù)器Tomcat的Web容器,其實(shí)可以與其他的HTTP服務(wù)器結(jié)合瀏覽器-實(shí)體服務(wù)器-HTTP服務(wù)器程序-Web容器-ServletServlet的編寫public class test extends HttpServlet 1、繼承HttpServletpublic void doGet(HttpServletRequest request, HttpServletResponse response)2、重寫doGet()throws ServletException, IOException response.setContentType(text/html;charset=UTF-8);

16、3、設(shè)置相應(yīng)的內(nèi)容類型PrintWriter out = response.getWriter(); 4、取得相應(yīng)輸出對(duì) 通過(guò)PrintWriter的println方法取得代表響應(yīng)輸出的PrintWirter對(duì)象,通過(guò)對(duì)象的方法輸出String name = response.getParameter(); 5、取得請(qǐng)求參數(shù)out.println();out.println();out.println( A Servlet);out.println( );out.print( This is );out.print(this.getClass();out.println(, using the

17、 GET method);out.println( );out.println();out.flush();out.close();2013/10/19GenericServlet并沒(méi)有規(guī)范任何有關(guān)HTTP的方法,而是由繼承它的HttpServlet來(lái)定義的。在最初定義Servlet時(shí),并不限定它只能用于HTTP,所以并沒(méi)有將Http的相關(guān)服務(wù)流程定義在GenericServlet中,而是在HttpServlet中。加載哪個(gè)類文件,要求使用類的完全符合名稱,包含包名稱與類名稱的完整名稱為類創(chuàng)建一個(gè)實(shí)例,并注冊(cè)名稱中有請(qǐng)求哪個(gè)URL時(shí),要由哪個(gè)Servlet處理1、 請(qǐng)求 /FirstServlet/hello.do(名 web容器對(duì)應(yīng)至實(shí)際處理請(qǐng)求的文件或程序物理名稱,不是實(shí)際有個(gè)物理文件叫hello.do,也可以用hello.jsp之類的文件名稱偽裝資源)?name=caterpillar服務(wù)器-2、尋找對(duì)應(yīng)URL模式3、的-找出Servlet注冊(cè)名稱4、對(duì)應(yīng)注冊(cè)名稱5、處理請(qǐng)求邏輯名稱 Servlet名稱物理類名稱Servlet API的相關(guān)類 在tomcat的servlet-api.jar中隱私WEB-INF:這幾個(gè)目錄名稱

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論