原创 golang開發 深入理解 context

context的歷史 context包在Go 1.7版本正式加入Go標準庫。在加入之前我們看看Go團隊核心成員Sameer Ajmani在2014年發表的一篇關於context介紹博客,地址:https://go.dev/blog/cont

原创 golang開發類庫推薦

gin star:74.6k 地址:https://github.com/gin-gonic/gin gin是最受開發者歡迎的 Web 框架,它有諸多的優點,性能高、輕量級和簡潔的 API 設計,社區活躍度高,靈活、可擴展性強。

原创 golang開發_goroutine在項目中的使用姿勢

很多初級的Gopher在學習了goroutine之後,在項目中其實使用率不高,尤其一些跨語言過來的人,對併發編程理解不深入,可能很多人只知道go func(),或者掌控不夠,謹慎一些,儘量少使用或者不使用,用的話就是go func(),主

原创 openresty package path

openresty lua_package_path 是整個openresty最基礎的功能,不理解 path就無法做項目,更無法寫框架。 先看下文檔lua_package_path https://github.com/openresty/

原创 網絡工具netstat與ss

建議使用ss命令,2001年的時候netstat 1.42版本之後就沒更新了,之後取代的工具是ss。netstat命令在很多場景下比較慢。ss可以顯示跟netstat類似的信息,但是速度卻比netstat快很多,netstat是基於/pr

原创 nginx 客戶端返回499的錯誤碼

我們服務器客戶端一直有返回錯誤碼499的日誌,以前覺得比例不高,就沒有仔細查過,最近有領導問這個問題,爲什麼耗時只有0.0幾秒,爲啥還499了?最近幾天就把這個問題跟蹤定位了一下,這裏做個記錄 網絡架構和背景 我們服務架構和錯誤碼是上

原创 golang開發:go併發的建議(完)

上次說了一下Go語言佈道師 Dave Cheney對Go併發的建議,個人覺得最重要的一條,這次主要想說一下這個。 8.3. Never start a goroutine without knowning when it will sto

原创 某雲負載均衡獲取客戶端真實IP的問題

某雲負載均衡真實IP的問題,我們這邊已經遇到過兩次了。而且每次和售後溝通的時候都大費周折,主要是要給售後說明白目前文檔的獲取真實IP是有問題的,他們覺得文檔上說明的肯定沒問題,售後要是不明白,他們不會給LB部門上報,這個事就沒法推進。 我

原创 golang開發:go併發的建議

這個是前段時間看到Go語言的貢獻者與佈道師 Dave Cheney對Go併發的建議或者叫使用的陷阱(不是我自己的建議),結合自己最近幾年對gorotine的使用,再回頭看這幾條建議,真的會茅塞頓開,覺得特別重要。這篇文章對併發的建議的章節

原创 nginx proxy_next_upstream 與openresty balancer.set_more_tries的使用

背景 我們這邊網關服務使用的 kong,前段時間上線一個服務,這個服務它報錯了,產生了502的錯誤碼,追查這個報錯的時候發現了網關服務的兩個可疑的地方,第一個疑點是我們在Kong上配置的 Retries = 5,但是實際實際上我們的代理重試

原创 golang開發:Error的使用

Error是Go語言開發中最基礎也是最重要的部分,跟其他語言的try catch的作用基本一致,想想在PHP JAVA開發中,try catch 不會使用,或者使用不靈活,就無法感知到程序運行中出現了什麼錯誤,是特別可怕的一件事。 Er

原创 SEO大殺器rendertron安裝

前段時間做SEO的優化,使用的是GoogleChrome/rendertron,發現這個安裝部署的時候還是會有一些要注意的地方,做個記錄 爲什麼要使用rendertron 目前很多網站都是使用 vue、recat等框架開發的網站,一般都

原创 golang開發:http請求redirect的問題

這兩天在開發項目的時候遇到了一個問題,請求了一個URL,它會302到另一個地址,本意上只是想檢查這個URL是否會做3XX的redirect跳轉,結果每次reqeust都會返回最後一跳的結果。後來就看了下源碼,瞭解下請求跳轉的機制 實現代

原创 golang開發:channel使用

channel主要是用於多個goroutine之間通信 channel語法 channel是引用類型,需要實用make來創建channel,如下 make(chan Type, [buffer]) chan Type 通道的類型 buf

原创 golang開發:select多路選擇

select 是 Golang 中的一個控制結構,語法上類似於switch 語句,只不過select是用於 goroutine 間通信的 ,每個 case 必須是一個通信操作,要麼是發送要麼是接收,select 會隨機執行一個可運行的 c