一 JDBC簡介html
JDBC是用於執行SQL的解決方案,開發人員使用JDBC的標準接口,數據庫廠商則對接口進行操做,開發人員無須接觸底層數據庫驅動程序的差別性java
JDBC標準分爲兩個部分:JDBC應用程序開發者接口、JDBC驅動程序開發者接口git
廠商在操做JDBC驅動程序時,依照操做方式能夠將驅動程序分紅四類正則表達式
- Tpye 1:JDBC-ODBC Bridge Driver 驅動程序將JDBC調用轉換爲對ODBC驅動程序的調用,由ODBC驅動程序操做數據庫 - Tpye 2:Native API Driver 驅動程序會以原生方式調用數據庫提供的原生連接庫 - Tpye 3:JDBC-Net Driver 驅動程序會將JDBC方法調用轉換成特定的網絡協議調用 - Tpye 4:Native Protocol Driver 驅動程序將JDBC調用轉換成數據庫特定的網絡協議與數據庫進行溝通操做
鏈接數據庫
sql
Statement、ResultSet: Conection是數據庫鏈接的表明對象,接下來必須取得java.sql.Statement操做對象 調用clearstatement清除設置的參數,以後就能再次使用這個PreparedStatement實例數據庫
二 JDBC進階數組
使用DataSource取得聯機:messageDAO依賴於 javax.sql.DataSource接口,能夠經過定義的getConnection()方法取得Connection緩存
使用ResultSet捲動、更新數據:ResultSet不只可使用previous() first()、last()等方法先後移動數據,還能夠調用updateXXX()、updateRow()網絡
批次更新:僅僅用在更新操做,且批次更新的限制是SQL不能是SELECTide
交易:四個基本要求(ACID) 原子性(Atomicity) 一致性(Consisitency) 隔離行爲(Isolathion) 持續性(Durability)
三.反射與類加載器
一個命令對應一個進程
當咱們啓動一個Java程序,即啓動一個main方法時,都將啓動一個Java虛擬機進程,無論這個進程有多麼複雜。而不一樣的JVM進程之間是不會相互影響的。這也就是爲何說,Java程序只有一個入口——main方法,讓虛擬機調用。而兩個mian方法,對應的是2個JVM進程,啓動的是兩個不一樣的類加載器,操做的其實是不一樣的類。故而不會互相影響。
類加載
當咱們使用一個類,若是這個類還未加載到內存中,系統會經過加載、鏈接、初始化對類進行初始化。
一、類加載:指的是將類的class文件讀入JVM,併爲之建立一個Class對象。
二、類鏈接:指的是把類的二進制數據合併到JRE中,這又分爲3個階段:
a)、校驗:檢查載入Class文件數據的正確性。
b)、準備:給類的靜態變量分配存儲空間,並進行默認初始化。
c)、解析:將類的二進制數據中的符號引用替換成直接引用。
三、初始化:對類的靜態變量、靜態初始化塊進行初始化。
(注意:一個final類型的靜態屬性,若是在編譯時已經獲得了屬性值,那麼調用該屬性時,不會致使該類初始化,由於這個至關於使用常量;
使用ClassLoader()方法,只是加載該類,並未初始化。)
3、類加載器。
類加載器就是負責將.class文件加載到內存中,併爲之生成對應的java.lang.Class對象,它負責加載全部的類,而一旦一個類被加載入JVM中,就不會被再次載入了。
在Java中,一個類用其全限定類名(即包名+類名)做爲標識。
而在JVM中,一個類用其全限定類名和其類加載器做爲標識。
JVM運行時會產生3個ClassLoader,分別爲:BootstrapClassLoader(根類加載器)、ExtClassLoader(擴展類加載器)和AppClassLoader(系統類加載器)。UML結構以下:
4、類加載機制。
JVM的類加載機制主要有以下三種機制:
一、全盤負責:當一個類加載器負責加載某個Class的時候,該Class所依賴的和引用的其餘Class也將由該類加載器負責載入。
二、父類委託:先委託父加載器試圖加載該類,只有在父加載器沒法加載該類時才從本身的類路徑中查找並裝載該類。
三、緩存機制:緩存機制保證全部被家加載過的類都會被緩存,當程序中須要使用某個Class時,類加載器先從緩存中搜尋。緩存中搜尋不到,纔會從新讀取該類對應的二進制數據,並建立對應的Class對象。
(注意:類加載器之間的父子關係,並非類繼承上的父子關係,而是類加載器實例之間的關係)
重寫ClassLoader的loadClass打破雙親委託,findClass遵循雙親委託,defineClass方法將字節碼轉換成Class對象,並校驗有效性,該方法是final方法。
補充:URLClassLoader是系統類加載器和擴展類加載器的父類(除根類加載器以外的全部加載器都是ClassLoader子類的實例,根加載器是JVM自身實現的),它既能夠從本地文件獲取二進制文件加載類,也能夠從遠程主機獲取二進制文件加載類
5、反射
在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意一個方法和屬性。
問題:區分不了幻讀與沒法重複的讀取,隔離層級「可重複讀取」、「可循序」
解決過程:結合教材的圖解,「可重複讀取」針對兩次交易讀取數據不一致,同一交易讀取數據必須相同的狀況,「可循序」針對同一交易期間讀取到的數據不一致,在數據不一致時,交易能夠照順序逐一進行
沒有發現代碼調試上的問題。
https://git.oschina.net/bestiisjava2017/nhx20155309-Java
結對對象:
20155220 吳思其http://www.cnblogs.com/20155220wsq/p/6718224.html
互評對象:
20155314 劉子健http://www.cnblogs.com/crazymosquito/p/6711316.html#3670478
20155336 虎光元http://www.cnblogs.com/hxl681207/p/6709628.html
20155223 蘇黃永酈http://www.cnblogs.com/battlefieldheros/p/6711388.html
20155230 張瑞琦http://www.cnblogs.com/J1n233/p/6719877.html
1.Linux中使用rm刪除文件時,若是想忽略提示,直接刪除文件,可使用()選項強制刪除。
A .
-r
B .
-R
C .
-c
D .
-f
答案是d
2.Linux中使用cp命令拷貝目錄時要加上()選項。
A .
-r
B .
-directory
C .
-all
D .
-R
答案是ad
3.Linux中獲取當前路徑的絕對路徑的命令是()?
A .
cd
B .
passwd
C .
tree
D .
pwd
答案是d
4.NIO2中,可使用()中的方法取出文件系統根目錄信息。
A .
Path
B .
DirectoryStream
C .
FileStore
D .
FileSystem
答案是d
5.Java NIO中與InputStream/OutputStream相對應的接口是(),用來鏈接數據節點。
A .
Channel
B .
Buffer
C .
Path
D .
FileStore
答案是a
6.正則表達式 zo* 匹配()
A .
z
B .
zo
C .
zoo
D .
zooooooooooooooooooooooooooo
答案是abcd
7.正則表達式 r.t 可以匹配字符串()
A .
rat
B .
rt
C .
rut
D .
root
答案是ac
8.正則表達式「r.t」匹配字符串「rat」的Java 代碼表達式是()
A .
"rat".matcher("r.t")
B .
"r.t".matcher("rat")
C .
Pattern.compile("rat").matcher("r.t")
D .
Pattern.compile("r.t").matcher("rat")
答案是d
9.Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如咱們有一個名爲names的String對象數組,下面哪一個for循環不能遍歷數組中的每個元素?)
A .
for(int i = 0; i < names.length; i++)
B .
for(String name : names)
C .
for(int i = 0; i < names.length(); i++)
D .
none of these will correctly process each element(以上都不能遍歷)
E .
all of these will correctly process each element(以上都能遍歷)
答案是c
10.能夠經過Logger logger = new Logger(); 來產生Logger對象。
A .
True
B .
False
答案是b
不知不覺課本上的內容已經接近了尾聲。可是感受本身對於java課程的瞭解還只是杯水車薪。在java路上還有很長一段路要走。正如同每週的小測驗就算是本身感受掌握得很好,但是結果仍是不盡如人意。因此書本身準備再翻閱一遍,但願以後本身對java的理解能更深。
代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 5000行 30篇 400小時
第一週 50/100 1/1 24/24
第二週 250/300 1/2 30/54
第三週 552/852 1/3 16/60
第四周 717/1569 1/4 10/70
第五週 495/2064 1/5 6/76
第六週 754/2818 1/6 7/82
第七週 679/3493 2/8 5/87
第八週 302/3795 3/8 6/90
預計學習時間6小時 實際學習時間3小時