[toc] 相信很多人都聽過“雷神 3”關於性能優化的故事。在一個 3D 游戲引擎的源碼里,John Carmack 將 1/sqrt(x) 這個函數的執行效率優化到了極致。 一般我們使用二分法, ...
目錄 什么是 context 為什么有 context context 底層實現原理 整體概覽 接口 Context canceler 結構體 emptyCtx cancelCtx timerCtx valueCtx 如何使用 context 傳遞共享的數據 取消 goroutine 防止 goroutine 泄漏 context 真的這么好嗎 總結 參考資料 Go 語言的 context 包短 ...
2019-06-12 08:46 2 4786 推薦指數:
[toc] 相信很多人都聽過“雷神 3”關於性能優化的故事。在一個 3D 游戲引擎的源碼里,John Carmack 將 1/sqrt(x) 這個函數的執行效率優化到了極致。 一般我們使用二分法, ...
目錄 前置知識 os scheduler 線程切換 函數調用過程分析 goroutine 是怎么工作的 什么是 go ...
目錄 什么是 map 為什么要用 map map 的底層如何實現 map 內存模型 創建 map 哈希函數 key 定位過程 ...
目錄 什么是反射 為什么要用反射 反射是如何實現的 types 和 interface 反射的基本函數 反射的三大定律 反射 ...
Go 語言的 slice 很好用,不過也有一些坑。slice 是 Go 語言一個很重要的數據結構。網上已經有很多文章寫過了,似乎沒必要再寫。但是每個人看問題的視角不同,寫出來的東西自然也不一樣。我這篇會從更底層的匯編語言去解讀它。而且在我寫這篇文章的過程中,發現絕大部分文章都存在一些問題,文章里 ...
目錄 指針類型 什么是 unsafe 為什么有 unsafe unsafe 實現原理 unsafe 如何使用 獲取 slice 長度 獲 ...
目錄 並發模型 並發與並行 什么是 CSP 什么是 channel channel 實現 CSP 為什么要 ch ...
目錄 1. Go 語言與鴨子類型的關系 2. 值接收者和指針接收者的區別 方法 值接收者和指針接收者 兩者分別在何時使用 3. iface 和 eface 的區別是什么 4. 接口的動態類型和動態值 5. 編譯器 ...