開啟主選單

求真百科

Java特種兵

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

《Java特種兵(上冊)》共10章,主要內容包括:從簡單的角度來驗證功底,通過一些簡單的例子來說明我們應當如何去掌握Java的基礎;關於計算機的工作原理和Java虛擬機的基礎知識;Java通信;Java並發;數據庫知識;源碼基礎,說明Java常見的框架基礎知識,比如反射、AOP、ORM、Annotation和配置文件的原理;JDBC、Spring的源碼講解,通過幾種不同類型的框架源碼,希望讀者能體會源碼之中的思維方式、設計、架構,以及了解到不同源碼的區別所在;最後是知識總結。

目錄

基本內容

書名:Java特種兵

出版日期:2014年9月1日

ISBN:9787121239359

出版社:電子工業出版社

開本:16 開

外文名:Java special forces

類型:計算機與互聯網

語種:簡體中文

作者:謝宇

頁數:475 頁

品牌:電子工業出版社

推薦

《Java特種兵(上冊)》既適合有一定Java基礎,並希望能在Java技術上有所成長的人閱讀,也適合能靜心看書的初學者,以及以自我提升為主要目的的讀者閱讀,還適合工作一段時間,對知識和發展的方向很迷茫,甚至對某些觀念也比較迷茫,但是又渴望去解決這些問題,渴望自己成長,渴望自己能找到道路的人閱讀。

內容簡介

TB網Java技術專家,CSDN 超人氣博主作品,全面提升Java單兵作戰能力!

該書「雕琢」的系統,為阿里超大規模的數據庫集群服務!

完全突破Java圖書從環境搭建到語法點羅列再到案例總結的寫作慣例,直逼底層,懂原理,看源碼,奠定Java老A的堅實基礎!

沒有數頁代碼的簡單堆砌,有的是新穎的思考方法;沒有各類語法的無聊羅列,更多的是在探索技術背後的思路; 沒有難懂術語的枯燥晦澀,用的是對話和探討;輕鬆,愉快,讀來不忍釋卷,要學Java,這本書不容錯過!

作者簡介

2008.6~2009.5東軟集團有限公司2009.5~2010.10 亞信聯創科技2010.10~至今 淘寶(中國)軟件有限公司

圖書目錄

第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.5Hash算法的形象概念 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 Parallel GC與Parallel Old GC 118

3.4.3 CMS GC與未來的G1121

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

序言

本書書名為《Java特種兵》,又名《Java老A》,目的很簡單,希望作為讀者朋友的你,有一天能夠成為一個單兵作戰能力極度強悍的Java程序員。眾所周知,Java程序員多如牛毛,我希望學習本書的讀者有志者事竟成、出類拔萃,練就一身好本領,成為Java界的特種兵。[1]

參考文獻