20165226 2017-2018-4 《Java程序設計》第7周學習總結

20165226 2017-2018-4 《Java程序設計》第7周學習總結

教材學習內容總結

第十一章 JDBC與MySQL數據庫

  • 下載MySQL最新版本。
  • 鏈接數據庫
    • 下載JDBC-MySQL數據庫驅動
    • 加載JDBC-MySQL數據庫驅動
    • 鏈接數據庫(Connection getConnection(java.lang.String,java.lang.String,java.lang.String)Connection getConnection(java.lang.String)
  • 查詢
    • 順序查詢,使用next()移到下一個數據行
    • 條件與排序查詢
      • where子語句
      • 排序,用order by子語句對記錄進行排序
      select * from mess order by height
      select * from mess where name like '%林%' order by name
  • statement對象調用方法
    • 更新update 表 set 字段 = 新值 where<條件子句>
    • 添加insert into 表(字段列表)value (對應的具體的記錄)
    • 刪除delete from 表名 where <條件子句>
  • 鏈接SQL Server數據庫

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

  • 問題一:在學習P328中11.5 鏈接數據庫時有些疑惑爲何用JDB鏈接數據庫?
  • 問題一解決方案:就像是接口同樣,想要用這個接口,就要實現這個接口裏的方法,jdbc也同樣,它實現了某些特定功能的接口,也就是那些個能鏈接數據庫的方法,因此,你必須用它。但也能夠不用JDBC,也能夠用hibernate,ibatis。html

  • 問題二:在查詢上個問題的時候看到了hibernate,疑惑hibernate和jdbc鏈接數據庫的區別?
  • 問題二解決方案:
一、Hibernate先檢索緩存中的映射對象( 即hibernate操做的是對象),而jdbc則是直接操做數據庫。
二、Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架,和App Server,和EJB沒有什麼必然的聯繫。Hibernate能夠用在任何JDBC可使用的場合。
三、Hibernate是一個和JDBC密切關聯的框架,因此Hibernate的兼容性和JDBC驅動,和數據庫都有必定的關係,可是和使用它的Java程序,和App Server沒有任何關係,也不存在兼容性問題。
Hibernate畢竟是基於JDBC的技術,高度的封裝提升了開發效率,從運行效率上來講若是正確使用JDBC那必定是比HB高的。

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

  • 問題一:在編譯Example11_1的時候,出現了點小bug

  • 問題一解決方案:在Ubuntu中輸入sudo apt-get install mysql-server mysql-client下載安裝了MySQLjava

  • 問題二:上傳代碼時出現了錯誤mysql

  • 問題二解決方案:比對了一下,結果是origin拼寫成了origion
  • 問題三:在下載安裝MySQL客戶端管理工具時出現了一系列小bug,如沒法初始化

  • 問題三解決方案:開始在網上搜索相關錯誤及解決方案,而後進行源文件的編寫保存,而後發現出現了另外一個bug(見第二幅圖),而後再回到書上,揣摩了一下,發現其實這個步驟時解壓,我其實時已經解壓了,所以我跳過這個環節,直接mysqld install,因而成功安裝。

  • 問題四:進入MySQL安裝目錄後,修改密碼時出現錯誤

  • 問題四解決方案:原來初始化時原用戶沒有設置密碼,故直接enter,而後即可修改密碼

代碼託管

上週考試錯題總結

第五週錯題總結

  • 知識點: 內部類的類體中不能夠聲明類變量和類方法,P162頁。
下列關於內部類的說法,正確的是
A       其餘類不能夠用某個類的內部類聲明對象。
B       內部類字節碼文件的名字格式是「外嵌類名$內部類名」。
C       內部類的類體能夠聲明類變量和類方法。
D       內部類在成員位置上,所以能夠被private修飾。
正確答案: A B D  個人答案: A B
  • 知識點:Java使用throw拋出一個異常,使用throws聲明方法可能拋出異常。
下列關於異常的說法,錯誤的是
A       Java使用throws拋出一個異常,使用throw聲明方法可能拋出異常。
B       執行System.out.println(3/0);語句會報ArithmeticException異常。
C       Java中的錯誤是以對象的方式呈現爲java.lang.Throwable的各類子類實例。
D       方法parseInt()在執行過程當中可能拋出DataFormatException異常。
正確答案: A D  個人答案: D
  • 知識點:對於嚴重的錯誤,經過Error類來描述,而對於非嚴重的問題,則是經過Exception類來進行描述的。
若是超出JVM運行能力以外,如「byte[] arr=new byte[1024*1024*600];」會拋出java.lang.OutOfMemoryError異常。
A       true
B       false
正確答案: B  個人答案: A
  • 知識點:若是程序撰寫的流程中先return了,也有finally區塊,finally區塊會先執行完後,再將值返回。Finally代碼塊只有一種狀況不會被執行,就是在以前執行了System.exit(0)。
下列程序的運行結果爲
public class FinallyDemo {
public static void main(String[] args) {
   System.out.print(test(true));
}
static int test(boolean flag) {
   try {
       if (flag) {
           return 1;
       }
   } finally {
       System.out.print("finally…");
   }
   return 0;
}
}
A       1finally…
B       finally…1
C       1finally…0
D       1
正確答案: B  個人答案: C
  • 知識點:public int hashCode():計算此抽象路徑名的哈希碼。
如下關於File類經常使用方法的敘述,錯誤的是
A       public long length():獲取文件長度
B       public int hashCode():計算此文件的哈希碼
C       public String toString():返回此抽象路徑名的路徑名字符串
D       public Boolean isFile():判斷一個文件是不是普通文件,而不是目錄
正確答案: B  個人答案: D
  • 知識點:InputStream是父類。
InputStream類繼承自FileInputStream,能夠以字節爲單位讀取文件。
A       true
B       false
正確答案: B  個人答案: A
  • 知識點:D項:會拋出NullPointerException異常。
下列關於public int read(byte[] b, int off, int len)方法的敘述,正確的是
A       此方法覆蓋了InputStream類中的read方法。
B       此方法從該輸入流中將最多len個字節的數據讀入一個byte數組中。
C       此方法返回讀入緩衝區的字節總數,若是由於已經到達文件末尾而沒有更多的數據,則返回-1。
D       若是b爲null,則會拋出IndexOutOfBoundsException異常。
正確答案: A B C  個人答案: B C
  • 知識點:關於java.io類的子類的相關概念
下列哪個不是java.io類的子類?
A       BufferedReader
B       BufferedWriter
C       FileReader
D       FileWriter
E       PrintReader
F       PrintWriter
正確答案: E  個人答案: C

第六週錯題總結

  • 知識點:TreeSet 泛型類建立樹集。
下列關於泛型類的子類的說法,正確的個數爲
①LinkedList<E>泛型類建立一個鏈表結構的對象。
②Stack<E>泛型類建立一個堆棧對象。
③HashMap<E>泛型類建立散列映射。
④DelayQueue<E>泛型類建立一個無界阻塞隊列。
⑤TreeSet<E>泛型類建立樹映射。
⑥Vector<E>建立可增加的對象數組。
漏判了一個
  • 知識點:B中若是此映射不包含該鍵的映射關係,則返回null。C中若是該映射之前包含了一個該鍵的映射關係,則舊值被替換。
下列關於HashMap<E>泛型類經常使用方法的介紹,正確的是
A       public boolean isEmpty()若是此映射不包含鍵-值映射關係,則返回 true。
B       public V get(Object key)返回指定鍵所映射的值;若是此映射不包含該鍵的映射關係,則拋出異常。
C       public V put(K key, V value) 在此映射中關聯指定值與指定鍵。若是該映射之前包含了一個該鍵的映射關係,則以先定義的值爲準。
D       public Object clone()返回此 HashMap 實例的淺表副本:並不複製鍵和值自己。
正確答案: A D  個人答案: A B D
  • 知識點:A項:若是指定對象沒法與該 set 中的當前元素進行比較,則拋出ClassCastException異常。
下列關於TreeSet<E>泛型類經常使用方法的介紹,正確的是
A       public boolean contains(Object o) 若是此 set 包含指定的元素,則返回 true。若是指定對象沒法與該 set 中的當前元素進行比較,或不包含,則返回false。
B       public boolean add(E e)將指定的元素添加到此 set。若是此 set 已經包含這樣的元素,則該調用不改變此 set 並返回 false。
C       public boolean addAll(Collection<? extends E> c)將指定 collection 中的全部元素添加到此 set 中。若是此 set 因爲調用而發生更改,則返回 true。
D       public E lower(E e) 返回此 set 中嚴格小於給定元素的最大元素;若是不存在這樣的元素,則返回 null。
正確答案: B C D  個人答案: A D
  • 知識點:長度等於字符串中 Unicode 代碼單元的數量。
String類中的length()方法用來獲取一個String對象的字符序列的長度,單位爲字節。
A       true
B       false
正確答案: B  個人答案: A
  • 知識點:C項:\b\w{6}\b 匹配恰好6個字符的單詞。F項: IP地址中每一個數字都不能大於255,該表達式忽略了這個約束條件。正確的是((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
下列關於正則表達式的說法,正確的是
A       \ba\w*\b匹配以字母a開頭的單詞
B       \d+匹配1個或更多連續的數字。
C       \b\w{6}\b 匹配6個及以上字符的單詞。
D       [0-9]表明的含意與\d就是徹底一致的:一位數字
E       \S+匹配不包含空白符的字符串。
F       (\d{1,3}\.){3}\d{1,3}用來匹配 IP地址。
正確答案: A B D E  個人答案: A B E F
  • 知識點:③:要查找\自己,須要用\。⑥:注意字符轉義,應爲""Hello"".matches("(["'])[^\"']*\1")。
下列經過測試的斷言語句有幾個?
①assertEquals(true, "123".matches("\\d+"));
②assertEquals(true, "3.5".matches("\\d\\.\\d"));
③assertEquals(true, "C:\\Windows".matches("C:\\Windows"));
④assertEquals(true, "hello hello".matches("\\b(?<Word>\\w+)\\b\\s+\\k<Word>\\b"));
⑤assertEquals("r*pl*c*m*nt","replacement".replaceAll("[aeiou]","*"));
⑥assertEquals(true, "\"Hello\"".matches("([\"'])[^\"']*\1"));
⑦assertEquals("##","xfooxxxxxxfoo".replaceAll(".*?foo","#"));
⑧assertEquals("Let's meet at [TIME].","Let's meet at 12:38.".replaceAll("((1|0?)[0-9]|2[0-3]):([0-5][0-9])","[TIME]"));
A       7個
B       6個
C       4個
D       3個
正確答案: B  個人答案: C
  • 知識點:Java throws an exception if invalid date values are passed. There is no 40th day in April—or any other month for that matter.
What is the output of the following code?(下面代碼的運行結果是?)
LocalDate date = LocalDate.of(2018, Month.APRIL, 40);
System.out.println(date.getYear() + " " + date.getMonth()+ " "+ date.getDayOfMonth());
A       2018 APRIL 4
B       2018 APRIL 30
C       2018 MAY 10
D       Another date
E       The code does not compile.
F       A runtime exception is thrown.
正確答案: F  個人答案: D

結對及互評

  • 博客中值得學習的或問題:
    • 要素全面
    • 很認真細緻
    • 排版簡介美觀
  • 代碼中值得學習的或問題:
    • 代碼中文件分類簡潔
    • 很認真

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20165230
      • 結對學習內容
      • 商討結對編程的相關應用

其餘

學習了MySQL客戶端管理工具,操做了如何下載安裝MySQL等進行數據庫的鏈接。git

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 48/48 1/1 20/20
第二週 390/438 2/3 18/38
第三週 866/1304 1/4 18/56
第四周 1105/2409 1/5 30/86
第五週 1229/3196 1/6 20/106
第六週 1147 /4343 2/8 25/131
第七週 1222 / 3668 1/9 20/151

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

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

  • 計劃學習時間:30小時數據庫

  • 實際學習時間:18小時編程

  • 改進狀況:數組

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

參考資料

相關文章
相關標籤/搜索