Java基礎(chǔ)知識(shí)匯總
Java基礎(chǔ)知識(shí)
1、Java語(yǔ)言的優(yōu)點(diǎn):
1)Java是純面向?qū)ο笳Z(yǔ)言
2)與平臺(tái)無(wú)關(guān)性,一次編譯到處運(yùn)行
3)Java提供了狠多內(nèi)置類(lèi)庫(kù)
4)提供了對(duì)web應(yīng)用的支持
5)具有較好的安全性(數(shù)組邊界檢測(cè)、Bytecode檢測(cè))和健壯性(強(qiáng)制型機(jī)制、垃圾回收器、異常處理)
6)去除c++難以理解的一些特性(頭文件 指針 運(yùn)算符重載 多重繼承)
2、java與c++的異同:
1)Java為解釋型語(yǔ)言,c++為編譯型語(yǔ)言,java會(huì)慢但是跨平臺(tái)
2)Jave為純面向?qū)ο?,c++既面向?qū)ο笥帜苊嫦蜻^(guò)程。Jave無(wú)全局變量和全局函數(shù)
3)Java沒(méi)有指針,更安全
4)Java不支持多繼承但是有接口概念
5)Java不需人工分配管理內(nèi)存(申請(qǐng) 釋放),提供垃圾回收器自動(dòng)回收。當(dāng)堆?;蜢o態(tài)存儲(chǔ)區(qū)沒(méi)有對(duì)這個(gè)對(duì)象的引用時(shí),就會(huì)被回收。沒(méi)有析構(gòu)函數(shù),但是有finalize()方法。
6)Java沒(méi)有運(yùn)算符重載,沒(méi)有預(yù)處理功能。
3、public static void main(String [] args)是程序的入口。
4、java可有多個(gè)main()文件,但只有與文件名相同的用public修飾的類(lèi)的main()才能作為程序的入口。注:有且僅有一個(gè)類(lèi)被public修飾并與文件同名。
5、靜態(tài)快在main函數(shù)之前執(zhí)行。初始化執(zhí)行順序:父靜態(tài)變量 父靜態(tài)代碼塊 子靜態(tài)代碼變量 子靜態(tài)代碼塊 父非靜態(tài)變量 父非靜態(tài)代碼塊 父類(lèi)構(gòu)造函數(shù) 子非靜態(tài)變量 子非靜態(tài)代碼塊 子類(lèi)構(gòu)造函數(shù)
6、構(gòu)造函數(shù):
1)與類(lèi)同名,無(wú)返回值
2)可以有多個(gè),根據(jù)參數(shù)不同
3)總是伴隨new操作一起調(diào)用
4)主要用來(lái)初始化對(duì)象
5)不能被繼承
6)可用super來(lái)顯示調(diào)用父類(lèi)構(gòu)造函數(shù)
7、淺復(fù)制僅僅復(fù)制考慮的對(duì)象,不復(fù)制它引用的對(duì)象。深復(fù)制兩者都復(fù)制
8、面向?qū)ο蠛兔嫦蜻^(guò)程有什么不同:
1)面向?qū)ο笫怯梅铣R?guī)思維的方式去處理客觀世界的問(wèn)題,面向過(guò)程是則重以事件為中心,模塊化。
2)面向?qū)ο笫鞘褂?jì)算機(jī)世界向客觀世界靠攏,使問(wèn)題的處理更清晰。面向過(guò)程是清晰準(zhǔn)確表達(dá)過(guò)程的模塊,把客觀世界的問(wèn)題抽象成計(jì)算機(jī)可以處理的過(guò)程。
9、面向?qū)ο蟮奶卣骱蛢?yōu)點(diǎn):抽象 繼承 封裝 多態(tài)有較高的開(kāi)發(fā)效率,代碼可重用。較高的可維護(hù)性,代碼更清晰明了。
10、java只支持單根繼承,extends繼承是 is a 關(guān)系,組合是 has a關(guān)系。
在java語(yǔ)言中能用到組合的盡量不要用繼承。
11、多態(tài):
重載(同個(gè)類(lèi)中有多個(gè)同名方法) 水平關(guān)系
重寫(xiě)(子類(lèi)重寫(xiě)父類(lèi),方法名和參數(shù)列表相同) 垂直關(guān)系
12、抽象類(lèi)和接口的異同:
1)只要包含一個(gè)抽象方法都是抽象類(lèi),接口的方法全部是抽象方法,稱(chēng)為純抽象類(lèi)。
2)抽象類(lèi)的子類(lèi)需實(shí)現(xiàn)父類(lèi)的抽象方法。
3)接口中的變量都默認(rèn)為:static final 必須賦初值。
4)接口實(shí)現(xiàn)用implements。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口實(shí)現(xiàn)類(lèi)似多繼承的關(guān)系。
5)接口被運(yùn)用于常用的功能,如:添加刪除。抽象類(lèi)用于生活公共類(lèi)的角色,不適用經(jīng)常對(duì)代碼修改的情況
13、this和super的區(qū)別:
This用來(lái)指向當(dāng)前實(shí)例對(duì)象
Super用來(lái)訪問(wèn)父類(lèi)的方法和成員變量
子類(lèi)繼承父類(lèi)時(shí),子類(lèi)構(gòu)造函數(shù)中super()必須放第一句。
14、break continue return 的區(qū)別:
Break 用于直接強(qiáng)行跳出當(dāng)前循環(huán),不執(zhí)行剩余代碼
Continue 用于停止當(dāng)次循環(huán),回到起始處進(jìn)行下次循環(huán)。
Return 跳轉(zhuǎn) 用來(lái)表示從一個(gè)方法中返回。
Break out跳出多重循環(huán)
15、static的作用:
a 為對(duì)象分配單一的存儲(chǔ)空間,與創(chuàng)建對(duì)象個(gè)數(shù)無(wú)關(guān)
b 實(shí)現(xiàn)某個(gè)方法或?qū)傩院皖?lèi)而不是與對(duì)象關(guān)聯(lián)在一起
C 變量可達(dá)到全局的效果,在內(nèi)存中只有一個(gè)復(fù)制
16、不可變類(lèi)的實(shí)現(xiàn):
類(lèi)中的所有成員變量被private修飾
沒(méi)有寫(xiě)set方法
類(lèi)定義final
17、值傳遞和引用傳遞的區(qū)別:
值傳遞:實(shí)參會(huì)把它的值傳遞給形參
引用傳遞:傳遞的是對(duì)象,形參和實(shí)參指向同個(gè)存儲(chǔ)單元。
18、有八種基本數(shù)據(jù)類(lèi)型,類(lèi)型轉(zhuǎn)換的優(yōu)先級(jí):byte不能與booleam互換。
19、round 表示四舍五入 ceil表示向上取整 floor表示向下取整,i++表示先執(zhí)行后加
一,++i表示先加一后執(zhí)行。
20、String s1=”abc”是存放在常量區(qū)
String s2=”abc”s2應(yīng)用常量區(qū)的對(duì)象,不會(huì)創(chuàng)建新的對(duì)象。
String s3=new String(“abc”)是在堆中創(chuàng)建對(duì)象,
String s4=new String(“abc”)又必須在堆中創(chuàng)建新對(duì)象。
21、“==”與“equals”
“==”用來(lái)比較兩個(gè)變量的值是否相等,如果一個(gè)變量指向餓數(shù)據(jù)是對(duì)象(引用類(lèi)型),就有兩塊內(nèi)存。對(duì)象本身占用一塊內(nèi)存(堆內(nèi)存),變量也占用一塊內(nèi)存。String s4 = new String(“abc”)。變量s所對(duì)應(yīng)的內(nèi)存中存儲(chǔ)的數(shù)值就是對(duì)象占用那塊內(nèi)存的首地址。如果想看兩個(gè)變量是否指向同一個(gè)對(duì)象,即要看他們對(duì)應(yīng)內(nèi)存中的數(shù)值(首地址)是否相同。
equals比較的不是引用,而是數(shù)值內(nèi)容,即比較的是abc。
22、數(shù)組也是對(duì)象。數(shù)組提供length屬性來(lái)獲取數(shù)組的長(zhǎng)度,而String是通過(guò)length()計(jì)算。
23、異常處理
1)try catch finally模式
2)Finally塊中的代碼一定會(huì)被執(zhí)行,除非這兩種情況:當(dāng)程序在try之前就遇到異常或者在try中通過(guò)exit()強(qiáng)制退出。
3)jvm將錯(cuò)誤表示為一個(gè)異常并拋出,通過(guò)catch來(lái)捕獲,然后進(jìn)行處理。安全性和魯棒性。
4)異常分為兩大類(lèi):錯(cuò)誤(error)和異常(Excetion)
異常分為:檢查異常和運(yùn)行異常。
檢查異常又稱(chēng)為編譯異常。
比如:IO異常、SQL異常
運(yùn)行異常為:空指針異常、類(lèi)型轉(zhuǎn)換異常、算術(shù)異常、數(shù)組越界異常、數(shù)組存儲(chǔ)異常、緩存區(qū)溢出異常。
先捕獲子類(lèi)后捕獲父類(lèi),盡早拋出異常,能處理就處理,不處理就拋出,運(yùn)行時(shí)異常實(shí)際不必處理,直接拋出。
24、Java IO:字節(jié)流(8位)不會(huì)用到緩存 字符流(16位)用到緩存
25、Socket稱(chēng)為套接字。用來(lái)實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。
分為兩種類(lèi)型:面向連接的TCP,可靠。無(wú)面向連接的UDP,不可靠。
任何一個(gè)Socket都是由一個(gè)IP地址和端口號(hào)唯一確定。
26、java平臺(tái)獨(dú)立性是指一個(gè)平臺(tái)上編寫(xiě)和編譯程序,而在其他平臺(tái)上運(yùn)行。有JVM和java API。
Java語(yǔ)言是一種動(dòng)態(tài)解釋型語(yǔ)言,類(lèi)class只有被加載到JVM上才能運(yùn)行。不會(huì)一次加載全部類(lèi)后執(zhí)行,而是先加載基類(lèi),其他類(lèi)是需要時(shí)再加載。
27、垃圾回收GC:回收不會(huì)再使用的內(nèi)存。三個(gè)任務(wù):分配內(nèi)存;確保被引用的內(nèi)存不被錯(cuò)誤地回收;回收不再被引用的對(duì)象的內(nèi)存。
28、java中內(nèi)存泄露問(wèn)題:
兩種情況:
1)在堆中申請(qǐng)的空間沒(méi)有得到釋放
2)對(duì)象不再被使用,但是仍在內(nèi)存中保留著
原因:靜態(tài)集合類(lèi)、各種連接、監(jiān)聽(tīng)器、變量不合理的作用域
29、java中堆和棧的區(qū)別:
分配在棧:基本數(shù)據(jù)類(lèi)型的變量、對(duì)象的引用變量
變量出了作用域就會(huì)被自動(dòng)釋放
分配在堆:引用類(lèi)型變量、需要通過(guò)new創(chuàng)建的變量。主要為運(yùn)行時(shí)創(chuàng)建的對(duì)象
JVM是基于堆棧的虛擬機(jī),每個(gè)java程序都運(yùn)行在一個(gè)單獨(dú)的JVM實(shí)例上,所以一個(gè)java程序中的對(duì)個(gè)線程運(yùn)行在,每個(gè)實(shí)例又唯一對(duì)應(yīng)一個(gè)堆,所以這些線程之間會(huì)共享堆內(nèi)存。
只需要申請(qǐng)堆空間,不需要考慮釋放問(wèn)題。
使用棧中的引用變量來(lái)訪問(wèn)堆中的數(shù)組和對(duì)象。
堆只要是用來(lái)存放對(duì)象的,棧主要是用來(lái)放執(zhí)行程序的。
棧的速度快,但大小和生存期確定,缺乏靈活性。堆是動(dòng)態(tài)分配內(nèi)存,靈活性強(qiáng)但速度慢。
30、容器:java Collections框架:list 、Queue 、set 、stack 、map
list 、Queue 、set 、stack都繼承Collection接口。
1)List是有序的Collection。按對(duì)象的進(jìn)入順序保存對(duì)象,可保存重復(fù)對(duì)象。
2)Set是集合的概念,集合中不能有重復(fù)的元素。
3)map是鍵映射到值得數(shù)據(jù)結(jié)構(gòu)。值可以重復(fù),但是鍵是唯一的,不能重復(fù)。
31、迭代器:是一個(gè)對(duì)象,一種訪問(wèn)一個(gè)容器對(duì)象的各個(gè)元素,而又不必暴露該對(duì)象內(nèi)部的細(xì)節(jié)方法。
1)使用容器的iterator()方法返回一個(gè)Iterator,然后通過(guò)Iterator的next()方法返回一個(gè)元素。
2)使用Iterator的hasNext()方法判斷容器中是否還有元素,如果有可以使用next()獲取下一個(gè)元素。
3)通過(guò)remove()來(lái)刪除迭代器返回的元素。
32、collection和collections的區(qū)別:
Collection:是一個(gè)集合接口,為各個(gè)具體集合提供最大化的統(tǒng)一操作。
Collections:是針對(duì)集合類(lèi)的一個(gè)包裝類(lèi)。不能實(shí)例化,相當(dāng)于一個(gè)工具類(lèi),服務(wù)于Collection框架。
33、多線程:
線程:執(zhí)行代碼的一個(gè)執(zhí)行單元。
進(jìn)程:一個(gè)正在執(zhí)行的程序
各線程共享程序的內(nèi)存空間(代碼段、數(shù)據(jù)、堆空間)有獨(dú)立的??臻g。
線程優(yōu)點(diǎn):
1)減少程序的響應(yīng)時(shí)間
2)相比進(jìn)程,創(chuàng)建個(gè)切換開(kāi)銷(xiāo)小
3)多CPU和多核本身就具有多線程能力
4)簡(jiǎn)化程序結(jié)構(gòu),便于理解和維護(hù)。
34、如何實(shí)現(xiàn)java多線程:
1)繼承Thread類(lèi),重寫(xiě)run()方法
2)實(shí)現(xiàn)Runnable接口,并實(shí)現(xiàn)接口的run()方法。
3)實(shí)現(xiàn)Callable接口,重寫(xiě)call()方法。
35、同步
要想實(shí)現(xiàn)同步操作,必須獲得每個(gè)線程對(duì)象的鎖,獲得它可以保證同一時(shí)刻只有一個(gè)線程能夠進(jìn)入臨界區(qū),并且在這個(gè)鎖被釋放之前,其他線程就能再進(jìn)入臨界區(qū),如果還有其他線程想要獲得該對(duì)象的鎖,只能進(jìn)入等待隊(duì)列等待。
36、多進(jìn)程同步的實(shí)現(xiàn)方法:
1)synchronized關(guān)鍵字
2)Wait()方法與notify()方法
3)Lock
37、終止線程的方法:stop()方法與suspeng()方法。
Java提供兩種線程:守護(hù)線程(服務(wù)進(jìn)程)、用戶進(jìn)程。
38、如何通過(guò)JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù):
1)加載JDBC驅(qū)動(dòng)器,將JDBC驅(qū)動(dòng) jar包復(fù)制到lib下
2)加載JDBC驅(qū)動(dòng)
3)創(chuàng)建數(shù)據(jù)庫(kù)連接
4)建立Statement對(duì)象或是PrepareStatement對(duì)象。用于對(duì)數(shù)據(jù)庫(kù)操作
5)執(zhí)行SQL語(yǔ)句
6)訪問(wèn)結(jié)果集ReaultSet對(duì)象
7)依次關(guān)閉ReaultSet Statement Connection。
39、Class.forName()方法的作用是把類(lèi)加載到JVM中。
在使用JDBC連接數(shù)據(jù)庫(kù)之前,一般會(huì)調(diào)用Class.forName(“com.mysql.jdbc.Driver”)方法來(lái)加載驅(qū)動(dòng)。
Statement用于執(zhí)行不帶參數(shù)的簡(jiǎn)單SQL語(yǔ)句,并返回它所生成結(jié)果的對(duì)象。每次執(zhí)行SQL,數(shù)據(jù)庫(kù)都會(huì)編譯該SQL語(yǔ)句。
PrepareStatement可執(zhí)行帶參數(shù)的。效率更高,可讀性,可維護(hù)性更高,安全性更好
40、JDBC提供了getString()、getInt()、getIData()等方法從ResultSet中獲取數(shù)據(jù)。
41、在JDBC連接時(shí)連接池?cái)?shù)目有限,所以一定要保證釋放不再使用的連接。
createStatement和prepareStatement最好放在循環(huán)外面,而且使用statement后需要及時(shí)關(guān)閉。最好是執(zhí)行一次executeQuery后馬上關(guān)閉statement。
42、Hibernate是JDBC的封裝。采用配置文件的形式將數(shù)據(jù)庫(kù)的連接參數(shù)寫(xiě)到XML中,但
是最后對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)還是要通過(guò)JDBC來(lái)完成。
43、Hibernate是個(gè)持久層框架,它將表中的信息映射到XML中,再?gòu)腦ML文件映射到相應(yīng)的持久化類(lèi)中。
Java Web
1、瀏覽器的作用:
1)、完成與服務(wù)器端的交互。
2)、完成HTML的解析,實(shí)現(xiàn)用戶需要看的內(nèi)容以直觀的信息展示出來(lái)。
2、HTTP的請(qǐng)求方法有:GET POST HEAD TRACE OPTIONS
GET:是最簡(jiǎn)單的請(qǐng)求方法,從服務(wù)器端獲取用戶所需的資源,并將其作為響應(yīng)返回給客戶端。獲取服務(wù)器端的信息(查詢(xún))。若需上傳數(shù)據(jù)則添加到URL后面。數(shù)據(jù)暴露安全不夠,并且數(shù)量受限制。
POST:除了能夠從服務(wù)器端獲取資源外,同時(shí)還可以向服務(wù)器上傳數(shù)據(jù)。上傳的數(shù)據(jù)不是在URL中明文顯示,可以上傳大量數(shù)據(jù),用戶不可見(jiàn)
3、Servlet:
采用Java語(yǔ)言編寫(xiě)的服務(wù)器程序,運(yùn)行于Web服務(wù)器中的Servlet容器中,主要功能是提供請(qǐng)求、響應(yīng)的服務(wù)模式,可以生成動(dòng)態(tài)的Web內(nèi)容。
Web服務(wù)器獲取到一個(gè)對(duì)servlet的請(qǐng)求時(shí),會(huì)將其交給Tomcat容器進(jìn)行處理,容器再通過(guò)調(diào)用Servlet的方法(doGet() doPost())來(lái)響應(yīng)請(qǐng)求。
步驟:
發(fā)起servlet請(qǐng)求——>Web服務(wù)器交給容器處理——>容器創(chuàng)建兩個(gè)對(duì)象HttpServletResponse HttpServletRequire——>創(chuàng)建單獨(dú)線程,并將兩個(gè)對(duì)象以參數(shù)形式傳遞進(jìn)入線程——>線程容器調(diào)用Servlet的service()方法中的doGet()或doPost()完成響應(yīng)——>容器將響應(yīng)消息以HTML形式返回給客戶。
4、Servlet的生命周期:
加載——>創(chuàng)建——> 初始化——> 處理客戶請(qǐng)求——> 卸載
5、JSP的優(yōu)點(diǎn):
JSP:嵌入java代碼的html文件。主要解決servlet與HTML的分離。實(shí)現(xiàn)業(yè)務(wù)邏輯與視圖進(jìn)行分離。
6、JSP與servlet的異同:
相同:
本質(zhì)都是Servlet文件,只要是JSP能完成的工作,使用Servlet都能完成.JSP最終都是會(huì)轉(zhuǎn)化為servlet來(lái)運(yùn)行。
不同:
Servlet是處于控制層,主要是做流程控制和業(yè)務(wù)處理。JSP是處于視圖層,主要用于顯示。
Servlet沒(méi)有內(nèi)置對(duì)象,JSP中的內(nèi)置對(duì)象主要是通過(guò)HttpServletResponse 對(duì)象、HttpServletRequire對(duì)象得到。
7、MVC模型:
模型層(M):實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)邏輯。JavaBean或EJB
視圖層(V):實(shí)現(xiàn)用戶的交互。JSP
控制層(C): 實(shí)現(xiàn)視圖與模型的邏輯控制。servlet
8、控制層:
控制器接收用戶的輸入并調(diào)用模型和視圖去完成。
控制器本身不輸出任何東西,也不執(zhí)行任何處理。
只是接收請(qǐng)求并決定使用哪個(gè)模型去處理請(qǐng)求,決定使用哪個(gè)視圖去顯示模型處理返回?cái)?shù)據(jù)
9、MVC的優(yōu)點(diǎn):
1)低耦合性,實(shí)現(xiàn)視圖層與邏輯層分離。
2)高重用性和可適用性
3)部署迅速
4)容易維護(hù)
10、Servlet中的forward和redirect有什么區(qū)別:
Forward是服務(wù)器內(nèi)部的重定向,服務(wù)器直接訪問(wèn)目標(biāo)地址的url,地址不變。
Redirect:客戶端的重定向,完全跳轉(zhuǎn),地址改變。
11、JSP的內(nèi)置對(duì)象:
1)require(請(qǐng)求對(duì)象)
2)Response(響應(yīng)對(duì)象)
3)pageContext(頁(yè)面上下文對(duì)象)
4)Session(會(huì)話對(duì)象)
5)Application(應(yīng)用程序?qū)ο螅?br />
6)Out(輸出對(duì)象)
7)Config(配置對(duì)象)
8)Page(頁(yè)面對(duì)象)
9)Exception(異常對(duì)象)
12、request對(duì)象的方法:
1)setAttribute(String name ,Object)設(shè)置name的屬性值
2)getAttribute(String name )獲取name的屬性值
3)getParameter(String name )獲取用戶提交的數(shù)據(jù),name與表單的name對(duì)應(yīng)一致
4)getSession()用來(lái)獲取與請(qǐng)求相關(guān)的會(huì)話
13、JSP中的動(dòng)作:
1)JSP:include 用來(lái)頁(yè)面請(qǐng)求時(shí)引進(jìn)一個(gè)文件
2)Jsp:useBean 用來(lái)實(shí)例化一個(gè)javabean
3)Jsp:setProperty 用來(lái)設(shè)置已經(jīng)實(shí)例化的bean對(duì)象的屬性
4)Jsp:getProperty 用來(lái)獲取已經(jīng)實(shí)例化的bean對(duì)象的屬性
5)Jsp:foward 用來(lái)將請(qǐng)求跳轉(zhuǎn)到另外一個(gè)頁(yè)面
14、JSP中include指令和include動(dòng)作
指令:<% @include file =”test.jsp “%>
動(dòng)作:
15、會(huì)話跟蹤技術(shù):
對(duì)同一個(gè)用戶對(duì)服務(wù)器的連續(xù)請(qǐng)求和接收響應(yīng)進(jìn)行監(jiān)視。
1)page一個(gè)頁(yè)面
2)Request一個(gè)請(qǐng)求
3)Session 一個(gè)用戶體驗(yàn)
4)Application 整個(gè)Web應(yīng)用程序
16、字符串編碼:GBK 、UTF-8
17、什么是Ajar
異步j(luò)s與XML。
結(jié)合了java技術(shù)、js技術(shù)、xml技術(shù)。 客戶端技術(shù)
功能:在不刷新頁(yè)面的情況下通過(guò)與服務(wù)器進(jìn)行少量的數(shù)據(jù)交互來(lái)提高頁(yè)面的交互性,減少響應(yīng)時(shí)間,改善用戶體驗(yàn)
18、cookie和session的區(qū)別:
Session:指用來(lái)在客戶端與服務(wù)器端之間保持狀態(tài)的解決方案以及存儲(chǔ)結(jié)構(gòu)。
Cookie:由Web服務(wù)器保存在用戶瀏覽器上的小文件。
19、web服務(wù)器:接收來(lái)自于客戶端的請(qǐng)求,然后把對(duì)請(qǐng)求的處理結(jié)果反饋個(gè)客戶端
兩大web服務(wù)器:IIS Apache。
20、web容器:TomcatJBoss
負(fù)責(zé)給servlet提供http請(qǐng)求和響應(yīng)對(duì)象,調(diào)用doGet()過(guò)doPost()方法來(lái)處理用戶請(qǐng)求。
21、EJB的類(lèi)別:
1)session Bean(會(huì)話Bean)實(shí)現(xiàn)服務(wù)器端的業(yè)務(wù)邏輯,協(xié)調(diào)Bean之間的交互
2)Entity Bean(實(shí)體Bean)資料組件 代表數(shù)據(jù)庫(kù)中的記錄
3)Message Bean(消息驅(qū)動(dòng) Bean)處理異步消息,一般不是由用戶來(lái)調(diào)用的
22、EJB與Javabean的異同:
1)EJB:主要用于服務(wù)器端的開(kāi)發(fā),Javabean主要用在客戶端的開(kāi)發(fā)。
2)EJB組件可以部署在EJB容器中,不直接訪問(wèn)組件,而是通過(guò)容器訪問(wèn),javabean不可部署
3)EJB是分布式對(duì)象,可以被遠(yuǎn)程調(diào)用,javabean不是,只能在內(nèi)部被訪問(wèn)
23、EJB的角色:
1)Enterprise Bean Provider(企業(yè)級(jí)組件開(kāi)發(fā)者)
2)Application Assembler(應(yīng)用組合者)
3)EJB Deployer(EJB部署者)
4)EJB Sever Provider(EJB服務(wù)器提供者)
5)EJB Container Provider(EJV容器提供者)
6)System Administrator(系統(tǒng)管理員)
24、數(shù)據(jù)庫(kù)連接池的工作機(jī)制:
原因:
1)建立數(shù)據(jù)庫(kù)是非常耗時(shí)的操作
2)數(shù)據(jù)庫(kù)連接個(gè)數(shù)是有限的
數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配 管理 釋放數(shù)據(jù)庫(kù)連接。當(dāng)客戶需要訪問(wèn)數(shù)據(jù)庫(kù)是,就可以直接從池中獲取數(shù)據(jù)庫(kù)的連接,而不用去創(chuàng)建連接,同時(shí)標(biāo)志為忙狀態(tài)。
25、JAVAEE開(kāi)發(fā)的調(diào)優(yōu)方法:
1)優(yōu)化設(shè)計(jì)
2)盡可能使用數(shù)據(jù)庫(kù)連接
3)使用框架
4)優(yōu)化I/O
5)優(yōu)化查詢(xún)
26、struts框架的優(yōu)點(diǎn):
1)實(shí)現(xiàn)表現(xiàn)和邏輯的分離
2)提供頁(yè)面導(dǎo)航功能
3)提供表單驗(yàn)證
4)提供數(shù)據(jù)庫(kù)連接池
5)提供了異常處理機(jī)制
6)支持國(guó)際化
27、數(shù)據(jù)驗(yàn)證分為:
1)表單驗(yàn)證
2)業(yè)務(wù)邏輯驗(yàn)證
28、國(guó)際化:
程序在不修改內(nèi)部代碼的情況下,根據(jù)不同地區(qū)顯示相應(yīng)的界面
29、什么事控制反轉(zhuǎn):
也稱(chēng)依賴(lài)注入,一種降低對(duì)象之間耦合關(guān)系的設(shè)計(jì)思想。
使上層不仔依賴(lài)于下層的接口,調(diào)用者(子)決定被調(diào)用者(父)。通過(guò)注入一個(gè)實(shí)例化的對(duì)象來(lái)實(shí)現(xiàn)解耦和目的。
30、Spring框架
提供了對(duì)輕量級(jí)loc的良好支持,也提供對(duì)AOP技術(shù)的非常好的封裝。
31、Hibernate框架,持久層框架
實(shí)現(xiàn)Java對(duì)象與關(guān)系數(shù)據(jù)庫(kù)記錄的映射,簡(jiǎn)化開(kāi)發(fā)人員訪問(wèn)數(shù)據(jù)庫(kù)的流程,提高軟件開(kāi)發(fā)的效率
任何使用到JDBC的都可以使用Hibernata
提高性能方法:
1)延遲加載
2)緩存技術(shù)
3)優(yōu)化查詢(xún)語(yǔ)句
32、實(shí)現(xiàn)分頁(yè):
1)Hibernate自帶的分頁(yè)機(jī)制
2)用SQL語(yǔ)句實(shí)現(xiàn),使用limit關(guān)鍵字
33、SSH:
struts實(shí)現(xiàn)視圖部分
Hibernate實(shí)現(xiàn)模型部分
Spring實(shí)現(xiàn)業(yè)務(wù)部分
采用SSH框架,不僅能實(shí)現(xiàn)視圖、控制器與模型的徹底分離,而且還能實(shí)現(xiàn)業(yè)務(wù)邏輯與數(shù)據(jù)持久層的分離
總結(jié)
以上所述就是本文關(guān)于Java編程語(yǔ)言的基礎(chǔ)知識(shí)匯總的全部?jī)?nèi)容,雖不至于詳細(xì),但還是比較全面的,希望對(duì)大家能有所幫助。
- Java正則表達(dá)式入門(mén)基礎(chǔ)篇(新手必看)
- Java語(yǔ)法基礎(chǔ)之函數(shù)的使用說(shuō)明
- 經(jīng)典的Java面試題及回答集錦(基礎(chǔ)篇)
- Java 正則表達(dá)式入門(mén)詳解(基礎(chǔ)進(jìn)階)
- java基礎(chǔ)之標(biāo)簽、按鈕和按鈕事件簡(jiǎn)介
- java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)
- Java語(yǔ)法基礎(chǔ)之循環(huán)結(jié)構(gòu)語(yǔ)句詳解
- Java中一些基礎(chǔ)概念的使用詳解
- JAVA基礎(chǔ)之一些不為人知的那些秘密
相關(guān)文章
Delegate IDE build/run actions to maven 配置會(huì)影響程序運(yùn)行嗎?
這篇文章主要介紹了Delegate IDE build/run actions to maven 配置會(huì)影響程序運(yùn)行嗎,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java基本數(shù)據(jù)類(lèi)型與對(duì)應(yīng)的包裝類(lèi)(動(dòng)力節(jié)點(diǎn)java學(xué)院整理)
Java是面向?qū)ο蟮木幊陶Z(yǔ)言,包裝類(lèi)的出現(xiàn)更好的體現(xiàn)這一思想,Java語(yǔ)言提供了八種基本類(lèi)型。六種數(shù)字類(lèi)型(四個(gè)整數(shù)型,兩個(gè)浮點(diǎn)型),一種字符類(lèi)型,還有一種布爾型。 下面通過(guò)本文給大家詳細(xì)介紹,感興趣的朋友一起學(xué)習(xí)吧2017-04-04idea啟動(dòng)與jar包啟動(dòng)中使用resource資源文件路徑的問(wèn)題
這篇文章主要介紹了idea啟動(dòng)與jar包啟動(dòng)中使用resource資源文件路徑的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07SpringBoot基于自定義注解實(shí)現(xiàn)切面編程
這篇文章主要介紹了SpringBoot基于自定義注解實(shí)現(xiàn)切面編程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11關(guān)于Spring Boot WebSocket整合以及nginx配置詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot WebSocket整合以及nginx配置的相關(guān)資料,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09解析mybatis-plus中的resultMap簡(jiǎn)單使用
mybatis-plus也只是聽(tīng)過(guò),可是終究沒(méi)有使用過(guò)。于是自己花幾天晚上的時(shí)間研究mybatis-plus的使用。這篇文章主要介紹了mybatis-plus的resultMap簡(jiǎn)單使用,需要的朋友可以參考下2021-11-11Spring Cloud @EnableFeignClients注解的屬性字段basePacka詳解
這篇文章主要介紹了Spring Cloud @EnableFeignClients注解的屬性字段basePacka詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09SpringBoot 如何實(shí)現(xiàn)自定義Redis序列化
這篇文章主要介紹了SpringBoot 如何實(shí)現(xiàn)自定義Redis序列化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10