注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡操作系統(tǒng)其他操作系統(tǒng)深度探索Go語言:對象模型與runtime的原理、特性及應用

深度探索Go語言:對象模型與runtime的原理、特性及應用

深度探索Go語言:對象模型與runtime的原理、特性及應用

定 價:¥100.00

作 者: 封幼林
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302600855 出版時間: 2022-08-01 包裝: 平裝
開本: 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書主要講解了Go語言一些關(guān)鍵特性的實現(xiàn)原理,Nicklaus Wirth大師曾經(jīng)說過:算法+數(shù)據(jù)結(jié)構(gòu)=程序,語言特性的實現(xiàn)也不外乎就是數(shù)據(jù)結(jié)構(gòu)+代碼邏輯。全書共分為4個部分:第一部分是基礎(chǔ)特性(第1章~第3章),第二部分是對象模型(第4章~第5章),第三部分是調(diào)度系統(tǒng)(第6章~第7章),第四部分是內(nèi)存管理(第8章~第9章)。書中主要內(nèi)容包括:指針、函數(shù)棧幀、調(diào)用約定、變量逃逸、Function Value、閉包、defer、panic、方法、Method Value、組合式繼承、接口、類型斷言、反射、goroutine、搶占式調(diào)度、同步、堆和棧的管理,以及GC等。書中包含大量的探索示例和源碼分析,在學會應用的同時還能了解實現(xiàn)原理。書中絕大部分代碼都是用Go語言實現(xiàn),還有少部分使用匯編語言,都可以使用Go官方SDK直接編譯。探索過程循序漸進條理清晰,用到的工具也都是SDK自帶,方便讀者親自上手實踐。本書適合Go語言的初學者,在學習語言特性的同時了解其實現(xiàn)原理。更適合有一定的Go語言應用基礎(chǔ),想要深入研究底層原理的技術(shù)人員。同樣適合有一些其他編程語言基礎(chǔ),想要轉(zhuǎn)學Go語言的開發(fā)者。

作者簡介

  封幼林,資深軟件工程師,十多年IT從業(yè)經(jīng)驗,曾涉足Win32桌面程序開發(fā)、Android移動端開發(fā),以及互聯(lián)網(wǎng)服務器端開發(fā)等多個領(lǐng)域。喜歡研究底層技術(shù),用自己的方法探究背后的實現(xiàn)原理。熱愛技術(shù)交流與分享,創(chuàng)建了微信公眾號“幼麟實驗室”,致力做一些形象、通透的計算機教程,讓開發(fā)者“知其然亦知其所以然”。

圖書目錄

第1章匯編基礎(chǔ)

1.1x86通用寄存器

1.1.132位架構(gòu)

1.1.264位架構(gòu)

1.2常用匯編指令

1.2.1整數(shù)加減指令

1.2.2數(shù)據(jù)傳輸指令

1.2.3入棧和出棧指令

1.2.4分支跳轉(zhuǎn)指令

1.2.5過程調(diào)用指令

1.3內(nèi)存分頁機制

1.3.1線性地址

1.3.280386兩級頁表

1.3.3PAE三級頁表

1.3.4x64四級頁表

1.3.5虛擬內(nèi)存

1.4匯編代碼風格

1.5本章小結(jié)

第2章指針(7min)

2.1指針構(gòu)成

2.1.1地址

2.1.2元素類型

2.2相關(guān)操作

2.2.1取地址

2.2.2解引用

2.2.3強制類型轉(zhuǎn)換

2.2.4指針運算

2.3unsafe包

2.3.1標準庫與keyword

2.3.2關(guān)于uintptr

2.3.3內(nèi)存對齊

2.4本章小結(jié)

第3章函數(shù)(44min)

3.1棧幀

3.1.1棧幀布局

3.1.2尋址方式

3.1.3又見內(nèi)存對齊

3.1.4調(diào)用約定

3.1.5Go 1.17的變化

3.2逃逸分析

3.2.1什么是逃逸分析

3.2.2不逃逸分析

3.2.3不逃逸判斷

3.3Function Value

3.3.1函數(shù)指針

3.3.2Function Value分析

3.3.3閉包

3.4defer

3.4.1最初的鏈表

3.4.2棧上分配

3.4.3高效的open coded defer

3.5panic

3.5.1gopanic()函數(shù)

3.5.2gorecover()函數(shù)

3.5.3嵌套的panic

3.5.4支持open coded defer

3.6本章小結(jié)

第4章方法(6min)

4.1接收者類型

4.1.1值類型

4.1.2指針類型

4.1.3包裝方法

4.2Method Value

4.2.1基于類型

4.2.2基于對象

4.3組合式繼承

4.3.1嵌入值

4.3.2嵌入指針

4.3.3多重繼承

4.4本章小結(jié)

第5章接口(27min)

5.1空接口

5.1.1一個更好的void*

5.1.2類型元數(shù)據(jù)

5.1.3逃逸與裝箱

5.2非空接口

5.2.1動態(tài)派發(fā)

5.2.2具體實現(xiàn)

5.2.3接收者類型

5.2.4組合式繼承

5.3類型斷言

5.3.1E To 具體類型

5.3.2E To I

5.3.3I To 具體類型

5.3.4I To I

5.4反射

5.4.1類型系統(tǒng)

5.4.2類型元數(shù)據(jù)詳細講解

5.4.3對數(shù)據(jù)的操作

5.4.4對鏈接器裁剪的影響

5.5本章小結(jié)

第6章goroutine(48min)

6.1進程、線程與協(xié)程

6.1.1進程

6.1.2線程

6.1.3協(xié)程

6.2IO多路復用

6.2.13種網(wǎng)絡IO模型

6.2.2示例對比

6.3巧妙結(jié)合

6.4GMP模型

6.4.1基本概念

6.4.2從GM到GMP

6.5GMP主要數(shù)據(jù)結(jié)構(gòu)

6.5.1runtime.g

6.5.2runtime.m

6.5.3runtime.p

6.5.4schedt

6.6調(diào)度器初始化

6.6.1調(diào)度器初始化過程

6.6.2runtime.schedinit()函數(shù)

6.7G的創(chuàng)建與退出

6.7.1相關(guān)匯編函數(shù)

6.7.2runtime.newproc()函數(shù)

6.8調(diào)度循環(huán)

6.8.1runtime.schedule()函數(shù)

6.8.2runtime.findrunnable()函數(shù)

6.9搶占式調(diào)度

6.9.1Go 1.13的搶占式調(diào)度

6.9.2Go 1.14的搶占式調(diào)度

6.10timer

6.10.1一個示例

6.10.2數(shù)據(jù)結(jié)構(gòu)

6.10.3操作函數(shù)

6.11netpoller

6.11.1跨平臺的netpoller

6.11.2TCP連接的Read()方法

6.12監(jiān)控線程

6.12.1按需執(zhí)行timer和netpoll

6.12.2搶占G和P

6.12.3強制執(zhí)行GC

6.13本章小結(jié)

第7章同步(32min)

7.1Happens Before

7.1.1并發(fā)

7.1.2并行

7.2內(nèi)存亂序

7.2.1編譯期亂序

7.2.2執(zhí)行期亂序

7.2.3內(nèi)存排序指令

7.3常見的鎖

7.3.1原子指令

7.3.2自旋鎖

7.3.3調(diào)度器對象

7.3.4優(yōu)化的鎖

7.4Go語言的同步

7.4.1runtime.mutex

7.4.2semaphore

7.4.3sync.Mutex

7.4.4channel

7.5本章小結(jié)

第8章堆(17min)

8.1內(nèi)存分配

8.1.1sizeclasses

8.1.2heapArena

8.1.3mspan

8.1.4mcentral

8.1.5mcache

8.1.6mallocgc

8.2垃圾回收

8.2.1GC root

8.2.2三色抽象

8.2.3寫屏障

8.2.4觸發(fā)方式

8.2.5GC Worker

8.2.6gctrace

8.3本章小結(jié)

第9章棧(8min)

9.1棧分配

9.1.1棧分配初始化

9.1.2棧分配邏輯

9.2棧增長

9.2.1棧增長檢測代碼

9.2.2棧增長函數(shù)

9.3棧收縮

9.4棧釋放

9.4.1小于或等于16KB的??臻g

9.4.2大于或等于32KB的棧空間

9.4.3棧釋放時機

9.5本章小結(jié)

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號