版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
l.web中的forward和redirect的區(qū)別?(
前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),
瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地
址。所以,前者更加高效,在前者可以滿足需要時(shí),盡量使用forward。方法,并且,這樣也有助于隱藏實(shí)
際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用scndRedirect。方法。
2.xml在解釋的時(shí)候DOM和SAX協(xié)議的區(qū)別和含義?
DOM:解決大型文獻(xiàn)時(shí)其性能下降的非常厲害。這個(gè)問題是由DOM的樹結(jié)構(gòu)所導(dǎo)致的,這種結(jié)構(gòu)占用的內(nèi)
存較多,并且DOM必須在解析文獻(xiàn)之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問
SAX:不現(xiàn)于DOM.SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文獻(xiàn),不需要一次所有裝載整
個(gè)文獻(xiàn)。當(dāng)碰到像文獻(xiàn)開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過在其
回調(diào)事件中寫入解決代碼來解決XML文獻(xiàn),適合對(duì)XML的順序訪問
3說明JNDI、JMS、JTA、RMI的意思?
JNDI(JavaNamingandDirectoryInterface)是一個(gè)應(yīng)用程序設(shè)計(jì)的API,為開發(fā)人員
提供了查找和訪問各種命名和目錄服務(wù)的通用、統(tǒng)一的接口,類似JDBC都是構(gòu)建在
抽象層上。
JMS(JavaMessagingService)是Java平臺(tái)上有關(guān)面向消息中間件的技術(shù)規(guī)范,翻譯為
Java消息服務(wù)。JMS支持點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱兩種消息模型。
JTA(JavaTransactionAPI)為J2EE平臺(tái)提供了分布式事務(wù)服務(wù)。要用JTA進(jìn)行事務(wù)界
定,應(yīng)用程序要調(diào)用javax.transaction.UserTransaction接口中的方法.
RMI是Java的一組擁護(hù)開發(fā)分布式應(yīng)用程序的APLRMI使用Java語(yǔ)言接口定義了
遠(yuǎn)程對(duì)象,它集合了Java序列化和Java遠(yuǎn)程方法協(xié)議(JavaRemoteMethodProt
ocol)o它大大增強(qiáng)了Java開發(fā)分布式應(yīng)用的能力
4.單子模式
PublicclassSignle{
PrivateSignle(){
PirvatestaticSignlesignle=newSignle();
PublicstaticSignlegets(){
Retrunsignle;
publicclassMyBean{
privatestaticMyBeaninstance=null;
privateMyBean(){
//dosomething
)
publicstaticsynchronizedMyBeangetlnstance(){
if(instance==null){
instance=newMyBean();
)
returninstance;
)
你是說單例模式是吧,這個(gè)單例模式是延遲加載的模式.尚有一種就是即時(shí)加載,不需要判斷是否有實(shí)例存在,
先自己new出一個(gè)實(shí)例.
)
5數(shù)據(jù)庫(kù)中l(wèi)eftjoin的意思,和在什么場(chǎng)合中應(yīng)用?
LEFTJOIN操作用于在任何的FROM子句中,組合來源表的記錄。使用LEFTJOIN運(yùn)算來創(chuàng)建一個(gè)左邊
外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(gè)(左邊)開始的兩個(gè)表中的所有記錄,即使在第二個(gè)(右邊)
表中并沒有相符值的記錄。
6ejb中的sessionbean和entitybean的區(qū)別和含義?
SessionBean在J2EE應(yīng)用程序中被用來完畢一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫(kù)、調(diào)
用其他EJB組件。EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。
對(duì)于客戶機(jī),SessionBean是一種非持久性對(duì)象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)營(yíng)的業(yè)務(wù)邏輯。
對(duì)于客戶機(jī),EntityBean是一種持久性對(duì)象,它代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對(duì)
象視圖,或是一個(gè)由現(xiàn)有公司應(yīng)用程序?qū)崿F(xiàn)的實(shí)體。
7抽象類和接口的區(qū)別
1:一個(gè)類可以實(shí)現(xiàn)任意多的接口,但是最多只能對(duì)一個(gè)抽象類進(jìn)行子類化。
2:一個(gè)抽象類可以涉及非抽象方法,而一個(gè)接口的所有方法在效果上都是抽象的。
3:一個(gè)抽象類可以申明并使用變量,而一個(gè)接口不行。
4:一個(gè)抽象類中的方法的訪問修飾符可以使public,internal,protected,protectedinternal.private,而接口成員
的訪問修飾符在默認(rèn)情況下都是public,并且,在申明接口成員時(shí),不允許使用訪問修飾符(甚至不能使
用public)?
5:一個(gè)抽象類可以定義構(gòu)造函數(shù),而一個(gè)接口不行。
8對(duì)象序列化的含義
Java序列化技術(shù)可以使你將一個(gè)對(duì)象的狀態(tài)寫入一個(gè)Byte流里,并且可以從其它地方
把該Byte流里的數(shù)據(jù)讀出來。重新構(gòu)造一個(gè)相同的對(duì)象。這種機(jī)制允許你將對(duì)象通過網(wǎng)絡(luò)
進(jìn)行傳播,并可以隨時(shí)把對(duì)象持久化到數(shù)據(jù)庫(kù)、文獻(xiàn)等系統(tǒng)里。Java的序列化機(jī)制是RMI、
EJB、JNNI等技術(shù)的技術(shù)基礎(chǔ)。
9數(shù)據(jù)庫(kù)中的鎖涉及什么?
基本的封鎖類型有兩種:排它鎖(X鎖)和共享鎖(S鎖).
所謂X鎖,是事務(wù)T對(duì)數(shù)據(jù)A加上X鎖時(shí),只允許事務(wù)T讀取和修改數(shù)據(jù)A,...
所謂S鎖,是事務(wù)T對(duì)數(shù)據(jù)A加上S鎖時(shí),其他事務(wù)只能再對(duì)數(shù)據(jù)A加S鎖,而不能加X鎖,
直到T釋放A上的S鎖若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加了S鎖,則T就可以對(duì)A進(jìn)行讀取,但不能
進(jìn)行更新(S鎖因此又稱為讀鎖),在T釋放A上的S鎖以前,其他事務(wù)可以再對(duì)A加S鎖,但不
能加X鎖,從而可以讀取A,但不能更新A.
lOjsp和serverlet的區(qū)別
(1).簡(jiǎn)樸的來說應(yīng)1就是具有Javn代碼的html,而servlet是具有html的Java代碼;
(2)』里最終也是被解釋為servlet并編譯再執(zhí)行,Jsp但是是servlet的另一種編寫方式;
(3).Jsp擅長(zhǎng)表達(dá),servlet擅長(zhǎng)數(shù)據(jù)解決,在MVC三層結(jié)構(gòu)中,應(yīng)£_負(fù)責(zé)V(視圖),servlet
負(fù)責(zé)C(控制),各有優(yōu)勢(shì),各司其職;
11.oracle中數(shù)據(jù)表的交集怎么表達(dá)
第一種方法:運(yùn)用操作符intersect
intersect操作符用來合并兩個(gè)查詢,返回兩個(gè)查詢中都存在的記錄,即返回兩個(gè)查詢結(jié)果的交集,前
提是兩個(gè)查詢的列的數(shù)量和數(shù)據(jù)類型必須完全相同。
舉例說明:
表A的數(shù)據(jù)結(jié)構(gòu):
中文名稱字段名類型長(zhǎng)度
學(xué)號(hào)codeC4
姓名nameC8
表B的數(shù)據(jù)結(jié)構(gòu):
中文名稱字段名類型長(zhǎng)度
學(xué)號(hào)Student_codeC4
姓名Student_nameC8
分?jǐn)?shù)scoreN3
表A的數(shù)據(jù)為:
('1101'韓甲'),C1102','丁乙')
表B的數(shù)據(jù)為:
('1101'韓甲99),('1102','丁乙89),('1103',‘徐靜',94)
在oracle中運(yùn)營(yíng)以下查詢,圖1顯示了這個(gè)查詢的結(jié)果:
SQL>selectcode,namefromA
intersect
selectstudent_code,student_namefromB;
圖1使用intersect操作符查詢的結(jié)果
第二種方法:in子句
in子句可以在子查詢中為where子句計(jì)算所得的值創(chuàng)建一個(gè)列表。這種方法與前一種方法有所不同的是,前一
種方法比較多列但只使用一個(gè)intersect就行了,而一個(gè)in子句用來比較兩個(gè)子查詢的一列,比較幾列就要使用幾
個(gè)in子句。下面舉例說明如何取得兩個(gè)查詢的交集。
仍以A和B兩張數(shù)據(jù)表為例,在oracle中運(yùn)營(yíng)以下杳詢,圖2顯示了這個(gè)查詢的結(jié)果:
SQL>selectcode,namefromA
whereA.codein
(selectstudent_codefromB)
andA.namein
(selectstudent_namefromB)
orderbyA.code;
查詢結(jié)果如圖2所示。
圖2使用in子句查詢的結(jié)果
以上為筆者使用。racle7.3的體會(huì),如有不妥之處,請(qǐng)不吝賜教。
12jsp頁(yè)面中如何傳遞參數(shù)
(1)直接在URL請(qǐng)求后添加
(2)jsp:param
3)設(shè)立session和request
13jsp中的doget()和dopost()方法的作用?
這個(gè)兩個(gè)方法都是http協(xié)議的方法,doget用于傳輸數(shù)據(jù)量較小(密碼會(huì)泄露),dopost數(shù)據(jù)
量較大,
14什么是用例?如何擬定用例?
在不展現(xiàn)一個(gè)系統(tǒng)或子系統(tǒng)內(nèi)部結(jié)構(gòu)的情況下,對(duì)系統(tǒng)或子系統(tǒng)的某個(gè)連貫的功能單
元的定義和描述。
一個(gè)用例可以看作是系統(tǒng)的一個(gè)功能,例如增長(zhǎng)用戶,增長(zhǎng)角色,查詢一個(gè)具體的一個(gè)事物,在Ejb的設(shè)計(jì)中,
一個(gè)usecase跟Sessionbean的?個(gè)方法是相應(yīng)的(使用的sessionfasade模式),你說的基礎(chǔ)數(shù)據(jù)管
理,我會(huì)把它解決成為一個(gè)抽象用例,由于我認(rèn)為基礎(chǔ)數(shù)據(jù)這個(gè)概念非常的抽象,什么是真正的基礎(chǔ)數(shù)據(jù)?例
如說一個(gè)系統(tǒng)中郵政編碼算是這個(gè)系統(tǒng)的基礎(chǔ)數(shù)據(jù),那么"郵政編碼修改”這個(gè)就應(yīng)當(dāng)算是用例了.
15活動(dòng)圖和時(shí)序圖的區(qū)別?
時(shí)序圖重要強(qiáng)調(diào)時(shí)間的順序
活動(dòng)圖重要強(qiáng)調(diào)空間上類的交互
16什么是策略模式?什么情況下使用?
策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來,并且使它們還可以互相替
換
Context(應(yīng)用場(chǎng)景):
1、需要使用ConcreteStrategy提供的算法。
2、內(nèi)部維護(hù)一個(gè)Strategy的實(shí)例。
3、負(fù)責(zé)動(dòng)態(tài)設(shè)立運(yùn)營(yíng)時(shí)Strategy具體的實(shí)現(xiàn)算法。
4、負(fù)責(zé)跟Strategy之間的交互和數(shù)據(jù)傳遞。
17面向接口編程的好處
使用接口編程,易于程序擴(kuò)展,減少程序耦合性。
涉及結(jié)構(gòu)清楚,類之間通信簡(jiǎn)樸易懂,擴(kuò)展性好,提高復(fù)用性等等。
18事物
事務(wù)就是一系列的操作,這些操作完畢一項(xiàng)任務(wù).只要這些操作里有一個(gè)操作沒有成功,事務(wù)
就操作失敗,發(fā)生回滾事件.即撤消前面的操作,這樣可以保證數(shù)據(jù)的一致性.并且可以把操作
暫時(shí)放在緩存里,等所有操作都成功有提交數(shù)據(jù)庫(kù),這樣保證費(fèi)時(shí)的操作都是有效操作.
1簡(jiǎn)答題
3)說明jndi、jms、jta>rmi的意思?
web容器:給處在其中的應(yīng)用程序組件(JSP,SERVLET)提供一個(gè)環(huán)境,使JSRSERVLET直接更容器中
的環(huán)境變量接口交互,不必關(guān)注其它系統(tǒng)問題。重要有WEB服務(wù)器來實(shí)現(xiàn)。例如:
TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEBAPPLICATION
標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。
EJB容器:Enterprisejavabean容器。更具有行業(yè)領(lǐng)域特色。他提供應(yīng)運(yùn)營(yíng)在其中的組件EJB各種管理功
能。只要滿足J2EE規(guī)范的EJB放入該容器,立即就會(huì)被容器進(jìn)行高效率的管理。并且可以通過現(xiàn)成的接
口來獲得系統(tǒng)級(jí)別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。
JNDI:(JavaNaming&DirectoryInterface)JAVA命名目錄服務(wù)。重要提供的功能是:提供一個(gè)目錄系統(tǒng),
讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。
JMS:(JavaMessageService)JAVA消息服務(wù)。重要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。涉及點(diǎn)對(duì)點(diǎn)和廣播。
JTA:(JavaTransactionAPDJAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口
即可。
JAF:(JavaActionFrameWork)JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開發(fā)者通過各種部
署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略。
RM1/II0P:(RemoteMethodInvocation/internet對(duì)象請(qǐng)求中介協(xié)議)他們重要用于通過遠(yuǎn)程調(diào)用服務(wù)。例如,
遠(yuǎn)程有一臺(tái)計(jì)算機(jī)上運(yùn)營(yíng)一個(gè)程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對(duì)其直接調(diào)用。
當(dāng)然這是要通過一定的規(guī)范才干在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RM1是JAVA特有的。
4)數(shù)據(jù)庫(kù)中l(wèi)eftjoin的意思,和在什么場(chǎng)合中應(yīng)用?
簡(jiǎn)樸說左表全都顯示右表也許為空
應(yīng)用場(chǎng)合就是當(dāng)左表的數(shù)據(jù)全要右表有就顯示沒有就不顯
這個(gè)比較細(xì)微,我盡量回答。
總的來說,2種寫法,在oracle里,效率和性能區(qū)別不大。
假如非要比較的話,大約有以下區(qū)別:
(+)和leftjoin,在檢索顯示的字段很少的時(shí)候,或者干脆就是檢索count(*)的時(shí)候,在效率和性能上,是
同樣,甚至cpucost都完全同樣;
但是在檢索顯示的字段比較多得時(shí)候,第一次執(zhí)行,leftjoin比(+)的效率高;當(dāng)然,執(zhí)行第二次之后,
由于數(shù)據(jù)已經(jīng)到了緩存,區(qū)別也不明顯了,基本是一致的。
6)ejb中的sessionbean和entitybean的區(qū)別和含義?
EntityBean:重要是指可存儲(chǔ)的物件,比如:學(xué)生,學(xué)校,公司,職工等等。。。必須是Serializable
SessionBean:重要是指商業(yè)邏輯物件,比如:購(gòu)物,執(zhí)行某功能etc.表達(dá)的是一種過程
SessionBcan又分為:Stateless和Stateful區(qū)別就是,Stateful有狀態(tài)記憶,Stateless無(wú)狀態(tài)記憶
Message-DrivenBean:重要是用于做一些JMSmessage的解決。這?點(diǎn)可以從Message-DrivenBean的構(gòu)架
里看到:當(dāng)客戶發(fā)送一個(gè)message到JMS,Container就會(huì)從BeansPool中把注冊(cè)了的Message-Driven
Bean調(diào)出來并且后臺(tái)運(yùn)營(yíng)...
我這里是概述,建議你最佳找一本EJB的書來讀…最新的EJB的版本是3.0
7)抽象類和接口的區(qū)別(java經(jīng)典筆試題中也有)?
8)對(duì)象序列化的含義?
1、序列化是干什么的?
簡(jiǎn)樸說就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài),并且可以把保存的對(duì)象狀態(tài)再讀出來。雖然你可以用
你自己的各種各樣的方法來保存ObjectStates,但是Java給你提供?種應(yīng)當(dāng)比你自己好的保存對(duì)象狀態(tài)的
機(jī)制,那就是序列化。
2、什么情況下需要序列化
a)當(dāng)你想把的內(nèi)存中的對(duì)象保存到一個(gè)文獻(xiàn)中或者數(shù)據(jù)庫(kù)中時(shí)候;
b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;
當(dāng)你想通過RMI傳輸對(duì)象的時(shí)候;
3、當(dāng)對(duì)一個(gè)對(duì)象實(shí)現(xiàn)序列化時(shí),究竟發(fā)生了什么?
在沒有序列化前,每個(gè)保存在堆(Heap)中的對(duì)象都有相應(yīng)的狀態(tài)(state),即實(shí)例變量(instanceariable)
比如:
FoomyFoo=newFoo();
myFoo.setWidth(37);
myFoo.setHeight(70);
當(dāng)通過下面的代碼序列化之后,MyFoo對(duì)象中的width和Height實(shí)例變量的值(37,7(0都被保存到foo.ser
文獻(xiàn)中,這樣以后又可以把它從文獻(xiàn)中讀出來,重新在堆中創(chuàng)建本來的對(duì)象。當(dāng)然保存時(shí)候不僅僅是保存
對(duì)象的實(shí)例變量的值,JVM還要保存一些小量信息,比如類的類型等以便恢復(fù)本來的對(duì)象。
FileOutputStreamfs=newFileOutputStream("fbo.serH);
ObjectOutputStreamos=newObjectOutputStream(fs);
os.writeObject(myFoo);
4、實(shí)現(xiàn)序列化(保存到一個(gè)文獻(xiàn))的環(huán)節(jié)
a)MakeaFileOutputStream
java代碼
FileOutputStreamfs=newFileOutputStream("foo.serH);
b)MakeaObjectOutputStream
java代碼
ObjectOutputStreamos=newObjectOutputStream(fs);
c)writetheobject
java代碼
os.writeObject(myObjectl);
os.writeObject(myObject2);
os.writeObject(myObject3);
d)closetheObjectOutpulStreain
java代碼
os.close();
5、舉例說明
java代碼
importjava.io.*;
publicclassBoximplementsSerializable
(
privateintwidth;
privateintheight;
publicvoidset\Vidth(intwidth){
this.width=width;
)
publicvoidsetHcight(intheight))
this.height=height;
)
publicstaticvoidmain(String[]args){
BoxmyBox=newBox();
myBox.setWidth(50);
myBox.setHeight(30);
try(
FileOulpulStreamfs=newFileOutputStreamC^o.ser");
ObjectOutputStreamos=newObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exceptioncx)(
ex.printStackTrace();
)
)
)
6、相關(guān)注意事項(xiàng)
a)當(dāng)一個(gè)父類實(shí)現(xiàn)序列化,子類自動(dòng)實(shí)現(xiàn)序列化,不需要顯式實(shí)現(xiàn)Serializable接口;
b)當(dāng)一個(gè)對(duì)象的實(shí)例變量引用其他對(duì)象,序列化該對(duì)象時(shí)也把引用對(duì)象進(jìn)行序列化;
c)并非所有的對(duì)象都可以序列化,,至于為什么不可以,有很多因素了,比如:
1.安全面的因素,比如一個(gè)對(duì)象擁有private,public等f(wàn)ield,對(duì)于一個(gè)要傳輸?shù)膶?duì)象,比如寫到文獻(xiàn),或
者進(jìn)行rmi傳輸?shù)鹊?,在序列化進(jìn)行傳輸?shù)倪^程中,這個(gè)對(duì)象的private等域是不受保護(hù)的。
2.資源分派方面的因素,比如socket,thread類,假如可以序列化,進(jìn)行傳輸或者保存,也無(wú)法對(duì)他們
進(jìn)行重新的資源分配,并且,也是沒有必要這樣實(shí)現(xiàn)。
2選擇題
說明:不是太難所以,我只說下大約考試的內(nèi)容。
1)抽象類可以是final、private嘛?
java類一旦被聲明為abstract(抽象類),必須要繼承或者匿名(其實(shí)匿名也是種繼承)才干使用。
而final則是讓該類無(wú)法被繼承,所以final是必然不能和abstract同時(shí)聲明的
但是private呢?
一個(gè)類被聲明為private的時(shí)候,它當(dāng)然是內(nèi)部類,內(nèi)部類是可以被它的外部類訪問到的,所以,可以繼承,
private和abstract不沖突。
2)異常能出來的情況有什么?
3)finally塊的運(yùn)用,就是出一道程序,然后讓你寫出輸出的結(jié)果來,在finally塊中的printin("")不管
如何總是要輸出出來的。
4)jsp中的doget。和dopost()方法的作用?
第一:doGct方法是servlet提交報(bào)頭數(shù)據(jù)之類的用的,doGet方法提交表單的時(shí)候會(huì)在url后邊顯示提交的
內(nèi)容,正是由于這樣所以我們一般對(duì)于需要保密的的信息(比如密碼等)不用這樣的提交方式;并且doGct
方法只能提交256個(gè)字符,這就指出了它的使用環(huán)境,對(duì)于我們傳遞短的文字信息的時(shí)候可以用它,但是
當(dāng)我們傳遞的是比較大的媒體文獻(xiàn)的時(shí)候就不可以使用它了。
doPost則沒有這個(gè)限制。通常我們使用的都是doPost方法,你只要在servlet中讓這兩個(gè)方法互相調(diào)用就行
了,例如在doGet方法中這樣寫
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsScrvletException,lOExccption{
doPost(request,response);
)
再把業(yè)務(wù)邏輯直接寫在doPost方法中。servlet碰至UdoGct方法調(diào)用直接就會(huì)去調(diào)用doPost由于他們的參數(shù)
都同樣。并且doGet方法解決中文問題很困難,要寫過濾器之類的。
第二:不管是post還是get方法提交過來的連接,都會(huì)在service中解決,然后,由service來交由相應(yīng)的
doPost或doGct方法解決,假如你重寫了service方法,就不會(huì)再解決doPost或doGet了。不管是post還是
get方法提交過來的連接,都會(huì)在service中解決,然后,由service來交由相應(yīng)的doPost或doGet方法解決,
假如你重寫了service方法,就不會(huì)再解決doPost或doGct了。
5)數(shù)據(jù)庫(kù)中的鎖涉及什么?
數(shù)據(jù)庫(kù)是一個(gè)多用戶使用的共享資源。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫(kù)中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)
存取同一數(shù)據(jù)的情況。若對(duì)并發(fā)操作不加控制就也許會(huì)讀取和存儲(chǔ)不對(duì)的的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。
加鎖是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并發(fā)控制的一個(gè)非常重要的技術(shù)。當(dāng)事務(wù)在對(duì)某個(gè)數(shù)據(jù)對(duì)象進(jìn)行操作前,先向系統(tǒng)發(fā)出
請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對(duì)
此數(shù)據(jù)對(duì)象進(jìn)行更新操作。
在數(shù)據(jù)庫(kù)中有兩種基本的鎖類型:排它鎖(ExclusiveLocks,即X鎖)和共享鎖(ShareLocks,即S鎖)。
當(dāng)數(shù)據(jù)對(duì)象被加上排它鎖時(shí),其他的事務(wù)不能對(duì)它讀取和修改。加了共享鎖的數(shù)據(jù)對(duì)象可以被其他事務(wù)讀
取,但不能修改。數(shù)據(jù)庫(kù)運(yùn)用這兩種基本的鎖類型來對(duì)數(shù)據(jù)庫(kù)的事務(wù)進(jìn)行并發(fā)控制。
根據(jù)保護(hù)的對(duì)象不同,Oracle數(shù)據(jù)庫(kù)鎖可以分為以下幾大類:
DML鎖(datalocks,數(shù)據(jù)鎖),用于保護(hù)數(shù)據(jù)的完整性;
DDL鎖(dictionarylocks,字典鎖),用于保護(hù)數(shù)據(jù)庫(kù)對(duì)象的結(jié)構(gòu),如表、索引等的結(jié)構(gòu)定義;
內(nèi)部鎖和閂(internallocksandlatches),保護(hù)數(shù)據(jù)庫(kù)的內(nèi)部結(jié)構(gòu),應(yīng)用于SGA;
在我們實(shí)際應(yīng)用開發(fā)中涉及較多的是DML鎖,其他兩種的話DBA會(huì)更加關(guān)心點(diǎn);
DML鎖的目的在于保證并發(fā)情況下的數(shù)據(jù)完整性,重要涉及TM鎖和TX鎖,其中TM鎖稱為表級(jí)鎖,TX
鎖稱為事務(wù)鎖或行級(jí)鎖。
當(dāng)Oracle執(zhí)行DML語(yǔ)句時(shí)、系統(tǒng)自動(dòng)在所要操作的表上申請(qǐng)TM類型的鎖。當(dāng)TM鎖獲得后,系統(tǒng)再自
動(dòng)申請(qǐng)TX類型的鎖,并將實(shí)際鎖定的數(shù)據(jù)行的鎖標(biāo)志位進(jìn)行置位。這樣在事務(wù)加鎖前檢查TX鎖相容性
時(shí)就不用再逐行檢查鎖標(biāo)志,而只需檢查TM鎖模式的相容性即可,大大提高了系統(tǒng)的效率。TM鎖涉及
了SS、SX、S、X等多種模式,在數(shù)據(jù)庫(kù)中用0—6來表達(dá)。不同的SQL操作產(chǎn)生不同類型的TM鎖。如
下圖所示:
值鎖模式鎖描述SQL
0NONE
1NULL空SELECT
2SS(ROW-S)行級(jí)共享鎖
其他對(duì)象只能查詢這些數(shù)據(jù)行SELECTFORUPDATE.LOCKFORUPDATE,
LOCKROWSHARE
3SX(ROW-X)行級(jí)排它鎖
在提交前不允許做DML操作INSERT、UPDATE、DELETE>
LOCKROWSHARE
4S(SHARE)共享鎖CREATEINDEX>LOCKSHARE
5SSX(SZROW-X)共享行級(jí)排它鎖LOCKSHAREROWEXCLUSIVE
6X(eXclusive)排它鎖ALTERTABLE.DROPTABLE、DROPINDEX>
TRUNCATETABLE,LOCKEXCLUSIVE
在數(shù)據(jù)行上只有X鎖(排他鎖)。在Oracle數(shù)據(jù)庫(kù)中,當(dāng)一個(gè)事務(wù)初次發(fā)起一個(gè)DML語(yǔ)句時(shí)就獲得一個(gè)
TX鎖,該鎖保持到事務(wù)被提交或【可滾。當(dāng)兩個(gè)或多個(gè)會(huì)話在表的同一條記錄上執(zhí)行DML語(yǔ)句時(shí),第一個(gè)
會(huì)話在該條記錄上加鎖,其他的會(huì)話處在等待狀態(tài)。當(dāng)?shù)谝粋€(gè)會(huì)話提交后,TX鎖被釋放,其他會(huì)話才可以
加鎖。
在大約了解。racle的鎖機(jī)制之后,我們來解決幾個(gè)基本的問題:
1.UPDATE/DELETE操作會(huì)將RS鎖定,直至操作被COMMIT或者ROLLBACK;
若操作未COMMIT之前其他session對(duì)同樣的RS做變更操作,則操作會(huì)被hold,直至前session的
UPDATE/DELETE操作被COMMIT:
2.session內(nèi)外SELECT的RS范圍
前提:INSERT、UPDATE操作未COMMIT之前進(jìn)行SELECT;
若在同一session內(nèi),SELECT出來的RS會(huì)涉及之前INSERT、UPDATE影響的記錄;
若不在同一session內(nèi),SELECT出來的RS不會(huì)涉及未被COMMIT的記錄;
3.SELECT....FORUPDATE|OFcols]|NOWAIT/WAIT]|SKIPLOCKED]
OFcols:只鎖定指定字段所在表的RS,而沒有指定的表則不會(huì)鎖定,只會(huì)在多表聯(lián)合查詢時(shí)出現(xiàn);
NOWAIT:語(yǔ)句不會(huì)hold,而是直接返I可錯(cuò)誤ORA-00054:resourcebusyandacquirewithNOWAITspecified;
WAITN:語(yǔ)句被holdN秒,之后返回錯(cuò)誤ORA-30006:resourcebusy;acquirewithWAITtimeoutexpired;
SKIPLOCKED:不提醒錯(cuò)誤,而是直接返回Inorowsselected;
以上幾個(gè)選項(xiàng)可以聯(lián)合使用的,比較推薦的有:
SELECT....FORUPDATENOWAIT:對(duì)同一RS執(zhí)行該SQL時(shí),直接返回錯(cuò)誤:
SELECT....FORUPDATENOWAITSKIPLOCKED:對(duì)同一RS執(zhí)行該SQL時(shí),直接返回空行;
PS:當(dāng)RS被LOCK住之后,只對(duì)同樣請(qǐng)求LOCK的語(yǔ)句有效,對(duì)無(wú)需LOCK的SELECT語(yǔ)句并沒有任
何影響;
6)jsp和serverlet的區(qū)別或者是他們的關(guān)系?
一,Servlet是什么?
客戶機(jī)/服務(wù)器計(jì)算的發(fā)展。Java提供了一整套客戶機(jī)/服務(wù)器解決方案,在這個(gè)方案中,程序可以自動(dòng)地下
載到客戶端并執(zhí)行,這就是applet。但是它僅僅是問題的一半。問題的另一半就是Servlet。
servlet可以被認(rèn)為是服務(wù)器端的applet。servlet被Web服務(wù)器加載和執(zhí)行,就如同applet被瀏覽器加載和
執(zhí)行同樣。servlet從客戶端(通過Web服務(wù)器)接受請(qǐng)求,執(zhí)行某種作業(yè),然后返回結(jié)果。使用servlet的基
本流程如下:
?客戶端通過HTTP提出請(qǐng)求.
?Web服務(wù)器接受該請(qǐng)求并將其發(fā)給servlet.假如這個(gè)servlet尚未被加載,Web服務(wù)器將把它加載到Java
虛擬機(jī)并且執(zhí)行它。
?servlet將接受該HTTP請(qǐng)求并執(zhí)行某種解決。
?servlet將向Web服務(wù)器返回應(yīng)答。
?Web服務(wù)器將從servlet收到的應(yīng)答發(fā)送給客戶端。
由于servlet是在服務(wù)器上執(zhí)行,通常與applet相關(guān)的安全性的問題并不需實(shí)現(xiàn)。要注意的是Web瀏覽器并
不直接和servlet通信,servlet是由Web服務(wù)器加載和執(zhí)行的。
而servlet是用Java編寫的,所以它們一開始就是平臺(tái)無(wú)關(guān)的。這樣,Java編寫一次就可以在任何平臺(tái)運(yùn)營(yíng)
(writeonce,runanywhere)的承諾就同樣可以在服務(wù)器上實(shí)現(xiàn)了。servlet尚有?些CGI腳本所不具有的獨(dú)特
優(yōu)點(diǎn):(本人對(duì)CGI并不是十分了解,所以這些特點(diǎn)不能完全的體會(huì)到,這也是摘自論壇的貼子,請(qǐng)見諒)
servlet是持久的。servlet只需Web服務(wù)器加載一次,并且可以在不同請(qǐng)求之間保持服務(wù)(例如一次數(shù)據(jù)庫(kù)連
接)。與之相反,CGI腳本是短暫的、瞬態(tài)的。每一次對(duì)CGI腳本的請(qǐng)求,都會(huì)使Web服務(wù)器加載并執(zhí)行
該腳本。一旦這個(gè)CGI腳本運(yùn)營(yíng)結(jié)束,它就會(huì)被從內(nèi)存中清除,然后將結(jié)果返回到客戶端。CGI腳本的每
-次使用,都會(huì)導(dǎo)致程序初始化過程(例如連接數(shù)據(jù)庫(kù))的反復(fù)執(zhí)行。
servlet是與平臺(tái)無(wú)關(guān)的。如前所述,servlet是用Java編寫的,它自然也繼承/Java的平臺(tái)無(wú)關(guān)性。
servlet是可擴(kuò)展的。由于servlet是用Java編寫的,它就具有了Java所能帶來的所有優(yōu)點(diǎn)。Java是健壯的、
面向?qū)ο蟮木幊陶Z(yǔ)言,它很容易擴(kuò)展以適應(yīng)你的需求。servlet自然也具有了這些特性。
servlet是安全的。從外界調(diào)用一個(gè)servlet的惟一方法就是通過Web服務(wù)器。這提供了高水平的安全性保障,
特別是在你的Web服務(wù)器有防火墻保護(hù)的時(shí)候。
setvlet可以在多種多樣的客戶機(jī)上使用。由于servlet是用Java編寫的,所以你可以很方便地在HTML
中使用它們,就像你使用叩plet同樣。
那么,Servlet是如何執(zhí)行的?如何來寫一個(gè)Servlet,它的基本架構(gòu)是怎么樣的?
這些問題,將在后面部分給予介紹。
二.JSP與Servlet
現(xiàn)在已經(jīng)對(duì)Servlet有了大約的了解,現(xiàn)在我們就來說說JSP和Servlet的關(guān)系。
JSP是--種腳本語(yǔ)言,包裝了JavaServlet系統(tǒng)的界面,簡(jiǎn)化了Java和Servlet的使用難度,同時(shí)通過擴(kuò)展
JSP標(biāo)簽(TAG)提供了網(wǎng)頁(yè)動(dòng)態(tài)執(zhí)行的能力。盡管如此,JSP仍沒有超過Java和Servlet的范圍,不僅JSP
頁(yè)面上可以直接寫Java代碼,并且JSP是先被譯成Servlet之后才實(shí)際運(yùn)營(yíng)的。JSP在服務(wù)器上執(zhí)行,并將
執(zhí)行結(jié)果輸出到客戶端瀏覽器,我們可以說基本上與瀏覽器無(wú)關(guān)。它是與JavaScript不同的,JavaScript是
在客戶端的腳本語(yǔ)言,在客戶端執(zhí)行,與服務(wù)器無(wú)關(guān)。
那么JSP是什么?就是Servlet.
JSP與Servlet之間的重要差異在于,JSP提供了一套簡(jiǎn)樸的標(biāo)簽,和HTML融合的比較好,可以使不了解
Servlet的人可以做出動(dòng)態(tài)網(wǎng)頁(yè)來。對(duì)于Java語(yǔ)言不熟悉的人(比如像我),會(huì)覺得JSP開發(fā)比較方便。JSP修
改后可以立即看到結(jié)果,不需要手工編譯,JSP引擎會(huì)來做這些工作;而Servelt缺需要編譯,重新啟動(dòng)Servlet
引擎等一系列動(dòng)作。但是在JSP中,HTML與程序代碼混雜在一起,而Servlet卻不是這樣。也許大家比較
混亂了,那么Servlet又是什么?下面我們對(duì)JSP的運(yùn)營(yíng)來做一個(gè)簡(jiǎn)樸的介紹,告訴大家如何來執(zhí)行一個(gè)JSP
文獻(xiàn):
當(dāng)Web服務(wù)器(或Servlet引擎,應(yīng)用服務(wù)器)支持JSP引擎時(shí),JSP引擎會(huì)照著JSP的語(yǔ)法,將JSP文獻(xiàn)轉(zhuǎn)換
成Servlet代碼源文獻(xiàn),接著Servlet會(huì)被編譯成Java可執(zhí)行字節(jié)碼(bytecode),并以一般的Servlet方式載入
執(zhí)行
JSP語(yǔ)法簡(jiǎn)樸,可以方便的嵌入HTML之中,很容易加入動(dòng)態(tài)的部分,方便的輸出HTML。在Servlet中輸
出HTML缺需要調(diào)用特定的方法,對(duì)于引號(hào)之類的字符也要做特殊的解決,加在復(fù)雜的HTML頁(yè)面中作
為動(dòng)態(tài)部分,比起JSP來說是比較困難的。
除去了轉(zhuǎn)換和編譯階段,JSP和Servlel之間的區(qū)別實(shí)在是不大。
JSP引擎通常架構(gòu)在Servlet引擎之上,自身就是?個(gè)Servlet,把JSP文獻(xiàn)轉(zhuǎn)譯成Servlet源代碼,再調(diào)用Java
編譯器,編譯成Servlet。這也是JSP在第一次調(diào)用時(shí)速度比較慢的因素,在第一次編譯之后,JSP與Servlel
速度相同.下面我們來看看為什么他們?cè)诘谝淮尉幾g后再編譯的速度相同:
在整個(gè)運(yùn)營(yíng)過程中,JSP引擎會(huì)檢查編譯好的JSP(以Servlet形式存在)是否比原始的JSP文獻(xiàn)還新,假如是,
JSP引擎不會(huì)編譯;假如不是,表達(dá)JSP文獻(xiàn)比較新,就會(huì)重新執(zhí)行轉(zhuǎn)譯與編譯的過程。
為了有個(gè)深刻的了解,我們看一下JSP的運(yùn)營(yíng)和開發(fā)環(huán)境:
瀏覽器:常見的瀏覽器有正和Netscape兩種。
數(shù)據(jù)庫(kù):常用的數(shù)據(jù)庫(kù)有Oracle,SQLServer,Informix,DB2,Sybase,Access,MySQL等。
操作系統(tǒng):常見的有Windows,Linux,以及各種Unix系統(tǒng)。
Web服務(wù)器:常見的有IIS,Apache,NetscapeEnterpriseServer等。
JSP引擎:?般JSP引擎都以Servlet引擎為基礎(chǔ),并以Servlet的形式出現(xiàn)。同時(shí),在各種免費(fèi)和商業(yè)引擎
的實(shí)現(xiàn)中,Servlet引擎和Jsp引擎通常也是一起出現(xiàn),我們成為Servlet/JSP引擎,或從某種成為JSP引擎。
JSP引擎是可以提供JSP和Servlet運(yùn)營(yíng)支持并對(duì)其生存周期進(jìn)行管理的系統(tǒng)級(jí)實(shí)體。
在JSP頁(yè)面第一次
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育健身公園工程施工組織設(shè)計(jì)方案
- 衛(wèi)生間隔斷合同
- 向朋友轉(zhuǎn)租他房子合同(2篇)
- 儀表設(shè)備日常維護(hù)管理制度
- 機(jī)械課程設(shè)計(jì)畫那些圖
- 農(nóng)民工權(quán)益保障制度
- 高鐵綠化施工技術(shù)方案
- 空間方位感知的課程設(shè)計(jì)
- 智能周界防范系統(tǒng)技術(shù)方案
- 焊接方法及設(shè)備課程設(shè)計(jì)
- 幼兒園中班數(shù)學(xué):《小螞蟻過生日-7的點(diǎn)數(shù)》 PPT課件
- 微課的設(shè)計(jì)與制作
- 材料成本差異對(duì)企業(yè)利潤(rùn)的影響
- 加油站安全風(fēng)險(xiǎn)隱患排查表
- 讓課程的力量在實(shí)踐中彰顯——《課程的力量》讀書報(bào)告-完整版PPT課件
- 營(yíng)銷渠道試題與答案解析
- 【課件】第二單元第三節(jié)漢族民歌課件-2021-2022學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 電磁學(xué)發(fā)展史
- 材料、設(shè)備封樣及進(jìn)場(chǎng)驗(yàn)收管理規(guī)定
- 急性腎損傷PPT通用課件
- 高標(biāo)準(zhǔn)基本農(nóng)田建設(shè)監(jiān)理工作總結(jié)
評(píng)論
0/150
提交評(píng)論