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