通用源碼閱讀指導書

通用源碼閱讀指導書

《通用源碼閱讀指導書》以開源軟體MyBatis的源碼為例,講述程式源碼閱讀的流程、方法、技巧。

本書先介紹MyBatis的發展背景與使用方法讓讀者對MyBatis建立概括性的認識,繼而逐步深入剖析MyBatis的源碼。並在剖析MyBatis源碼的過程講述源碼中所涉及到的程式語言知識、設計模式、架構技巧。最終使得讀者在詳細了解MyBatis源碼的同時掌握源碼閱讀的基本能力。

基本介紹

  • 中文名:通用源碼閱讀指導書
  • 別名:通用源碼閱讀指導書——MyBaits源碼詳解
  • 作者:易哥
  • 類別:計算機
  • 出版社:電子工業出版社
  • 出版時間:2020年7月1日
  • 頁數:400 頁
  • 定價:100 元
  • 開本:16 開
  • ISBN:9787121391460
  • 正文字數:64 萬字
內容簡介,圖書目錄,作者簡介,

內容簡介

以開源軟體MyBatis的源碼為例,講述程式源碼閱讀的流程、方法、技巧。本書先介紹MyBatis的發展背景與使用方法讓讀者對MyBatis建立概括性的認識,繼而逐步深入剖析MyBatis的源碼。並在剖析MyBatis源碼的過程講述源碼中所涉及到的程式語言知識、設計模式、架構技巧。進而使得讀者在詳細了解MyBatis源碼的同時掌握源碼閱讀的基本能力。

圖書目錄

  • 前言
  • 【模組 一】背景介紹
  • 1 源碼閱讀
  • 1.1 源碼閱讀的意義
  • 1.2 源碼閱讀的方法
  • 1.3 開源軟體
  • 1.4 MyBatis源碼
  • 1.5 本書結構
  • 1.5.1 背景知識
  • 1.5.2 檔案的指代
  • 1.5.3 方法的指代
2 MyBatis概述
  • 2.1 背景介紹
  • 2.1.1 傳統資料庫連線
  • 2.1.2 ORM框架
  • 2.1.3 MyBatis特點
2.2 快速上手
  • 2.2.1 MyBatis包的引入
  • 2.2.2 MyBatis的簡單配置
  • 2.2.3 基於MyBatis的資料庫操作
2.3 MyBatis的核心功能分析
3 MyBatis運行初探
  • 3.1 初始化階段追蹤
  • 3.1.1 靜態代碼塊的執行
  • 3.1.2 獲取InputStream
  • 3.1.3 配置信息讀取
  • 3.1.4 總結
3.2 數據讀寫階段追蹤
  • 3.2.1 獲得SqlSession
  • 3.2.2 映射接口檔案與映射檔案的綁定
  • 3.2.3 映射接口的代理
  • 3.2.4 SQL語句的查找
  • 3.2.5 查詢結果快取
  • 3.2.6 資料庫查詢
  • 3.2.7 處理結果集
  • 3.2.8 總結
4 MyBatis源碼結構概述
  • 4.1 包結構
  • 4.2 分組結構
【模組 二】基礎功能包源碼閱讀
5 exceptions包
  • 5.1 背景知識
  • 5.1.1 Java的異常
  • 5.1.2 序列化與反序列化
5.2 Exception類
5.3 ExceptionFactory類
6 reflection包
  • 6.1 背景知識
  • 6.1.1 裝飾器模式
  • 6.1.2 反射
  • 6.1.3 Type接口及其子類
6.2 對象工廠子包
6.3 執行器子包
6.4 屬性子包
6.5 對象包裝器子包
6.6 反射核心類
6.7 反射包裝類
6.8 異常拆包工具
6.9 參數名解析器
6.10 泛型解析器
7 annotations包與lang包
  • 7.1 背景知識
  • 7.1.1 Java註解詳解
7.2 Param註解分析
8 type包
  • 8.1 背景知識
  • 8.1.1 模板模式
8.2 類型處理器
  • 8.2.1 類型處理器基類與實現類
  • 8.2.2 TypeReference類
8.3 類型註冊表
9 io包
  • 9.1 背景知識
  • 9.1.1 單例模式
  • 9.1.2 代理模式
  • 9.1.3 靜態代理
  • 9.1.4 VFS
9.2 VFS實現
  • 9.2.1 DefaultVFS
  • 9.2.2 JBoss6VFS
9.3 類檔案的載入
9.4 ResolverUtil類
10 logging包
  • 10.1 背景知識
  • 10.1.1 適配器模式
  • 10.1.2 日誌框架與日誌級別
  • 10.1.3 基於反射的動態代理
10.2 Log接口
10.3 Log接口的實現類
10.4 LogFactory
10.5 JDBC日誌列印
11 parsing包
  • 11.1 背景知識
  • 11.1.1 XML檔案
  • 11.1.2 XPath
11.2 XML解析
11.3 文檔解析中的變數替換
【模組 三】配置解析包源碼閱讀
12 配置解析概述
13 binding包
  • 13.1 資料庫操作的接入
  • 13.1.1 資料庫操作的方法化
  • 13.1.2 資料庫操作方法的接入
13.2 抽象方法與資料庫操作節點的關聯
13.3 資料庫操作接入總結
  • 13.3.1 初始化階段
  • 13.3.2 數據讀寫階段
13.4 MyBatis與Spring、Spring Boot的整合
14 builder包
  • 14.1 背景知識
  • 14.1.1 建造者模式
  • 14.2 建造者基類與工具類
  • 14.3 SqlSourceBuilder與StaticSqlSource
  • 14.4 CacheRefResolver和ResultMapResolver
  • 14.4.1 CacheRefResolver類
  • 14.4.2 ResultMapResolver類
14.5 ParameterExpression類
14.6 XML檔案解析
  • 14.6.1 XML檔案的聲明解析
  • 14.6.2 配置檔案解析
  • 14.6.3 資料庫操作語句解析
  • 14.6.4 Statement解析
  • 14.6.5 引用解析
14.7 註解映射的解析
  • 14.7.1 註解映射的使用
  • 14.7.2 註解映射解析的觸發
  • 14.7.3 直接註解映射的解析
  • 14.7.4 間接註解映射的解析
15 mapping包
  • 15.1 SQL語句處理功能
  • 15.1.1 MappedStatement類
  • 15.1.2 SqlSource類
  • 15.1.3 BoundSql
15.2 輸出結果處理功能
  • 15.2.1 ResultMap
  • 15.2.2 ResultMapping
  • 15.2.3 Discriminator
15.3 輸入參數處理功能
15.4 多資料庫種類處理功能
15.5 其他功能類
16 scripting包
  • 16.1 背景知識
  • 16.1.1 OGNL
16.2 語言驅動接口及語言驅動註冊表
16.3 SQL節點樹的組建
16.4 SQL節點樹的解析
  • 16.4.1 OGNL輔助類
  • 16.4.2 表達式求值器
  • 16.4.3 動態上下文
  • 16.4.4 SQL節點及其解析
16.5 再論SqlSource
  • 16.5.1 SqlSource的生成
  • 16.5.2 DynamicSqlSource的轉化
  • 16.5.3 RawSqlSource的轉化
  • 16.5.4 SqlSource接口的實現類總結
17 datasource包
  • 17.1 背景知識
  • 17.1.1 java.sql包和javax.sql包
  • 17.1.2 DriverManager
  • 17.1.3 DataSource
  • 17.1.4 Connection
  • 17.1.5 Statement
17.2 數據源工廠接口
17.3 JNDI數據源工廠
17.4 非池化數據源及工廠
  • 17.4.1 非池化數據源工廠
  • 17.4.2 非池化數據源
17.5 池化數據源
  • 17.5.1 池化數據源類的屬性
  • 17.5.2 池化連線的給出與收回
  • 17.5.3 池化連線
17.6 論數據源工廠
【模組 四】核心操作包源碼閱讀
18 jdbc包
  • 18.1 AbstractSQL類與SQL類
  • 18.1.1 SafeAppendable內部類
  • 18.1.2 SQLStatement內部類
  • 18.1.3 AbstractSQL類
  • 18.1.4 SQL類
18.2 SqlRunner
18.3 ScriptRunner
18.4 jdbc包的獨立性
19 cache包
  • 19.1 背景知識
  • 19.1.1 Java對象的引用級別
  • 19.1.2 ReferenceQueue
19.2 cache包結構與Cache接口
19.3 快取鍵
  • 19.3.1 快取鍵的原理
  • 19.3.2 快取鍵的生成
19.4 快取的實現類
19.5 快取裝飾器
  • 19.5.1 同步裝飾器
  • 19.5.2 日誌裝飾器
  • 19.5.3 清理裝飾器
  • 19.5.4 阻塞裝飾器
  • 19.5.5 定時清理裝飾器
  • 19.5.6 序列化裝飾器
19.6 快取的組建
19.7 事務快取
19.8 MyBatis快取機制
  • 19.8.1 一級快取
  • 19.8.2 二級快取
  • 19.8.3 兩級快取機制
20 transaction包
  • 20.1 背景知識
  • 20.1.1 事務概述
20.2 事務接口及工廠
20.3 JDBC事務
20.4 容器事務
21 cursor包
  • 21.1 背景知識
  • 21.1.1 Iterable接口與Iterator接口
21.2 MyBatis中游標的使用
21.3 游標接口
21.4 默認游標
  • 21.4.1 CursorStatus內部類
  • 21.4.2 ObjectWrapperResultHandler內部類
  • 21.4.3 CursorIterator內部類
  • 21.4.4 DefaultCursor外部類
22 executor包
  • 22.1 背景知識
  • 22.1.1 基於cglib的動態代理
  • 22.1.2 javassist框架的使用
  • 22.1.3 序列化與反序列化中的方法
  • 22.1.4 ThreadLocal
  • 22.1.5 存儲過程
  • 22.1.6 Statement及其子接口
22.2 主鍵自增功能
  • 22.2.1 主鍵自增的配置與生效
  • 22.2.2 Jdbc3KeyGenerator
  • 22.2.3 SelectKeyGenerator
22.3 懶載入功能
  • 22.3.1 懶載入功能的使用
  • 22.3.2 懶載入功能的實現
  • 22.3.3 懶載入功能對序列化和反序列化的支持
22.4 語句處理功能
  • 22.4.1 MyBatis對多語句類型的支持
  • 22.4.2 MyBatis的語句處理功能
22.5 參數處理功能
22.6 結果處理功能
22.7 結果集處理功能
  • 22.7.1 MyBatis中多結果集的處理
  • 22.7.2 結果集封裝類
  • 22.7.3 結果集處理器
22.8 執行器
  • 22.8.1 執行器接口
  • 22.8.2 執行器基類與實現類
22.9 錯誤上下文
23 session包
  • 23.1 SqlSession及其相關類
  • 23.1.1 SqlSession的生成鏈
  • 23.1.2 DefaultSqlSession類
  • 23.1.3 SqlSessionManager類
23.2 Configuration類
23.3 其他類
24 plugin包
  • 24.1 背景知識
  • 24.1.1 責任鏈模式
24.2 MyBatis外掛程式開發
24.3 MyBatis攔截器平台
24.4 MyBatis攔截器鏈與攔截點
【模組 五】總結與展望
25 源碼閱讀總結
  • 25.1 前期準備
  • 25.1.1 工具準備
  • 25.1.2 項目選擇
  • 25.1.3 項目使用
25.2 項目初探
25.3 源碼閱讀
  • 25.3.1 模組分析
  • 25.3.2 模組歸類
  • 25.3.3 自底向上
  • 25.3.4 合理猜測
  • 25.3.5 類比閱讀
  • 25.3.6 善於匯總
  • 25.3.7 格線閱讀
26 優秀開源項目推薦
  • 26.1 Guava
  • 26.2 Tomcat
  • 26.3 Redis
  • 26.4 Dubbo
  • 26.5 React

作者簡介

易哥,畢業於浙江大學、山東大學,高級軟體系統架構師、網路工程師、資料庫工程師、軟體測試工程師、註冊電氣工程師。
在校成績前1%,獲得國家獎學金兩次,一等獎學金四次,科技創新大賽一等獎三次,以及五四青年科學獎等。主要科研方向為機器學習、分散式算法、容錯算法在無線感測網路中的套用,相關論文獲得IEEE通信協會最佳論文獎。
曾擔任網站技術部門負責人,具有豐富的網際網路開發經驗。先後設計和實現了眾多系統和平台,也是活躍的開源開發者。現專注軟體系統架構設計與後端開發,著有書籍《通用源碼閱讀指導書》《高性能架構之道》等。

相關詞條

熱門詞條

聯絡我們