Java開發從入門到精通

Java開發從入門到精通

《Java開發從入門到精通》是2017年2月人民郵電出版社出版的圖書,作者是扶松柏、陳小玉。

基本介紹

  • 中文名:Java開發從入門到精通
  • 作者:扶松柏、陳小玉
  • 出版社:人民郵電出版社
  • 出版時間:2017年2月
  • 頁數:548 頁
  • 定價:59 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787115420275
內容簡介,圖書目錄,

內容簡介

本書由淺入深地詳細講解了Java的開發技術,重夜己潤並通過具體實例的實現過程演練了各個知識點的具體使用流程。本書共20章,第 1~2章講解了Java技術的基礎知識,包括Java印象和首段Java程式;第3~9章分別講解了Java語法、條件語句、循環語句、數組、面向對象等知識,這些內容都是Java開發技術的核心知識;第 10~14章分別講解了集合、類庫、泛型、異常處理、I/O和檔案處理的基本知識,這些內容是Java開發技術的重點和難點;第 15~19章是典型套用內容,分別講解了資料庫編程、網路與通信編程、多執行緒等內容;第 20章通過一個綜合實例的實現過程,介紹了Java技術在綜合項目中的使用流程。本書內容循序漸進,棕婚懂以“技術解惑”和“範例演練”貫穿全書,引 領讀者全面掌握Java語言。
本書不但適用於Java的初學者,也適用於有一定Java基礎的讀者,還可以作為大專院校相關專業的師生學習用書和培訓學譽匙試校的教材。

圖書目錄

第 1章 Java之印象 1
(視頻總計19分鐘,技術解惑3個)
1.1 初步認識Java 2
1.1.1 都在談論Java 2
1.1.2 Java的特點 2
1.1.3 Java中的一些名詞解釋 3
1.2 面向對象 4
1.2.1 什麼是面向對象 4
1.2.2 Java的面向對象懂紙編程 4
1.2.3 UML統一建模語言 5
1.2.4 對象建模技術 7
1.2.5 面向對象分析 8
1.2.6 面向對影協棵象設計 10
1.2.7 Java的面向對象特性 12
1.3 技術解惑 13
1.3.1 卓 越者的總結 13
1.3.2 對初學者的3條建議 14
1.3.3 理解Java的垃圾回收
機制 14
第 2章 第 一段Java程式 15
(視頻總計20分鐘,技術解惑8個)
2.1 搭建Java開發平台 16
2.1.1 安裝JDK 16
2.1.2 配置開發環境 18
2.2 編寫第 一段Java程式 18
2.2.1 編寫一段Java代碼 18
2.2.2 編譯Java程式 19
2.2.3 運行Java代碼 19
2.3 使用IDE工具 20
2.3.1 最受歡迎的工具—
Eclipse 20
2.3.2 官方推出的工具—
Netbeans 23
2.3.3 商業工具——JBuilder 29
2.4 Java的運行機制 29
2.4.1 編譯型/解釋型運行機制 29
2.4.2 程式運行機制 29
2.5 技術解惑 30
2.5.1 遵循源檔案命名規則 30
2.5.2 忽視系統檔案的擴展名 30
2.5.3 環境變數的問題 31
2.5.4 大小寫的問題 31
2.5.5 main()方法的問題 31
2.5.6 注酷刪朽熱意空格問題 32
2.5.7 到底用不用IDE工具 32
2.5.8 區分JRE和JDK 32
第3章 Java語法 33
(視頻總計72分鐘,實例21個,拓展實例42個,技術解惑4個)
3.1 量 34
3.1.1 常量 34
3.1.2 變數 35
3.2 數據類型 37
3.2.1 簡單數據類型值的範圍 37
3.2.2 字元型 38
3.2.3 整型 39
3.2.4 浮點型 39
3.2.5 布爾型 40
3.3 運算符 41
3.3.1 算術運算符 41
3.3.2 關係運算符和邏輯運算符 44
3.3.3 位運算符 45
3.3.4 條件運算符 46
3.3.5 賦值運算符 47
3.3.6 運算符的優先權 48
3.4 標識符和關鍵字 49
3.4.1 標識符 49
3.4.2 關鍵字 50
3.5 字元串 50
3.5.1 字元串的初始化 50
3.5.2 String類 51
3.5.3 StringBuffer類 53
3.6 類型轉換 54
3.6.1 自動類型轉換 54
3.6.2 強制轉換 55
3.7 技術解惑 55
3.7.1 定義常量時的注意事項 55
3.7.2 char類型中單引號的意義 56
3.7.3 正無窮和負無窮的問題 56
3.7.4 移位運算符的限制 56
第4章 條件語句 58
(視頻總計28分鐘,實例6個,拓展實例12個,技術解惑4個)
4.1 if語句詳解 59
4.1.1 if語句 59
4.1.2 if語句的延伸 60
4.1.3 多個條件判斷的if語句 61
4.2 switch語句詳邀備危解 62
4.2.1 switch語句的形式 62
4.2.2 無break的情況 63
4.2.3 case沒有執行語句 64
4.2.4 default可以不在末尾 64
4.3 條件語句演練 65
4.3.1 正確使用switch語句 65
4.3.2 正確使用if語句 66
4.3.3 switch語句的執行順序 67
4.4 技術解惑 68
4.4.1 if-else語句的意義 68
4.4.2 使用switch語句時的幾個
注意事項 68
4.4.3 何時用switch語句比較好 69
4.4.4 switch語句和if…else if
語句的選擇 69
第5章 循環語句 70
(視頻總計24分鐘,實例8個,拓展實例16個,技術解惑2個)
5.1 Java循環語句 71
5.1.1 for循環 71
5.1.2 while循環語句 73
5.1.3 do-while循環語句 75
5.2 跳轉語句 76
5.2.1 break語句的套用 76
5.2.2 return語句的套用 78
5.2.3 continue跳轉語句 79
5.3 技術解惑 79
5.3.1 使用for循環的技巧 79
5.3.2 跳轉語句的選擇技巧 80
第6章 特殊數據—數組 82
(視頻總計33分鐘,實例8個,拓展實例16個,技術解惑4個)
6.1 簡單的一維數組 83
6.1.1 聲明一維數組 83
6.1.2 創建一維數組 83
6.1.3 初始化一維數組 84
6.2 二維數組 85
6.2.1 聲明二維數組 85
6.2.2 創建二維數組 85
6.2.3 初始化二維數組 86
6.3 三維數組 88
6.3.1 聲明三維數組 88
6.3.2 創建三維數組的方法 88
6.3.3 初始化三維數組 88
6.4 運算元組 89
6.4.1 複製數組 89
6.4.2 比較數組 90
6.4.3 搜尋數組中的元素 90
6.4.4 排序數組 91
6.4.5 填充數組 91
6.5 深入理解數組 93
6.5.1 動態數組 93
6.5.2 foreach循環 94
6.5.3 數組的內理 94
6.6 技術解惑 96
6.6.1 數組內是同一類型的數據 96
6.6.2 動態初始化數組的規則 96
6.6.3 引用類型 96
6.6.4 數組必須初始化 97
第7章 Java的面向對象(上) 98
(視頻總計35分鐘,實例7個,拓展實例14個,技術解惑5個)
7.1 類 99
7.1.1 定義類 99
7.1.2 定義屬性 99
7.1.3 定義方法 100
7.1.4 定義構造器 100
7.2 修飾符 101
7.2.1 public修飾符 101
7.2.2 private私有修飾符 101
7.2.3 protected保護修飾符 102
7.2.4 其他修飾符 103
7.3 方法詳解 103
7.3.1 方法的所屬性 104
7.3.2 傳遞方法參數 104
7.3.3 長度可變的方法 105
7.3.4 構造方法 106
7.3.5 遞歸方法 106
7.4 使用this 107
7.5 使用類和對象 108
7.5.1 創建和使用對象 108
7.5.2 使用靜態變數和靜態
方法 109
7.6 抽象類和抽象方法 109
7.6.1 抽象類和抽象方法基礎 110
7.6.2 抽象類必須有一個抽象
方法 111
7.6.3 抽象類的作用 112
7.7 軟體包 113
7.7.1 定義軟體包 113
7.7.2 在Eclipse定義軟體包 113
7.7.3 在程式里插入軟體包 114
7.8 技術解惑 115
7.8.1 Java傳遞引用類型的
實質 115
7.8.2 掌握this的好處 116
7.8.3 推出抽象方法的原因 117
7.8.4 什麼時候用抽象類 117
7.8.5 static修飾的作用 118
第8章 Java的面向對象(中) 119
(視頻總計31分鐘,實例7個,拓展實例14個,技術解惑6個)
8.1 類的繼承 120
8.1.1 父類和子類 120
8.1.2 調用父類的構造方法 121
8.1.3 訪問父類的屬性和方法 121
8.1.4 多重次繼承 122
8.1.5 重寫父類的方法 124
8.2 重寫和重載 125
8.2.1 重寫 125
8.2.2 重載 127
8.2.3 聯合使用重寫與重載 128
8.3 隱藏和封裝 128
8.3.1 Java中的封裝 128
8.3.2 使用訪問控制符 129
8.3.3 Java中的包 130
8.3.4 import 132
8.4 接口 132
8.4.1 定義接口 133
8.4.2 接口裡的量和方法 133
8.4.3 實現接口 134
8.4.4 引用接口 135
8.4.5 接口的繼承 136
8.4.6 接口和抽象類 137
8.5 技術解惑 138
8.5.1 重寫方法的兩點注意事項 138
8.5.2 重寫和重載的區別 138
8.5.3 舉例理解類的意義 138
8.5.4 Java包的一些規則 138
8.5.5 探討Package和import的
機制 139
8.5.6 Java接口編程的機理 140
第9章 Java的面向對象(下) 141
(視頻總計39分鐘,實例6個,拓展實例12個,技術解惑10個)
9.1 構造器詳解 142
9.1.1 初始化構造器 142
9.1.2 構造器重載 143
9.1.3 調用父類構造器 143
9.2 多態 144
9.2.1 何謂多態 144
9.2.2 演示Java中的多態 146
9.3 引用類型 147
9.3.1 4種引用類型 147
9.3.2 instanceof運算符 150
9.3.3 引用變數的強制類型
轉換 151
9.4 組合 152
9.5 初始化塊 154
9.5.1 何謂初始化塊 154
9.5.2 靜態初始化塊 155
9.6 包裝類 156
9.7 深入詳解final修飾符 157
9.7.1 用final修飾變數 158
9.7.2 final方法 159
9.8 內部類 160
9.8.1 何謂內部類 160
9.8.2 非靜態內部類 160
9.8.3 成員內部類 162
9.8.4 局部內部類 162
9.8.5 靜態內部類 163
9.8.6 匿名內部類 164
9.8.7 匿名類和內部類中的
this 166
9.8.8 總結Java內部類 167
9.9 枚舉類 170
9.9.1 枚舉類的方法 170
9.9.2 手動實現枚舉類 170
9.9.3 枚舉類型 172
9.10 技術解惑 174
9.10.1 構造器和方法的區別 174
9.10.2 this在構造器中的妙用 175
9.10.3 分析子類構造器調用父類
構造器的幾種情況 175
9.10.4 要避免編譯錯誤 175
9.10.5 強制類型轉換不是
萬 能的 176
9.10.6 繼承和組合的選擇 176
9.10.7 分析發生異常的原因 176
9.10.8 用final修飾基本類型和
引用類型變數之間的
區別 176
9.10.9 類的4種許可權 177
9.10.10 手工實現枚舉類的缺點 177
第 10章 集合 178
(視頻總計51分鐘,實例8個,拓展實例16個,技術解惑8個)
10.1 Java集合概述 179
10.2 Collection接口和Iterator接口 180
10.2.1 基礎知識介紹 180
10.2.2 Collection接口和Iterator
接口 181
10.3 Set接口 182
10.3.1 基礎知識介紹 182
10.3.2 使用HashSet 185
10.3.3 使用TreeSet類 186
10.3.4 使用EnumSet類 188
10.4 List接口 190
10.4.1 基本知識介紹 190
10.4.2 使用List接口和ListIterator
接口 192
10.4.3 使用ArrayList和
Vector類 193
10.5 Map接口 194
10.5.1 基本知識介紹 194
10.5.2 使用HashMap和Hashtable
實現類 198
10.5.3 使用SortedMap接口和
TreeMap實現類 199
10.5.4 使用WeakHashMap類 201
10.5.5 使用IdentityHashMap類 202
10.5.6 使用EnumMap類 202
10.6 Queue接口 203
10.6.1 LinkedList類 203
10.6.2 PriorityQueue類 205
10.7 集合工具類Collections 205
10.7.1 排序操作 205
10.7.2 查找和替換操作 206
10.8 其他集合類 207
10.8.1 Stack類 207
10.8.2 屬性類Properties 208
10.9 技術解惑 211
10.9.1 Collection集合元素的改變
問題 211
10.9.2 深入理解HashSet 211
10.9.3 使用類EnumSet時的注意
事項 211
10.9.4 ArrayList和Vector的
區別 212
10.9.5 TreeMap判斷兩個元素
相等的標準 212
10.9.6 分析幾種Map類的
性能 212
10.9.7 LinkedList、ArrayList、
Vector性能問題的研究 212
10.9.8 用swap()方法把集合中
兩個位置的內容進行
交換 212
第 11章 常用的類庫 214
(視頻總計54分鐘,實例15個,拓展實例30個,技術解惑5個)
11.1 StringBuffer類 215
11.1.1 StringBuffer類基礎 215
11.1.2 使用StringBuffer類 215
11.2 Runtime類 217
11.2.1 Runtime類 217
11.2.2 使用Runtime類 218
11.3 程式國際化 219
11.3.1 國際化基礎 219
11.3.2 Locale類 219
11.3.3 ResourceBundle類 220
11.3.4 處理動態文本 221
11.3.5 使用類代替資源檔案 222
11.4 System類 222
11.4.1 System類基礎 223
11.4.2 垃圾對象的回收 223
11.5 Date類 224
11.5.1 使用Date類 224
11.5.2 使用Calendar類 225
11.5.3 使用DateFormat類 225
11.5.4 使用SimpleDate
Format類 226
11.6 Math類 227
11.7 Random類 228
11.8 NumberFormat類 229
11.9 BigInteger類 230
11.10 BigDecimal類 231
11.11 克隆對象 233
11.12 Arrays類 233
11.13 接口Comparable 234
11.13.1 Comparable接口基礎 234
11.13.2 使用Comparable接口 235
11.13.3 使用Comparator接口 236
11.14 Observable類和Observer
接口 237
11.15 正則表達式 239
11.15.1 正則表達式基礎 239
11.15.2 使用Pattern類和
Matcher類 240
11.15.3 String類和正則表達式 240
11.16 Timer類和TimerTask類 241
11.16.1 Timer類 241
11.16.2 TimerTask類 242
11.17 技術解惑 243
11.17.1 StringBuffer和String
選擇的異同 243
11.17.2 通過System類獲取本機
的全部環境屬性 243
11.17.3 分析對象的生命周期 244
11.17.4 如果沒有實現Comparable
接口會出現異常 244
11.17.5 體驗正則表達式的
好處 245
第 12章 泛型 246
(視頻總計28分鐘,實例6個,拓展實例12個,技術解惑5個)
12.1 泛型基礎 247
12.1.1 泛型的好處 247
12.1.2 類型檢查 247
12.1.3 使用泛型 249
12.2 泛型詳解 249
12.2.1 定義泛型接口和類 250
12.2.2 派生子類 250
12.2.3 並不存在泛型類 251
12.3 類型通配符 252
12.3.1 設定類型通配符的上限 252
12.3.2 設定類型形參的上限 254
12.4 泛型方法 254
12.4.1 定義泛型方法 254
12.4.2 設定通配符下限 257
12.5 泛型接口 258
12.6 泛型繼承 259
12.6.1 以泛型類為父類 259
12.6.2 以非泛型類為父類 260
12.7 運行時類型識別 260
12.8 強制類型轉換 261
12.9 擦除 262
12.9.1 擦除基礎 262
12.9.2 擦除帶來的錯誤 264
12.10 技術解惑 265
12.10.1 徹底分析Java語言中
泛型的本質 265
12.10.2 泛型方法和類型通配符的
區別 265
12.10.3 泛型類的繼承規則 266
12.10.4 類型擦除和泛型特性的
聯繫 266
12.10.5 使用泛型應該遵循的原則
和注意事項 267
第 13章 異常處理 268
(視頻總計24分鐘,實例8個,拓展實例16個,技術解惑4個)
13.1 什麼是異常 269
13.1.1 認識異常 269
13.1.2 Java的異常處理機制 269
13.1.3 Java提供的異常處理類 271
13.2 異常處理方式 272
13.2.1 使用try…catch處理
異常 272
13.2.2 處理多個異常 273
13.2.3 將finally關鍵字使用在
異常中 273
13.2.4 訪問異常信息 275
13.3 拋出異常 276
13.3.1 使用throws拋出異常 276
13.3.2 使用throw拋出異常 277
13.4 自定義異常 278
13.4.1 Throwable類介紹 278
13.4.2 使用Throwable類自定義
異常 280
13.5 分析Checked異常和Runtime
異常的區別 281
13.5.1 機制上 282
13.5.2 邏輯上 282
13.6 異常處理的陋習 283
13.6.1 丟棄異常 283
13.6.2 不指定具體的異常 284
13.6.3 占用資源不釋放 285
13.6.4 不說明異常的詳細信息 285
13.6.5 過於龐大的try塊 285
13.6.6 輸出數據不完整 285
13.7 異常處理語句的規則 286
13.8 技術解惑 288
13.8.1 用嵌套異常處理是更合理
的方法 288
13.8.2 區別throws關鍵字和throw
關鍵字 288
13.8.3 異常類的繼承關係 288
13.8.4 子類Error和Exception 288
第 14章 I/O與檔案處理 289
(視頻總計63分鐘,實例15個,拓展實例30個,技術解惑8個)
14.1 Java I/O簡介 290
14.2 File類 290
14.2.1 File類中的方法 290
14.2.2 使用File類操作檔案 291
14.3 RandomAccessFile類 293
14.3.1 RandomAccessFile類的
常用方法 294
14.3.2 使用RandomAccess
File類 294
14.4 位元組流與字元流 295
14.4.1 節流類和字元流類 295
14.4.2 使用位元組流 295
14.4.3 使用字元流 299
14.5 位元組轉換流 301
14.6 記憶體操作流 302
14.7 管道流 303
14.8 列印流 304
14.8.1 基礎知識 304
14.8.2 使用列印流 305
14.9 System類 306
14.9.1 System.out 306
14.9.2 System.err 306
14.9.3 System.in 307
14.9.4 輸入/輸出重定向 308
14.10 BufferedReader類 309
14.10.1 BufferedReader類基礎 309
14.10.2 使用BufferedReader類 310
14.11 Scanner類 311
14.11.1 Scanner類基礎 311
14.11.2 使用Scanner類 312
14.12 數據操作流 314
14.12.1 DataOutputStream類 314
14.12.2 DataInputStream類 315
14.13 合併流 316
14.14 壓縮流 317
14.14.1 ZIP壓縮輸入/輸出流
簡介 317
14.14.2 ZipOutputStream類 317
14.14.3 ZipFile類 320
14.14.4 ZipInputStream類 321
14.15 回退流 321
14.16 字元編碼 322
14.16.1 得到本機的編碼顯示 323
14.16.2 產生亂碼 323
14.17 對象序列化 324
14.17.1 Serializable接口 324
14.17.2 對象輸出流
ObjectOutputStream 324
14.17.3 對象輸入流
ObjectInputStream 325
14.17.4 Externalizable接口 326
14.17.5 關鍵字transient 327
14.17.6 序列化一組對象 328
14.18 新增的I/O 329
14.18.1 新I/O概述 329
14.18.2 使用Buffer 330
14.18.3 使用Channel 332
14.19 技術解惑 334
14.19.1 使用File.separator表示
分隔設定 334
14.19.2 綜合演練創建和刪除檔案
的操作 334
14.19.3 File類的複雜用法 335
14.19.4 位元組流和字元流的區別 335
14.19.5 System.err和System.out
選擇 337
14.19.6 使用I/O實現一個簡單的
選單效果 337
14.19.7 對象序列化和對象反序列
化操作時的版本兼容性
問題 339
14.19.8 不能讓所有的類都實現
Serializble接口 339
第 15章 AWT的奇幻世界 340
(視頻總計49分鐘,實例10個,拓展實例20個,技術解惑6個)
15.1 GUI和AWT 341
15.2 容器 344
15.2.1 容器基礎 344
15.2.2 容器中的常用組件 345
15.3 布局管理器 347
15.3.1 布局利器FlowLayout 347
15.3.2 布局利器BorderLayout 348
15.3.3 布局利器GridLayout 350
15.3.4 GridBagLayout布局
管理器 351
15.3.5 布局利器CardLayout 356
15.3.6 BoxLayout布局管理器 358
15.3.7 布局利器Null 360
15.4 AWT的常用組件 361
15.4.1 AWT中的組件 361
15.4.2 AWT中的對話框 363
15.5 事件處理 365
15.5.1 Java的事件模型 365
15.5.2 事件和事件監聽器 366
15.5.3 事件適配器 371
15.6 AWT的選單 372
15.6.1 選單條、選單和選單項 372
15.6.2 右鍵選單 374
15.7 繪圖 376
15.7.1 類Component中的繪圖
方法 376
15.7.2 Graphics類 376
15.8 點陣圖操作 378
15.8.1 Image類和
BufferedImage類 378
15.8.2 輸入/輸出點陣圖 380
15.9 技術解惑 382
15.9.1 使用絕 對定位 382
15.9.2 對事件處理模型的簡化
理解 382
15.9.3 使用AWT開發動畫 383
15.9.4 圖片縮放在現實中的
意義 383
15.9.5 AWT和Swing是窗體編程
的兩個主角 383
15.9.6 AWT中的選單組件不能
創建圖示選單 383
第 16章 Swing詳解 384
(視頻總計66分鐘,實例14個,拓展實例28個,技術解惑2個)
16.1 Swing基礎 385
16.2 Swing的組件 386
16.2.1 Swing組件的層次
結構 386
16.2.2 Swing實現AWT組件 387
16.2.3 Jframe、JscrollPane和
框線 391
16.2.4 JToolBar 393
16.2.5 JColorChooser和
JFileChooser 395
16.2.6 JOptionPane 397
16.2.7 JSplitPane 402
16.2.8 JTabbedPane 405
16.3 拖放處理 407
16.3.1 拖放處理基礎 407
16.3.2 Swing中的拖放處理 407
16.4 實現進度條效果——
JProgressBar、ProgressMonitor
和BoundedRangeModel 409
16.4.1 創建一個進度條 409
16.4.2 使用ProgressMonitor創建
進度條對話框 411
16.5 JSlider和BoundedRangeModel 412
16.6 JList和JComboBox 415
16.6.1 使用JList和JComboBox
的構造器創建列表框 415
16.6.2 使用ListCellRenderer 418
16.7 JTree和TreeModel 419
16.7.1 創建樹 420
16.7.2 拖動、編輯節點 421
16.8 技術解惑 425
16.8.1 貫穿Java開發的MVC
模式 425
16.8.2 Swing勝過AWT的
優勢 425
第 17章 資料庫編程 426
(視頻總計26分鐘,實例2個,拓展實例4個,技術解惑5個)
17.1 SQL基礎 427
17.1.1 數據定義 427
17.1.2 數據操縱 428
17.1.3 視圖 430
17.1.4 SQL高 級操作 430
17.2 初識JDBC 431
17.2.1 JDBC API 432
17.2.2 JDBC驅動類型 432
17.2.3 JDBC的常用接口和類 433
17.2.4 JDBC編程步驟 434
17.3 常用的幾種資料庫 437
17.3.1 Access資料庫 437
17.3.2 SQL Server資料庫 437
17.3.3 MySQL資料庫 440
17.4 執行SQL語句的方式 443
17.4.1 使用executeUpdate 443
17.4.2 使用execute方法 444
17.5 事務處理 446
17.5.1 JDBC中的事務控制 446
17.5.2 JDBC事務控制的流程 447
17.6 存儲過程 450
17.6.1 存儲過程基礎 450
17.6.2 創建存儲過程 450
17.6.3 調用創建存儲過程 452
17.7 技術解惑 453
17.7.1 池子的功效 453
17.7.2 伺服器自帶連線池的
問題 454
17.7.3 連線池模型 455
17.7.4 數據模型、概念模型和關係
數據模型 455
17.7.5 資料庫系統的結構 456
第 18章 網路與通信編程 457
(視頻總計45分鐘,實例8個,拓展實例16個,技術解惑6個)
18.1 Java中的網路包 458
18.1.1 InetAddress類詳解 458
18.1.2 URLDecoder類和
URLEncoder類詳解 458
18.1.3 URL和URLConnection 459
18.1.4 實踐演練 460
18.2 TCP編程 463
18.2.1 使用ServletSocket 463
18.2.2 使用Socket 464
18.2.3 TCP中的多執行緒 465
18.2.4 實現非阻塞Socket通信 468
18.3 UDP編程 472
18.3.1 使用DatagramSocket 472
18.3.2 使用MulticastSocket 475
18.4 代理伺服器 478
18.4.1 什麼是代理伺服器 478
18.4.2 使用Proxy創建連線 479
18.4.3 使用ProxySelector選擇
代理伺服器 480
18.4.4 伺服器代理實例 482
18.5 技術解惑 485
18.5.1 使用異常處理完善程式 485
18.5.2 使用ServerSocketChannel
的麻煩之處 485
18.5.3 體會煩瑣的
DatagramPacket 486
18.5.4 MulticastSocket類的重要
意義 486
18.5.5 繼承ProxySelector時需要
做的工作 486
18.5.6 代理服務無止境 486
第 19章 多執行緒 487
(視頻總計33分鐘,實例3個,拓展實例6個,技術解惑10個)
19.1 執行緒基礎 488
19.1.1 執行緒概述 488
19.1.2 執行緒帶來的意義 488
19.1.3 Java的執行緒模型 489
19.2 創建執行緒 490
19.2.1 使用Thread類創建
執行緒 490
19.2.2 使用Runnable接口創建
執行緒 492
19.3 執行緒的生命周期 493
19.3.1 創建並運行執行緒 494
19.3.2 掛起和喚醒執行緒 494
19.3.3 終止執行緒的3種方法 495
19.3.4 執行緒阻塞 497
19.3.5 執行緒死亡 498
19.4 控制執行緒 499
19.4.1 使用join方法 499
19.4.2 慎重使用volatile
關鍵字 500
19.4.3 後台、讓步和睡眠 501
19.5 執行緒傳遞數據 502
19.5.1 向執行緒傳遞數據的3種
方法 502
19.5.2 從執行緒返回數據的兩種
方法 504
19.6 數據同步 505
19.6.1 使用Synchronized關鍵字
同步類方法 509
19.6.2 使用Synchronized塊同步
變數 511
19.6.3 同步鎖 512
19.7 總結多執行緒編程的常見缺陷及其
產生的原因 514
19.7.1 死鎖問題 515
19.7.2 多執行緒編程的常見陷阱 517
19.8 技術解惑 521
19.8.1 執行緒和函式的關係 521
19.8.2 在run方法中使用執行緒名
時帶來的問題 521
19.8.3 繼承Thread類或實現
Runnable接口方式的
比較 521
19.8.4 start和run的區別 521
19.8.5 使用sleep()方法的注意
事項 521
19.8.6 執行緒的優先權 522
19.8.7 如何確定發生死鎖 522
19.8.8 關鍵字synchronized和
volatile的區別 522
19.8.9 sleep()方法和yield()方法
的區別 523
19.8.10 分析Swing的多執行緒死鎖
問題 523
第 20章 整合開發企業快信系統 524
(視頻總計41分鐘)
20.1 一個項目 525
20.1.1 背景分析 525
20.1.2 需求分析 525
20.1.3 核心技術分析 525
20.2 系統設計 525
20.2.1 系統目標 525
20.2.2 系統功能結構 525
20.3 搭建開發環境 526
20.3.1 建立簡訊貓開發環境 526
20.3.2 設計資料庫 527
20.3.3 設計表 528
20.4 規劃系統檔案 530
20.5 具體編碼 531
20.5.1 編寫公用模組代碼 531
20.5.2 設計主頁 534
20.5.3 名片夾管理模組 535
20.5.4 收發簡訊模組 540
20.5.5 郵件群發模組 543
20.6 分析Java Mail組件 544
20.6.1 Java Mail簡介 544
20.6.2 郵件協定簡介 545
20.6.3 郵件傳送 545
20.6.4 收取郵件 547
20.7 項目調試 547
2.5.3 環境變數的問題 31
2.5.4 大小寫的問題 31
2.5.5 main()方法的問題 31
2.5.6 注意空格問題 32
2.5.7 到底用不用IDE工具 32
2.5.8 區分JRE和JDK 32
第3章 Java語法 33
(視頻總計72分鐘,實例21個,拓展實例42個,技術解惑4個)
3.1 量 34
3.1.1 常量 34
3.1.2 變數 35
3.2 數據類型 37
3.2.1 簡單數據類型值的範圍 37
3.2.2 字元型 38
3.2.3 整型 39
3.2.4 浮點型 39
3.2.5 布爾型 40
3.3 運算符 41
3.3.1 算術運算符 41
3.3.2 關係運算符和邏輯運算符 44
3.3.3 位運算符 45
3.3.4 條件運算符 46
3.3.5 賦值運算符 47
3.3.6 運算符的優先權 48
3.4 標識符和關鍵字 49
3.4.1 標識符 49
3.4.2 關鍵字 50
3.5 字元串 50
3.5.1 字元串的初始化 50
3.5.2 String類 51
3.5.3 StringBuffer類 53
3.6 類型轉換 54
3.6.1 自動類型轉換 54
3.6.2 強制轉換 55
3.7 技術解惑 55
3.7.1 定義常量時的注意事項 55
3.7.2 char類型中單引號的意義 56
3.7.3 正無窮和負無窮的問題 56
3.7.4 移位運算符的限制 56
第4章 條件語句 58
(視頻總計28分鐘,實例6個,拓展實例12個,技術解惑4個)
4.1 if語句詳解 59
4.1.1 if語句 59
4.1.2 if語句的延伸 60
4.1.3 多個條件判斷的if語句 61
4.2 switch語句詳解 62
4.2.1 switch語句的形式 62
4.2.2 無break的情況 63
4.2.3 case沒有執行語句 64
4.2.4 default可以不在末尾 64
4.3 條件語句演練 65
4.3.1 正確使用switch語句 65
4.3.2 正確使用if語句 66
4.3.3 switch語句的執行順序 67
4.4 技術解惑 68
4.4.1 if-else語句的意義 68
4.4.2 使用switch語句時的幾個
注意事項 68
4.4.3 何時用switch語句比較好 69
4.4.4 switch語句和if…else if
語句的選擇 69
第5章 循環語句 70
(視頻總計24分鐘,實例8個,拓展實例16個,技術解惑2個)
5.1 Java循環語句 71
5.1.1 for循環 71
5.1.2 while循環語句 73
5.1.3 do-while循環語句 75
5.2 跳轉語句 76
5.2.1 break語句的套用 76
5.2.2 return語句的套用 78
5.2.3 continue跳轉語句 79
5.3 技術解惑 79
5.3.1 使用for循環的技巧 79
5.3.2 跳轉語句的選擇技巧 80
第6章 特殊數據—數組 82
(視頻總計33分鐘,實例8個,拓展實例16個,技術解惑4個)
6.1 簡單的一維數組 83
6.1.1 聲明一維數組 83
6.1.2 創建一維數組 83
6.1.3 初始化一維數組 84
6.2 二維數組 85
6.2.1 聲明二維數組 85
6.2.2 創建二維數組 85
6.2.3 初始化二維數組 86
6.3 三維數組 88
6.3.1 聲明三維數組 88
6.3.2 創建三維數組的方法 88
6.3.3 初始化三維數組 88
6.4 運算元組 89
6.4.1 複製數組 89
6.4.2 比較數組 90
6.4.3 搜尋數組中的元素 90
6.4.4 排序數組 91
6.4.5 填充數組 91
6.5 深入理解數組 93
6.5.1 動態數組 93
6.5.2 foreach循環 94
6.5.3 數組的內理 94
6.6 技術解惑 96
6.6.1 數組內是同一類型的數據 96
6.6.2 動態初始化數組的規則 96
6.6.3 引用類型 96
6.6.4 數組必須初始化 97
第7章 Java的面向對象(上) 98
(視頻總計35分鐘,實例7個,拓展實例14個,技術解惑5個)
7.1 類 99
7.1.1 定義類 99
7.1.2 定義屬性 99
7.1.3 定義方法 100
7.1.4 定義構造器 100
7.2 修飾符 101
7.2.1 public修飾符 101
7.2.2 private私有修飾符 101
7.2.3 protected保護修飾符 102
7.2.4 其他修飾符 103
7.3 方法詳解 103
7.3.1 方法的所屬性 104
7.3.2 傳遞方法參數 104
7.3.3 長度可變的方法 105
7.3.4 構造方法 106
7.3.5 遞歸方法 106
7.4 使用this 107
7.5 使用類和對象 108
7.5.1 創建和使用對象 108
7.5.2 使用靜態變數和靜態
方法 109
7.6 抽象類和抽象方法 109
7.6.1 抽象類和抽象方法基礎 110
7.6.2 抽象類必須有一個抽象
方法 111
7.6.3 抽象類的作用 112
7.7 軟體包 113
7.7.1 定義軟體包 113
7.7.2 在Eclipse定義軟體包 113
7.7.3 在程式里插入軟體包 114
7.8 技術解惑 115
7.8.1 Java傳遞引用類型的
實質 115
7.8.2 掌握this的好處 116
7.8.3 推出抽象方法的原因 117
7.8.4 什麼時候用抽象類 117
7.8.5 static修飾的作用 118
第8章 Java的面向對象(中) 119
(視頻總計31分鐘,實例7個,拓展實例14個,技術解惑6個)
8.1 類的繼承 120
8.1.1 父類和子類 120
8.1.2 調用父類的構造方法 121
8.1.3 訪問父類的屬性和方法 121
8.1.4 多重次繼承 122
8.1.5 重寫父類的方法 124
8.2 重寫和重載 125
8.2.1 重寫 125
8.2.2 重載 127
8.2.3 聯合使用重寫與重載 128
8.3 隱藏和封裝 128
8.3.1 Java中的封裝 128
8.3.2 使用訪問控制符 129
8.3.3 Java中的包 130
8.3.4 import 132
8.4 接口 132
8.4.1 定義接口 133
8.4.2 接口裡的量和方法 133
8.4.3 實現接口 134
8.4.4 引用接口 135
8.4.5 接口的繼承 136
8.4.6 接口和抽象類 137
8.5 技術解惑 138
8.5.1 重寫方法的兩點注意事項 138
8.5.2 重寫和重載的區別 138
8.5.3 舉例理解類的意義 138
8.5.4 Java包的一些規則 138
8.5.5 探討Package和import的
機制 139
8.5.6 Java接口編程的機理 140
第9章 Java的面向對象(下) 141
(視頻總計39分鐘,實例6個,拓展實例12個,技術解惑10個)
9.1 構造器詳解 142
9.1.1 初始化構造器 142
9.1.2 構造器重載 143
9.1.3 調用父類構造器 143
9.2 多態 144
9.2.1 何謂多態 144
9.2.2 演示Java中的多態 146
9.3 引用類型 147
9.3.1 4種引用類型 147
9.3.2 instanceof運算符 150
9.3.3 引用變數的強制類型
轉換 151
9.4 組合 152
9.5 初始化塊 154
9.5.1 何謂初始化塊 154
9.5.2 靜態初始化塊 155
9.6 包裝類 156
9.7 深入詳解final修飾符 157
9.7.1 用final修飾變數 158
9.7.2 final方法 159
9.8 內部類 160
9.8.1 何謂內部類 160
9.8.2 非靜態內部類 160
9.8.3 成員內部類 162
9.8.4 局部內部類 162
9.8.5 靜態內部類 163
9.8.6 匿名內部類 164
9.8.7 匿名類和內部類中的
this 166
9.8.8 總結Java內部類 167
9.9 枚舉類 170
9.9.1 枚舉類的方法 170
9.9.2 手動實現枚舉類 170
9.9.3 枚舉類型 172
9.10 技術解惑 174
9.10.1 構造器和方法的區別 174
9.10.2 this在構造器中的妙用 175
9.10.3 分析子類構造器調用父類
構造器的幾種情況 175
9.10.4 要避免編譯錯誤 175
9.10.5 強制類型轉換不是
萬 能的 176
9.10.6 繼承和組合的選擇 176
9.10.7 分析發生異常的原因 176
9.10.8 用final修飾基本類型和
引用類型變數之間的
區別 176
9.10.9 類的4種許可權 177
9.10.10 手工實現枚舉類的缺點 177
第 10章 集合 178
(視頻總計51分鐘,實例8個,拓展實例16個,技術解惑8個)
10.1 Java集合概述 179
10.2 Collection接口和Iterator接口 180
10.2.1 基礎知識介紹 180
10.2.2 Collection接口和Iterator
接口 181
10.3 Set接口 182
10.3.1 基礎知識介紹 182
10.3.2 使用HashSet 185
10.3.3 使用TreeSet類 186
10.3.4 使用EnumSet類 188
10.4 List接口 190
10.4.1 基本知識介紹 190
10.4.2 使用List接口和ListIterator
接口 192
10.4.3 使用ArrayList和
Vector類 193
10.5 Map接口 194
10.5.1 基本知識介紹 194
10.5.2 使用HashMap和Hashtable
實現類 198
10.5.3 使用SortedMap接口和
TreeMap實現類 199
10.5.4 使用WeakHashMap類 201
10.5.5 使用IdentityHashMap類 202
10.5.6 使用EnumMap類 202
10.6 Queue接口 203
10.6.1 LinkedList類 203
10.6.2 PriorityQueue類 205
10.7 集合工具類Collections 205
10.7.1 排序操作 205
10.7.2 查找和替換操作 206
10.8 其他集合類 207
10.8.1 Stack類 207
10.8.2 屬性類Properties 208
10.9 技術解惑 211
10.9.1 Collection集合元素的改變
問題 211
10.9.2 深入理解HashSet 211
10.9.3 使用類EnumSet時的注意
事項 211
10.9.4 ArrayList和Vector的
區別 212
10.9.5 TreeMap判斷兩個元素
相等的標準 212
10.9.6 分析幾種Map類的
性能 212
10.9.7 LinkedList、ArrayList、
Vector性能問題的研究 212
10.9.8 用swap()方法把集合中
兩個位置的內容進行
交換 212
第 11章 常用的類庫 214
(視頻總計54分鐘,實例15個,拓展實例30個,技術解惑5個)
11.1 StringBuffer類 215
11.1.1 StringBuffer類基礎 215
11.1.2 使用StringBuffer類 215
11.2 Runtime類 217
11.2.1 Runtime類 217
11.2.2 使用Runtime類 218
11.3 程式國際化 219
11.3.1 國際化基礎 219
11.3.2 Locale類 219
11.3.3 ResourceBundle類 220
11.3.4 處理動態文本 221
11.3.5 使用類代替資源檔案 222
11.4 System類 222
11.4.1 System類基礎 223
11.4.2 垃圾對象的回收 223
11.5 Date類 224
11.5.1 使用Date類 224
11.5.2 使用Calendar類 225
11.5.3 使用DateFormat類 225
11.5.4 使用SimpleDate
Format類 226
11.6 Math類 227
11.7 Random類 228
11.8 NumberFormat類 229
11.9 BigInteger類 230
11.10 BigDecimal類 231
11.11 克隆對象 233
11.12 Arrays類 233
11.13 接口Comparable 234
11.13.1 Comparable接口基礎 234
11.13.2 使用Comparable接口 235
11.13.3 使用Comparator接口 236
11.14 Observable類和Observer
接口 237
11.15 正則表達式 239
11.15.1 正則表達式基礎 239
11.15.2 使用Pattern類和
Matcher類 240
11.15.3 String類和正則表達式 240
11.16 Timer類和TimerTask類 241
11.16.1 Timer類 241
11.16.2 TimerTask類 242
11.17 技術解惑 243
11.17.1 StringBuffer和String
選擇的異同 243
11.17.2 通過System類獲取本機
的全部環境屬性 243
11.17.3 分析對象的生命周期 244
11.17.4 如果沒有實現Comparable
接口會出現異常 244
11.17.5 體驗正則表達式的
好處 245
第 12章 泛型 246
(視頻總計28分鐘,實例6個,拓展實例12個,技術解惑5個)
12.1 泛型基礎 247
12.1.1 泛型的好處 247
12.1.2 類型檢查 247
12.1.3 使用泛型 249
12.2 泛型詳解 249
12.2.1 定義泛型接口和類 250
12.2.2 派生子類 250
12.2.3 並不存在泛型類 251
12.3 類型通配符 252
12.3.1 設定類型通配符的上限 252
12.3.2 設定類型形參的上限 254
12.4 泛型方法 254
12.4.1 定義泛型方法 254
12.4.2 設定通配符下限 257
12.5 泛型接口 258
12.6 泛型繼承 259
12.6.1 以泛型類為父類 259
12.6.2 以非泛型類為父類 260
12.7 運行時類型識別 260
12.8 強制類型轉換 261
12.9 擦除 262
12.9.1 擦除基礎 262
12.9.2 擦除帶來的錯誤 264
12.10 技術解惑 265
12.10.1 徹底分析Java語言中
泛型的本質 265
12.10.2 泛型方法和類型通配符的
區別 265
12.10.3 泛型類的繼承規則 266
12.10.4 類型擦除和泛型特性的
聯繫 266
12.10.5 使用泛型應該遵循的原則
和注意事項 267
第 13章 異常處理 268
(視頻總計24分鐘,實例8個,拓展實例16個,技術解惑4個)
13.1 什麼是異常 269
13.1.1 認識異常 269
13.1.2 Java的異常處理機制 269
13.1.3 Java提供的異常處理類 271
13.2 異常處理方式 272
13.2.1 使用try…catch處理
異常 272
13.2.2 處理多個異常 273
13.2.3 將finally關鍵字使用在
異常中 273
13.2.4 訪問異常信息 275
13.3 拋出異常 276
13.3.1 使用throws拋出異常 276
13.3.2 使用throw拋出異常 277
13.4 自定義異常 278
13.4.1 Throwable類介紹 278
13.4.2 使用Throwable類自定義
異常 280
13.5 分析Checked異常和Runtime
異常的區別 281
13.5.1 機制上 282
13.5.2 邏輯上 282
13.6 異常處理的陋習 283
13.6.1 丟棄異常 283
13.6.2 不指定具體的異常 284
13.6.3 占用資源不釋放 285
13.6.4 不說明異常的詳細信息 285
13.6.5 過於龐大的try塊 285
13.6.6 輸出數據不完整 285
13.7 異常處理語句的規則 286
13.8 技術解惑 288
13.8.1 用嵌套異常處理是更合理
的方法 288
13.8.2 區別throws關鍵字和throw
關鍵字 288
13.8.3 異常類的繼承關係 288
13.8.4 子類Error和Exception 288
第 14章 I/O與檔案處理 289
(視頻總計63分鐘,實例15個,拓展實例30個,技術解惑8個)
14.1 Java I/O簡介 290
14.2 File類 290
14.2.1 File類中的方法 290
14.2.2 使用File類操作檔案 291
14.3 RandomAccessFile類 293
14.3.1 RandomAccessFile類的
常用方法 294
14.3.2 使用RandomAccess
File類 294
14.4 位元組流與字元流 295
14.4.1 節流類和字元流類 295
14.4.2 使用位元組流 295
14.4.3 使用字元流 299
14.5 位元組轉換流 301
14.6 記憶體操作流 302
14.7 管道流 303
14.8 列印流 304
14.8.1 基礎知識 304
14.8.2 使用列印流 305
14.9 System類 306
14.9.1 System.out 306
14.9.2 System.err 306
14.9.3 System.in 307
14.9.4 輸入/輸出重定向 308
14.10 BufferedReader類 309
14.10.1 BufferedReader類基礎 309
14.10.2 使用BufferedReader類 310
14.11 Scanner類 311
14.11.1 Scanner類基礎 311
14.11.2 使用Scanner類 312
14.12 數據操作流 314
14.12.1 DataOutputStream類 314
14.12.2 DataInputStream類 315
14.13 合併流 316
14.14 壓縮流 317
14.14.1 ZIP壓縮輸入/輸出流
簡介 317
14.14.2 ZipOutputStream類 317
14.14.3 ZipFile類 320
14.14.4 ZipInputStream類 321
14.15 回退流 321
14.16 字元編碼 322
14.16.1 得到本機的編碼顯示 323
14.16.2 產生亂碼 323
14.17 對象序列化 324
14.17.1 Serializable接口 324
14.17.2 對象輸出流
ObjectOutputStream 324
14.17.3 對象輸入流
ObjectInputStream 325
14.17.4 Externalizable接口 326
14.17.5 關鍵字transient 327
14.17.6 序列化一組對象 328
14.18 新增的I/O 329
14.18.1 新I/O概述 329
14.18.2 使用Buffer 330
14.18.3 使用Channel 332
14.19 技術解惑 334
14.19.1 使用File.separator表示
分隔設定 334
14.19.2 綜合演練創建和刪除檔案
的操作 334
14.19.3 File類的複雜用法 335
14.19.4 位元組流和字元流的區別 335
14.19.5 System.err和System.out
選擇 337
14.19.6 使用I/O實現一個簡單的
選單效果 337
14.19.7 對象序列化和對象反序列
化操作時的版本兼容性
問題 339
14.19.8 不能讓所有的類都實現
Serializble接口 339
第 15章 AWT的奇幻世界 340
(視頻總計49分鐘,實例10個,拓展實例20個,技術解惑6個)
15.1 GUI和AWT 341
15.2 容器 344
15.2.1 容器基礎 344
15.2.2 容器中的常用組件 345
15.3 布局管理器 347
15.3.1 布局利器FlowLayout 347
15.3.2 布局利器BorderLayout 348
15.3.3 布局利器GridLayout 350
15.3.4 GridBagLayout布局
管理器 351
15.3.5 布局利器CardLayout 356
15.3.6 BoxLayout布局管理器 358
15.3.7 布局利器Null 360
15.4 AWT的常用組件 361
15.4.1 AWT中的組件 361
15.4.2 AWT中的對話框 363
15.5 事件處理 365
15.5.1 Java的事件模型 365
15.5.2 事件和事件監聽器 366
15.5.3 事件適配器 371
15.6 AWT的選單 372
15.6.1 選單條、選單和選單項 372
15.6.2 右鍵選單 374
15.7 繪圖 376
15.7.1 類Component中的繪圖
方法 376
15.7.2 Graphics類 376
15.8 點陣圖操作 378
15.8.1 Image類和
BufferedImage類 378
15.8.2 輸入/輸出點陣圖 380
15.9 技術解惑 382
15.9.1 使用絕 對定位 382
15.9.2 對事件處理模型的簡化
理解 382
15.9.3 使用AWT開發動畫 383
15.9.4 圖片縮放在現實中的
意義 383
15.9.5 AWT和Swing是窗體編程
的兩個主角 383
15.9.6 AWT中的選單組件不能
創建圖示選單 383
第 16章 Swing詳解 384
(視頻總計66分鐘,實例14個,拓展實例28個,技術解惑2個)
16.1 Swing基礎 385
16.2 Swing的組件 386
16.2.1 Swing組件的層次
結構 386
16.2.2 Swing實現AWT組件 387
16.2.3 Jframe、JscrollPane和
框線 391
16.2.4 JToolBar 393
16.2.5 JColorChooser和
JFileChooser 395
16.2.6 JOptionPane 397
16.2.7 JSplitPane 402
16.2.8 JTabbedPane 405
16.3 拖放處理 407
16.3.1 拖放處理基礎 407
16.3.2 Swing中的拖放處理 407
16.4 實現進度條效果——
JProgressBar、ProgressMonitor
和BoundedRangeModel 409
16.4.1 創建一個進度條 409
16.4.2 使用ProgressMonitor創建
進度條對話框 411
16.5 JSlider和BoundedRangeModel 412
16.6 JList和JComboBox 415
16.6.1 使用JList和JComboBox
的構造器創建列表框 415
16.6.2 使用ListCellRenderer 418
16.7 JTree和TreeModel 419
16.7.1 創建樹 420
16.7.2 拖動、編輯節點 421
16.8 技術解惑 425
16.8.1 貫穿Java開發的MVC
模式 425
16.8.2 Swing勝過AWT的
優勢 425
第 17章 資料庫編程 426
(視頻總計26分鐘,實例2個,拓展實例4個,技術解惑5個)
17.1 SQL基礎 427
17.1.1 數據定義 427
17.1.2 數據操縱 428
17.1.3 視圖 430
17.1.4 SQL高 級操作 430
17.2 初識JDBC 431
17.2.1 JDBC API 432
17.2.2 JDBC驅動類型 432
17.2.3 JDBC的常用接口和類 433
17.2.4 JDBC編程步驟 434
17.3 常用的幾種資料庫 437
17.3.1 Access資料庫 437
17.3.2 SQL Server資料庫 437
17.3.3 MySQL資料庫 440
17.4 執行SQL語句的方式 443
17.4.1 使用executeUpdate 443
17.4.2 使用execute方法 444
17.5 事務處理 446
17.5.1 JDBC中的事務控制 446
17.5.2 JDBC事務控制的流程 447
17.6 存儲過程 450
17.6.1 存儲過程基礎 450
17.6.2 創建存儲過程 450
17.6.3 調用創建存儲過程 452
17.7 技術解惑 453
17.7.1 池子的功效 453
17.7.2 伺服器自帶連線池的
問題 454
17.7.3 連線池模型 455
17.7.4 數據模型、概念模型和關係
數據模型 455
17.7.5 資料庫系統的結構 456
第 18章 網路與通信編程 457
(視頻總計45分鐘,實例8個,拓展實例16個,技術解惑6個)
18.1 Java中的網路包 458
18.1.1 InetAddress類詳解 458
18.1.2 URLDecoder類和
URLEncoder類詳解 458
18.1.3 URL和URLConnection 459
18.1.4 實踐演練 460
18.2 TCP編程 463
18.2.1 使用ServletSocket 463
18.2.2 使用Socket 464
18.2.3 TCP中的多執行緒 465
18.2.4 實現非阻塞Socket通信 468
18.3 UDP編程 472
18.3.1 使用DatagramSocket 472
18.3.2 使用MulticastSocket 475
18.4 代理伺服器 478
18.4.1 什麼是代理伺服器 478
18.4.2 使用Proxy創建連線 479
18.4.3 使用ProxySelector選擇
代理伺服器 480
18.4.4 伺服器代理實例 482
18.5 技術解惑 485
18.5.1 使用異常處理完善程式 485
18.5.2 使用ServerSocketChannel
的麻煩之處 485
18.5.3 體會煩瑣的
DatagramPacket 486
18.5.4 MulticastSocket類的重要
意義 486
18.5.5 繼承ProxySelector時需要
做的工作 486
18.5.6 代理服務無止境 486
第 19章 多執行緒 487
(視頻總計33分鐘,實例3個,拓展實例6個,技術解惑10個)
19.1 執行緒基礎 488
19.1.1 執行緒概述 488
19.1.2 執行緒帶來的意義 488
19.1.3 Java的執行緒模型 489
19.2 創建執行緒 490
19.2.1 使用Thread類創建
執行緒 490
19.2.2 使用Runnable接口創建
執行緒 492
19.3 執行緒的生命周期 493
19.3.1 創建並運行執行緒 494
19.3.2 掛起和喚醒執行緒 494
19.3.3 終止執行緒的3種方法 495
19.3.4 執行緒阻塞 497
19.3.5 執行緒死亡 498
19.4 控制執行緒 499
19.4.1 使用join方法 499
19.4.2 慎重使用volatile
關鍵字 500
19.4.3 後台、讓步和睡眠 501
19.5 執行緒傳遞數據 502
19.5.1 向執行緒傳遞數據的3種
方法 502
19.5.2 從執行緒返回數據的兩種
方法 504
19.6 數據同步 505
19.6.1 使用Synchronized關鍵字
同步類方法 509
19.6.2 使用Synchronized塊同步
變數 511
19.6.3 同步鎖 512
19.7 總結多執行緒編程的常見缺陷及其
產生的原因 514
19.7.1 死鎖問題 515
19.7.2 多執行緒編程的常見陷阱 517
19.8 技術解惑 521
19.8.1 執行緒和函式的關係 521
19.8.2 在run方法中使用執行緒名
時帶來的問題 521
19.8.3 繼承Thread類或實現
Runnable接口方式的
比較 521
19.8.4 start和run的區別 521
19.8.5 使用sleep()方法的注意
事項 521
19.8.6 執行緒的優先權 522
19.8.7 如何確定發生死鎖 522
19.8.8 關鍵字synchronized和
volatile的區別 522
19.8.9 sleep()方法和yield()方法
的區別 523
19.8.10 分析Swing的多執行緒死鎖
問題 523
第 20章 整合開發企業快信系統 524
(視頻總計41分鐘)
20.1 一個項目 525
20.1.1 背景分析 525
20.1.2 需求分析 525
20.1.3 核心技術分析 525
20.2 系統設計 525
20.2.1 系統目標 525
20.2.2 系統功能結構 525
20.3 搭建開發環境 526
20.3.1 建立簡訊貓開發環境 526
20.3.2 設計資料庫 527
20.3.3 設計表 528
20.4 規劃系統檔案 530
20.5 具體編碼 531
20.5.1 編寫公用模組代碼 531
20.5.2 設計主頁 534
20.5.3 名片夾管理模組 535
20.5.4 收發簡訊模組 540
20.5.5 郵件群發模組 543
20.6 分析Java Mail組件 544
20.6.1 Java Mail簡介 544
20.6.2 郵件協定簡介 545
20.6.3 郵件傳送 545
20.6.4 收取郵件 547
20.7 項目調試 547

相關詞條

熱門詞條

聯絡我們