-
詳述 Golang 的符號表
???本文基于 Go 1.13。 符號表是由編譯器生成和維護的,保存了與程序相關的信息,如函數和全局變量。理解符號表能幫助我們更好地與之交互和利用它。 符號表 Go 編譯的所有二進制文件默認內嵌了符號表。我們來舉一個例子并研究它。下面是代碼: var?AppVersion?string func?main()?{ ?fmt.Println(`Version:?`+AppVersion) } 可以通過命令?nm?來展示符號表;下面是從?OSX?的結果中提取的部分信息: 00000000011772…
-
3種常用的 Web 會話管理方式
http 是無狀態的,即我們的一次請求結束后,下一次請求,服務端他并不知道是哪個用戶發來的。 我們在業務開發中通常是不需要關注是哪個客戶端發來的,更多的是關注是哪個用戶發來的。 基于這個特點,我們在處理業務邏輯時,就得想方設法地在下一次請求時讓服務端知道我是哪個用戶。 為什么是下一次呢? 因為首先我們得先登錄,才能告訴下一次請求是哪個,否則我們的很多業務就沒法開展,這就是所謂的會話管理。 那我們在項目里通常是怎么去管理我們的會話呢? 下面介紹常用的三種方式: 一、基于 server 端 sess…
-
基于 Go 語言開發的監控系統
01?介紹 小米開源的監控系統 open-falcon 和滴滴開源的日志采集工具 falcon-log-agent 作為一組黃金搭檔,被互聯網公司廣泛使用。 本文介紹怎么使用這組黃金搭檔監控業務系統的日志。 02? open-falcon open-falcon 使用 Golang 和 Python 開發,其中 Python 主要開發的是 Dashboard。 限于篇幅,本文不準備介紹 open-falcon 的原理,僅介紹如何安裝。 安裝 open-falcon 之前,必須確保已成功安裝 Re…
-
Go語言中淺拷貝和深拷貝的區別是什么?
要想搞明白深拷貝和淺拷貝的區別,我們需要先弄懂以下幾點: 一、值類型和引用類型 Go 語言里面變量有兩類,一類是值類型,一類是引用類型。 兩者區別是什么呢? 我們在電腦里面創建的變量,都是需要內存來存放的。 值變量就是直接,一個內存地址對應一個值。 而引用變量,則是某個值存放的是另一個值的地址。 我畫了一個邏輯圖,幫助我們去理解這個概念。 在 Go 語言中: string、int、bool、float 等這些都屬于值類型 slice、map、chan 等這些都屬于引用類型 二、什么是淺拷貝和深拷…
-
面試官:值為 nil 為什么不等于 nil ?
小明同學去面試被問到了這么一個面試題,請看代碼: 請問輸出結果是啥? 可能很多同學,會認為結果是輸出兩個 nil。 為什么呢? 因為 f 和 a 都沒初始化,都是 nil,所以循環遍歷后肯定也是 nil。 如果你的答案也是這樣,那就掉進坑里了。 答案是,啥都不會輸出! 且聽我慢慢給你分析: 一、變量的值和類型 我們先來打印下這兩個值: 我們這樣打印其實是打印的是他的值,是 nil 沒錯的。 但是類型不是 nil。 我們可以這樣打印他類型: 二、if 判 nil 含有對類型的判斷 當我們從 int…
-
面試官:值為 nil 為什么不等于 nil ?
小明同學去面試被問到了這么一個面試題,請看代碼: var?f?func() var?a?*struct{} list?:=?[]interface{}{f,?a} for?_,?item?:=?range?list?{ ?if?item?==?nil?{ ??fmt.Println("nil") ?} } 請問輸出結果是啥? 可能很多同學,會認為結果是輸出兩個 nil。 為什么呢? 因為 f 和 a 都沒初始化,都是 nil,所以循環遍歷后肯定也是 nil。 如果你的答案也是這樣,那就掉進坑里了…
-
Go 中的數據分析——如何使用 Gota 包
數據分析是過濾、操縱和處理原始數據和數據集以從中獲得洞察力的過程。Python 和 R 通常是數據分析的首選語言。但是這些天,Go 正為此目的而變得越來越流行。在本教程中,我們將介紹 Gota(Go 中的數據分析包)及其核心功能和用途。
-
Golang 中使用 JSON 時如何區分空字段和未設置字段?
Golang 中使用 JSON 時如何區分空字段和未設置字段?
-
Goroutine 是 Go 的并發機制中 絕對的主角
由于對普通語法的介紹網上資源極多,Go 官方的上手指南 A Tour of Go: https://tour.golang.org/ (請自備梯子)就是極好的例子,我不再打算就語法細節進行詳述。這次,讓我們直切肯綮,從 Go 最大的賣點入手——并發 (Concurrency)。
-
為什么 Go 用起來會難受?這 6 個細節你知道嗎
在做新的應用選型時,我們會進行應用編程語言的選擇,這時會糾結 Java、PHP、Go...各種,會思考有沒有致命的問題,不能用?