Java特種兵(上冊)

Java特種兵(上冊)

《Java特種兵(上冊)》是2014年9月電子工業出版社出版的圖書,作者是謝宇

基本介紹

  • 中文名:Java特種兵(上冊)
  • 作者:謝宇
  • 出版時間:2014年9月
  • 出版社:電子工業出版社
  • 頁數:492 頁
  • ISBN:9787121239359
  • 定價:79 元
  • 開本:16 開
內容簡介,圖書目錄,

內容簡介

本書分上、下冊,上冊強調個人修為的提升,也是本書主旨所在,希望能幫助各位讀者朋友提升“功力”;下冊將基於上冊的內容融入設計、實現的細節。
本書上冊共10章,主要內容包括:從簡單的角度來驗證功底,通過一些簡單的例子來說明我們應當如何去掌握Java的基礎;關於計算機的工作原理和Java虛擬機的基礎知識;Java通信;Java並發;資料庫知識;源碼基礎,說明Java常見的框架基礎知識,比如反射、AOP、ORM、Annotation和配置檔案的原理;JDBC、Spring的源碼講解,通過幾種不同類型的框架源碼,希望讀者能體會源碼之中的思維方式、設計、架構,以及了解到不同源碼的區別所在;最後是知識總結。

圖書目錄

第1篇 Java功底篇
第1章 扎馬:看看功底如何 2
1.1 String的例子,見證下我們的功底 2
1.1.1 關於“==” 3
1.1.2 關於“equals()” 3
1.1.3 編譯時最佳化方案 6
1.1.4 補充一個例子 6
1.1.5 跟String較上勁了 8
1.1.6 intern()/equals() 9
1.1.7 StringBuilder.append()與String“+”的PK 11
1.2 一些簡單算法,你會如何理解 15
1.2.1 從一堆數據中找max和min 16
1.2.2 從100萬個數字中找最大的10個數字 17
1.2.3 關於排序,實際場景很重要 17
1.2.4 資料庫是怎么找數據的 18
1.2.5 Hash算法的形象概念 18
1.3 簡單數字遊戲玩一玩 20
1.3.1 變數A、B交換有幾種方式 20
1.3.2 將無序數據Hash到指定的板塊 20
1.3.3 大量判定“是|否”的操作 21
1.3.4 簡單的數據轉換 22
1.3.5 數字太大,long都存放不下 23
1.4 功底概述 25
1.4.1 什麼是功底 25
1.4.2 功底有何用途 25
1.4.3 如何磨練功底 26
1.5 功底補充 27
1.5.1 原生態類型 27
1.5.2 集合類 30
1.6 常見的目錄與工具包 32
1.7 面對技術,我們糾結的那些事兒 34
1.7.1 為什麼我這裡好用,哪裡不好用 34
1.7.2 你的程式不好用,你會不會用,環境有問題 35
1.7.3 經驗是否能當飯吃 36
1.8 老A是在逆境中迎難而上者 37
第2章 Java程式設計師要知道計算機工作原理 41
2.1 Java程式設計師需要知道計算機工作原理嗎 41
2.2 CPU的那些事兒 42
2.2.1 從CPU聯繫到Java 42
2.2.2 多核 46
2.2.3 Cache line 47
2.2.4 快取一致性協定 49
2.2.5 上下文切換 50
2.2.6 並發與徵用 51
2.3 記憶體 54
2.4 磁碟 57
2.5 快取 60
2.5.1 快取的相對性 60
2.5.2 快取的用途和場景 62
2.6 關於網路與資料庫 63
2.6.1 Java基本I/O 63
2.6.2 Java的網路基本原則 64
2.6.3 Java與資料庫的互動 71
2.7 總結 72
第3章 JVM,Java程式設計師的OS 73
3.1 學習Java虛擬機對我們有什麼好處 73
3.2 跨平台與位元組碼基本原理 74
3.2.1 javap命令工具 74
3.2.2 Java位元組碼結構 85
3.2.3 Class位元組碼的載入 93
3.2.4 位元組碼增強 98
3.3 從虛擬機的板塊開始 108
3.3.1 Hotspot VM板塊劃分 108
3.3.2 “對象存放位置”小總結 114
3.3.3 關於永久代 115
3.4 常見的虛擬機回收算法 116
3.4.1 串列GC 117
3.4.2 ParallelGC與ParallelOldGC 118
3.4.3 CMS GC與未來的G1 121
3.4.4 簡單總結 124
3.4.5 小小補充 125
3.5 淺析Java對象的記憶體結構 126
3.5.1 原始類型與對象的自動拆裝箱 126
3.5.2 對象記憶體結構 127
3.5.3 對象嵌套 130
3.5.4 常見類型 & 集合類的記憶體結構 131
3.5.5 程式中記憶體拷貝和垃圾 134
3.5.6 如何計算對象大小 134
3.5.7 輕鬆玩一玩int[2][100]PK int[100][2] 135
3.6 常見的OOM現象 136
3.6.1 HeapSize OOM 136
3.6.2 PermGen OOM 139
3.6.3 DirectBuffer OOM 142
3.6.4 StackOverflowError 144
3.6.5 其他的一些記憶體溢出現象 146
3.7 常見的Java工具 146
3.7.1 jps 147
3.7.2 jstat 147
3.7.3 jmap 148
3.7.4 jstack 148
3.7.5 jinfo 149
3.7.6 JConsole 150
3.7.7 Visual VM 154
3.7.8 MAT(Memory Analyzer Tool) 156
3.7.9 BTrace 160
3.7.10 HSDB 165
3.7.11 工具總結 166
3.8 總結 167
3.8.1 寫代碼 167
3.8.2 心理上戰勝虛擬機帶來的恐懼 170
第4章 Java通信,互動就需要通信 171
4.1 通信概述 171
4.1.1 Java通信的基本過程 171
4.1.2 Java通信的協定包裝 173
4.1.3 編寫自定義通信協定 173
4.1.4 Java的I/O流是不是很難學 186
4.2 Java I/O與記憶體的那些事 191
4.2.1 常規I/O操作的運作過程 191
4.2.2 DirectBuffer的使用 191
4.2.3 關於Buffer 195
4.2.4 FileChannel的加鎖 197
4.3 通信調度方式 197
4.3.1 同步與異步 197
4.3.2 阻塞與非阻塞 198
4.3.3 Linux OS調度IO模型 199
4.3.4 Java中的BIO、NIO 199
4.3.5 Java AIO 210
4.4 Tomcat中對I/O的請求處理 214
4.4.1 Tomcat的配置&一個請求的回響 214
4.4.2 Request、Response對象生成 221
4.4.3 拉與推 226
第5章 Java並發,你會遇到嗎 228
5.1 基礎介紹 228
5.1.1 執行緒基礎 228
5.1.2 多執行緒 231
5.1.3 執行緒狀態 231
5.1.4 反面教材suspend()、resume()、stop() 236
5.1.5 調度優先權 238
5.1.6 執行緒合併(Join) 239
5.1.7 執行緒補充小知識 241
5.2 執行緒安全 243
5.2.1 並發記憶體模型概述 243
5.2.2 一些並發問題描述 246
5.2.3 volatile 248
5.2.4 final 251
5.2.5 棧封閉 254
5.2.6 ThreadLocal 255
5.3 原子性與鎖 261
5.3.1 synchronized 261
5.3.2 什麼是樂觀鎖 262
5.3.3 並發與鎖 263
5.3.4 Atomic 264
5.3.5 Lock 272
5.3.6 並發編程核心AQS原理 273
5.3.7 鎖的自身最佳化方法 281
5.4 JDK 1.6並發編程的一些集合類 282
5.5 常見的並發編程工具 284
5.5.1 CountDownLatch 284
5.5.2 CyclicBarrier 286
5.5.3 Semaphor 288
5.5.4 其他工具簡介 290
5.6 執行緒池&調度池 293
5.6.1 阻塞佇列模型 293
5.6.2 ThreadPoolExecutor 294
5.6.3 調度器ScheduleThread PoolExecutor 306
5.7 總結:編寫並發程式要注意些什麼 317
5.7.1 鎖粒度 317
5.7.2 死鎖 321
5.7.3 “坑”很多 323
5.7.4 並發效率一定高嗎 329
5.8 其他的並發編程知識 330
5.8.1 ShutdownHook(鉤子執行緒) 330
5.8.2 Future 332
5.8.3 異步並不等價於多執行緒 333
第6章 好的程式設計師應當知道資料庫基本原理 335
6.1 開發人員為什麼要知道資料庫原理 335
6.2 從開發人員角度看資料庫原理 337
6.2.1 實例與存儲 338
6.2.2 資料庫基本原理 339
6.2.3 索引基本原理 348
6.2.4 資料庫主從基本原理 354
6.2.5 我們經常相信的那些經驗 354
6.3 從程式設計師角度看資料庫最佳化方法 355
6.3.1 不同領域的SQL區別 355
6.3.2 執行計畫 356
6.3.3 SQL邏輯的例子 365
6.3.4 模型結構設計的最佳化 366
6.3.5 臨時表 367
6.3.6 分頁知識補充 368
6.3.7 計算count值 369
6.3.8 分散式事務探討 369
6.3.9 其他 371
6.4 學會最基本的性能診斷 372
6.4.1 進入雲資料庫時代 372
6.4.2 從程式設計師角度關注的資料庫診斷信息 373
6.5 數風流存儲,還看今朝 373
第2篇 源碼篇
第7章 源碼基礎 380
7.1 為何會出現框架 380
7.2 閱讀框架前的技術儲備 384
7.2.1 反射基礎知識 384
7.2.2 AOP基礎 390
7.2.3 ORM基礎 395
7.2.4 Annotation與配置檔案 398
第8章 部分JDBC源碼講解 403
8.1 JDBC通用接口規範 403
8.2 JDBC Driver註冊 404
8.3 創建Connection 411
8.4 SQL執行及處理 417
8.4.1 創建Statement 417
8.4.2 Batch設定批處理 419
8.4.3 fetchSize與maxRows 424
8.4.4 setQueryTimeout()與cancel() 429
第9章 部分Spring源碼講解 433
9.1 Spring MVC 433
9.1.1 Spring載入 433
9.1.2 Spring MVC處理一個簡單請求 443
9.2 Spring事務管理器 447
9.2.1 JDBC事務的基本思想 447
9.2.2 Spring事務管理器的基本架構 448
9.2.3 Spring如何保存Connection 449
9.2.4 Spring如何保證程式中多次獲取到的連線是同一個 451
9.3 思考:自己做框架有眉目了嗎 454
第10章 看源碼的一些總結 457
10.1 高手看API的能力 457
10.2 通過源碼能否量化性能與穩定性 461
10.3 思考相似方案和技術的優缺點 463
10.4 明確場景和業務,不做技術控 464
10.4.1 談談技術控的那些事 464
10.4.2 明確業務背景的例子 466
10.5 胖哥對框架的淺析 468
10.5.1 框架由來的一個補充 468
10.5.2 開源框架與擴展 469
10.5.3 框架與解決問題 473
10.6 學海無涯,心境無限 474

相關詞條

熱門詞條

聯絡我們