原创 Beego框架代碼分析

文章目錄前言安裝代碼分析go如何啓動一個http serverbeego路由分析beego.Run()主要的工作beego.Router() 如何註冊路由文獻 前言 也許beego框架在國內應該是衆多PHPer轉go的首選,因爲b

原创 如何使用 Diago 診斷 Go 程序中的 CPU 和內存使用情況

Diago 是藉助 pprof 生成的配置文件和堆快照的可視化工具。 它是一個獨立的應用程序,顯示每個函數(或函數中每行代碼)的 CPU 使用率的調用樹,但也可以顯示堆快照。 我們將在這篇簡短的文章中介紹如何使用 Diago 來深

原创 Micro In Action:項目結構與啓動過程

文章目錄項目結構啓動過程解析查看運行時狀態總結參考資料 項目結構 在上篇文章中我們創建了一個簡單的項目, 並過將它運行起來。本篇將繼續這個旅程,先介紹項目結構及其中每個文件的用途。 項目結構如下: . ├── main.go ├─

原创 Micro In Action基本介紹

這個系列聊一聊 Micro[1], 我們將以實際開發微服務爲主線,順帶解析相關功能。從最基本的話題開始,逐步轉到高級特性。 Micro 很強大,掌握後使用起來也相當便利。但它的演進速度非常快, 導致其文檔有嚴重缺失和滯後。 很多功

原创 對象池的實現原理分析

文章目錄什麼是對象池?有哪些場景需要使用對象池?fmt包的應用字符串拼接應用對象池的實現(go1.12)相關結構定義設計思想對象池中獲取對象向對象池歸還對象GC回收對象池對象池的升級(go1.13)結構的調整方法實現調整性能的提升

原创 Golang內存分配實現分析

文章目錄引言基本概念什麼是span怎麼區分span內存管理組件mcachemcentralmheap內存分配規則gc改進結尾參考文獻 引言 golang是谷歌2009年發佈的開源編程語言,截止目前go的release版本已經到了1

原创 鎖的實現原理分析

文章目錄什麼是鎖爲什麼使用鎖Golang中的鎖cas、atomic自旋鎖(spinlock)信號量mutexmutex的使用mutex的必要性mutex演進互斥鎖自旋鎖公平鎖參考文獻 什麼是鎖 鎖的本質,就是一種資源,是由操作系

原创 Channel實現原理分析

文章目錄什麼是channelchannel的實現問題參考文獻 什麼是channel 我們來看《Go語言編程》中的一段話 channel是Go語言在語言級別提供的goroutine間的通信方式,是一種進程內的通信方式。 通俗點兒

原创 Interface實現原理分析

文章目錄Duck Typing什麼是鴨子類型Go語言的鴨子類型概述接口類型接口定義實現接口接口和指針nil和non-nil接口值實現原理ifaceeface具體類型轉換成接口類型接口與接口的轉換斷言參考文獻 Duck Typing

原创 suse12上安裝azure cli

問題 最近遇到一個問題,就是在suse 12上安裝一個azure cli。現在azure cli上基本不支持python2.x系列,必須要python3.x,然後自己搗鼓編譯python3.x。發現這真的太難啦,根本就沒有解決依賴

原创 JVM內存劃分

文章目錄總體介紹詳細介紹程序計數器Java虛擬機棧本地方法棧Java堆方法區運行時常量池直接內存 總體介紹 Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分若干個不同的數據區域。這些區域都有各自的用途,以及創建和銷燬

原创 一再強調需要掌握的:五分鐘學會使用 go modules

go modules 是 golang 1.11 新加的特性。如今 1.13 都已經發布了第 7 個小版本了,幾乎所有大項目均已開始使用,這自然也包括 Kubernetes 生態中的衆多項目。筆者在開發 OAM 相關項目的時候,卻

原创 spark shuffer調優

性能優化 shuffle spark.shuffle.file.buffer,默認32k spark.shuffle.memoryFraction,0.2 map端內存緩衝,reduce端內存佔比;很多資料、網上視頻,都會說,這兩

原创 不能在'java -version'輸出中grep和awk

文章目錄問題解決總結 如何解決’java -version’輸出中grep和awk;如何將’java -version‘輸出的信息保存到文件。 問題 1、我試圖將“ java -version”命令的出口重定向到文件或變量,但是它

原创 go交叉編譯出錯(Mac編譯Linux)

Mac編譯Linux命令: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 執行之後發現報錯: # github.com/mattn/go-sqlite3 ../../../../m