關於寫的Java書籍進展
大家好,去年說要寫本Java書,近期就快出版了。目前已經開始打印樣書了,最快於本月中旬左右就可以在互動網www.china-pub.com上看到消息,其它各個網站何時會發售要看具體進貨情況。
去年我預期是半年寫好這本書,6個月左右確實將手稿寫好,但由於是第一次寫書,所以沒有意料到許多review的成本也是很高的,另外需要在每次review過後與出版社溝通,一直拖到現在才準備出版(而且還隻出了上冊),很多小夥伴已經等得花兒都謝了,哈哈!我也有類似的感覺,去年寫的有些內容現在已經快過時了,嗬嗬,不過還好重點不是技術點本身。
經過幾次review下來後,書中改掉許多問題,也刪掉了一些內容,肯定比手稿看起來要順暢很多。不過肯定還有一些沒有注意到的地方,希望大家能夠諒解。
這本書在寫的過程中越寫越多,去年年底發現寫的內容已經遠遠超過了計劃的字數和篇幅。因此與出版社決定分為“上下冊”出版,本次出版的就是上冊,上冊是完全講解基礎的,也是胖哥認為最好的。本次出版的也是上冊,據出版社介紹,上冊內容部分總共為490頁。
這本書從寫這一年多以來很久,很多小夥伴一直對這本書的名字很感興趣,哈哈,本書的名字還是有點霸氣的,叫做《Java特種兵》,不過我想說的是名字隻是一個嚼頭,並不是說看了這本書就成特種兵了,具體細節可以看書裏麵的前言部分,本書封麵基本定下來,可參考下圖:
這本書上冊有2個篇,一個是基礎篇、一個是源碼篇。最近也有很多小夥伴問我到底要寫什麼,這裏我就貼下目錄:
上冊目錄如下:
第1篇 Java功底篇
第1章 紮馬:看看功底如何
1.1 String的例子,見證下我們的功底
1.1.1 關於“==”
1.1.2 關於“equals()”
1.1.3 編譯時優化方案
1.1.4 補充一個例子
1.1.5 跟String較勁上了
1.1.6 intern()/equals()
1.1.7 StringBuilder.append()與String“+”的PK..
1.2 一些簡單算法,你會如何理解
1.2.1 從一堆數據中找max和min
1.2.2 從100萬個數字中找最大的10個數字
1.2.3 關於排序,實際場景很重要
1.2.4 數據庫是怎麼找數據的
1.2.5 Hash算法的形象概念
1.3 簡單數字遊戲玩一玩
1.3.1 變量A、B交換有幾種方式
1.3.2 將無序數據Hash到指定的板塊
1.3.3 大量判定“是|否”的操作
1.3.4 簡單的數據轉換
1.3.5 數字太大,long都存放不下
1.4 功底概述
1.4.1 什麼是功底
1.4.2 功底有何用途
1.4.3 如何磨練功底
1.5 功底補充
1.5.1 原生態類型
1.5.2 集合類
1.6 常見的目錄與工具包
1.7 麵對技術,我們糾結的那些事兒
1.7.1 為什麼我這裏好用,哪裏不好用
1.7.2 你的程序不好用,你會不會用,環境有問題
1.7.3 經驗是否能當飯吃
1.8 老A是在逆境中迎難而上者
第2章 Java程序員要知道計算機工作原理
2.1 Java程序員需要知道計算機工作原理嗎?
2.2 CPU的那些事兒
2.2.1 從CPU聯係到Java
2.2.2 多核
2.2.3 Cache line
2.2.4 緩存一致性協議
2.2.5 上下文切換
2.2.6 並發與征用
2.3 內存
2.4 磁盤
2.5 緩存
2.5.1 緩存的相對性
2.5.2 緩存的用途和場景
2.6 關於網絡與數據庫
2.6.1 Java基本I/O
2.6.2 Java的網絡基本原則
2.6.3 Java與數據庫的交互
2.7 總結
第3章 JVM,Java程序員的OS
3.1 學習Java虛擬機對我們有什麼好處
3.2 跨平台與字節碼基本原理
3.2.1 javap命令工具
3.2.2 Java字節碼結構
3.2.3 Class字節碼的加載
3.2.4 字節碼增強
3.3 從虛擬機的板塊開始
3.3.1 Hotspot VM板塊劃分
3.3.2 “對象存放位置”小總結
3.3.3 關於永久代
3.4 常見的虛擬機回收算法
3.4.1 串行GC
3.4.2 ParallelGC與ParallelOldGC
3.4.3 CMS GC與未來的G1
3.4.4 簡單總結
3.4.5 小小補充
3.5 淺析Java對象的內存結構
3.5.1 原始類型與對象的自動拆裝箱
3.5.2 對象內存結構
3.5.3 對象嵌套
3.5.4 常見類型 & 集合類的內存結構
3.5.5 程序中內存拷貝和垃圾
3.5.6 如何計算對象大小
3.5.7 輕鬆玩一玩int[2][100]PK int[100][2]
3.6 常見的OOM現象
3.6.1 HeapSize OOM
3.6.2 PermGen OOM
3.6.3 DirectBuffer OOM
3.6.4 StackOverflowError
3.6.5 其他的一些內存溢出現象
3.7 常見的Java工具
3.7.1 jps.
3.7.2 jstat
3.7.3 jmap.
3.7.4 jstack.
3.7.5 jinfo.
3.7.6 JConsole.
3.7.7 Visual VM...
3.7.8 MAT(MemoryAnalyzer Tool)...
3.7.9 BTrace.
3.7.10 HSDB..
3.7.11 工具總結...
3.8 總結....
3.8.1 寫代碼...
3.8.2 心理上戰勝虛擬機帶來的恐懼
第4章 Java通信,交互就需要通信
4.1 通信概述....
4.1.1 Java通信的基本過程...
4.1.2 Java通信的協議包裝...
4.1.3 編寫自定義通信協議...
4.1.4 Java的I/O流是不是很難學...
4.2 Java I/O與內存的那些事....
4.2.1 常規I/O操作的運作過程...
4.2.2 DirectBuffer的使用...
4.2.3 關於Buffer
4.2.4 FileChannel的加鎖...
4.3 通信調度方式....
4.3.1 同步與異步...
4.3.2 阻塞與非阻塞...
4.3.3 Linux OS調度IO模型...
4.3.4 Java中的BIO、NIO..
4.3.5 Java AIO..
4.4 Tomcat中對I/O的請求處理....
4.4.1 Tomcat的配置&一個請求的響應...
4.4.2 Request、Response對象生成...
4.4.3 拉與推...
第5章 Java並發,你會遇到嗎..............
5.1 基礎介紹....
5.1.1 線程基礎...
5.1.2 多線程...
5.1.3 線程狀態...
5.1.4 反麵教材suspend()、resume()、stop()
5.1.5 調度優先級...
5.1.6 線程合並(Join)...
5.1.7 線程補充小知識...
5.2 線程安全....
5.2.1 並發內存模型概述...
5.2.2 一些並發問題描述...
5.2.3 volatile.
5.2.4 final
5.2.5 棧封閉...
5.2.6 ThreadLocal
5.3 原子性與鎖....
5.3.1 synchronized.
5.3.2 什麼是樂觀鎖...
5.3.3 並發與鎖...
5.3.4 Atomic.
5.3.5 Lock.
5.3.6 並發編程核心AQS原理...
5.3.7 鎖的自身優化方法...
5.4 JDK 1.6並發編程的一些集合類....
5.5 常見的並發編程工具....
5.5.1 CountDownLatch.
5.5.2 CyclicBarrier
5.5.3 Semaphor
5.5.4 其他工具簡介...
5.6 線程池&調度池....
5.6.1 阻塞隊列模型...
5.6.2 ThreadPoolExecutor
5.6.3 調度器ScheduleThreadPoolExecutor
5.7 總結:編寫並發程序要注意些什麼....
5.7.1 鎖粒度...
5.7.2 死鎖...
5.7.3 “坑”很多...
5.7.4 並發效率一定高嗎...
5.8 其他的並發編程知識....
5.8.1 ShutdownHook(鉤子線程)
5.8.2 Future. 332
5.8.3 異步並不等價於多線程...
第6章 好的程序員應當知道數據庫基本原理...........................................
6.1 開發人員為什麼要知道數據庫原理....
6.2 從開發人員角度看數據庫原理....
6.2.1 實例與存儲...
6.2.2 數據庫基本原理...
6.2.3 索引基本原理...
6.2.4 數據庫主從基本原理...
6.2.5 我們經常相信的那些經驗...
6.3 從程序員角度看數據庫優化方法....
6.3.1 不同領域的SQL區別...
6.3.2 執行計劃...
6.3.3 SQL邏輯的例子...
6.3.4 模型結構設計的優化...
6.3.5 臨時表...
6.3.6 分頁知識補充...
6.3.7 計算count值...
6.3.8 分布式事務探討...
6.3.9 其他...
6.4 學會最基本的性能診斷....
6.4.1 進入雲數據庫時代...
6.4.2 從程序員角度關注的數據庫診斷信息...
6.5 數風流存儲,還看今朝....
第2篇 源碼篇
第7章 源碼基礎
7.1 為何會出現框架....
7.2 閱讀框架前的技術儲備....
7.2.1 反射基礎知識...
7.2.2 AOP基礎...
7.2.3 ORM基礎...
7.2.4 Annotation與配置文件...
8.1 JDBC通用接口規範....
8.2 JDBC Driver注冊....
8.3 創建Connection.
8.4 SQL執行及處理....
8.4.1 創建Statement
8.4.2 Batch設置批處理...
8.4.3 fetchSize與maxRows.
8.4.4 setQueryTimeout()與cancel()
第9章 部分Spring源碼講解
9.1 Spring MVC
9.1.1 Spring加載
9.1.2 Spring MVC處理一個簡單請求
9.2 Spring事務管理器
9.2.1 JDBC事務的基本思想
9.2.2 Spring事務管理器的基本架構
9.2.3 Spring如何保存Connection
9.2.4 Spring如何保證程序中多次獲取到的連接是同一個
9.3 思考:自己做框架有眉目了嗎
第10章 看源碼的一些總結.
10.1 高手看API的能力
10.2 通過源碼能否量化性能與穩定性
10.3 思考相似方案和技術的優缺點
10.4 明確場景和業務,不做技術控
10.4.1 談談技術控的那些事..
10.4.2 明確業務背景的例子..
10.5 胖哥對框架的淺析...
10.5.1 框架由來的一個補充.
10.5.2 開源框架與擴展..
10.5.3 框架與解決問題.
10.6 學海無涯,心境無限.
下冊的手稿也已經寫好,但是具體的目錄和內容還會有所改動,不過不會有非常大的變動了,為了滿足大家的好奇心,我寫一下下冊大概要寫的內容(在上冊的前言中也有):
1、設計篇,設計篇會提到設計模式和思想,但是胖哥會提出一些探討性的觀點和生活中的思想,然後我們再用一些實例來設計一些東西(2-3章)。
2、實現篇,主要講解項目中的你我他,胖哥會講講自己所經曆的一些項目中的稀奇古怪的事情,做事情的方法,人與人之間的合作,一些技術坑。
3、擴展篇,擴展篇比較雜,有走馬觀花式探討一些集群、分布式的技術知識,也有探討思想方法,看問題的角度,做IT人的心態等。
大概就這些了,下次大概就這些了,上冊如果大家喜歡的話,下冊我也會竭盡所能盡快review好,好了,就這些了!
等書出版的時候我再發個帖子,哈哈!
最後更新:2017-04-03 05:39:41