Java特種兵 Java特种兵(附光盘上)

謝宇

  • 出版商: 電子工業
  • 出版日期: 2014-08-31
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 475
  • 裝訂: 平裝
  • ISBN: 7121239353
  • ISBN-13: 9787121239359
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書分上、下冊,上冊強調個人修為的提升,也是本書主旨所在,希望能幫助各位讀者朋友提升“功力”;下冊將基於上冊的內容融入設計、實現的細節。本書上冊共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 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