-
使用 Asynq 實現(xiàn) Go 異步任務(wù)處理
1. 介紹 Asynq 是一個 Go 庫,用于對任務(wù)進行排隊并與工作人員異步處理它們。 它的工作原理: 客戶端將任務(wù)放入隊列 服務(wù)器從隊列中拉出任務(wù)并為每個任務(wù)啟動一個工作 goroutine 多個工作人員同時處理任務(wù) 倉庫鏈接:https://github.com/hibiken/asynq) #?2. 快速開始 ?2.1 準(zhǔn)備工作 確保已安裝并運行了redis redis-server 安裝asynq軟件包 go?get?-u?github.com/hibiken/asynq 創(chuàng)建項目asy…
-
Golang 中使用 JSON 時如何區(qū)分空字段和未設(shè)置字段?
Golang 中使用 JSON 時如何區(qū)分空字段和未設(shè)置字段?
-
為什么 Go 用起來會難受?這 6 個細節(jié)你知道嗎
在做新的應(yīng)用選型時,我們會進行應(yīng)用編程語言的選擇,這時會糾結(jié) Java、PHP、Go...各種,會思考有沒有致命的問題,不能用?
-
Go 中的數(shù)據(jù)分析——如何使用 Gota 包
數(shù)據(jù)分析是過濾、操縱和處理原始數(shù)據(jù)和數(shù)據(jù)集以從中獲得洞察力的過程。 Python 和 R 通常是數(shù)據(jù)分析的首選語言。但是這些天,Go 正為此目的而變得越來越流行。 在本教程中,我們將介紹 Gota(Go 中的數(shù)據(jù)分析包)及其核心功能和用途。 先決條件 了解 Golang 中的函數(shù)式編程。 安裝了 Go 的 Golang IDE(我使用 Goland 和 Go 1.17.6,但您可以使用其他任何版本) 什么是戈塔? Gota 是 Go 編程語言的數(shù)據(jù)框和數(shù)據(jù)整理模塊。 Gota 類似于 Pytho…
-
使用Golang開發(fā)OpenStack服務(wù)的CLI
由于我們需要編寫自己服務(wù)的客戶端,之前參考過magnum的python客戶端,編寫過一個,整體感受就是: 一件簡單的事兒,被他封裝的很復(fù)雜,而且還有一個關(guān)鍵痛點,部署問題:?1.依賴python環(huán)境 2. 蹩腳的二進制打包方式。因此,作為一個產(chǎn)品的CLI,以二進制方式交付會帶來諸多方便,比如cloud foundry也用golang重寫了他的客戶端部分。 Cobra簡介 在博客的開篇寫過一篇cobra的博客:?如何使用golang編寫漂亮的命令行工具, 很多流行的CLI都基于這個庫開發(fā),比如ku…
-
Google資助Linux項目,Linux內(nèi)核將首次出現(xiàn)Rust代碼
這家搜索引擎巨頭正努力嘗試在 Linux 內(nèi)核中使用 Rust 代碼,這是在幾十年來只使用 C 語言后的一次重大技術(shù)轉(zhuǎn)變。 Google 在周四表示,他們正在資助一個項目,通過用 Rust 編程語言編寫操作系統(tǒng)的內(nèi)核部分來提高 Linux 的安全性。如果該項目成功,這種變化將標(biāo)志著一個開源軟件項目的重大技術(shù)轉(zhuǎn)變,這一舉措可以加強互聯(lián)網(wǎng)和智能設(shè)備的安全性,畢竟 Linux 是 Android、Chrome OS 以及互聯(lián)網(wǎng)中眾多基礎(chǔ)設(shè)施的基礎(chǔ)。 Miguel Ojeda 曾編寫過大型強子對撞機粒子…
-
找到惡意軟件包:Go 語言生態(tài)系統(tǒng)中的供應(yīng)鏈攻擊是怎樣的?
近期發(fā)生的嚴(yán)重的 SolarWinds 攻擊事件和新型 “依賴混淆“攻擊,讓供應(yīng)鏈攻擊成為討論焦點:攻陷供應(yīng)鏈中不太安全的元素,導(dǎo)致更安全的目標(biāo)遭攻陷。 供應(yīng)鏈攻擊的流行目標(biāo)一直都是流行編程語言的很多包管理系統(tǒng),如 NPM (JavaScript)、Rubygems (Ruby) 以及 PyPI (Python)。這些系統(tǒng)常年來遭受惡意攻擊,攻擊者上傳惡意包并等待受害者安裝。 目前為止,尚未看到關(guān)于 Go 生態(tài)系統(tǒng)的供應(yīng)鏈攻擊情況。鑒于 Go 語言是我的新寵,我決定自己做一些調(diào)查。 好在依賴混淆…
-
Go 中如何準(zhǔn)確地判斷和識別各種網(wǎng)絡(luò)錯誤
Go語言集成了簡單易用的網(wǎng)路庫,今天的推送是一線架構(gòu)師分享的Go網(wǎng)絡(luò)庫使用入門指南。 Go 自帶的網(wǎng)絡(luò)標(biāo)準(zhǔn)庫可能讓很多第一次使用它的人感慨,這個庫讓網(wǎng)絡(luò)編程的門檻低到了令人發(fā)指的地步。然而,封裝層次與開發(fā)人員的可控性往往是矛盾的。Go 的網(wǎng)絡(luò)庫封裝程度算是一個不錯的折衷,絕大部分時候,我們只需要調(diào)用 Dial, Read, Write Close 幾個基本操作就可以了。 但是,網(wǎng)絡(luò)是復(fù)雜的。我們有時候需要細致的處理網(wǎng)絡(luò)中的各種錯誤,根據(jù)不同的錯誤進行不同的處理。比如我們遇到一個網(wǎng)絡(luò)錯誤時,需要區(qū)…
-
50 萬行Go代碼,美國一組織從Python 2遷移到 Go
美國教育非營利組織可汗學(xué)院(Khan Academy)方面透露,其已經(jīng)用谷歌的 Go 編程語言完成了 50 萬行代碼,以取代此前用 Python 2 編寫的后臺服務(wù)器。根據(jù)介紹,可汗學(xué)院在其 Goliath 項目下實現(xiàn)了從 Python 2 到 Go 的大轉(zhuǎn)變。Goliath 最初是使用 Python 2 實現(xiàn)的;從 2019 年開始,可汗學(xué)院逐步將其遷移到了 Go。 當(dāng)我們開始 Goliath 項目的時候,團隊中沒有人知道 Go,只是通過實驗驗證了 Go 是相較而言更好的選擇。今天,我們所有的…
-
如何用Golang協(xié)程實現(xiàn)流量統(tǒng)計系統(tǒng)?
相信專業(yè)的程序開發(fā)人員都對并發(fā)編程十分熟悉。實現(xiàn)并發(fā)編程有進程、線程等方式,但是多進程和多線程并不是很完美。都是有內(nèi)核進行調(diào)度,有 CPU 時間片的概念,進行搶占式調(diào)度,對于編程來說,難度比較大。 而 Golang 作為一門現(xiàn)代化的編程語言,它不需要你直面這些復(fù)雜的問題。本質(zhì)上, goroutine 就是協(xié)程。?不同的是,Golang 在 runtime、系統(tǒng)調(diào)用等多方面對 goroutine 調(diào)度進行了封裝和處理,當(dāng)遇到長時間執(zhí)行或者進行系統(tǒng)調(diào)用時,會主動把當(dāng)前 goroutine 的CPU …