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