6一、jdbc的操做步驟java
加載驅動:Class.forName("oracle.jdbc.driver.OracleDriver");面試
建立鏈接:Connection con =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");正則表達式
建立查詢語句:PreparedStatement ps = con.prepareStatement("select * from emp where sal between ? and ?");數據庫
ps.setInt(1, 1000);緩存
ps.setInt(2, 3000);安全
執行語句:ResultSet rs = ps.executeQuery();併發
處理結果:while(rs.next()) {oracle
System.out.println(rs.getInt("empno") + " - " + rs.getString("ename"));}工具
關閉資源:finally { if(con != null){性能
try { con.close();
} catch (SQLException e) {
e.printStackTrace(); } } }
6二、Statement和PreparedStatement有什麼區別?哪一個性能更好?
與Statement相比,①PreparedStatement接口表明預編譯的語句,它主要的優點在於能夠減小SQL的編譯錯誤並增長SQL的安全性(減小SQL注射攻擊的可能性);②PreparedStatement中的SQL語句是能夠帶參數的,避免了用字符串鏈接拼接SQL語句的麻煩和不安全;③當批量處理SQL或頻繁執行相同的查詢時,PreparedStatement有明顯的性能上的優點,因爲數據庫能夠將編譯優化後的SQL語句緩存起來,下次執行相同結構的語句時就會很快(不用再次編譯和生成執行計劃)。
6三、使用JDBC操做數據庫時,如何提高讀取數據的性能?如何提高更新數據的性能?
要提高讀取數據的性能,能夠指定經過結果集(ResultSet)對象的setFetchSize()方法指定每次抓取的記錄數(典型的空間換時間策略);要提高更新數據的性能可使用PreparedStatement語句構建批處理,將若干SQL語句置於一個批處理中執行。
6四、dao模式
一個爲數據庫或其餘持久化機制提供了抽象接口的對象,在不暴露底層持久化方案實現細節的前提下提供了各類數據訪問操做。
6五、事務的ACID是指什麼
原子性(Atomic):事務中各項操做,要麼全作要麼全不作,任何一項操做的失敗都會致使整個事務的失敗;
一致性(Consistent):事務結束後系統狀態是一致的;
隔離性(Isolated):併發執行的事務彼此沒法看到對方的中間狀態;
持久性(Durable):事務完成後所作的改動都會被持久化,即便發生災難性的失敗。經過日誌和同步備份能夠在故障發生後重建數據。
補充:關於事務,在面試中被問到的機率是很高的,能夠問的問題也是不少的。首先須要知道的是,只有存在併發數據訪問時才須要事務。當多個事務訪問同一數據時,可能會存在5類問題,包括3類數據讀取問題(髒讀、不可重複讀和幻讀)和2類數據更新問題(第1類丟失更新和第2類丟失更新)。
髒讀(Dirty Read):A事務讀取B事務還沒有提交的數據並在此基礎上操做,而B事務執行回滾,那麼A讀取到的數據就是髒數據。
不可重複讀(Unrepeatable Read):事務A從新讀取前面讀取過的數據,發現該數據已經被另外一個已提交的事務B修改過了。
幻讀(Phantom Read):事務A從新執行一個查詢,返回一系列符合查詢條件的行,發現其中插入了被事務B提交的行。
第1類丟失更新:事務A撤銷時,把已經提交的事務B的更新數據覆蓋了。
第2類丟失更新:事務A覆蓋事務B已經提交的數據,形成事務B所作的操做丟失。
數據庫一般會經過鎖機制來解決數據併發訪問問題,按鎖定對象不一樣能夠分爲表級鎖和行級鎖;按併發事務鎖定關係能夠分爲共享鎖和獨佔鎖。
6六、JDBC中如何進行事務處理
Connection提供了事務處理的方法,經過調用setAutoCommit(false)能夠設置手動提交事務;當事務完成後用commit()顯式提交事務;若是在事務處理過程當中發生異常則經過rollback()進行事務回滾。除此以外,從JDBC 3.0中還引入了Savepoint(保存點)的概念,容許經過代碼設置保存點並讓事務的保存點
6七、JDBC可否處理Blob和Clob
能,Blob是指二進制大對象(Binary Large Object),而Clob是指大字符對象(Character Large Objec),JDBC的PreparedStatement和ResultSet都提供了相應的方法來支持Blob和Clob操做
6八、簡述正則表達式及其用途
編寫處理字符串的程序時,常常會有查找符合某些複雜規則的字符串的須要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼
6九、Java中是如何支持正則表達式操做的
String類有支持正則表達式操做的方法,attern類表示正則表達式對象,它提供了豐富的API進行各類正則表達式操做
70、反射的3種方法獲取類對象
方法1:類型.class,例如:String.class;方法2:對象.getClass(),例如:」hello」.getClass();方法3:Class.forName(),例如:Class.forName(「java.lang.String」)