202003-11 Golang 源碼系列二:Slice實(shí)現(xiàn)原理分析 HOT 眾所周知,在golang中,slice(切片)是我們最常使用到的一種數(shù)據(jù)結(jié)構(gòu),是一種可變長(zhǎng)度的數(shù)組,本篇文章我們主要結(jié)合源碼來(lái)介紹一下slice的底層實(shí)現(xiàn),以及在使用slice時(shí)的一些注意事項(xiàng)。 繼續(xù)閱讀 >
202003-11 Golang源碼系列一:Map實(shí)現(xiàn)原理分析 HOT 每個(gè)map的底層結(jié)構(gòu)是hmap,是有若干個(gè)結(jié)構(gòu)為bmap的bucket組成的數(shù)組。每個(gè)bucket底層都采用鏈表結(jié)構(gòu)。 繼續(xù)閱讀 >
202003-10 除了標(biāo)準(zhǔn)庫(kù) sync 包外,這個(gè)官方包(golang.org/x下的)你應(yīng)該了解 HOT go 語(yǔ)言里使用 go 關(guān)鍵字就可以輕松搞定并發(fā)的問(wèn)題,它講究的是“不要通過(guò)共享內(nèi)存來(lái)通信,而應(yīng)該通過(guò)通信來(lái)共享內(nèi)存”的原則,在 Go 里 channel 是個(gè)線程安全的多線程通訊介質(zhì)。Go 本身的這些原語(yǔ)基本上可以解決常見(jiàn)的各種需求了。 繼續(xù)閱讀 >
202003-10 Go 如何防止緩存穿透 HOT 事實(shí)上不止于防止 緩存穿透, do-once-while-concurrent 更準(zhǔn)確的定位是 重復(fù)資源過(guò)濾 ,,在某講座業(yè)務(wù)中,使用 do-once-while-concurrent 來(lái)避免同一時(shí)刻同一用戶id 重復(fù)解析 、列表頁(yè) 重復(fù)檢索 、排序 等,減少了資源競(jìng)爭(zhēng),提高了整體的qps和穩(wěn)定性。 繼續(xù)閱讀 >
202003-10 一文掌握 Go 語(yǔ)言 Select 的四大用法 HOT 本文帶大家認(rèn)識(shí) Go 語(yǔ)言的 Select 用法,相信大家對(duì)于 switch 并不陌生,然而 select 跟 switch 有個(gè)共同特性就是都通過(guò) case 的方式來(lái)處理,但是 select 跟 switch 處理的事情完全不同,也完全不相容。來(lái)看看 switch 有什么特性: 各種類型及型別操作,接口 interface{} 型別判斷 variable.(type),重點(diǎn)是會(huì)依照 case 順序依序執(zhí)行。 繼續(xù)閱讀 >
202003-03 Go-項(xiàng)目結(jié)構(gòu)和代碼組織 做大量的輸入,通過(guò)對(duì)比、借鑒,加上自己的經(jīng)驗(yàn),產(chǎn)出一個(gè)盡可能優(yōu)的方案。 開(kāi)源界優(yōu)秀項(xiàng)目的結(jié)構(gòu)示例 因?yàn)樽钚碌?Go 版本已經(jīng)使用 module 作為版本依賴,所以,所有項(xiàng)目的 vendor 我都忽略,建議直接使用 module 來(lái)管理依賴,而且較好的解決某些庫(kù)國(guó)內(nèi)訪問(wèn)不了的問(wèn)題 繼續(xù)閱讀 >
202002-14 Go語(yǔ)言之父帶你重新認(rèn)識(shí)字符串、字節(jié)、rune和字符 Go語(yǔ)言之父帶你重新認(rèn)識(shí)字符串、字節(jié)、rune和字符 文章篇幅還是挺長(zhǎng)的,大家時(shí)間都很寶貴所以我先把文章探究的問(wèn)題的結(jié)論放在前面,有時(shí)間的同學(xué)還是建議整篇讀一下。 繼續(xù)閱讀 >