一、背景 在golang中,最主要的一個概念就是並發協程 goroutine,它只需用一個關鍵字 go 就可以開起一個協程,並運行。 一個單獨的 goroutine運行,倒也沒什么問題。如果是一個goroutine衍生了多個goroutine,並且它們之間還需要交互-比如傳輸數據 ...
目錄 emptyCtx類型 cancelCtx類型 timerCtx類型 valueCtx類型 在Go語言並發編程中,用一個goroutine來處理一個任務,而它又會創建多個goroutine來負責不同子任務的場景非常常見。如下圖 這些場景中,往往會需要在API邊界之間以及過程之間傳遞截止時間 取消信號或與其它請求相關的數據 誰是性能卡點呢 得通知它們任務取消了。 這時候就可以使用Context ...
2021-01-14 14:21 3 1982 推薦指數:
一、背景 在golang中,最主要的一個概念就是並發協程 goroutine,它只需用一個關鍵字 go 就可以開起一個協程,並運行。 一個單獨的 goroutine運行,倒也沒什么問題。如果是一個goroutine衍生了多個goroutine,並且它們之間還需要交互-比如傳輸數據 ...
文章參考:Go語言設計與實現3.3 哈希表 哈希表的意義不言而喻,它能提供 O(1) 復雜度的讀寫性能,所以主流編程語言中都內置有哈希表。 哈希表的關鍵在於哈希函數, 好的哈希函數能減少哈希碰撞,提供最優秀的讀寫性能。 哈希碰撞 因為沒有完美的哈希函數, 所以哈希碰撞不可避免 ...
前言 網上關於 Context 的文章也已經有不少了,比如值得參考的有: Android Context完全解析,你所不知道的Context的各種細節 Android Context 到底是什么? 但看了一下,發現還有值得討論的地方,比如這個等式: Context個數 = Service ...
前言 Context也就是上下文對象,是Android較為常用的類,但是對於Context,很多人都停留在會用的階段,這個系列會帶大家從源碼角度來分析Context,從而更加深入的理解它。 1.Context概述 Context意為上下文或者場景,是一個應用程序環境信息的接口。在開發中 ...
結構體定義實現,位於src/runtime/runtime2.go 可以看到上面eface包含了2 ...
一、Linux系統內存 在說明golang內存分配之前,先了解下Linux系統內存相關的基礎知識,有助於理解golang內存分配原理。 1.1 虛擬內存技術 在早期內存管理中,如果程序太大,超過了空閑內存容量,就沒有辦法把全部程序裝入到內存,這時怎么辦? 在許多年前,人們采用了一種叫做覆蓋 ...
一:什么是調度 平常我們在生活中會有哪些調度的例子呢?比如十字路口的紅綠燈,它就是一種調度系統。在交通十字路口,每個路口上多多少少有一些車輛,為了限制這些車輛不隨意行駛,就建起了紅綠燈調度系統。紅綠 ...
1 什么是Context 最近在公司分析gRPC源碼,proto文件生成的代碼,接口函數第一個參數統一是ctx context.Context接口,公司不少同事都不了解這樣設計的出發點是什么,其實我也不了解其背后的原理。今天趁着妮妲台風妹子正面登陸深圳,全市停工、停課、停業,在家休息找了一些資料 ...