原创 Go是如何實現protobuf的編解碼的(2):源碼

原文鏈接:https://mp.weixin.qq.com/s/oY... 這是一篇姊妹篇文章,淺析一下Go是如何實現protobuf編解碼的: Go是如何實現protobuf的編解碼的(1): 原理 Go是如何實現protobuf的編

原创 Go內存分配那些事,就這麼簡單!

原文鏈接:https://mp.weixin.qq.com/s/3g... 新老朋友好久不見,我是大彬,這篇文章準備了很久,不是在拖延,而是中間做了一些其他事情,耽擱了一些。 這篇文章主要介紹Go內存分配和Go內存管理,會輕微涉及內存申請

原创 Go是如何實現protobuf的編解碼的(1):原理

原文鏈接:https://mp.weixin.qq.com/s/O8... 這是一篇姊妹篇文章,淺析一下Go是如何實現protobuf編解碼的: Go是如何實現protobuf的編解碼的(1): 原理 Go是如何實現protobuf的編

原创 實戰Go內存泄露

最近解決了我們項目中的一個內存泄露問題,事實再次證明pprof是一個好工具,但掌握好工具的正確用法,才能發揮好工具的威力,不然就算你手裏有屠龍刀,也成不了天下第一,本文就是帶你用pprof定位內存泄露問題。 關於Go的內存泄露有這麼一句話不

原创 Go調度器系列(4)源碼閱讀與探索

各位朋友,這次想跟大家分享一下Go調度器源碼閱讀相關的知識和經驗,網絡上已經有很多剖析源碼的好文章,所以這篇文章不是又一篇源碼剖析文章,注重的不是源碼分析分享,而是帶給大家一些學習經驗,希望大家能更好的閱讀和掌握Go調度器的實現。 本文主要

原创 Go調度器系列(3)圖解調度原理

如果你已經閱讀了前2篇文章:《調度起源》和《宏觀看調度器》,你對G、P、M肯定已經不再陌生,我們這篇文章就介紹Go調度器的基本原理,本文總結了12個主要的場景,覆蓋了以下內容: G的創建和分配。 P的本地隊列和全局隊列的負載均衡。 M如何

原创 Go調度器系列(2)宏觀看調度器

上一篇文章《Go語言高階:調度器系列(1)起源》,學goroutine調度器之前的一些背景知識,這篇文章則是爲了對調度器有個宏觀的認識,從宏觀的3個角度,去看待和理解調度器是什麼樣子的,但仍然不涉及具體的調度原理。 三個角度分別是: 調度

原创 Go語言高階:調度器系列(1)起源

如果把語言比喻爲武俠小說中的武功,如果只是會用,也就是達到四五層,如果用的熟練也就六七層,如果能見招拆招也得八九層,如果你出神入化,立於不敗之地十層。 如果你想真正掌握一門語言的,怎麼也得八層以上,需要你深入瞭解這門語言方方面面的細節。 希

原创 Go進階:反射3定律

各位學習Go語言的朋友,週末好,這次跟大家聊一聊Go語言的一個高級話題:反射。 這篇文章是從我過去的學習筆記修改來的,內容主要來自Go Blog的一篇文章《The law of reflection》。 這篇文章主要介紹反射和接口的關係,解

原创 總結了才知道,原來channel有這麼多用法!

這篇文章總結了channel的10種常用操作,以一個更高的視角看待channel,會給大家帶來對channel更全面的認識。 在介紹10種操作前,先簡要介紹下channel的使用場景、基本操作和注意事項。 channel的使用場景 把cha

原创 Golang併發:再也不愁選channel還是選鎖

週末又到了,爲大家準備了一份實用乾貨:如何使用channel和Mutex解決併發問題,利用週末的好時光,配上音樂,思考一下吧🤔。 來,問自己個問題:面對併發問題,是用channel解決,還是用Mutex解決? 如果自己心裏還沒有清晰的答案,

原创 Golang併發:除了channle,你還有其他選擇

我們都知道Golang併發優選channel,但channel不是萬能的,Golang爲我們提供了另一種選擇:sync。通過這篇文章,你會了解sync包最基礎、最常用的方法,至於sync和channel之爭留給下一篇文章。 sync包提供了

原创 Golang併發:一招掌握無阻塞通道讀寫

介紹Golang併發的模型寫了幾篇了,但一直沒有以channel爲主題進行介紹,今天就給大家聊一聊channel,channel的基本使用非常簡單,想必大家都已瞭解,所以直接來個進階點的:介紹channel的阻塞情況,以及給你一個必殺技,立

原创 Golang併發模型:輕鬆入門協程池

goroutine是非常輕量的,不會暫用太多資源,基本上有多少任務,我們可以開多少goroutine去處理。但有時候,我們還是想控制一下。 比如,我們有A、B兩類工作,不想把太多資源花費在B類務上,而是花在A類任務上。對於A,我們可以來1個

原创 Golang併發模型:select進階

最近公司工作有點多,Golang的select進階就這樣被拖沓啦,今天堅持把時間擠一擠,把吹的牛皮補上。 前一篇文章《Golang併發模型:輕鬆入門select》介紹了select的作用和它的基本用法,這次介紹它的3個進階特性。 nil