本文目錄一覽:
深入理解golang
最近三年,在工作中使用go開發了不少服務。深感go的便捷,以及它的runtime的複雜。我覺得需要定期的進行總結,因此決定寫這篇文章,也許更準確的,應該叫筆記。
最近終於解決了一個和cgo有關的問題。這個問題從發現到解決前後經歷了接近4個月,當然,和人手不足也有關係。而對於我個人而言,這個問題其實歷時2年!這得從頭說起。
在上一家公司的一個項目里,有一個服務做音視頻數據的提取,這個服務運行在嵌入式設備TX2上。音視頻提取這一關鍵功能主要利用nvidia基於gstreamer開發的插件,這個插件可以發揮nvidia gpu的硬件解碼功能。當時這個服務使用go和c混編的方式,問題的癥狀是服務運行一段時間後,不輸出音視頻數據。遺憾的是,由於疫情,項目停止,因此沒有機會繼續研究這個問題。
時間來到去年底。當前這個項目進行壓力測試,發現關鍵的語音處理服務運行一段時間後,會出現不拉流的情況,因此也沒有後續的結果輸出。癥狀和上一個項目非常像。雖然使用的第三方SDK不一樣,但同樣用了go和c混編的方式。一開始,焦點就放在go的運行時上,覺得可能是go和c相互調用的方式不對。經過合理猜測,並用測試進行驗證後,發現問題還是在第三方拉流的SDK上,它們的回調函數必須要快,否則有可能會阻塞它們的回調線程。當然,在go調用c的時候,如果耗時比較長,會對go的運行時造成一些副作用;在c回調go的時候,go的運行時也有可能阻塞c的回調線程。但go的運行時已經比較成熟,因此我覺得它對這個問題的貢獻不大。以上採用了假設-驗證的方法,主要的原因還是第三方的拉流SDK不開源。在定位問題的過程中,使用了gdb的gcore來生成堆棧;也搭建了灰度環境來進行壓力測試,以及完善監控,這些都是解決方法的一部分。
正是這一問題,促使我更多的了解go的運行時。而我看得越多,越覺得go的運行時是一個龐大的怪物。因此,抱着能了解一點是一點的心態,不斷的完善這篇筆記。
golang 有沒有好用的調試工具
單步調試的時候不成功,只能加斷點
2. 和GO有關的gdb功能不能使用,比如: info gorou
golang ide 什麼好用
第一種:LiteIDE
LiteIDE是一個簡單的開源IDE,值得注意的是,它是GO語言2012年正式版發布的首個IDE,由Qt開發,它看起來類似於Visual Studio等其他編譯器。
由於它是為golang設計的,LiteIDE為開發人員提供了許多有用的功能,包括可配置的構建命令,高級代碼編輯器和廣泛的golang支持。其他功能包括代碼管理、gdb、Delve調試器、自動完成和使用WordApi的主題,基於MIME類型的系統等。
第二種:VS Code
它是微軟開發的廣受歡迎的開源IDE,有一個開箱即用的go擴展可供VS Code使用。VS Code插件為開發人員提供了很多功能,包括與許多go工具集成。
VS Code通過IntelliSense,內置git集成,直接從編譯器調試代碼等功能提供智能完成功能;VS Code具有高度可擴展性,並通過其許多擴展提供了許多自定義選項,還提供了幾十種語言的支持,成為受開發者歡迎的工具。
第三種:Atom
開發人員可以利用這個Atom IDE改進的語言集成與更智能的編輯器。開源的go-plus軟件包使開發人員更容易在GO中進行編程。
Atom和go-plus軟件包為golang提供工具,構建流程,linters、vet和coverage工具的支持;其他功能包括自動完成、格式化、測試和文檔。
第四種:Vim
Vim有許多插件可以幫助開發人員更輕鬆地編輯他們的GO代碼;Vim-go插件自動安裝所有必要的東西,為Vim中的GO開發人員提供更平滑的集成。
Vim-go具有許多有用的功能,包括編譯器,改進的語法高亮和摺疊,完成支持以及一系列具有集成支持的調試程序。還有一些使用的高級源分析工具,包括GoImplements、GoCallees和GoReferrers。
Google 為什麼不給 Golang 做一個自己的 IDE?
谷歌公司(Google Inc.)成立於1998年9月4日,是一家位於美國的跨國科技企業,業務包括互聯網搜索、雲計算、廣告技術等,同時開發並提供大量基於互聯網的產品與服務,其主要利潤來自於AdWords等廣告服務。 1999年下半年,谷歌網站“Google”正式啟用。 2010年3月23日,宣布關閉在中國大陸市場搜索服務。2015年8月10日,宣布對企業架構進行調整,並創辦了一家名為Alphabet的“傘形公司”(Umbrella Company),成為Alphabet旗下子公司。
我覺得是沒有必要的,它的意義不大。
IDE 的難度大
做ide不是那麼容易,Go的核心團隊人數不多忙不過來。android現在是google的重心,不也沒有專門從頭開發一款ide么。ide真不是這麼容易弄得,關鍵是要花大量時間。
Golangde 獨立性
IDE主要是簡化程序開發,集成很多工具方便開發和調試,但是所有所有語言本身都不依賴IDE,所以語言和IDE本身就是獨立的兩樣東西,Google發布Go語言,並不代表他會發布Go的IDE。
Google 的開發
雖然Go沒有官方IDE,但是Google同樣提供了許多工具,例如Godoc、Goget、GoTest、Goinstall、Goformat 等,這些工具已經簡化了很多Go語言的開發,只是沒有集成到一個編輯器里。
所以說其實做不做IDE都是沒有什麼關係的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297234.html