J2EE是什麼?它包括哪些技術?
解答:從總體上講,J2EE是使用Java技術開發企業級應用的工業標準
主要包括如下這些技術:
1) Servlet Servlet是Java平臺上的CGI技術。Servlet在服務器端運行,動態地生成Web頁面。
對於Servlet,重複的請求不會致使同一程序的屢次轉載,它是依靠線程的方式來支持併發訪問的。
2)JSP JSP(Java Server Page)是一種實現普通靜態HTML和動態頁面輸出混合編碼的技術。從這一點來看,很是相似Microsoft ASP、PHP等技術。藉助形式上的內容和外觀表現的分離,Web頁面製做的任務能夠比較方便地劃分給頁面設計人員和程序員,並方便地經過JSP來合成。在運行時態,JSP將會被首先轉換成Servlet,並以Servlet的形態編譯運行,所以它的效率和功能與Servlet相比沒有差異,同樣具備很高的效率。
3) EJB EJB定義了一組可重用的組件:Enterprise Beans。開發人員能夠利用這些組件,像搭積木同樣創建分佈式應用。
4)JDBC(Java Database Connectivity,Java數據庫鏈接)API是一個標準SQL(Structured Query Language,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員可以用標準Java API編寫數據庫應用程序。JDBC API主要用來鏈接數據庫和直接調用SQL命令執行各類SQL語句。利用JDBC API能夠執行通常的SQL語句、動態SQL語句及帶IN和OUT參數的存儲過程。Java中的JDBC至關於Microsoft平臺中的ODBC(Open Database Connectivity)。
您作系統設計用何種工具?
解答:Visio, rational rose,power designer等
什麼是Web容器?
解答:容器就是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發出的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。
運行時異常與通常異常有何異同?
解答:異常表示程序運行過程當中可能出現的非正常狀態,運行時異常表示虛擬機的一般操做中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,可是並不要求必須聲明拋出未被捕獲的運行時異常。
試述數據庫完整保護的主要任務和措施。
解答:數據庫的完整性保護也就是數據庫中數據正確性的維護。數據庫完整性包括三個內容:實體完整性規則,參照物完整性規則以及用戶定義完整性規則。 前兩個是有DBMS自動處理。實體完整性規則是說針對於基表中的關鍵字中屬性值不能爲空值,是數據庫完整性的基本要求,主關鍵字和元組的惟一性對應。
參照物完整性規則是不容許引用不存在的元組:即基表中的外關鍵字要麼爲空,要麼關聯基表中必存在元組。
用戶定義完整性規則針對具體的數據環境由用戶具體設置的規則,它反應了具體應用中的語義要求。 一個完整性規則通常由下面三部分組成:
完整性約束條件設置,完整性約束條件的檢查以及完整性約束條件的處理.後兩部分在數據庫中通常有相應的模塊處理。另外觸發器也能夠作完整性的保護,但觸發器大量用於主動性領域。
請說明SQLServer中delete from tablea & truncate table tablea的區別
解答:二者均可以用來刪除表中全部的記錄。區別在於:truncate是DDL操做,它移動HWK,使HWK值爲0,不須要 rollback segment .而Delete是DML操做須要rollback segment 且花費較長時間.
類有哪三個基本特性?各特性的優勢?
解答:類具備封裝性、繼承性和多態性。
封裝性:類的封裝性爲類的成員提供公有、缺省、保護和私有等多級訪問權限,目的是隱藏類中的私有變量和類中方法的實現細節。
繼承性:類的繼承性提供從已存在的類建立新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的所有可繼承的成員。
多態性:類的多態性提供類中方法執行的多樣性,多態性有兩種表現形式:重載和覆蓋。
重載:同一個類裏,同函數名,可是函數的參數個數或類型不一樣,有多態
覆蓋:有虛關鍵字,有多態
隱藏:沒有虛關鍵字
談談對XML的理解?說明Web應用中Web.xml文件的做用?
解答:擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記能夠用方便的方式創建,雖然XML佔用的空間比二進制數據要佔用更多的空間,但XML極其簡單易於掌握和使用。
web.xml的做用是配置歡迎頁,servlet,filter,listener等的。
jsp有哪些內置對象?做用分別是什麼?(至少三個)
解答:
1)request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,而且提供了幾個用於獲取cookie, header和session數據的有用的方法。
2)response表示HttpServletResponse對象,並提供了幾個用於設置送回 瀏覽器的響應的方法(如cookies,頭信息等)。
3)out對象是javax.jsp.JspWriter的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
4)pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各類範圍的名字空間、servlet相關的對象的API,而且包裝了通用的servlet相關功能的方法。 5)session表示一個請求的javax.servlet.http.HttpSession對象。Session能夠存貯用戶的狀態信息。
6)application 表示一個javax.servle.ServletContext對象。這有助於查找有關servlet引擎和servlet環境的信息。
7)config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。
8)page表示從該頁面產生的一個servlet實例。
9)exception 針對錯誤網頁,未捕捉的例外
事務是什麼?有哪些屬性,並簡要說明這些屬性的含義。
解答:事務(Transaction)是訪問並可能更新數據庫中各類數據項的一個程序執行單元(unit)。事務一般由高級數據庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引發,並用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操做組成。
事務應該具備4個屬性:原子性、一致性、隔離性、持續性。這四個屬性一般稱爲ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工做單位,事務中包括的諸操做要麼都作,要麼都不作。
一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另外一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其餘事務干擾。即一個事務內部的操做及使用的數據對併發的其餘事務是隔離的,併發執行的各個事務之間不能互相干擾。
持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其餘操做或故障不該該對其有任何影響。
Collection 和 Collections的區別?
解答:Collection是java.util下的接口,它是各類集合的父接口,繼承於它的接口主要有Set 和List;Collections是個java.util下的類,是針對集合的幫助類,提供一系列靜態方法實現對各類集合的搜索、排序、線程安全化等操做。java.util.Collections 是一個包裝類。它包含有各類有關集合操做的靜態多態方法。此類不能實例化,就像一個工具類。
HashMap與TreeMap的區別?
解答:HashMap經過hashcode對其內容進行快速查找,而TreeMap中全部的元素都保持着某種固定的順序,若是你須要獲得一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。
ArrayList和Vector的區別?
解答:同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程不安全的,不是同步的;數據增加:當須要增加時,Vector默認增加爲原來一培,而ArrayList倒是原來的一半。
HashMap和Hashtable的區別?
解答:HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都實現了Map接口,主要區別
在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上高於Hashtable。HashMap容許將null做爲一個entry的key或者value,而Hashtable不容許。HashMap把Hashtable的contains方法去掉了,改爲containsvalue和containsKey。由於contains方法容易讓人引發誤解。Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。最大的不一樣是,Hastable的方法是synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步,而HashMap 就必須爲之提供同步。
請說出ArrayList,Vector, LinkedList的存儲性能和特性
解答:ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增長和插入元素,它們都容許直接按序號索引元素,可是插入元素要涉及數組元素移動等內存操做,因此索引數據快而插入數據慢,Vector因爲使用了synchronized方法(線程安全),一般性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據須要進行前向或後向遍歷,可是插入數據時只須要記錄本項的先後項便可,因此插入速度較快。
簡要描述如何結合struts、hibernate、spring開發Web應用?
解答:Struts能夠將jsp頁面的表單關聯起來,就是把JSP頁面的表單數據封裝成javaBean,這樣的話,在action中你不再須要使用傳統的request.getParameter(「name」);還有struts有一個控制器,你在struts編程中的控制器(XxxAction)都是繼承總的ActionServlet,它能集中處理請求,而後轉到相關的頁面。還有struts的表單驗證組件,不用你寫js驗證了,只須要你配置一下文件就能夠了。另外struts的令牌機制能夠防表單重複提交。
Spring 是一個輕量級容器,非侵入性.包含依賴注入,AOP等。它是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許您選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。
Hibernate:它可讓咱們以OO的方式操做數據庫,這讓咱們看到了hibernate的強大之處,體驗到操做數據的方便。但hibernate最耀眼之處是hibernate的緩存機制,而不是以OO的方式操做數據庫。Hibernate的緩存機制不外乎是一級緩存session,二級緩存sessionFactory,和第三方緩存如ehcache。也就是hibernate的最強大的地方是它的緩存,理解了這個才能真正的理解hibernate,Hibernate的命名查詢/命名參數查詢,就是將hql語句放在一個單獨的xml文件之中,它仍然讓人們以面向對象的方式去操縱數據,而不用在以OO的方式寫着代碼的同時,而後再轉變思惟,用面向關係的方式去寫那些sql語句。但hibernate不只作了這些,它的native sql查詢方式,徹底知足sql語句的偏心者,它像ibatis同樣,將sql語句放在配置文件之中。
說明反轉控制(IOC)和麪向方向編程(AOP)在spring中的應用
解答:Spring 核心容器(Core)提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實現。BeanFactory使用控制反轉(Ioc)模式將應用程序的配置和依賴性規範與實際的應用代碼程序分開。Spring的聲明式事務基於AOP實現,卻並不須要程序開發者成爲AOP專家,亦可輕易使用Spring的聲明式事務管理。
列出本身經常使用的jdk包.
解答:
java.lang: 這個是系統的基礎類,好比String等都是這裏面的,這個package是惟一一個能夠不用import就可使用的Package
java.io: 這裏面是全部輸入輸出有關的類,好比文件操做等
java.net: 這裏面是與網絡有關的類,好比URL,URLConnection等。
java.util : 這個是系統輔助類,特別是集合類Collection,List,Map等。
java.sql: 這個是數據庫操做的類,Connection, Statememt,ResultSet等
List、Map、Set三個接口存儲元素時各有什麼特色?
解答:
1)List是有序的Collection,使用此接口可以精確的控制每一個元素插入的位置。用戶可以使用索引(元素在List中的位置,相似於數組下標)來訪問List中的元素,這相似於Java的數組。
2)Set是一種不包含重複的元素的Collection,即任意的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。
3)Map接口 :請注意,
Map沒有繼承Collection接口,Map提供key到value的映射
簡述基於Struts框架Web應用的工做流程
解答:在web應用啓動時就會加載初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各類配置對象中, 當ActionServlet接收到一個客戶請求時,將執行以下流程. 1)檢索和用戶請求匹配的ActionMapping實例,若是不存在,就返回請求路徑無效信息; 2)若是ActionForm實例不存在,就建立一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中; 3)根據配置信息決定是否須要表單驗證.若是須要驗證,就調用ActionForm的validate()方法; 4)若是ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象, 就表示表單驗證成功; 5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪一個Action,若是相應的Action實例不存在,就先建立這個實例,而後調用Action的execute()方法; 6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向的JSP組件; 7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;
在項目中用過Spring的哪些方面?及用過哪些Ajax框架?
解答:在項目使用過Spring IOC ,AOP,DAO,ORM,還有上下文環境。
在項目使用過Ext,Juery等Ajax框架.
abstract class和interface有什麼區別?
解答:聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。接口(interface)是抽象類的變體。新型多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,全部成員變量都是public static final的。一個類能夠實現多個接口,當類實現接口時,必須實現接口的全部方法。抽象類在Java語言中表示的是一種單繼承的關係,對於interface 來講則否則,並不要求interface的實現者和interface定義在概念本質上是一致的,僅僅是實現了interface定義的契約而已。;抽象類中能夠定義本身的成員變量,也能夠包含非抽象的方法,而在接口中只能有靜態的常量,全部方法必須是抽象的;實現抽象類時能夠只實現其中的部分方法,而要是實現一個接口的話就必須實現這個接口中的全部抽象方法。
MVC模式中M,V,C每一個表明意義,並簡述在Struts中MVC的表現方式。
解答:
MVC是Model-View-Controller 的縮寫,Model表明的是應用的業務邏輯(經過JavaBean,EJB組件實現),View 是應用的表示層(由JSP頁面產生)Controller是經過應用的處理過程控制,(通常是一個servert)經過這種設計模型把應用邏輯,處理過程和顯示邏輯分紅不一樣的組件實現,這些組件能夠進行交互和重用。
在Struts框架中Controller功能由ActionServlet和ActionMapping對象構成,核心是一個Servlet類型的對象ActionServlet,它用來接收客戶端的請求。ActionServlet包括一組基於配置的ActionMapping對象,每一個ActionMapping對象實現了一個請求到一個具體的Model部分的Action處理器對象之間的映射。Model部分由Action和ActionForm對象構成。全部的Action處理器對象都是開發者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調用業務邏輯模塊,而且把響應提交到合適的View組件以產生響應。Struts提供的ActionForm組件對象能夠經過定義屬性描述客戶端表單數據,開發者能夠從它派生子類對象,並利用它和Struts提供的自定義標記庫相結合,能夠實現對客戶端的表單數據的良好封裝和支持,Action處理器對象能夠直接對它進行讀寫,而再也不須要和request、response對象進行數據交互。經過ActionForm組件對象實現了對View和Model之間交互的支持(View部分是經過JSP技術實現的)。Struts提供了自定義的標記庫,經過這些自定義標記庫能夠很是容易地和系統的Model部分交互,經過使用這些自定義標記庫建立的
JSP表單,能夠實現對Model部分中的ActionForm的映射,完成對用戶數據的封裝。
java語言中public、private、protected三個關鍵字的用法,重寫和重載的區別。
解答:
做用域 當前類 同包 子類 其它
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
重寫:發生在父子類之間,方法名相同,參數的類型、個數、順序相同,返回值相同,訪問權限不能更封閉,拋出異常不能寬泛;
重載:發生在同一個類中,方法名相同,可是參數不一樣(類型不一樣或個數不一樣或參數的順序不一樣),返回值能夠不相同。
JSP頁面之間傳遞參數的方法有哪些?
解答:1)request2)session3)application4)提交表單5)超連接
forward 和redirect的區別
解答:forward是容器中控制權的轉向,是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,因此它的地址欄中仍是原來的地址。 redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求,而且從瀏覽器的地址欄中能夠看到跳轉後的連接地址。前者更加高效,在前者能夠知足須要時,儘可能使用forward()方法,而且,這樣也有助於隱藏實際的連接;在有些狀況下,好比,須要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。
Java反射機制的做用?
解答:Java反射機制的做用是:
1)在運行時判斷任意一個對象所屬的類。
2)在運行時構造任意一個類的對象。
3)在運行時判斷任意一個類所具備的成員變量和方法。
4)在運行時調用任意一個對象的方法
你是怎麼理解java的泛型的?
解答: 在Java SE 1.5以前,沒有泛型的狀況的下,經過對類型Object的引用來實現參數的「任意化」,「任意化」帶來的缺點是要作顯式的強制類型轉換,而這種轉換是要求開發者對實際參數類型能夠預知的狀況下進行的。對於強制類型轉換錯誤的狀況,編譯器可能不提示錯誤,在運行的時候纔出現異常,這是一個安全隱患。
泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操做的數據類型被指定爲一個參數。這種參數類型能夠用在類、接口和方法的建立中,分別稱爲泛型類、泛型接口、泛型方法。
泛型的好處是在編譯的時候檢查類型安全,而且全部的強制轉換都是自動和隱式的,提升代碼的重用率。
JAVA源文件中是否能夠包括多個類,有什麼限制
解答:一個java源文件中能夠包含多個類,每一個源文件中至多有一個public類,若是有的話,那麼源文件的名字必須與之相同。若是源文件中沒有public類,則源文件用什麼名字均可以,但最好仍是具備特定的意義,省得本身都不記得裏面寫的是什麼了。
在一個千萬級的數據庫查尋中,如何提升查詢效率?分別說出在數據庫設計、SQL語句、java等層面的解決方案。
解答:
1)數據庫設計方面:
a. 對查詢進行優化,應儘可能避免全表掃描,首先應考慮在 where 及 order by 涉及的列上創建索引。
b. 應儘可能避免在 where 子句中對字段進行 null 值判斷,不然將致使引擎放棄使用索引而進行全表掃描,如: select id from t where num is null 能夠在num上設置默認值0,確保表中num列沒有null值,而後這樣查詢: select id from t where num=0
c. 並非全部索引對查詢都有效,SQL是根據表中數據來進行查詢優化的,當索引列有大量數據重複時,查詢可能不會去利用索引,如一表中有字段sex,male、female幾乎各一半,那麼即便在sex上建了索引也對查詢效率起不了做用。
d. 索引並非越多越好,索引當然能夠提升相應的 select 的效率,但同時也下降了 insert 及 update 的效率,由於 insert 或 update 時有可能會重建索引,因此怎樣建索引須要慎重考慮,視具體狀況而定。一個表的索引數最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有必要。
e. 應儘量的避免更新索引數據列,由於索引數據列的順序就是表記錄的物理存儲順序,一旦該列值改變將致使整個表記錄的順序的調整,會耗費至關大的資源。若應用系統須要頻繁更新索引數據列,那麼須要考慮是否應將該索引建爲索引。
f. 儘可能使用數字型字段,若只含數值信息的字段儘可能不要設計爲字符型,這會下降查詢和鏈接的性能,並會增長存儲開銷。這是由於引擎在處理查詢和鏈接時會逐個比較字符串中每個字符,而對於數字型而言只須要比較一次就夠了。
g. 儘量的使用 varchar/nvarchar 代替 char/nchar ,由於首先變長字段存儲空間小,能夠節省存儲空間,其次對於查詢來講,在一個相對較小的字段內搜索效率顯然要高些。
h. 儘可能使用表變量來代替臨時表。若是表變量包含大量數據,請注意索引很是有限(只有主鍵索引)。
i. 避免頻繁建立和刪除臨時表,以減小系統表資源的消耗。
j. 臨時表並非不可以使用,適當地使用它們可使某些例程更有效,例如,當須要重複引用大型表或經常使用表中的某個數據集時。可是,對於一次性事件,最好使用導出表。
k. 在新建臨時表時,若是一次性插入數據量很大,那麼可使用 select into 代替 create table,避免形成大量 log ,以提升速度;若是數據量不大,爲了緩和系統表的資源,應先create table,而後insert。
l. 若是使用到了臨時表,在存儲過程的最後務必將全部的臨時表顯式刪除,先 truncate table ,而後 drop table ,這樣能夠避免系統表的較長時間鎖定。
2)SQL語句方面:
a. 應儘可能避免在 where 子句中使用!=或<>操做符,不然將引擎放棄使用索引而進行全表掃描。
b. 應儘可能避免在 where 子句中使用 or 來鏈接條件,不然將致使引擎放棄使用索引而進行全表掃描,如: select id from t where num=10 or num=20 能夠這樣查詢: select id from t where num=10 union all select id from t where num=20
c. in 和 not in 也要慎用,不然會致使全表掃描,如: select id from t where num in(1,2,3) 對於連續的數值,能用 between 就不要用 in 了: select id from t where num between 1 and 3
d. 下面的查詢也將致使全表掃描: select id from t where name like ‘%abc%’
e. 若是在 where 子句中使用參數,也會致使全表掃描。由於SQL只有在運行時纔會解析局部變量,但優化程序不能將訪問計劃的選擇推遲到運行時;它必須在編譯時進行選擇。然而,若是在編譯時創建訪問計劃,變量的值仍是未知的,於是沒法做爲索引選擇的輸入項。以下面語句將進行全表掃描: select id from t where num=@num 能夠改成強制查詢使用索引: select id from t with(index(索引名)) where
num=@num
f. 應儘可能避免在 where 子句中對字段進行表達式操做,這將致使引擎放棄使用索引而進行全表掃描。如: select id from t where num/2=100 應改成: select id from t where num=100*2
g. 應儘可能避免在where子句中對字段進行函數操做,這將致使引擎放棄使用索引而進行全表掃描。如: select id from t where substring(name,1,3)=’abc’–name以abc開頭的id select id from t where datediff(day,createdate,’2005-11-30′)=0–‘2005-11-30’生成的id 應改成: select id from t where name like ‘abc%’ select id from t where createdate>=’2005-11-30′ and createdate<’2005-12-1′
h. 不要在 where 子句中的「=」左邊進行函數、算術運算或其餘表達式運算,不然系統將可能沒法正確使用索引。
i. 不要寫一些沒有意義的查詢,如須要生成一個空表結構: select col1,col2 into #t from t where 1=0 這類代碼不會返回任何結果集,可是會消耗系統資源的,應改爲這樣: create table #t(…)
j. 不少時候用 exists 代替 in 是一個好的選擇: select num from a where num in(select num from b) 用下面的語句替換: select num from a where exists(select 1 from b where num=a.num)
k. 任何地方都不要使用 select * from t ,用具體的字段列表代替「*」,不要返回用不到的任何字段。
l. 儘可能避免使用遊標,由於遊標的效率較差,若是遊標操做的數據超過1萬行,那麼就應該考慮改寫。
m. 儘可能避免向客戶端返回大數據量,若數據量過大,應該考慮相應需求是否合理。
n. 儘可能避免大事務操做,提升系統併發能力。
3)java方面:
a.儘量的少造對象。
b.合理擺正系統設計的位置。大量數據操做,和少許數據操做必定是分開的。大量的數據操做,確定不是ORM框架搞定的。,
c.使用jDBC連接數據庫操做數據
d.控制好內存,讓數據流起來,而不是所有讀到內存再處理,而是邊讀取邊處理;
e.合理利用內存,有的數據要緩存
請解釋分佈式事務管理?
解答:分佈式事務是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位於不一樣的分佈式系統的不一樣節點之上。爲了實現分佈式事務,須要使用下面將介紹的兩階段提交協議。 階段一:開始向事務涉及到的所有資源發送提交前信息。此時,事務涉及到的資源還有最後一次機會來異常結束事務。若是任意一個資源決定異常結束事務,則整個事務取消,不會進行資源的更新。不然,事務將正常執行,除非發生災難性的失敗。爲了防止會發生災難性的失敗,全部資源的更新都會寫入到日誌中。這些日誌是永久性的,所以,這些日誌會倖免遇難而且在失敗以後能夠從新對全部資源進行更新。 階段二:只在階段一沒有異常結束的時候纔會發生。此時,全部能被定位和單獨控制的資源管理器都將開始執行真正的數據更新。 在分佈式事務兩階段提交協議中,有一個主事務管理器負責充當分佈式事務協調器的角色。事務協調器負責整個事務並使之與網絡中的其餘事務管理器協同工做。 爲了實現分佈式事務,必須使用一種協議在分佈式事務的各個參與者之間傳遞事務上下文信息,IIOP即是這種協議。這就要求不一樣開發商開發的事務參與者必須支持一種標準協議,才能實現分佈式的事務。
請寫出一段表單提交的HTML代碼,表單名稱爲form1,提交方式爲post,提交地址爲submit.asp
解答:
<form name=」form1」 method=」post」 action=」submit.jsp」>
<input type=」submit」>
</form
請寫出一個超連接,點擊連接後能夠向zhangsan@d-heaven.com發送電子郵件。
<a href=」mailto: zhangsan@d-heaven.com」>發郵件</a>
請說明meta標籤的做用。
解答:
meta是用來在HTML文檔中模擬HTTP協議的響應頭報文。meta 標籤用於網頁的<head>與</head>中,meta 標籤的用處不少。meta 的屬性有兩種:name和http-equiv。name屬性主要用於描述網頁,對應於content(網頁內容),以便於搜索引擎機器人查找、分類(目前幾乎全部的搜索引擎都使用網上機器人自動查找meta值來給網頁分類)。這其中最重要的是description(站點在搜索引擎上的描述)和keywords(分類關鍵詞),因此應該給每頁加一個meta值。比較經常使用的有如下幾個:
name 屬性
1).<meta name=」Generator」 contect=」">用以說明生成工具(如Microsoft FrontPage 4.0)等;
2).<meta name=」KEYWords」 contect=」">向搜索引擎說明你的網頁的關鍵詞;
3).<meta name=」DEscription」 contect=」">告訴搜索引擎你的站點的主要內容;
4).<meta name=」Author」 contect=」你的姓名」>告訴搜索引擎你的站點的製做的做者;
5).<meta name=」Robots」 contect=
「all|none|index|noindex|follow|nofollow」>
其中的屬性說明以下:
設定爲all:文件將被檢索,且頁面上的連接能夠被查詢;
設定爲none:文件將不被檢索,且頁面上的連接不能夠被查詢;
設定爲index:文件將被檢索;
設定爲follow:頁面上的連接能夠被查詢;
設定爲noindex:文件將不被檢索,但頁面上的連接能夠被查詢;
設定爲nofollow:文件將不被檢索,頁面上的連接能夠被查詢。
6).http-equiv屬性
a、<meta http-equiv=」Content-Type」 contect=」text/html」;charset=gbk」>
和 <meta http-equiv=」Content-Language」 contect=」zh-CN」>用以說明主頁製做所使用的文字以及語言;
b、<meta http-equiv=」Refresh」 contect=」n;url=http://yourlink」>定時讓網頁在指定的時間n內,跳轉到頁面http;//yourlink;
c、<meta http-equiv=」Expires」 contect=」Mon,12 May 2001 00:20:00 GMT」>能夠用於設定網頁的到期時間,一旦過時則必須到服務器上從新調用。須要注意的是必須使用GMT時間格式;
d、<meta http-equiv=」Pragma」 contect=」no-cache」>是用於設定禁止瀏覽器從本地機的緩存中調閱頁面內容,設定後一旦離開網頁就沒法從Cache中再調出;
e、<meta http-equiv=」set-cookie」 contect=」Mon,12 May 2001 00:20:00 GMT」>cookie設定,若是網頁過時,存盤的cookie將被刪除。須要注意的也是必須使用GMT時間格式;
f、<meta http-equiv=」Pics-label」 contect=」">網頁等級評定,在IE的internet選項中有一項內容設置,能夠防止瀏覽一些受限制的網站,而網站的限制級別就是經過meta屬性來設置的;
g、<meta http-equiv=」windows-Target」 contect=」_top」>強制頁面在當前窗口中以獨立頁面顯示,能夠防止本身的網頁被別人看成一個frame頁調用;
h、<meta http-equiv=」Page-Enter」 contect=」revealTrans(duration=10,transtion=
50)」>和<meta http-equiv=」Page-Exit」
contect=」revealTrans(duration=20,transtion
=6)」>設定進入和離開頁面時的特殊效果,這個功能即FrontPage中的「格式/網頁過渡」,不過所加的頁面不可以是一個frame頁面。
請寫出一個隱藏控件。
解答:<input type=」hidden」 name=」userId」 value=」10001」>
如何將HTML頁面的標題設置爲「數字天堂」。
解答:
<html>
<head><title>數字天堂</title></head>
<body>body部分</body>
</html>
請寫出JavaScript中經常使用的三種事件。
解答: onclick,onblur,onChange
請寫出一段JavaScript代碼,要求頁面有一個按鈕,點擊按鈕彈出確認框。程序能夠判斷出用戶點擊的是「確認」仍是「取消」。
解答:
<HTML>
<HEAD>
<TITLE>click</TITLE>
<Script >
function validateForm()
{
if(confirm(「你確認提交這個表單麼?」))
{
alert(「肯定」);
}else{
alert(「取消」);
}
}
</Script>
</HEAD>
<BODY>
<FORM NAME=」TEST」 action=」FirstJS.htm」>
<INPUT TYPE=」button」 NAME=」SUB」 VALUE=」提交」onClick=」JavaScript:validateForm()」>
</FORM>
</BODY>
</HTML>
JavaScript如何實現計時功能。
解答:<script> window.setTimeout( 「window.location = ‘http://www.csdn.net ‘; 「, 35000); </script>
JavaScript如何定義數組。
解答: var arrTest=new Array();
JavaScript可否操做cookie和session?
解答:JavaScript能夠操做cookie,可是不能操做session
請用正則表達式匹配出QQ號(假設QQ號碼爲5—10位);
^ \d{5,10}$
String, StringBuffer StringBuilder的區別。
解答:String的長度是不可變的; StringBuffer的長度是可變的,若是你對字符串中的內容常常進行操做,特別是內容要修改時,那麼使用StringBuffer,若是最後須要String,那麼使用StringBuffer的toString()方法;線程安全; StringBuilder是從 JDK 5 開始,爲StringBuffer該類補充了一個單個線程使用的等價類;一般應該優先使用 StringBuilder 類,由於它支持全部相同的操做,但因爲它不執行同步,因此速度更快。
請寫出5種常見到的runtime exception。
NullPointerException:當操做一個空引用時會出現此錯誤。
NumberFormatException:數據格式轉換出現問題時出現此異常。
ClassCastException:強制類型轉換類型不匹配時出現此異常。
ArrayIndexOutOfBoundsException:數組下標越界,當使用一個不存在的數組下標時出現此異常。
ArithmeticException:數學運行錯誤時出現此異常
數組有沒有length()這個方法?String有沒有length()這個方法?
解答:數組沒有length()方法 它有length屬性
String有length()方法。
請寫出一個單例模式。
解答:單例模式(Singleton pattern):確保一個類只有一個實例,並提供一個全局的訪問點
public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默認構造子 */ private EagerSingleton() { } /** * 靜態工廠方法 */ public static EagerSingleton getInstance() { return m_instance; } }
在java中,List是個接口,那實現List接口的類有哪些,有什麼區別?
解答: ArrayList是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增長和插入元素,它們都容許直接按序號索引元素,可是插入元素要涉及數組元素移動等內存操做,因此索引數據快而插入數據慢,
LinkedList使用雙向鏈表實現存儲,按序號索引數據須要進行前向或後向遍歷,可是插入數據時只須要記錄本項的先後項便可,因此插入速度較快。
char類型可否存儲一箇中文字符?爲何
解答:能夠。一個char是兩個字節,而一箇中文也是兩個字節。
Switch選擇語句可否做用在String【字符串】上,也就是可否這麼寫:Switch(一個字符串變量)?
解答:不能夠,只能處理int,byte,short,char,(實際上是隻能處理int,其它三種是能夠promotion到int型)不能處理Sring
final
修飾類是不能被繼承,修飾方法不能在子類中被覆蓋,修飾變量,稱爲常量,初始化之後不能改變值。
如何啓動一個線程
start()
String類有final修飾
Java異常處理中,try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會執行,在return前執行,也
便是finally被插入到return和return以前的代碼中間
EJB包含哪3種bean
session bean(會話bean), entity bean(實體bean), message bean(消息bean)
Class.forName(String className)這個方法的做用:
經過類的全名得到該類的類對象
你認爲在表上創建索引能夠提升數據庫系統的效率嗎
不必定,創建太多的索引將會影響更新和插入的速度,由於它須要一樣更新每一個索引文件。對於一個常常須要更新和插入的表格,就沒有必要爲一個不多使用的where子句單獨創建索引了,對於比較小的表,排序的開銷不會很大,也沒有必要創建另外的索引。
error和exception有什麼區別?
error表示系統級的錯誤、程序沒必要處理的異常,是恢復不是不可能但很困難的狀況下的一種嚴重問題;好比內存溢出,不可能期望程序能處理這樣的狀況;
exception表示須要捕捉或者須要程序進行處理的異常,是一種設計或實現問題;也就是說,它表示若是程序運行正常,從不會發生的狀況。
說出幾個與spring同類型的開源框架,說出幾個與hibernate同類型的開源框架,說出幾個與struts同類型的開源框架
解答:
1)與spring同類型的開源框架:JUIDE、EJB3.0、picoContainer
2)與hibernate同類型的開源框架 :ibatis,jdo,JPA
3)幾個與struts同類型的開源框架:webwork,tapestry,JSF
經常使用的設計模式有哪些?說明工廠模式
解答:Java中的23種設計模式:
Factory(工廠模式), Builder(建造模式),Factory Method(工廠方法模式),
Prototype(原始模型模式),Singleton(單例模式),Facade(門面模式),
Adapter(適配器模式),Bridge(橋樑模式),Composite(合成模式),
Decorator(裝飾模式),Flyweight(享元模式),Proxy(代理模式),
Command(命令模式),Interpreter(解釋器模式),Visitor(訪問者模式),
Iterator(迭代子模式),Mediator(調停者模式),Memento(備忘錄模式),
Observer(觀察者模式),State(狀態模式),Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)
工廠模式:工廠模式是一種常常被使用到的模式,根據工廠模式實現的類能夠根據提供的數據生成一組類中某一個類的實例,一般這一組類有一個公共的抽象父類而且實現了相同的方法,可是這些方法針對不一樣的數據進行了不一樣的操做。首先須要定義一個基類,該類的子類經過不一樣的方法實現了基類中的方法。而後須要定義一個工廠類,工廠類能夠根據條件生成不一樣的子類實例。當獲得子類的實例後,開發人員能夠調用基類中的方法而沒必要考慮到底返回的是哪個子類的實例。
什麼是數據庫的參照完整性?
解答:數據庫的參照完整性是指表與表之間的一種對應關係,一般狀況下能夠經過設置兩表之間的主鍵、外鍵關係,或者編寫兩表的觸發器來實現。 有對應參照完整性的兩張表格,在對他們進行數據插入、更新、刪除的過程當中,系統都會將被修改表格與另外一張對應表格進行對照,從而阻止一些不正確的數據的操做。
如何優化數據庫,如何提升數據庫的性能?
解答:
1) 硬件調整性能 最有可能影響性能的是磁盤和網絡吞吐量,解決辦法擴大虛擬內存,並保證有足夠能夠擴充的空間;把數據庫服務器上的沒必要要服務關閉掉;把數據庫服務器和主域服務器分開;把SQL數據庫服務器的吞吐量調爲最大;在具備一個以上處理器的機器上運行SQL。
2)調整數據庫
若對該表的查詢頻率比較高,則創建索引;創建索引時,想盡對該表的全部查詢搜索操做, 按照where選擇條件創建索引,儘可能爲整型鍵創建爲有且只有一個簇集索引,數據在物理上按順序在數據頁上,縮短查找範圍,爲在查詢常用的所有列創建非簇集索引,能最大地覆蓋查詢;可是索引不可太多,執行UPDATE DELETE INSERT語句須要用於維護這些索引的開銷量急劇增長;避免在索引中有太多的索引鍵;避免使用大型數據類型的列爲索引;保證每一個索引鍵值有少數行。
3)使用存儲過程
應用程序的實現過程當中,可以採用存儲過程實現的對數據庫的操做盡可能經過存儲過程來實現,由於存儲過程是存放在數據庫服務器上的一次性被設計、編碼、測試,並被再次使用,須要執行該任務的應用能夠簡單地執行存儲過程,而且只返回結果集或者數值,這樣不只可使程序模塊化,同時提升響應速度,減小網絡流量,而且經過輸入參數接受輸入,使得在應用中完成邏輯的一致性實現。
4)應用程序結構和算法
創建查詢條件索引僅僅是提升速度的前提條件,響應速度的提升還依賴於對索引的使用。由於人們在
使用SQL時每每會陷入一個誤區,即太關注於所得的結果是否正確,特別是對數據量不是特別大的數據庫操做時,是否創建索引和使用索引的好壞對程序的響應速度並不大,所以程序員在書寫程序時就忽略了不一樣的實現方法之間可能存在的性能差別,這種性能差別在數據量特別大時或者大型的或是複雜的數據庫環境中(如聯機事務處理OLTP或決策支持系統DSS)中表現得尤其明顯。在工做實踐中發現,不良的SQL每每來自於不恰當的索引設計、不充份的鏈接條件和不可優化的where子句。在對它們進行適當的優化後,其運行速度有了明顯地提升!
JS中的三種彈出式消息提醒(警告窗口、確認窗口、信息輸入窗口)的命令是什麼?
解答:alert confirm prompt
描述JSP和Servlet的區別、共同點、各自應用的範圍
解答:JSP在本質上就是SERVLET,可是二者的建立方式不同.Servlet徹底是JAVA程序代碼構成,擅長於流程控制和事務處理,經過Servlet來生成動態網頁很不直觀.JSP由HTML代碼和JSP標籤構成,能夠方便地編寫動態網頁.所以在實際應用中採用Servlet來控制業務流程,而採用JSP來生成動態網頁.
在java語言中int 和 Integer 有什麼區別
int是基本數據類型,Integer是int的包裝類,屬於引用類型
JDK1.5中支持的 for循環的語法
for(type element : array) { System.out.println(element)
} type 集合(不只僅指Collection,也包含普通的數組)中元素的數據類型 element 遍歷到的元素 array 集合對象自己(固然不僅是Collection)
簡述synchronized和java.util.concurrent.locks.Lock的異同?
主要相同點:Lock能完成synchronized所實現的全部功能 主要不一樣點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock必定要求程序員手工釋放,而且必須在finally從句中釋放。
如何格式化日期
解答:
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat(「yyyy-MM-dd hh:mm:ss」);
String formatNow=sdf.format(now);
變量formatNow就是格式化好的日期。
將字符「12345」轉換成long型
解答: String s=」12345″;
long num=Long.valueOf(s).longValue();
struts中如何實現國際化,涉及哪些文件?
解答:「國際化」是指一個應用程序在運行時可以根據客戶端請求所來自的國家/地區、語言的不一樣而顯示不一樣的用戶界面。Struts框架經過使用<bean:message>標記,以及使用java.util數據包中定義的Locale和ResourceBundle類來支持國際化。java.text.MessageFormat類定義的技術能夠支持消息的格式。利用此功能,開發人員不需瞭解這些類的細節就可進行國際化和設置消息的格式。會涉及到資源文件,不需瞭解這些類的細節就可進行國際化和設置消息的格式。會涉及到資源文件,struts-config.xml配置文件,web.xml配置文件。
例舉在診斷Oracle性能問題時,經常使用的工具、方法
1)簡單一點的能夠用toad及dbartisan這樣的工具。 2)純作性能監測,比較出色的有spolight和emc的I3,這兩個軟件都比較貴。 3)一些網管系統這方面也不錯,如hp的openview。不過定製起來不太容易,且很貴。
4)不用花錢又好用的就是Oracle的statpack了。 5)再有就是本身寫腳本了,大多數有經驗的DBA都喜歡這樣的方式。優勢是實用靈活。缺點是若是想出一個性能變化的曲線圖等圖表,且作的美觀就須要些delphi,c++builder或是pb的開發功底了。
Oracle啓動中,startup nomount、 startup mount 有什麼差異?
解答: startup nomount:啓動實例,讀取參數文件,分配內存空間,啓動後臺進程,打開跟蹤文件和報警文件。startup mount:裝載數據庫,打開控制文件。nomount方式下尚未讀取控制文件,該選項用於在數據庫的控制文件所有損壞,須要從新建立數據庫控制文件或建立一個新的數據庫時使用。mount 選項下並無打開數據文件,該選項能夠用來修改數據庫的運行模式或進行數據庫恢復。
Oracle啓動中,spfile.ora、init<SID>.ora、spfile<SID>.ora 這三個文件正確的前後順序是什麼?
解答:啓動數據庫,使用startup命令,Oralce將會按照如下順序在缺省目錄中搜索參數文件:spfile<SID>.ora , spfile.ora ,init<SID>.ora a
說明Oracle數據庫邏輯備份和物理備份的方式。
解答:Oracle備份包括邏輯備份和物理備份。
1).邏輯備份
數據庫的邏輯備份包含讀一個數據庫記錄集和將記錄集寫入文件。
a.輸出(Export)輸出能夠是整個數據庫、指定用戶或指定表。
b.輸入(Import)輸入將輸出創建的二進制轉儲文件讀入並執行其命令。
2).物理備份
物理備份包含拷貝構成數據庫的文件而無論其邏輯內容。
Oracle支持兩種不一樣類型的物理文件備份:脫機備份(offline backup)和聯機備份(online backup)。
a.脫機備份: 脫機備份用在當數據庫已正常關閉,數據庫處於」offline」時,要備份下列文件:
全部數據文件
全部控制文件
全部聯機日誌
init.ora(可選的)
b 聯機備份:聯機備份可用來備份任何運做在ARCHIVELOG方式下的數據庫。在這種方式下,聯機日誌被歸檔,在數據庫內部創建一個全部做業的完整記錄。聯機備份過程具有強有力的功能。第一,提供了徹底的時間點(point-in-time)恢復。第二,在文件系統備份時容許數據庫保持打開狀態。
Tomcat服務器的默認端口是多少?怎樣修改tomcat的端口?
解答:默認端口爲8080,能夠經過service.xml的Connector元素的port屬性來修改端口。
多線程有幾種實現方法,都是什麼?同步的方法有幾種,都是什麼?
解答:多線程有兩種實現方法:繼承Thread類或者實現Runnable接口。
實現同步也有兩種方法:一種是同步方法,另外一種是同步代碼塊。
同步方法是在方法返回類型前面加上synchronized關鍵字
同步代碼塊是synchronized (這裏寫須要同步的對象){…}
談一下聚簇索引和非聚簇索引的區別以及各自的優缺點。
解答:彙集索引,表中存儲的數據按照索引的順序存儲,檢索效率比普通索引高,但對數據新增/修改/刪除的影響比較大 非彙集索引,不影響表中的數據存儲順序,檢索效率比彙集索引低,對數據新增/修改/刪除的影響很小
死鎖的必要條件?怎麼克服?
解答:產生死鎖的四個必要條件:
互斥條件:一個資源每次只能被一個進程使用。
請求與保持條件:一個進程因請求資源而阻塞時,對已得到的資源保持不放。
不剝奪條件:進程已得到的資源,在末使用完以前,不能強行剝奪。
循環等待條件:若干進程之間造成一種頭尾相接的循環等待資源關係。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不知足,就不會發生死鎖。
死鎖的解決方法:
a 撤消陷於死鎖的所有進程; b逐個撤消陷於死鎖的進程,直到死鎖不存在; c從陷於死鎖的進程中逐個強迫放棄所佔用的資源,直至死鎖消失。 d從另一些進程那裏強行剝奪足夠數量的資源分配給死鎖進程,以解除死鎖狀態
描述重作與回滾的認識;
解答:重作日誌生成日誌文件,是爲未來恢復數據庫使用的.
回滾段保存未提交數據,是爲支持事務而起做用的。
索引組織表,聚蔟表的用途;
解答:
索引組織表:數據按主碼存儲和排序,同索引結構同樣,不過數據直接存儲於主碼後面。適用於信息.檢索、空間和OLAP程序。索引組織表的適用狀況:
a.代碼查找表。
b.常常經過主碼訪問的表。
c.構建本身的索引結構。
d.增強數據的共同定位,要數據按特定順序物理存儲。
e.常常用between„and„對主碼或惟一碼進行查詢。數據物理上分類查詢。如一張訂單表,按日期裝載數據,想查單個客戶不一樣時期的定貨和統計狀況。
索引聚簇表:索引聚簇表是表相關的表共享同一數據塊中的相同列,並把相關數據存儲中同一個數據塊上。建立索引聚簇表中最重要的是對SIZE參數有很好的估量,不然聚簇將會下降空間利用,下降效率。
使用索引聚簇表的注意點:
a若是表中數據有大量DML操做的話,那麼聚簇將不適用,由於會消極地影響到DML性能。
b聚簇中,全表掃描將受到影響。這是由於將掃描聚簇中不一樣表的數據,額外增長不少無用的數據。
c若是常常TRUNCATE表和裝載表的話,聚簇將不適用。聚簇中的表沒法被TRUNCATE的,這是由於每一個塊中不僅是存儲一張表的數據。
SQL> truncate table emp;
truncate table emp
ERROR at line 1:
ORA-03292: Table to be truncated is part of a cluster
d若是大部分是讀取操做,且經過聚簇碼索引或聚簇表中其餘索引來讀取的話,聚簇將會比較適用。
消耗資源的SQL的定位方法;
select sql_text from v$sql where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);
SELECT * FROM ( SELECT sql_text,buffer_gets,disk_reads FROM v$sql ORDER BY buffer_gets,disk_reads DESC) WHERE ROWNUM<=10;
對觸發器的認識;
解答:觸發器是表上的程序,主要提供數據添加、修改與刪除後的程序處理方法,能夠用來檢查數據及進行數據更新,也能夠分擔一些前端應用程序撰寫的邏輯規則。用場景: 觸發器能夠查詢其餘表,並且能夠包含複雜的SQL語句。它們主要用於強制複雜的業務規則或要求。
觸發器的主要應用場合歸納起來說有如下幾種:
1).當向一張表中添加或刪除記錄時,須要在相關表中進行同步操做。好比,當爲應用系統添加一個系統用戶時,須要同時向權限表中添加該用戶的缺省權限,此時就編寫系統用戶表的觸發器在添加記錄動做時觸發。
2).當表上某列數據的值與其餘表中的數據有聯繫時。好比,當某客戶進行欠款消費,能夠在生成訂單時經過設計觸發器判斷該客戶的累計欠款是否超出了最大限度。
3).當須要對某張表進行跟蹤時。好比,當人事表中有人離職時,第一時間通知或更改相關表的值。
對ORA-01555錯誤的認識;
解答:ORA-01555錯誤產生的緣由:一致性讀(Consistent Get)和延遲塊清除(Delayed Block Cleanout)。
將ORACLE數據庫更改成歸檔模式;寫出步驟
解答:具體步驟以下: 1),以exp方式在線備份數據庫到指定位置; 2),觀察當前數據庫是以服務器參數文件(spfile)方式啓動仍是以參數文件(pfile)方式啓動: SQL> show parameter spfile; NAME TYPE VALUE ———————————— ———– —————————— spfile string /home/db/oracle/10g/dbs/spfile XXXX.ora value後有內容,說明數據庫以服務器參數文件方式啓動,這裏的spfile文件對應的裸設備爲/dev/vgdata/rspfile(經過查看/home/db/oracle/10g/dbs/initSID.ora文件內容得到); 3),關閉全部實例(shutdown immediate); 4),任意選取一個實例,建立參數文件到指定路徑: SQL>create pfile=’/home/db/oracle/pfile.ora’ from spfile; 5),修改pfile.ora文件,添加參數cluster_database=false; 6),以修改以後的參數文件按nomount方式啓動數據庫: SQL>startup nomount pfile=’/home/db/oracle/pfile.ora’; 7),使數據庫以exclusive方式啓動: SQL>alter database mount exclusive; 8),改變歸檔模式: SQL>alter database archivelog; 9),將pfile參數中的cluster_database從新更改成「true」; 10),更新服務器參數文件: SQL>create spfile from pfile=’/home/db/oracle/pfile.ora’; 11),關閉數據庫實例; SQL>shutdowm immediate; 12),分別在兩個節點上啓動數據庫: SQL>startup;
13),在兩個節點上分別檢查歸檔模式是否更改爲功: SQL>archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /home/db/oracle/10g/dbs/arch Oldest online log sequence 489 Next log sequence to archive 491 Current log sequence 491 完成。