運行時異常與一般異常有何異同?
異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
2)
說出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。
3)
設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。
以下程序使用內部類實現(xiàn)線程,對j增減的時候沒有考慮順序問題。
public class ThreadTest1{
???????? private int j;
???????? public static void main(String args[]){
????????????????? ThreadTest1 tt=new ThreadTest1();
?????????????????? Inc inc=tt.new Inc();
?????????????????? Dec dec=tt.new Dec();
?????????????????? for(int i=0;i<2;i++){
??????????????????????????? Thread t=new Thread(inc);
??????????????????????????? t.start();
??????????????????????????? t=new Thread(dec);
??????????????????????????? t.start();
?????????????????? }
???????? }
???????? private synchronized void inc(){
?????????????????? j++;
????????????????? System.out.println(Thread.currentThread().getName()+"-inc:"+j);
???????? }
???????? private synchronized void dec(){
?????????????????? j--;
????????????????? System.out.println(Thread.currentThread().getName()+"-dec:"+j);
???????? }
????????
???????? class Inc implements Runnable{
?????????????????? public void run(){
??????????????????????????? for(int i=0;i<100;i++){
???????????????????????????????????? inc();
??????????????????????????? }
?????????????????? }
???????? }
???????? class Dec implements Runnable{
?????????????????? public void run(){
??????????????????????????? for(int i=0;i<100;i++){
???????????????????????????????????? dec();
??????????????????????????? }
?????????????????? }
???????? }
}
4)
事務是什么?
事務是作為一個邏輯單元執(zhí)行的一系列操作,一個邏輯工作單元必須有四個屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個事務:
原子性
事務必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。
一致性
事務在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關數(shù)據(jù)庫中,所有規(guī)則都必須應用于事務的修改,以保持所有數(shù)據(jù)的完整性。事務結束時,所有的內部數(shù)據(jù)結構(如 B 樹索引或雙向鏈表)都必須是正確的。
隔離性
由并發(fā)事務所作的修改必須與任何其它并發(fā)事務所作的修改隔離。事務查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務,以使數(shù)據(jù)結束時的狀態(tài)與原始事務執(zhí)行的狀態(tài)相同。
持久性
事務完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。
5)
游標的作用?如何知道游標已經(jīng)到了最后?
游標用于定位結果集的行,通過判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯或到了最后
6)
EJB
?? **1、EJB容器提供的服務
???????? 主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務管理、鎖和并發(fā)行管理等服務。
?? 2、EJB的角色和三個對象
???????? EJB角色主要包括Bean開發(fā)者 應用組裝者 部署者 系統(tǒng)管理員 EJB容器提供者 EJB服務器提供者
???????? 三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類
?? 2、EJB的幾種類型
???????? 會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean
???????? 會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種
???????? 實體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種
?? 3、bean 實例的生命周期
???????? 對于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對于Entity Bean和Statefull Session Bean存在Cache管理,通常包含創(chuàng)建實例,設置上下文、創(chuàng)建EJB Object(create)、業(yè)務方法調用、remove等過程,對于存在緩沖池管理的Bean,在create之后實例并不從內存清除,而是采用緩沖池調度機制不斷重用實例,而對于存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態(tài)并限制內存中實例數(shù)量。