




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java基礎(chǔ)
1.什么是類(lèi)?類(lèi)是某一種事物的一般性的集合體,是相同的或相似的各個(gè)事物共同特性的一種抽象。
2.什么是對(duì)象?在面向?qū)ο蟾拍钪?,?duì)象是類(lèi)的實(shí)例。對(duì)象與類(lèi)的關(guān)系就像變量與數(shù)據(jù)類(lèi)型的關(guān)系同樣。
3.類(lèi)的核心特性
封裝性:類(lèi)的封裝性為類(lèi)的成員提供公有的、缺省的、保護(hù)的、私有的等多級(jí)訪問(wèn)權(quán)限。目的是隱藏類(lèi)中的私有變量和類(lèi)
中方法的實(shí)現(xiàn)細(xì)節(jié)。
繼承性:類(lèi)的繼承性提供從已存在的類(lèi)創(chuàng)建新類(lèi)的機(jī)制,繼承使一個(gè)新類(lèi)自動(dòng)擁有被繼承類(lèi)的所有可繼承的成員。
多態(tài)性:類(lèi)的多態(tài)性提供類(lèi)中方法執(zhí)行的多樣性,有兩種表現(xiàn)形式:重載和覆蓋。
4.方法:對(duì)象中方法表達(dá)了對(duì)象所具有的行為。
5.屬性:一個(gè)對(duì)象的屬性是可以被外界或?qū)ο笏幍沫h(huán)境所感知或操縱的數(shù)據(jù)或狀態(tài)。
6.什么是Java?Java是一門(mén)易于編程的跨平臺(tái)編程語(yǔ)言,同時(shí)又是一個(gè)開(kāi)發(fā)、應(yīng)用、執(zhí)行和部署的平臺(tái)。
7.為什么要有Java?Java與平臺(tái)無(wú)關(guān)、一次編譯處處運(yùn)營(yíng)、以及他的易于編程的特性。
8.Java開(kāi)發(fā)程序的環(huán)節(jié)?編寫(xiě)源代碼(2)編譯(3)執(zhí)行
9.Java的環(huán)境變量
1)JAVA-HOMEjdk的安裝途徑
2)CLASSPATHjvm轉(zhuǎn)載class字節(jié)碼文獻(xiàn)時(shí)的搜索途徑
3)PATH是系統(tǒng)的環(huán)境變量、命令的搜索途徑
10.JVM:JavaVirtualMachine是一個(gè)邏輯的操作系統(tǒng)、它屏蔽了硬件和平臺(tái)的信息、jvm能將字節(jié)碼文獻(xiàn)解釋并執(zhí)行、
正是這種獨(dú)立執(zhí)行的方式是Java具有與平臺(tái)無(wú)關(guān)的特性。
11.類(lèi)的加載過(guò)程:類(lèi)加載器加載字節(jié)碼文獻(xiàn)到內(nèi)存、jvm內(nèi)存數(shù)據(jù)區(qū)將對(duì)象狀態(tài)放置在堆區(qū)、各線(xiàn)程使用的變量放在棧區(qū)、
類(lèi)的特性放在方法區(qū)、然后進(jìn)行字節(jié)碼驗(yàn)證再執(zhí)行。
12.常用的Java命令:Javac、java、javadoc、jar
13.類(lèi)的語(yǔ)法與規(guī)范
一個(gè)源文獻(xiàn)只能有一個(gè)public的類(lèi)
Public源文獻(xiàn)可以有多個(gè)類(lèi)定義
源文獻(xiàn)名必須與public類(lèi)名保持一致
包名必須放在第行
包名可以有0個(gè)或1個(gè)但不能有多個(gè)
源文獻(xiàn)假如帶包的話(huà)最佳存放在包結(jié)構(gòu)相應(yīng)的目錄下
標(biāo)記符程序語(yǔ)言用于標(biāo)記變量名類(lèi)名方法名的字符串就是標(biāo)記符。
標(biāo)記符必須字母下劃線(xiàn)美元符開(kāi)頭大小寫(xiě)敏感。
類(lèi)名規(guī)定首字母大寫(xiě)
方法名首字母小寫(xiě)每個(gè)單詞首字母大寫(xiě)
常量名所有字母大寫(xiě)假如有兩個(gè)或幾個(gè)字母的聯(lián)合用下劃線(xiàn)連接
關(guān)鍵字:程序語(yǔ)言中、程序已經(jīng)所有用戶(hù)不能再使用的單詞一般關(guān)鍵字都是小寫(xiě)
14.數(shù)據(jù)類(lèi)型:基本數(shù)據(jù)類(lèi)型:整型(byte、short,int>long)默認(rèn)是int
浮點(diǎn)型(float、double)、默認(rèn)是double
布爾型(boolean)
字符型(char)
引用類(lèi)型:類(lèi)、接口、數(shù)組
15.main<)方法執(zhí)行過(guò)程
1)先到方法區(qū)搜索student、假如搜索不到則去加載student的字節(jié)碼文獻(xiàn)
2)通過(guò)classpath查找相應(yīng)的sludent字節(jié)碼文獻(xiàn)找不到就返回錯(cuò)誤(ClassNotFound)
3)將字節(jié)碼文獻(xiàn)的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為class對(duì)象放置于方法區(qū)(class對(duì)象描述了student類(lèi)的方法特性及靜態(tài)成員等)
加載完畢
4)驗(yàn)證字節(jié)碼文獻(xiàn)
5)在堆區(qū)中劃分空間放置student對(duì)象
6)在棧區(qū)放置應(yīng)用類(lèi)型變量stu、stu指向student對(duì)象的地址
7)student對(duì)象存放了class對(duì)象的地址
8)通過(guò)studentstu引用類(lèi)型變量的值找到student對(duì)象、通過(guò)student對(duì)象
存放class對(duì)象的地址找到相應(yīng)的study()方法然后執(zhí)行。
9)釋放資源jvm運(yùn)營(yíng)結(jié)束
16.基本類(lèi)型和引用類(lèi)型的區(qū)別
引用類(lèi)型存放的是對(duì)象的地址、基本類(lèi)型存放的是變量的實(shí)際值
引用類(lèi)型變量可用指向復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
引用類(lèi)型變量可使用”操作來(lái)訪問(wèn)它所指向的方法或?qū)傩?/p>
17.表達(dá)式
運(yùn)算符和操作數(shù)按照一定的規(guī)則組成的語(yǔ)句.
賦值運(yùn)算符
比較運(yùn)算符">”“<="“>=”
相等運(yùn)算符“=="
位運(yùn)算符~:取反、.:異或、|:或、&:與
邏輯運(yùn)算符“&&”“II”
條件運(yùn)算符a?b:c
18.變量的作用域
(1)類(lèi)的成員變量:
靜態(tài)成員變量:生命周期從類(lèi)加載開(kāi)始到類(lèi)被卸載結(jié)束初始化后被放在方法區(qū)
實(shí)例成員變量:變量初始化放在堆區(qū)、生命周期從生成對(duì)象開(kāi)始到對(duì)象被I回收時(shí)結(jié)束
(2)局部變量:方法或代碼塊中定義的變量、局部變量從棧區(qū)彈出結(jié)束、局部變量在使用前必須初始化
(3)方法的參數(shù)
(4)異常的參數(shù)
19.數(shù)組:是相同類(lèi)型元素的線(xiàn)性集合是一個(gè)指向數(shù)組的引用對(duì)象
20.集合框架
CollectjonIMap
△K
TreeMap
A△
UnkedHashMap
I|LinkedList|jHashSet|
Utilities
Cdlecticns
UnkedHashSet
Arrays
Comparable—Comparator
Iterator是一個(gè)迭代器接口
ListIterator繼承自Iterator是子接口只能用于1ist接口
Collection是集合框架的頂層接口
List有序可反復(fù)
ArrayList實(shí)現(xiàn)了可變數(shù)組的數(shù)據(jù)結(jié)構(gòu)
LinkedList實(shí)現(xiàn)了雙向鏈表的數(shù)據(jù)結(jié)構(gòu)
Set無(wú)序不可反復(fù)
HashSet實(shí)現(xiàn)了無(wú)序不可反復(fù)
LinkedHashSet有序不可反復(fù)(插入的順序)
TreeSet升序不可反復(fù)
Map是一個(gè)key、value對(duì)映射
HashMap按照key無(wú)序
LinkedHashMap按照key有序
TreeMap按照key升序
Collections是集合框架的輔助類(lèi)(工具類(lèi))里邊的所有方法都是static的
Arrays是對(duì)數(shù)組的工具類(lèi)
ComparableComparator是做比較排序的
21.Vector和ArrayList的區(qū)別:
1)Vector是線(xiàn)程安全的(同步的)ArrayList不是ArrayList的效率高一些
2)當(dāng)初始容量滿(mǎn)的時(shí)候Vecto「增長(zhǎng)本來(lái)的一倍、ArrayList增長(zhǎng)本來(lái)的一半
22.HashTable和HashMap的區(qū)別:
1)HashTable是線(xiàn)程安全HashMap不是HashMap的效率會(huì)高一些
2)HashMap允許null的key存在HashTable不允許
23.Setset=Map.keySet();
Iteratorit=set.iterator();
While(it.hasnext()){
)
24.類(lèi)的結(jié)構(gòu)
類(lèi)名、屬性名(靜態(tài)屬性、實(shí)例屬性)、方法(靜態(tài)方法、實(shí)例方法)、構(gòu)造器(缺省構(gòu)造器、帶參構(gòu)造器)
靜態(tài)代碼塊static、實(shí)例代碼塊this.
25.參數(shù)傳遞
對(duì)于基本類(lèi)型將實(shí)際的變量的值原樣的賦值以便傳值
對(duì)于引用類(lèi)型將引用類(lèi)型變量的地址賦值給實(shí)參
26.this關(guān)鍵字都在什么地方使用
1)實(shí)例變量與局部變量同名用this區(qū)分實(shí)例變量名與局部變量名
2)在構(gòu)造器重載時(shí)、用this調(diào)用其它構(gòu)造器
3)在實(shí)例方法中用來(lái)當(dāng)作當(dāng)前對(duì)象的引用傳給其它方法
27.方法的重載
方法名要相同、在同一類(lèi)中多個(gè)方法有不同的方法署名方法署名具有參數(shù)類(lèi)型參數(shù)個(gè)數(shù)和參數(shù)順序、返回類(lèi)型不做規(guī)定
28.類(lèi)的初始化過(guò)程
1)在堆區(qū)分派空間new的過(guò)程
2)給對(duì)象屬性賦默認(rèn)值
3)調(diào)用構(gòu)造方法進(jìn)一步賦值
29.構(gòu)造器
類(lèi)中提供的用于初始化對(duì)象的特殊的方法、這個(gè)方法于類(lèi)同名無(wú)返回值、類(lèi)中沒(méi)有提供構(gòu)造器jvm會(huì)提供一個(gè)不帶參的缺
省構(gòu)造器、類(lèi)中有帶參的構(gòu)造器jvm就不提供了
30.具體說(shuō)明封裝、繼承、和多態(tài)
封裝:將類(lèi)的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái)、對(duì)外提供一致的接口、提高系統(tǒng)的維護(hù)性
繼承:定義:一個(gè)類(lèi)自動(dòng)獲得另一個(gè)類(lèi)的屬性或者方法的過(guò)程
使用方面:extends關(guān)鍵字、單根繼承、所有類(lèi)都是Object類(lèi)的子類(lèi)、構(gòu)造器不能被繼承、子類(lèi)初始化時(shí)會(huì)默認(rèn)
情況下調(diào)用父類(lèi)缺省的構(gòu)造器、子類(lèi)調(diào)用父類(lèi)帶參的構(gòu)造器則父類(lèi)可以不提供缺省的構(gòu)造器否則一定要
有個(gè)缺省的構(gòu)造器
如何使用繼承?1)區(qū)分has-a和is-a
2)子類(lèi)要擴(kuò)充父類(lèi)的功能
3)子類(lèi)需要大量置換父類(lèi)的功能時(shí)不能使用繼承
4)不要從工具類(lèi)中繼承
優(yōu)缺陷:優(yōu)點(diǎn):繼承是最容易復(fù)用代碼的形式、修改父類(lèi)的功能時(shí)子類(lèi)可以自動(dòng)獲得新的功能
缺陷:打破了封裝、只是類(lèi)型復(fù)用
多態(tài):
編譯時(shí)編譯器檢查聲明類(lèi)型和方法信息
運(yùn)營(yíng)時(shí)jvm對(duì)實(shí)例方法和引用變量和實(shí)際引用對(duì)象動(dòng)態(tài)綁定,對(duì)靜態(tài)方法和引用變量聲明的類(lèi)型靜態(tài)綁定
類(lèi)的屬性在編譯階段綁定
31.instanceof:判斷實(shí)例是否為某個(gè)類(lèi)型或子類(lèi)型
(1)只能在父子類(lèi)進(jìn)行比較
(2)Null可以進(jìn)行比較結(jié)果為false
(3)判斷實(shí)例類(lèi)型時(shí),一般從子類(lèi)開(kāi)始,然后父類(lèi)
32.override:方法覆蓋。子類(lèi)重寫(xiě)父類(lèi)中的方法
子類(lèi)重寫(xiě)父類(lèi)中的方法的條件:
(1)方法名相同
(2)方法署名相同(參數(shù))
(3)返回值相同
(4)子類(lèi)的修飾符要大于等于父類(lèi)的修飾符
(5)子類(lèi)拋出的異常要小于等于父類(lèi)拋出的異常
33.依賴(lài)關(guān)系
(1)一個(gè)類(lèi)中的方法,其局部變量類(lèi)型是另一個(gè)類(lèi),則這兩個(gè)類(lèi)具有依賴(lài)關(guān)系
(2)一個(gè)類(lèi)中的方法調(diào)用另一個(gè)類(lèi)中的靜態(tài)方法,則這兩個(gè)類(lèi)具有依賴(lài)關(guān)系
(3)一個(gè)類(lèi)中的方法中參數(shù)是另一個(gè)類(lèi)的靜態(tài)方法,則這兩個(gè)類(lèi)具有依賴(lài)關(guān)系
34.多態(tài)的運(yùn)營(yíng)機(jī)制
(1)在類(lèi)編譯階段,編譯器會(huì)檢查類(lèi)型是否匹配
(2)在運(yùn)營(yíng)階段,jvm會(huì)調(diào)用實(shí)例的相應(yīng)方法,先檢查父類(lèi)方法,然后檢查子類(lèi)方法,然后會(huì)檢查實(shí)例聲明的類(lèi)型
35.Super
調(diào)用父類(lèi)的屬性和方法、子類(lèi)和父類(lèi)有同名的方法時(shí),子類(lèi)可用super區(qū)分是父類(lèi)的方法
36.final
(1)final修飾的類(lèi)不能被繼承
(2)final修飾的方法不能被覆蓋
(3)final修飾的變量是常量,常量不可修改但有例外
實(shí)例常量:若定義時(shí)沒(méi)有賦值,則可以在構(gòu)造器或?qū)嵗a塊中賦值,構(gòu)造器或者代碼塊賦值只能有一個(gè)
靜態(tài)常量:若定義時(shí)沒(méi)有賦值,則可以在靜態(tài)代碼塊中賦值,
37.抽象類(lèi)
具有部分實(shí)現(xiàn)的類(lèi)。
使用時(shí)的注意事項(xiàng):
(1)不能實(shí)例化
(2)可有0到多個(gè)抽象方法
(3)可有構(gòu)造器
(4)具體類(lèi)繼承抽象類(lèi)時(shí)必須實(shí)現(xiàn)所有的抽象方法
(5)抽象類(lèi)可以間接的被子類(lèi)調(diào)用其構(gòu)造器,并在內(nèi)存中分派空間,間接實(shí)例化
(6)抽象類(lèi)可以有靜態(tài)方法,可以返回其子類(lèi)的實(shí)例
如何使用抽象類(lèi)?
(1)把各個(gè)類(lèi)中可以共用的方法和邏輯放到抽象的父類(lèi)中,越多越好
(2)屬性應(yīng)盡也許放到子類(lèi)中
38.接口
定義:從宏觀角度說(shuō)是一個(gè)規(guī)范,從面向?qū)ο蠼嵌日f(shuō),接口是一種抽象類(lèi)型
(1)屬性是常量,一定要賦值
(2)方法是抽象方法
(3)沒(méi)有構(gòu)造器
(4)接口支持casting(強(qiáng)制類(lèi)型轉(zhuǎn)換)
(5)接口可以繼承自多個(gè)接口
(6)實(shí)現(xiàn)接口的類(lèi)必須要實(shí)現(xiàn)所有的方法,假如是抽象類(lèi)可以選擇實(shí)現(xiàn)部分的方法
為什么要使用接口?
(1)可插拔性的保證,可以隨意更換接口的實(shí)現(xiàn)類(lèi)
(2)接口可以解決多繼承的問(wèn)題
(3)接口使規(guī)范的制定者、實(shí)現(xiàn)者、使用者分開(kāi)
39.接口和抽象類(lèi)的區(qū)別
(1)接口沒(méi)有任何實(shí)現(xiàn),而抽象類(lèi)可以有部分實(shí)現(xiàn)也可以沒(méi)有
(2)假如需要復(fù)用或者共享代碼,應(yīng)當(dāng)用抽象類(lèi)而不是接口
(3)繼承無(wú)法解決的類(lèi)型轉(zhuǎn)換問(wèn)題,接口是為解決這問(wèn)題而產(chǎn)生的
40.訪問(wèn)控制
作用域當(dāng)前類(lèi)R-package子孫類(lèi)其他package
publicVVJJ
protectedVJJX
defaultJVXX
privateJXXX
41.static修飾符
(1)可以修飾屬性,稱(chēng)為靜態(tài)屬性,全類(lèi)公有常叫做類(lèi)變量,和具體對(duì)象無(wú)關(guān),無(wú)多態(tài),類(lèi)名去訪問(wèn),類(lèi)加載的時(shí)候
初始化
(2)修飾方法,靜態(tài)方法中只能訪問(wèn)靜態(tài)成員,非靜態(tài)方法可以訪問(wèn)靜態(tài)成員,工具類(lèi)的對(duì)象都是static的
(3)修飾代碼塊,初始代碼塊是在類(lèi)中,而不在任何方法之內(nèi)的代碼塊,被static修飾的代碼塊稱(chēng)為靜態(tài)代碼塊,
靜態(tài)代碼塊在類(lèi)加載的時(shí)候運(yùn)營(yíng)一次
42.異常
定義:jvm將程序運(yùn)營(yíng)中的不正常情況的現(xiàn)場(chǎng)信息打包成一個(gè)對(duì)象,這個(gè)對(duì)象就是異常類(lèi)對(duì)象。并且將此對(duì)象拋出,交由
相應(yīng)的方法或?qū)ο蠼鉀Q。
異常信息記錄了錯(cuò)誤的因素,指出了錯(cuò)誤的位置,打印錯(cuò)誤的棧信息。
異常解決機(jī)制是責(zé)任鏈機(jī)制即子類(lèi)取默認(rèn)值不解決,交由父類(lèi)解決直到追究到j(luò)vm然后拋給用戶(hù)
43.為什么解決異常?
最本質(zhì)的因素是讓程序執(zhí)行完畢
44.異常類(lèi)的層次結(jié)構(gòu)
Throwable:
Error:是錯(cuò)誤,程序運(yùn)營(yíng)中發(fā)生的系統(tǒng)異常,此種異常當(dāng)前程序一般無(wú)法解決
Exeption:checked()編譯器逼迫必須捕獲并解決的異常
Unchecked(RuntimeExeption>)
對(duì)于此種異常編譯器不規(guī)定捕獲
因素是:低檔錯(cuò)誤(low-grademistake)、程序員可以避免的錯(cuò)誤
當(dāng)錯(cuò)誤發(fā)生時(shí)、捕獲異常也無(wú)濟(jì)于事
45.如何解決異常
(1)交給自己解決、交由當(dāng)前方法解決
(2)交給別人解決、由調(diào)用該方法的方法來(lái)解決
(3)自己解決一部分、然后調(diào)用系統(tǒng)的異常方法
方法(2)的環(huán)節(jié):
(1)在方法后聲明也許發(fā)生的異常類(lèi)型(throwsExceptiontype)
(2)該方法不用在做其它異常解決
(3)調(diào)用方法必須解決被調(diào)用方法的異常
46.throw的注意事項(xiàng)
(1)throw可以?huà)伭硪环N類(lèi)型的異常
(2)throw語(yǔ)句后不能再有其它代碼、throw后的代碼永遠(yuǎn)不會(huì)被執(zhí)行
47.異常的捕獲
try(
}catch(Exceptiontype1){
methodbodyl
}catch(Exceptiontype2){
methodbody2
)
(1)在try{}catch{^^句中也許拋出不止一個(gè)異常、但是每個(gè)時(shí)刻只能拋出一個(gè)異常
(2)對(duì)也許拋出的每一種異常分別用catch{)來(lái)解決
(3)Catch語(yǔ)句解決多重異常應(yīng)遵從從子類(lèi)到父類(lèi)的順序
48.finally
用于資源的釋放、在異常解決中finally一定會(huì)被執(zhí)行到、Finally語(yǔ)句中假如有return語(yǔ)句、正常運(yùn)營(yíng)先執(zhí)行finally再
執(zhí)行return語(yǔ)句返回當(dāng)發(fā)生異常時(shí)、先執(zhí)行catch語(yǔ)句捕獲異常、假如沒(méi)有catch語(yǔ)句、則執(zhí)行finally語(yǔ)句及其后語(yǔ)句
49.自定義異常
為什么要自定義異常?
Java程序員可定義更多的方法來(lái)解決異常、自定義異常可以提供更復(fù)雜更具體的方法、這樣能極大的加強(qiáng)軟件的健
壯性、代碼更加清楚
如何自定義異常
(1)繼承Exeption使你的自定義異常變成checked異常
(2)繼承RuntimeExeption使你的自定義異常變成unchecked異常
50.10:流是數(shù)據(jù)輸入輸出的通道、流中的數(shù)據(jù)是有序的
流的分類(lèi):
按數(shù)據(jù)流動(dòng)方向:輸入流、輸出流
輸入流:只能從中讀取字節(jié)數(shù)據(jù)、而不能向其寫(xiě)出數(shù)據(jù)
輸出流:只能從中寫(xiě)出字節(jié)數(shù)據(jù)、而不能向其讀取數(shù)據(jù)
按流所解決的數(shù)據(jù)類(lèi)型:
字節(jié)流:解決字節(jié)數(shù)據(jù)
字符流:解決字符數(shù)據(jù)
按流所解決的源:
節(jié)點(diǎn)流:從一個(gè)特定的10設(shè)備讀寫(xiě)數(shù)據(jù)的流
解決流:對(duì)已存在的流進(jìn)行連接和封裝的流
intread():讀取一個(gè)字節(jié),并將它返回。
intread(byte[]buffer):將數(shù)據(jù)讀入一個(gè)字節(jié)數(shù)組,同時(shí)返回讀取的字節(jié)數(shù)。voidclose():關(guān)閉流。
■BufferedWiiter
□節(jié)點(diǎn)流
□處理流
\Wnter\
PuntWntei|
-I*il>e?IAViitei
-FilteiWiitei
51.線(xiàn)程
線(xiàn)程和進(jìn)程的區(qū)別:
(1)每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間、進(jìn)程間的切換會(huì)有較大的開(kāi)銷(xiāo)
(2)線(xiàn)程可以當(dāng)作是輕量級(jí)的進(jìn)程、同一類(lèi)線(xiàn)程共享代碼和數(shù)據(jù)空間、每個(gè)線(xiàn)程有獨(dú)立的運(yùn)營(yíng)棧和程序計(jì)數(shù)器、線(xiàn)程
切換的開(kāi)銷(xiāo)小。
(3)多線(xiàn)程是在同一應(yīng)用程序中有多個(gè)順序流同時(shí)執(zhí)行。
(4)多進(jìn)程是在操作系統(tǒng)中能同時(shí)運(yùn)營(yíng)多個(gè)任務(wù)。
52.創(chuàng)建線(xiàn)程的兩種方式:
(1)定義一個(gè)線(xiàn)程類(lèi)它繼承Thread并重寫(xiě)其中的run()方法,方法run()稱(chēng)為線(xiàn)程體
(2)提供一個(gè)實(shí)現(xiàn)接口runable的類(lèi)作為線(xiàn)程的目的對(duì)象、在初始化一個(gè)thread類(lèi)或者thread子類(lèi)的線(xiàn)程對(duì)象時(shí)把目的對(duì)
象傳遞給這個(gè)線(xiàn)程實(shí)例、由該目的對(duì)象提供線(xiàn)程體
53.比較創(chuàng)建線(xiàn)程的兩種方式:
使用runable接口可以
(1)將cpu、代碼、數(shù)據(jù)分開(kāi)、形成清楚的模型
(2)可以從其它類(lèi)繼承
(3)保持程序風(fēng)格一致性
直接繼承Thread類(lèi)不能從其它類(lèi)繼承、編寫(xiě)簡(jiǎn)樸可以直接操縱線(xiàn)程
54.線(xiàn)程狀態(tài)
**GM“
線(xiàn)程狀態(tài)
New:創(chuàng)建狀態(tài)。當(dāng)創(chuàng)建一個(gè)新的線(xiàn)程時(shí)、它就處在創(chuàng)建狀態(tài)、此時(shí)它僅僅是一個(gè)空的線(xiàn)程對(duì)象、系統(tǒng)不為它分派資源
Runnable:可運(yùn)營(yíng)狀態(tài)。當(dāng)線(xiàn)程處在創(chuàng)建狀態(tài)時(shí)、可調(diào)用start()方法來(lái)啟用它、產(chǎn)生運(yùn)營(yíng)這個(gè)線(xiàn)程所需的系統(tǒng)資源、安排其
運(yùn)營(yíng)
Dead:死亡狀態(tài)。線(xiàn)程終止(1)自然撤消。線(xiàn)程的run()正常退出
(2)強(qiáng)制停止。調(diào)用線(xiàn)程實(shí)例的stop??梢詮?qiáng)制停止當(dāng)前線(xiàn)程
Blocked:停滯狀態(tài)。(1)通過(guò)sleep()讓線(xiàn)程進(jìn)入休眠狀態(tài)
(2)通過(guò)wait()暫停線(xiàn)程
(3)線(xiàn)程正等待某個(gè)10設(shè)備動(dòng)作完畢
(4)線(xiàn)程試著調(diào)用另一個(gè)對(duì)象的synchronized函數(shù)、并且尚未取到對(duì)象的機(jī)鎖
55.守護(hù)線(xiàn)程(daemonThread)
是為其它線(xiàn)程提供服務(wù)的線(xiàn)程、一般應(yīng)是一個(gè)獨(dú)立的線(xiàn)程、它的run()是一個(gè)無(wú)限循環(huán)
56.守護(hù)線(xiàn)程與其它線(xiàn)程的區(qū)別
假如守護(hù)線(xiàn)程是唯一運(yùn)營(yíng)著的線(xiàn)程、程序會(huì)自動(dòng)退出。
57.互斥鎖(對(duì)象鎖)
保證共享數(shù)據(jù)的完整性
每個(gè)對(duì)象都相應(yīng)于一個(gè)可稱(chēng)為互斥鎖的標(biāo)記、這個(gè)標(biāo)記用于保證在任意時(shí)候只能有一個(gè)線(xiàn)程訪問(wèn)該對(duì)象
58.使用synchronized的時(shí)機(jī)
(1)這個(gè)函數(shù)是否修改對(duì)象內(nèi)關(guān)鍵變量的狀態(tài)、(關(guān)鍵變量是能被其它線(xiàn)程讀取或修改的變量)
(2)這個(gè)函數(shù)是否和關(guān)鍵變量的狀態(tài)有依存關(guān)系
(3)基類(lèi)的方法為synchronized時(shí)、synchronized不能被繼承、復(fù)寫(xiě)時(shí)重新采用synchronized
59.釋放鎖
假如一個(gè)線(xiàn)程一個(gè)占用一個(gè)對(duì)象的鎖、則其它線(xiàn)程將永遠(yuǎn)無(wú)法訪問(wèn)該對(duì)象、因此需要在適當(dāng)?shù)臅r(shí)候?qū)?duì)象的鎖歸還
(1)當(dāng)線(xiàn)程執(zhí)行到synchronized的塊結(jié)束時(shí)、釋放對(duì)象鎖
(2)當(dāng)在synchronized塊中碰到break、return或拋出異常、則自動(dòng)釋放對(duì)象鎖
(3)當(dāng)一個(gè)線(xiàn)程調(diào)用wait()時(shí)、它放棄擁有的對(duì)象鎖并進(jìn)入等待隊(duì)列
60.死鎖
是指兩個(gè)線(xiàn)程都互相等待對(duì)方釋放鎖、是不可預(yù)知或避開(kāi)的、應(yīng)采用措施避免死鎖的出現(xiàn)。
61.sleep()和wait()的區(qū)別
(1)Sleep()是Thread類(lèi)的方法、wait()是Object類(lèi)的方法
(2)Sleep()可以在非synchronized函數(shù)中被調(diào)用、wail()只能在synchronized函數(shù)或同步塊中被調(diào)用
(3)Sleep()不會(huì)釋放對(duì)象機(jī)鎖、wait()會(huì)釋放對(duì)象鎖
(4)使用場(chǎng)景不同、sleep()方法同一個(gè)線(xiàn)程內(nèi)間隔多長(zhǎng)時(shí)間后再次執(zhí)行此任務(wù)、wait()是多個(gè)線(xiàn)程之間
JDBC
1.JDBC連接數(shù)據(jù)庫(kù)的基本環(huán)節(jié):
(1)注冊(cè)驅(qū)動(dòng)程序
(2)建立連接
(3)發(fā)送和執(zhí)行sql語(yǔ)句
(4)解決結(jié)果
(5)釋放資源
2.常用對(duì)象
(1)connection建立與數(shù)據(jù)庫(kù)的連接DriverManager類(lèi)的getConnection()將建立數(shù)據(jù)庫(kù)的連接
(2)statement將sql語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)中存在三種statement對(duì)象
Statement
PreparedStatement
CallableStatement
(3)Result包含符號(hào)sql語(yǔ)句執(zhí)行結(jié)果集、并且通過(guò)一套get方法提供了對(duì)這些行中的數(shù)據(jù)的訪問(wèn)
3.事務(wù)的基本概念及如何在JDBC中實(shí)現(xiàn)事務(wù)
事務(wù)是一些事件的集合、執(zhí)行一條sql語(yǔ)句可以理解成一個(gè)事務(wù)、事務(wù)中包含多個(gè)事件、假如每一個(gè)事件都能執(zhí)行成功的時(shí)
候、事務(wù)才執(zhí)行、假如任何一個(gè)事務(wù)不能成功執(zhí)行、事務(wù)的其它事件也不能被執(zhí)行。
JDBC解決事務(wù)的代碼:
booleandefaultCommit-conn.getAutoCommit();
conn.setAutoCommit(false);
try(stmt.executeUpdate(strSQLl);
stmt.executeUpdate(strSQL2);
conn,commit();
)catch(Exceptione){
conn,rollback();
e.printStackTrace();
}finally{
if(stmt!=null){
stmt.closeO;
}
if(conn!=nul1){
conn,close();}
)
conn.setAutoCommit(defaultCommit);
Servlet和JSP
1.servlet和JSP的關(guān)系
JSP是以此外一種方式實(shí)現(xiàn)了servlet、servlet是JSP的初期版本、在JSP中更加注重頁(yè)面的表現(xiàn)、而在servlel中更加注重業(yè)
務(wù)邏輯的實(shí)現(xiàn)。因此當(dāng)編寫(xiě)的頁(yè)面顯示效果比較復(fù)雜時(shí)、首選JSP、或者在開(kāi)發(fā)過(guò)程中、html代碼經(jīng)常發(fā)生變化而Java代碼相對(duì)
比較固定期可以選擇JSP、而我們?cè)诮鉀Q業(yè)務(wù)邏輯時(shí)首選則是servlet、同時(shí)JSP只能解決瀏覽器的請(qǐng)求、而servlet可以解決一
個(gè)客戶(hù)端的應(yīng)用程序請(qǐng)求、因此servlet加強(qiáng)了web服務(wù)器的功能
2.servlet的生命周期
(1)服務(wù)器加載servlet
(2)創(chuàng)建servlet實(shí)例
(3)調(diào)用servlet實(shí)例的init()
(4)收到請(qǐng)求
(5)調(diào)用service()
(6)service()解決請(qǐng)求并將輸出結(jié)果返回客戶(hù)端
(7)servlet等待下一個(gè)請(qǐng)求、轉(zhuǎn)到(4)繼續(xù)向下執(zhí)行
(8)servlet在服務(wù)器調(diào)用destory()然后卸載
3.init()調(diào)用時(shí)機(jī)
(1)服務(wù)器第一次訪問(wèn)servlet的時(shí)候被調(diào)用
(2)在web.xml中設(shè)立load-on-starlup>=0情況下、服務(wù)器啟動(dòng)的時(shí)候調(diào)用
4.Destroy()調(diào)用時(shí)機(jī)
(1)servlet在被卸載前
(2)servlet很長(zhǎng)時(shí)間沒(méi)有被使用
5.HttpSession接口的功能和使用方法
這是一個(gè)java,servelt.http包中的接口、它封裝了會(huì)話(huà)的概念它的定義為publicinterfaceHttpSession可以使用
HttpSessionsession=request.getSessionO;
來(lái)這種類(lèi)型的對(duì)象、語(yǔ)法為HttpSessionsession=request.getSessionO;
6.什么是組件、使用組件有什么優(yōu)點(diǎn)
現(xiàn)代件開(kāi)發(fā)都已轉(zhuǎn)向基于組件的開(kāi)發(fā)、目前代表性的組件技術(shù)有微軟的com和com+、有sun的javabean和EJB、此外尚有
CORBA(CommonObjectRequestBrokerArchitecture,公共對(duì)象代理結(jié)構(gòu))、javabean規(guī)范將軟件組件的概念引入到了java編
程里面、組件是自包含的、可重用的軟件單元、而javabean組件則可使用可視的應(yīng)用程序開(kāi)發(fā)工具、可視的將他們編寫(xiě)到j(luò)ava
程序中、javabean規(guī)范為java開(kāi)發(fā)人員提供了一種組件化其java類(lèi)的方法、其最大優(yōu)點(diǎn)是代碼的復(fù)用。
7.編寫(xiě)javabean時(shí)需要注意哪些?
(1)假如類(lèi)的成員變量的名字是xxx、為了更改和獲得其成員變量的值、在類(lèi)中使用兩個(gè)方法:getXxx()是用來(lái)獲取屬
性、setXxx()是用來(lái)修改屬性
(2)類(lèi)中的方法訪問(wèn)屬性必須是public的
(3)必須放在一個(gè)包中
(4)類(lèi)中要有public(公有的)無(wú)參的構(gòu)造函數(shù)
8.簡(jiǎn)述JSP的設(shè)計(jì)模式
Modle1JSP+Javabean
在這種模式中JSP頁(yè)面獨(dú)自響應(yīng)請(qǐng)求并將解決結(jié)果返回客戶(hù)、所有的數(shù)據(jù)庫(kù)操作通過(guò)javabean來(lái)實(shí)現(xiàn)、大量的使用
這種設(shè)計(jì)模式常會(huì)導(dǎo)致在jsp頁(yè)面中嵌入大量的java代碼、當(dāng)需要解決的業(yè)務(wù)邏輯非常復(fù)雜時(shí)、這種情況就變得很
糟糕、大量的java代碼使得jsp頁(yè)面變得非常臃腫、前端的頁(yè)面設(shè)計(jì)人員稍有不慎就有也許破壞關(guān)系到業(yè)務(wù)邏輯的
代碼
優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)樸、適合快速的開(kāi)發(fā)小型項(xiàng)目
Modle2MVC設(shè)計(jì)模式
采用只包含控制邏輯的servlel作為前端控制器接受客戶(hù)請(qǐng)求、再轉(zhuǎn)發(fā)到相應(yīng)的jsp頁(yè)面解決顯示邏輯、并輔以
javabean實(shí)現(xiàn)相關(guān)的業(yè)務(wù)邏輯、合用于大規(guī)模系統(tǒng)的開(kāi)發(fā)和管理
缺陷:增長(zhǎng)了應(yīng)用開(kāi)發(fā)的復(fù)雜限度
9.在javaservletAPI中forward()和redirect()的區(qū)別
前者僅是容器中控制權(quán)的轉(zhuǎn)向、在客戶(hù)端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址
后者則是完全跳轉(zhuǎn)、瀏覽器將會(huì)得到跳轉(zhuǎn)的地址、并重新發(fā)送請(qǐng)求連接、從瀏覽器地址欄中可以看到跳轉(zhuǎn)后的連接地址、
所以前者更加高效、在前者可以滿(mǎn)足需要時(shí)盡量使用foeard()并且這樣也有助于隱藏實(shí)際的連接、比如需要跳
轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源、則必須使用sendRedirect()
10.JSP的內(nèi)置對(duì)象
request—客戶(hù)端請(qǐng)求
response—網(wǎng)頁(yè)傳回客戶(hù)端的【可應(yīng)
pageContext—管理頁(yè)面屬性
session—與請(qǐng)求有關(guān)的會(huì)話(huà)期
application應(yīng)用程序級(jí)變量
out—用來(lái)傳送回應(yīng)傳送的輸出
configservlelConfig的一個(gè)實(shí)例
page—代表jsp頁(yè)面自身
exeption—針對(duì)錯(cuò)誤網(wǎng)頁(yè)未捕獲的例外
11.Jsp的標(biāo)準(zhǔn)動(dòng)作
Jsp:include—在頁(yè)面請(qǐng)求的時(shí)候引入一個(gè)文獻(xiàn)
Jsp:usebean—尋找或?qū)嵗粋€(gè)javabean
Jsp:setproperty--設(shè)立javabean的屬性
Jsp:getProperty—輸出javabean的屬性
Jsp:forward把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面
12.Jsp中的動(dòng)態(tài)include與靜態(tài)include的區(qū)別
語(yǔ)法上、靜態(tài)<%@includefile二"嚶)動(dòng)態(tài)〈jsp:includepage
狀態(tài)上、靜態(tài)的是編譯時(shí)包含、動(dòng)態(tài)的是運(yùn)營(yíng)時(shí)包含
針對(duì)對(duì)象來(lái)說(shuō)、靜態(tài)包含的是靜態(tài)頁(yè)面、動(dòng)態(tài)的包含靜態(tài)頁(yè)面和動(dòng)態(tài)頁(yè)面均可包含
靜態(tài)的是jsp引擎對(duì)所包含的文獻(xiàn)進(jìn)行語(yǔ)法分析
動(dòng)態(tài)的是jsp引擎不對(duì)所包含的文獻(xiàn)進(jìn)行語(yǔ)法分析、只獲得解決結(jié)果、
假如包含的內(nèi)容是靜態(tài)內(nèi)容、那么使用include指令、由于它的運(yùn)營(yíng)速度快
Struts
1.struts的運(yùn)營(yíng)機(jī)制
struts架構(gòu)從本質(zhì)上MVC設(shè)計(jì)模式的具體實(shí)現(xiàn)、表達(dá)層一般使用試圖組件實(shí)現(xiàn)、控制器使用控制器組件實(shí)現(xiàn)、而應(yīng)用邏輯層使用
模型組件實(shí)現(xiàn)、作為表達(dá)層和應(yīng)用層之間的中介、控制器解決模型和視圖之間、起到了橋梁的溝通作用
2.控制器組件的相關(guān)類(lèi)
ActionServlet是struts架構(gòu)中的中央控制器
RequestProcessor—包含了struts控制器解決servlet請(qǐng)求時(shí)所遵循的控制邏輯
Action—解決業(yè)務(wù)邏輯
ActionForm--保存用戶(hù)表單數(shù)據(jù)、以便于在不同頁(yè)面間傳遞
ActionMapping—用于控制在狀態(tài)數(shù)據(jù)改變后的事件解決方式
ActionForward用戶(hù)指向或者視圖選擇
3.struts標(biāo)簽庫(kù)
struts-html.tld擴(kuò)展htmlform的jsp標(biāo)記
struts-bean.tld—擴(kuò)展解決javabean的jsp標(biāo)記
struts-logic.tld擴(kuò)展測(cè)試屬性值的jsp標(biāo)記
4.struts1的Action是否是線(xiàn)程安全的
StrutslAclion是單例模式并且必須是線(xiàn)程安全的、由于僅有Action的一個(gè)實(shí)例來(lái)解決所有請(qǐng)求、單例策略限制了strulsl
Action能做的事、并且要在開(kāi)發(fā)是特別小心、Action資源必須是線(xiàn)程安全或同步的
5.struts的工作流程
在web應(yīng)用啟動(dòng)時(shí)就會(huì)加載初始化actionServlet、actionServlet從struts-config.xml文獻(xiàn)中讀取配置信息、把他們存放到
各種配置對(duì)象中、當(dāng)ActionServlet接受到一個(gè)客戶(hù)請(qǐng)求時(shí)將執(zhí)行如下流程
(1)檢索和用戶(hù)請(qǐng)求匹配的ActionMapping實(shí)例、假如不存在就返回請(qǐng)求途徑無(wú)效信息
(2)假如actionForm實(shí)例不存在、就創(chuàng)建一個(gè)ActionForm對(duì)象、把客戶(hù)提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中
(3)根據(jù)配置信息決定是否需要表單驗(yàn)證、假如需要驗(yàn)證就會(huì)調(diào)用ActionForm的validate。
(4)假如ActionForm的validate()返|口]nul]或返|可一個(gè)不包含ActionYessage的ActionErrors對(duì)象就表達(dá)表單驗(yàn)證
成功
(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action、假如相應(yīng)的Action實(shí)例不
存在、就先創(chuàng)建這個(gè)實(shí)例、然后調(diào)用Action的execute()
(6)Action的execute()返|可?個(gè)ActionForward對(duì)象、ActionServlet再把客戶(hù)請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象所
指向的jsp組件
(7)ActionForward對(duì)象指向jsp組件生成動(dòng)態(tài)網(wǎng)頁(yè)、返回給客戶(hù)
6.struts1的優(yōu)缺陷
優(yōu)點(diǎn):是開(kāi)源軟件、使開(kāi)發(fā)者能更進(jìn)一步的了解其內(nèi)部的機(jī)制、業(yè)界標(biāo)準(zhǔn)學(xué)習(xí)資源豐富、標(biāo)簽和頁(yè)面導(dǎo)航
(1)運(yùn)用struts提供的標(biāo)簽可以大大節(jié)約開(kāi)發(fā)時(shí)間
(2)維護(hù)擴(kuò)展比較方便、通過(guò)一個(gè)配置文獻(xiàn)即可把握整個(gè)系統(tǒng)個(gè)部分之間的聯(lián)系、這對(duì)于后期的維護(hù)有莫大的好處
(3)表現(xiàn)與邏輯分離
(4)便于團(tuán)隊(duì)開(kāi)發(fā)
缺陷:(1)大量使用標(biāo)簽對(duì)于初學(xué)者難度很大
(2)ActionForm使用不便無(wú)法進(jìn)行單元測(cè)試
7.Tiles框架是什么?
Tiles框架為創(chuàng)建web頁(yè)面提供了一種模板機(jī)制、它能將網(wǎng)頁(yè)的布局和內(nèi)容分離
8.struts的MVC框架
Modlestruts沒(méi)有提供modle類(lèi)、這個(gè)業(yè)務(wù)邏輯必須由web應(yīng)用程序的開(kāi)發(fā)者以javabean或EJB的形式提供、
Viewstruts提供AclionForm創(chuàng)建FormBean、用于在conlroler和view間傳輸數(shù)據(jù)、此外、struts提供了自定義jsp標(biāo)簽庫(kù)、
輔助開(kāi)發(fā)者用jsp創(chuàng)建交互式的以表單為基礎(chǔ)的應(yīng)用程序、應(yīng)用程序資源文獻(xiàn)(.property文獻(xiàn))保存了一些文本常量
和錯(cuò)誤信息、可轉(zhuǎn)變成其它語(yǔ)言用于jsp中
Controler
提供了一個(gè)核心控制器ActionServlet、通過(guò)這個(gè)核心控制器來(lái)調(diào)用其它用戶(hù)注冊(cè)的自定義控制器Action、自定義
Action需要符號(hào)Strutsl的自定義Action的規(guī)范、還需要在struts-config.xml特定配置文獻(xiàn)中進(jìn)行配置、接受jsp輸
入字段形成ActionForm、然后調(diào)用?個(gè)Action控制器、
Strutsl和struts2的比較
(1)Action類(lèi):
strutsl規(guī)定Action類(lèi)要擴(kuò)展自一個(gè)抽象基類(lèi)、struts1的?個(gè)共有的問(wèn)題是面向抽象類(lèi)編程而不是面向接口編程
struts2的Action類(lèi)實(shí)現(xiàn)了一個(gè)Action接口、連同其它接口一起實(shí)現(xiàn)可選擇和自定義服務(wù)、提供了一個(gè)名叫
ActionSupport的基類(lèi)實(shí)現(xiàn)一般使用的接口、Action接口不是必須的、任何使用execute()的普通java
對(duì)象可以被當(dāng)作5“仇$2的2(:宜011對(duì)象使用
(2)線(xiàn)程模型:strutslAction是單例的、因只有一個(gè)實(shí)例控制所有的請(qǐng)求、單例策略導(dǎo)致了一定的限制、Action
資源必須是線(xiàn)程安全或者同步的
Struts2對(duì)象對(duì)每一個(gè)請(qǐng)求都實(shí)例化對(duì)象所有沒(méi)有線(xiàn)程安全問(wèn)題
(3)Servlet依賴(lài):strutsl的Action類(lèi)的依賴(lài)于ServletAPI以HttpServletRequest和HttpServletResponse作為參數(shù)傳
遞給execute()Struts2的Action不和容器有關(guān)、Servlet上下文被表現(xiàn)成簡(jiǎn)樸的maps
(4)易測(cè)性:測(cè)試strutsl的重要障礙是execute()方法暴露了API、stuts2的Action
可以通過(guò)實(shí)例化Action測(cè)試、設(shè)立屬性然后調(diào)用方法
(5)接受輸入
Strutsl使用actionform對(duì)象捕獲輸入,向action同樣,actionform必須擴(kuò)展基類(lèi)。因其他的javabean不能做
actionform使用,開(kāi)發(fā)者經(jīng)常創(chuàng)建多余的類(lèi)捕獲輸入。Struls2的action屬性做為輸入屬性。排除第2個(gè)輸入對(duì)象的
需要,輸入屬性也許有豐富的對(duì)象類(lèi)型,這些屬性有他們自己的屬性。Action的屬性可以通過(guò)標(biāo)簽庫(kù)訪問(wèn)
(6)表達(dá)式語(yǔ)言:
Strutsl整合jstl所以使用jstl的表達(dá)式語(yǔ)言、表達(dá)式語(yǔ)言有基本的圖形對(duì)象移動(dòng)、但是相對(duì)很弱的集合
和被索引的屬性支持、
Struts2使用jstl、但是框架也支持更大更靈活的表達(dá)式、叫做“對(duì)象圖形符號(hào)語(yǔ)言"(0GNL)
(7)將值綁定到視圖上
Struts使用標(biāo)準(zhǔn)jsp機(jī)制來(lái)綁定對(duì)象到頁(yè)面上下文、struts2使用ValueStack技術(shù)、標(biāo)簽庫(kù)可以不用連接你的
視圖到對(duì)象的表現(xiàn)類(lèi)型訪問(wèn)值
(8)類(lèi)型轉(zhuǎn)換
Strutsl的ActionForm屬性經(jīng)常都是String的、Strutsl使用Commons-Beanuti1s類(lèi)型轉(zhuǎn)換、轉(zhuǎn)換每一個(gè)類(lèi)而不是
每一個(gè)實(shí)例配置
Struts2使用ognl類(lèi)型轉(zhuǎn)換、框架包含轉(zhuǎn)換器基本的和共同的對(duì)象類(lèi)型和原始類(lèi)型
(9)驗(yàn)證:strutsl支持手動(dòng)驗(yàn)證、憑借ActionForm的validate?;蛘咄ㄟ^(guò)擴(kuò)展公用驗(yàn)證器
Struts2支持手動(dòng)驗(yàn)證、憑借validate。和Xwork驗(yàn)證框架
(10)Action執(zhí)行控制:
strutsl支持獨(dú)立的請(qǐng)求解決器對(duì)于每一個(gè)模型、但是所有在模型中的Action必須共享同一個(gè)生命周期
Slruls2支持在每一個(gè)Action基礎(chǔ)上憑借攔截器棧創(chuàng)建不同的生命周期
Hibernate
1.ORM:(Object/RelationalMapping)對(duì)象關(guān)系映射
2.基本概念:面向java環(huán)境的對(duì)象映射工具、開(kāi)源持久層框架、連接java應(yīng)用和數(shù)據(jù)庫(kù)的中間件、對(duì)jdbc進(jìn)行簡(jiǎn)樸封裝、負(fù)
責(zé)對(duì)java對(duì)象的持久化、在分層結(jié)構(gòu)中處在持久層、封裝對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)細(xì)節(jié)、使業(yè)務(wù)邏輯層更專(zhuān)注于實(shí)現(xiàn)業(yè)務(wù)
邏輯。
3.工作原理:
(1)讀取并接配置文獻(xiàn)
(2)讀取并解析映射信息創(chuàng)建sessionFactory
(3)打開(kāi)session
(4)創(chuàng)建事務(wù)Transaction
(5)持久化操作
(6)提交事務(wù)
(7)關(guān)閉session
(8)關(guān)閉sessionFactory
4.優(yōu)缺陷:
優(yōu)點(diǎn):Hibernate使用java反射機(jī)制而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性、hibernate性能非常好、由于它是個(gè)輕量級(jí)框
架、映射的靈活性很杰出。支持各種關(guān)系數(shù)據(jù)庫(kù)、從一對(duì)多到多對(duì)多的各種復(fù)雜關(guān)系
缺陷:它限制了你所使用對(duì)象模型、一個(gè)持久化類(lèi)不能映射到多個(gè)表
5.load()和get()的區(qū)別
(1)查找數(shù)據(jù)庫(kù)中一個(gè)不存在的對(duì)象假如通過(guò)get()加載則返回一個(gè)null、假如通過(guò)load()加載則返回一個(gè)代理
對(duì)象、后面代碼假如調(diào)用該對(duì)象的某個(gè)屬性會(huì)拋出異常org.hibernate.ObjectNotFoundExeption
(2)Load支持延遲加載、get不支持延遲加載
6.hibernate的緩存機(jī)制
內(nèi)部緩存存在hibernate中又叫一級(jí)緩存屬于應(yīng)用事務(wù)級(jí)緩存
二級(jí)緩存分為應(yīng)用級(jí)緩存、分布式緩存、第三方緩存事件
7.如何優(yōu)化hibernate
(1)使用雙向一對(duì)多關(guān)聯(lián)不使用單向一對(duì)多關(guān)聯(lián)
(2)靈活使用單向一對(duì)多關(guān)聯(lián)
(3)不用一對(duì)一關(guān)聯(lián)、而用多對(duì)一取代
(4)配置對(duì)象緩存不使用集合緩存
(5)一對(duì)多集合使用bag、多對(duì)多集合使用set
(6)表字段要少、表關(guān)聯(lián)不用怕多
TransientObject(臨時(shí)對(duì)象):
使用new操作符初始化的對(duì)象不是立刻就持久的、他們的狀態(tài)是瞬時(shí)的也就是說(shuō)他們沒(méi)有任何跟數(shù)據(jù)庫(kù)表相關(guān)聯(lián)的行
為、只要應(yīng)用不再引用這些對(duì)象他們的狀態(tài)會(huì)丟失、并由垃圾回收機(jī)制回收
PersistentObject(持久化對(duì)象)
持久實(shí)例是任何具有數(shù)據(jù)庫(kù)標(biāo)記的實(shí)例、它由持久化管理器Session統(tǒng)一管理、持
久實(shí)例是在事務(wù)中進(jìn)行操作的、它們的狀態(tài)在事務(wù)結(jié)束時(shí)、同數(shù)據(jù)庫(kù)進(jìn)行同步、
當(dāng)事務(wù)提交時(shí)通過(guò)執(zhí)行SQL的insert、update和delete語(yǔ)句、把內(nèi)存中的狀態(tài)同步
到數(shù)據(jù)庫(kù)中
DetachedObject(托管對(duì)象)
Session關(guān)閉之后、持久化就變?yōu)橥泄軐?duì)象、表達(dá)這個(gè)對(duì)象不能再與數(shù)據(jù)庫(kù)保持同
步、它們不再受hibernate管理
Spring
1.什么是Spring、它有什么特點(diǎn)
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)和面向切面的容器框架。
特點(diǎn):輕量:從大小和開(kāi)銷(xiāo)兩方面而言、Spring都是輕量的、完整的Spring框架可以在一個(gè)大小只有1M多的jar文獻(xiàn)中發(fā)
布、并且Spring所需解決開(kāi)銷(xiāo)也是微局限性道的、此外、Spring是非侵入式的、典型的是Spring應(yīng)用中的對(duì)
象不依賴(lài)于Spring的特定類(lèi)
控制反轉(zhuǎn):Spring通過(guò)一種稱(chēng)作控制反轉(zhuǎn)的技術(shù)促進(jìn)了松耦合、當(dāng)應(yīng)用了IOC一個(gè)對(duì)象依賴(lài)的其它對(duì)象會(huì)通過(guò)被動(dòng)的
方式傳遞進(jìn)來(lái)、而不是這個(gè)對(duì)象自己創(chuàng)建或查找依賴(lài)對(duì)象、你可以認(rèn)為IOC與JNDI相反不是對(duì)象從容器中查
找依賴(lài)而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就積極將依賴(lài)傳遞給他
面向切面:Spring提供了面向切面編程的豐富支持、允許通過(guò)度離應(yīng)用程序的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開(kāi)
發(fā)、應(yīng)用對(duì)象只實(shí)現(xiàn)他們應(yīng)當(dāng)做的、完畢業(yè)務(wù)邏輯僅此而己、他們并不負(fù)責(zé)其它的系統(tǒng)級(jí)關(guān)注點(diǎn)、例如日記和
事務(wù)支
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京師范大學(xué)中北學(xué)院《現(xiàn)代電力生產(chǎn)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 棗莊科技職業(yè)學(xué)院《體育排舞》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿州學(xué)院《國(guó)際經(jīng)濟(jì)法(雙語(yǔ))》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南工程學(xué)院應(yīng)用技術(shù)學(xué)院《現(xiàn)代控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 3 水里的沙 教學(xué)設(shè)計(jì)-2023-2024學(xué)年科學(xué)一年級(jí)下冊(cè)冀人版
- 南京航空航天大學(xué)《生物物理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江護(hù)理高等專(zhuān)科學(xué)校《高頻電子技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東嶺南職業(yè)技術(shù)學(xué)院《音頻后期制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江橫店影視職業(yè)學(xué)院《鄉(xiāng)村治理與鄉(xiāng)村建設(shè)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津體育職業(yè)學(xué)院《工程有限元法及數(shù)值分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 華能分布式光伏項(xiàng)目EPC總承包工程投標(biāo)文件-技
- 蜜雪冰城營(yíng)銷(xiāo)策略研究開(kāi)題報(bào)告
- 《游戲界面設(shè)計(jì)》課件-01單元-游戲界面設(shè)計(jì)概論
- FZT 14035-2017 棉與滌爛花印染布
- 2024版《公司法培訓(xùn)講義》
- 小學(xué)科學(xué)冀人版六年級(jí)下冊(cè)全冊(cè)同步練習(xí)含答案
- 郵政儲(chǔ)蓄銀行-客戶(hù)經(jīng)理(個(gè)人消費(fèi)貸款)-試題+答案
- 2024年3月10日國(guó)考公務(wù)員稅務(wù)局面試真題及解析
- 旅店會(huì)客登記制度
- 市政造價(jià)員道路工程預(yù)決算入門(mén)講解(零起步培訓(xùn)課件)
- VOC廢氣治理工程中低溫催化氧化技術(shù)的研究與實(shí)踐
評(píng)論
0/150
提交評(píng)論