使用 Uber automaxprocs 正確設置 Go 程序線程數
公眾號首發地址:https://mp.weixin.qq.com/s/5wrYaHXBpuN0WxKAaNNp-A 我們知道 Go 語言沒有直接對用户暴露線程的概念,而是通過 goroutine 來控制併發。不過,在 Go 程序啓動時,其背後的調度器往往是多線程運行的。在 Go 語言的 GMP 調度模型中,P 決定着同時運行的 goroutine 數,我們可以通過環境變量 GOMAXPROCS 或
Nickname 江湖十年
Contributes91
Followers0
公眾號首發地址:https://mp.weixin.qq.com/s/5wrYaHXBpuN0WxKAaNNp-A 我們知道 Go 語言沒有直接對用户暴露線程的概念,而是通過 goroutine 來控制併發。不過,在 Go 程序啓動時,其背後的調度器往往是多線程運行的。在 Go 語言的 GMP 調度模型中,P 決定着同時運行的 goroutine 數,我們可以通過環境變量 GOMAXPROCS 或
Nickname 江湖十年
公眾號首發:https://mp.weixin.qq.com/s/no995DjgiS3muyPSt2QhUg 在 Go 語言中,io.Discard 是一個實現了 io.Writer 接口的特殊變量,用於丟棄所有寫入的數據。 io.Discard 在 Go 1.15 及之前版本中是放在 io/ioutil 包中實現的。而在 Go 1.16 版本,得以正式轉正,被實現在 io 包中。本文我們來一起
Nickname 江湖十年
公眾號首發:https://mp.weixin.qq.com/s/Xbk4QF7HFll102xaF5r_3Q 如果你熟悉 Java、Python 等編程語言,那麼你一定聽説或者使用過進程池或線程池。因為進程和線程不是越多越好,過多的進程或線程可能造成資源浪費和性能下降。所以池化技術在這些主流編程語言中非常流行,可以有效控制併發場景下資源使用量。 而 Go 語言則沒有提供多進程和多線程的支持,僅提
Nickname 江湖十年
公眾號首發:https://mp.weixin.qq.com/s/N1JxiRnr5c4pq0RBo3RGYA 我在網上衝浪時,在 GitHub 上發現了一個感興趣的開源項目 OneX ,我將其下載到本地,現在我該如何知道這個項目的體量呢?一個非常直觀的指標是看這個項目有多少行代碼。 我們可以使用如下命令,來統計 OneX 項目代碼行數: $ cd onex $ find . -name "*.g
Nickname 江湖十年
公眾號首發地址:https://mp.weixin.qq.com/s/r8mqOUIoCu0713XcH3P1-Q 在編程中,有限狀態機(FSM)是管理複雜狀態流轉的優雅工具,其核心在於通過明確定義狀態、事件和轉換規則,將業務邏輯模塊化。本文將探討在 Go 中如何使用有限狀態機。 有限狀態機 在介紹有限狀態機之前,我們可以先來看一個示例程序: https://github.com/jianghus
Nickname 江湖十年
新的一週,祝你開心! 好久沒分享面經了,今天來個大的---字節的後端實習二面,簡直就是八股盛宴,問的太多太全面了。 面經詳解 1. 數據庫的隔離級別有哪些? 數據庫事務隔離級別主要分為四種,從低到高依次為: 讀未提交(Read Uncommitted) 允許事務讀取其他事務未提交的數據,可能導致髒讀、不可重複讀和幻讀。 讀已提交(Read Committ
Nickname 王中陽講編程
公眾號首發地址:https://mp.weixin.qq.com/s/TGNG34qJTI7SZOENidYBOA 我曾在《Go 中空結構體慣用法,我幫你總結全了!》一文中介紹過空結構體的多種用法,本文再來補充一種慣用法:將空結構體作為 Context 的 key 來進行安全傳值。 NOTE: 如果你對 Go 語言中的 Context 不夠熟悉,可以閲讀我的另一篇文章《Go 併發控制:con
Nickname 江湖十年
公眾號首發:https://mp.weixin.qq.com/s/JwEPt3oZ3aY8ZzKddwnpiA 剛開始接觸 Go 的開發者大概都會遇到一個問題:我該如何組織我的 Go 項目?這種問題當然沒有標準答案,不過 Go 官方下場,給了廣大 Gopher 一個推薦模板。本文就來帶大家一起來學習一下 Go 官方對於 Go 項目佈局的指導原則。 本文以 Go 官方博客「Organizing a
Nickname 江湖十年
公眾號首發地址:https://mp.weixin.qq.com/s/t47eJ9rYK2CZ-hIbjx7kSg 本文帶大家一起來深入探究一下 Go 1.23 中發佈的迭代器特性,這是一篇遲來的文章,再不寫這篇文章 Go 1.25 就發佈了 :),Go 1.25 預計將於 2025 年 8 月發佈。 由於篇幅過長,所以文章拆分成了上下兩篇發佈,本文為上篇——使用篇。下篇為——原理篇,記得來讀。
Nickname 江湖十年
大家好,我是王中陽,見字如面。 今天刷掘金時,一篇關於Go語言的舊文(《為什麼很多公司都開始使用Go語言了?》)意外被推到眼前,點開評論區瞬間被“炸裂”的討論震撼——數百條留言裏,有對語言特性的犀利吐槽,有對就業前景的焦慮傾訴,也有對技術選型的理性思辨。 這場兩年前的爭論,至今仍能戳中後端開發者的核心關切。 結合自己的從業經驗與評論區大神們的觀點,再對照2025年的市場行情,我想聊聊Go與Java
Nickname 王中陽講編程
一提到 Go 的錯誤處理,大家腦海裏可能立馬浮現出滿屏的 if err != nil。它邏輯清晰,非常符合 Go 的設計哲學,這個沒法反駁。 但我發現僅僅會寫 if err != nil 是遠遠不夠的。這就像學車,拿到駕照只是第一步,上路還得重新學習。Go 官方也明確表示,未來不會引入類似 try-catch 的新語法,所以我們必須在現有的模式上玩出花來。 那些真正厲害的 Go 開發者,他們寫的系
Nickname 煩惱的沙發
一、引言 在當今這個信息爆炸的時代,編程語言層出不窮,但有一種語言憑藉其簡潔、高效和併發的特性,在眾多語言中脱穎而出,它就是Go語言。Go語言,也被稱為Golang,由Google公司開發並開源,自誕生以來就受到了廣大開發者的喜愛。本文將帶你領略Go語言的魅力,從入門到進階,逐步掌握這門強大的編程語言。 二、Go語言入門 瞭解Go語言的基本特性 Go語言具有簡潔、高效、靜態類型、編譯型等特性
Nickname hanhoudeniupai
隨着互聯網的不斷髮展,語言也在不斷的更新,現在時代正在走向數據化、人工智能的新時代,python、Go語言開始崛起,python已成為當今時代的主流,go語言也開始流行,現在正在向Go發展,越來越多的公司需要這門技術,薪資也在不斷提升,那小猿圈為你解讀Go語言的特點都有哪些? 一、什麼是Go語言 Golang(GO)是由Google在2009年推出的編程語言,是一門全新的、現代的、語法簡潔並容易上
Nickname 5e4jkgqh
在我們選擇用哪種編程語言進行後端開發的時候,Python 和 Go 似乎代表了兩種極端: Python 以人生苦短我用Python的開發效率聞名,卻經常因性能被調侃為慢如龜速; Go 則以編譯即部署的輕量和高併發性能成為雲原生時代的寵兒,卻因語法簡陋被吐槽開發像搬磚。 而 PyPy 的出現,像給 Python 注射了一劑強心針,這個基於 JIT(即時編譯)的 Python 解釋器,宣稱能讓 Pyt
Nickname 王中陽講編程
隨着互聯網的不斷髮展,語言也在不斷的更新,現在時代正在走向數據化、人工智能的新時代,python、Go語言開始崛起,python已成為當今時代的主流,go語言也開始流行,現在正在向Go發展,越來越多的公司需要這門技術,薪資也在不斷提升,那小猿圈為你解讀Go語言的特點都有哪些? 一、什麼是Go語言 Golang(GO)是由Google在2009年推出的編程語言,是一門全新的、現代的、語法簡潔並容易上
Nickname daqidexihongshi
代碼倉庫 https://github.com/tylitianrui/gotemplate 1.簡述 1.1 高性能 gotemplate 模版引擎是go語言中、性能最高的文本渲染引擎之一。性能是官方text/template的5倍左右,是fasttemplate的1.7~2倍左右。 1.2 自定義佔位符tag gotemplate 模版引擎允許用户設置自定義的佔位符tag,例如: [[xx
Nickname tyltr
前言 最近一直有小夥伴私信我學Go語言的問題: 有的小夥伴覺得客户端太捲了,想轉服務端,覺得Java也卷,想學Go語言; 有的小夥伴是想從PHP或者Java轉Go,做高併發編程,覺得Go更有前途。 聊的多了,發現這是一個共性問題,所以乾脆整理成文章,希望對更多的人有幫助。 這篇文章會結合我的經歷: 聊聊我認為客户端轉服務端開發最大的挑戰是什麼? 如何高效轉型做服務端開發?如何高效學完Go基礎? 在
Nickname 王中陽背後的男人
歡迎訪問我的個人小站 瑩的網絡日誌 ,不定時更新文章和技術博客~ json 是我的老朋友,上份工作開發 web 應用時就作為前後端數據交流的協議,現在也是用 json 數據持久化到數據庫。雖然面熟得很但還遠遠達不到知根知底,而且在邊界的探索上越發束手束腳。比如之前想寫一個範型的結構提高通用性,但是不清楚對範型的支持如何,思來想去還是用了普通類型;還有項目中的規範不允許使用指針類型的字段存儲,我一直
Nickname 瑩醬
見字如面,我是陽哥,我的文章都首發在同名公眾號:王中陽,歡迎鏈接。 兄弟們,不管你是什麼崗位,強烈建議學AI,我最近輔導的同學很多都是因為做了AI項目,拿到了遠超預期的Offer。 這篇文章不是廣告,而是告訴你怎麼在懂後端基礎之後,更好的擁抱AI的技術,怎麼學,學完後怎麼應用? 甚至你想跳槽漲薪的話,怎麼把學的AI知識寫到簡歷中,融合到你過去的項目中。 廢話不説,其實兄弟們也感受到了:純做
Nickname 王中陽講編程
Go 語言為什麼值得學習? 下面通過我的親身經歷,結合 2025 年最新行業趨勢,聊聊為什麼 Go 語言依然是程序員最值得投資的技能 我的經歷 我是 2015 年夏天入行編程,用 Java 做 Android 開發。那年恰逢中關村創業熱潮,還沒有小程序的年代,地推下載 APP 是行業常態。我幸運趕上了黃金期 ——5 天拿到 6 個 offer,完全是企業搶人的 “供不應求” 狀態。但到了 15 年
Nickname 王中陽背後的男人
dongle 是一個輕量級、語義化、對開發者友好的 Golang 密碼庫,100% 單元測試覆蓋率. dongle 已被 awesome-go 收錄, ,並獲得 gitee 2024 年最有價值項目(GVP)和 gitcode 2024 年度 G-Star 項目,如果您覺得不錯,請給個 star 吧 docs: dongle.go-pkg.com github:github.com/dr
Nickname Peleus
前言 由於在公司廣泛使用Docker的大環境下,突然對它的編程語言(Go)瞭解下。並且感覺現在Go語言的應用也是越來越廣泛,很多互聯網大廠都在使用,目前利用業餘時間來學習下,主流還是Java,學明白以後可能考慮轉哦?。如果你也感興趣不如一起來學習。 Go介紹 簡史 Go語言是Google於2009年正式發佈的一款開源的靜態編譯型語言。Go語言最早於2007年Robert Griese
Nickname weiwudejiqimao
一、引言 在當今這個信息爆炸的時代,編程語言層出不窮,但有一種語言憑藉其簡潔、高效和併發的特性,在眾多語言中脱穎而出,它就是Go語言。Go語言,也被稱為Golang,由Google公司開發並開源,自誕生以來就受到了廣大開發者的喜愛。本文將帶你領略Go語言的魅力,從入門到進階,逐步掌握這門強大的編程語言。 二、Go語言入門 瞭解Go語言的基本特性 Go語言具有簡潔、高效、靜態類型、編譯型等特性
Nickname gangyidesongshu
前言 由於在公司廣泛使用Docker的大環境下,突然對它的編程語言(Go)瞭解下。並且感覺現在Go語言的應用也是越來越廣泛,很多互聯網大廠都在使用,目前利用業餘時間來學習下,主流還是Java,學明白以後可能考慮轉哦?。如果你也感興趣不如一起來學習。 Go介紹 簡史 Go語言是Google於2009年正式發佈的一款開源的靜態編譯型語言。Go語言最早於2007年Robert Griese
Nickname aihejiudejiqiren_bjjawt