原创 Golang - Map 內部實現原理解析

Golang - Map 內部實現原理解析 一.前言 Golang中Map存儲的是kv鍵值對,採用哈希表作爲底層實現,用拉鍊法解決hash衝突 本文Go版本:gov1.14.4,源碼位於src/runtime/map.go 二.Ma

原创 Golang-Slice 內部實現原理解析

Golang - slice 內部實現原理解析 一.Go中的數組和slice的關係 1.數組 在幾乎所有的計算機語言中,數組的實現都是一段連續的內存空間,Go語言數組的實現也是如此,但是Go語言中的數組和C語言中數組還是有所不同的 C語言

原创 Golang-Context掃盲與原理解析

Golang-Context掃盲與原理解析 一.什麼是Context? context是一個包,是Go1.7引入的標註庫,中文譯做上下文,準確的說是goroutine的上下文,包含goroutine的運行狀態,環境,現場等信息。 cont

原创 劍指offer-把數字翻譯成字符串(dp)

給定一個數字,我們按照如下規則把它翻譯爲字符串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。 示例

原创 劍指offer-禮物的最大價值 (dp)

在一個 m*n 的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格子裏的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定一個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮

原创 Golang-無限緩存channel的設計與實現

無限緩存channel的設計與實現 一.引言 Go語言的Channel有兩種類型,一種是無緩存的channle,一個種是有緩存的channel,但是對於有緩存的channle來說,其緩存長度在創建時就已經固定了,中間也不能擴縮容,這導致對

原创 Golang-併發編程原理解析

go併發編程 一.背景知識介紹 1.進程和線程 進程是程序在操作系統中一次執行的過程,系統進行資源分配和調度的基本單位 線程是進程的一個執行實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位 一個進程可以創建和撤銷多

原创 Golang-如何優雅的關閉channel?

無限緩存channel的設計與實現 一.引言 Go語言的Channel有兩種類型,一種是無緩存的channle,一個種是有緩存的channel,但是對於有緩存的channle來說,其緩存長度在創建時就已經固定了,中間也不能擴縮容,這導致對

原创 劍指offer 醜數 (三指針法)

劍指 Offer 49. 醜數 我們把只包含質因子 2、3 和 5 的數稱作醜數(Ugly Number)。求按從小到大的順序的第 n 個醜數。 示例: 輸入: n = 10 輸出: 12 解釋: 1, 2, 3, 4, 5, 6, 8,

原创 Golang-垃圾回收原理解析

go 垃圾回收 本文基於整個go的gc發展,來研究其gc的演變過程,不單打針對某個版本的gc,因爲go的gc一直在演變 一.GO GC的發展歷史 go v1.1 : 標記清除法,整個過程都需要STW go v1.3 : 標記清除法,標

原创 Golang-channel底層實現精要

Golang-channel底層實現精要 一.channel 背景知識 channel是Go語言內置的核心類型,可以將其看做一個管道,channel和goroutine一起爲go併發編程提供了最優雅和便利的方案 在Go中有一句經典名言,

原创 Golang-調度器原理解析

Golang調度器原理解析 本文主要介紹調度器的由來以及golang調度器爲何要如此設計,以及GPM模型解析 一.調度器的由來 1.單進程時代 單進程時代不需要調度器,一切程序都是串行,所以單進程的操作系統會面臨這樣一個問題: 程序只

原创 Go的內存分配

Go內存分配 一. 背景介紹 先了解一下Linux系統內存相關的背景知識,有助於我們瞭解Go的內存分配 1.覆蓋技術 > 在上古時代的內存管理中,如果程序太大,超過了空閒內存容量,就無法把全部程序裝入內存中,這個時候誕生出了一種解決方案,即

原创 劍指offer-在二維數組中查找

在一個 n * m 的二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個高效的函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 示例: 現有矩陣 matrix 如下: [ [1

原创 【k8s權威指南】第三章 k8s核心原理

k8s 核心原理分析 本文內容 API Server 原理分析 Controller Manager原理分析 Scheduler 調度器原理分析 kubelet 運行機制分析 一. k8s API Server原理分析 1) API S