20145202馬超 2016-2017-2 《Java程序設計》第9周學習總結

20145202馬超 2016-2017-2 《Java程序設計》第9周學習總結

教材學習內容總結

JDBC
數據庫自己是個獨立運行的應用程序
撰寫應用程序是利用通訊協議對數據庫進行指令交換,以進行數據的增刪查找。
JDBC(Java DataBase Connectivity)是Java聯機數據庫的標準規範。
定義一組標準類與接口,應用程序須要聯機數據庫時調用這組標準API,標準API中接口會由數據庫廠商操做,稱爲JDBC驅動程序。
JDBC標準分爲兩部分
JDBC應用程序開發者接口
JDBC驅動程序開發者接口
依操做方式可將驅動程序分爲四種類型:JDBC-ODBC Bridge Driver;Native API Driver;JDBC-Net Driver;Native Protocol Driver。
Connection接口的操做對象是數據庫聯機表明對象,要取得Connection操做對象,能夠經過DriverManager的getConnection(),除了基本的用戶名稱、密碼以外,還必須提供JDBC URL,其定義了鏈接數據庫時的協議、子協議、數據源識別。
取得Connection對象以後,可使用isClosed()方法測試與數據庫鏈接是否關閉。在操做完以後,若肯定再也不須要鏈接,則必須使用close()來關閉與數據庫的鏈接,以釋放連接是相關的必要資源。html

取得Connection操做對象
「協議」在JDBC URL中老是jdbc開始,「子協議」是橋接的驅動程序、數據庫產品名稱或聯機機制,「數據源識別」標出數據庫的地址、端口號、名稱、用戶、密碼等信息。java

關閉Connection操做對象
取得Connection對象後,使用isClosed()方法測試與數據庫的鏈接是否關閉,再也不須要鏈接必須使用close()來關閉與數據庫的鏈接,以釋放鏈接時相關的必要資源,可使用嘗試自動關閉資源語法git

使用Statement、ResultSet
執行SQL,必須取得java.sql.Statement,使用Connection的createStatement()創建Statement對象。
取得Statement對象後,使用executeUpdate()(在表中插入一筆數據,返回int結果,表示數據變更的筆數)、executeQuery()(用於SELECT等查詢數據庫的SQL,返回java.sql.ResultSet對象,表明查詢結果,會是一筆一筆的數據)。
Statement或ResultSet不使用時,使用close()關掉,Statement關閉時,所關聯的ResultSet也會自動關閉。正則表達式

日期時間在JDBC中,並非使用java.util.Date,這個對象可表明的日期時間格式是「年、月、日、分、秒、毫秒」,在JDBC中要表示日期,是使用java.sql.Date,其日期格式是「年、月、日」,要表示時間的話則是使用java.sql.Time,其格式時間爲」時、分、秒」,java.sql.Timestamp表示「時、分、秒、微秒」的格式。
在ResultSet時,默承認以使用next()移動數據光標至下一筆數據,然後使用getXXX()方法來取得數據
在數據光標移動的API上,可使用absolute()、afterLast()、beforeFirst()、first()、last()進行絕對位置移動,使用relative()、previous()、next()進行相對位置移動,移動成功返回true。
可以使用isAfterLast()、isBeforeFirst()、isFrist()、isLast()判斷當前位置。
交易的四個基本要求是原子性、一致性、隔離行爲與持續性,依英文字母首字母簡稱爲ACID。
在交易管理時,僅想要撤回某個SQL執行點,則能夠設定存儲點。sql

幻讀:同一交易期間,讀取到的數據筆數不一致。
批次更新
使用addBatch()方法來收集SQL,並使用executeBatch()方法將所收集的SQL傳送出去。
SQL的執行順序就是addBath()時的順序
Blob與Clob
JDBC中提供了java.sql.Blob與java.sql.Clob兩個類分別表明BLOB與CLOB數據。
經過PreparedStatement的setBlob()來設定Blob對象,讀取數據時,能夠經過ResultSet的getBlob()取得Blob對像。數據庫

反射與類加載器函數

Java真正須要某個類時纔會載入對應的.class文檔, java.lang.Class 的實例表明Java應用程序運行時載入的.class文檔,Class類沒有公開(public)構造函數,實例是由JVM自動產生,能夠經過Object的getClass()方法,或者是透過.class常量取得每一個對象對應的Class對象。
可使用Class.forName()方法實現動態加載類,Class.forName()方法在找不到指定類時會拋出ClassNotFoundException異常。
Class對象加載的.class文檔,取得Class對象後,就能夠取得.class文檔中記載的信息,每一個類型都會有對應的類型,若是事先不知道類名稱,能夠利用Class.forName()動態加載.class文檔,取得Class對象以後,利用其newInstance()方法創建類實例。
類加載指的是將類的class文件讀入JVM,併爲之建立一個Class對象。
JVM預約義的三種類型類加載器,當一個JVM啓動的時候,開始使用以下三種類型類裝入器:
啓動(Bootstrap)類加載器:引導類裝入器是用本地代碼實現的類裝入器,它負責將 /lib下面的核心類庫或-Xbootclasspath選項指定的jar包加載到內存中。因爲引導類加載器涉及到虛擬機本地實現細節,開發者沒法直接獲取到啓動類加載器的引用,因此不容許直接經過引用進行操做。
擴展(Extension)類加載器:擴展類加載器是由Sun的ExtClassLoader(sun.misc.Launcher$ExtClassLoader)實現的。它負責將< Java_Runtime_Home >/lib/ext或者由系統變量-Djava.ext.dir指定位置中的類庫加載到內存中。開發者能夠直接使用標準擴展類加載器。
系統(System)類加載器:系統類加載器是由 Sun的 AppClassLoader(sun.misc.Launcher$AppClassLoader)實現的。它負責將系統類路徑java -classpath或-Djava.class.path變量所指的目錄下的類庫加載到內存中。開發者能夠直接使用系統類加載器。
Bootstrap Loader、Extended Loader與System Loader在程序啓動後,就沒法再改變它們的搜索路徑。若是在程序運行過程當中,打算動態決定從其餘路徑加載類,就要產生新的類加載器,新的類加載器創建後,父加載器會設爲System Loader。學習

交易簡介
隔離行爲的支持上,JDBC能夠經過Connection的getTransactionIsolation()取得數據庫目前的隔離行爲設定,經過setTransactionIsolation()可提示數據庫設定指定的隔離行爲,可設定常數是定義在Connection上,對交易不設定隔離行爲TRANSACTION_NONE。測試

metadata簡介
詮釋數據的數據;JDBC,經過Connection的getMetaData()方法取得DatabasemetaData對象,經過該對象提供的方法取得數據庫總體信息,Result表示查詢到的數據。spa

教材學習中的問題和解決過程

教材學習有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,若是別人沒有提出相同問題,能夠編輯文檔添加,而後把本身提出的問題複製到下面:

  • 問題1:Statement或ResultSet不使用時,close()會關掉嗎?
  • 問題1解決方案:確定是會的,close確定會關掉,Statement關閉時,所關聯的ResultSet也會自動關閉。

代碼調試中的問題和解決過程

  • 問題1:

  • 問題1解決方案:
    問題應該不是catch空着寫,雖然catch裏什麼也不寫對程序很是很差,因該是throw沒有存在的必要,直接去掉能夠將代碼改好,若是不去掉的話,須要具體去考慮有哪些可能出現錯誤而後再決定throw什麼。

代碼託管

上週考試錯題總結

  • 錯題1
    abc? 匹配( )
    A .
    ab
    B .
    abc
    C .
    abcc
    D .
    abccc
    這很明顯只能匹配ab和abc,當時對正則表達式的理解還不夠到位。

評分標準

  1. 正確使用Markdown語法(加1分):
  2. 模板中的要素齊全(加1分)
  3. 教材學習中的問題和解決過程, 一個問題加1分,1分
  4. 代碼調試中的問題和解決過程, 一個問題加1分,1分
  5. 本週有效代碼超過300分行的(加2分)
  6. 其餘加分:
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  • 基於評分標準,我給本博客打分:14分。

  • 參考示例

點評過的同窗博客和代碼

其餘(感悟、思考等,可選)

感受越是日後越累了,不過堅持到第12周可能會好點吧。

學習進度條

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:18小時

  • 實際學習時間:18小時

  • 改進狀況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料

相關文章
相關標籤/搜索