日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Golang流水線設(shè)計模式實踐

來源: 責(zé)編: 時間:2024-01-08 09:16:19 226觀看
導(dǎo)讀到目前為止,我已經(jīng)將Golang整合到項目中有一段時間了,Golang是一種非常強(qiáng)大的語言,我渴望在其生態(tài)系統(tǒng)中進(jìn)一步磨練技能?;陧椖康奶囟ㄐ枨?,我需要實現(xiàn)流水線模式(Pipeline Pattern),數(shù)據(jù)需要通過多個過濾器,以順序的方式

到目前為止,我已經(jīng)將Golang整合到項目中有一段時間了,Golang是一種非常強(qiáng)大的語言,我渴望在其生態(tài)系統(tǒng)中進(jìn)一步磨練技能。Z9f28資訊網(wǎng)——每日最新資訊28at.com

Z9f28資訊網(wǎng)——每日最新資訊28at.com

基于項目的特定需求,我需要實現(xiàn)流水線模式(Pipeline Pattern),數(shù)據(jù)需要通過多個過濾器,以順序的方式進(jìn)行處理。讓我解釋一下:Z9f28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)我們有一個很長的字符串。第一步是根據(jù)特定標(biāo)準(zhǔn)對其進(jìn)行解析。接下來,需要對解析后的數(shù)據(jù)進(jìn)行一些調(diào)整。隨后,將解析后的數(shù)據(jù)保存到數(shù)據(jù)庫中。正如你所見,有多個任務(wù)需要處理,而每個任務(wù)都是相互關(guān)聯(lián)的。Z9f28資訊網(wǎng)——每日最新資訊28at.com

Z9f28資訊網(wǎng)——每日最新資訊28at.com

基礎(chǔ)流水線Z9f28資訊網(wǎng)——每日最新資訊28at.com

在軟件開發(fā)中,可以用流水線設(shè)計模式(pipeline design pattern) 來管理這種場景,該模式是為順序處理對象修改而設(shè)計的。想象有一條裝配流水線,每個工位都是一段"管道(pipe)",當(dāng)某個物體通過整個流水線后,就發(fā)生了變化。從本質(zhì)上講,流水線負(fù)責(zé)將值通過一系列可調(diào)用的"管道(pipe)"(無論是中間件、過濾器還是處理器)進(jìn)行順序傳遞。在將該值傳遞給序列中的后續(xù)管道之前,每個管道段都有可能改變該值。該模式在諸如請求處理、數(shù)據(jù)處理或轉(zhuǎn)換等場景中特別有用,提供了一種干凈、可維護(hù)和可測試的方法。Z9f28資訊網(wǎng)——每日最新資訊28at.com

作為解決方案,我準(zhǔn)備了一個簡單的Golang包,可以在處理流程中使用流水線模式,它建立在責(zé)任鏈(chain of responsibility, CoR) 設(shè)計模式之上,可以將其安裝到項目中并使用:Z9f28資訊網(wǎng)——每日最新資訊28at.com

go get github.com/izniburak/pipeline-go

包安裝之后,可以做一個簡單演示。首先需要一些新的結(jié)構(gòu)體,這些結(jié)構(gòu)體具有從PipeInterface實現(xiàn)的Handle方法。因為pipeline包需要多個流水線,所以我們用Handle方法來運(yùn)行每個流水線:Z9f28資訊網(wǎng)——每日最新資訊28at.com

package mainimport ( "strings" "github.com/izniburak/pipeline-go")type UpperCasePipe struct{}func (u *UpperCasePipe) Handle(value pipeline.PipeValue, next pipeline.PipeNext) pipeline.PipeValue {  // get value  text := value.(string)  capitalized := strings.ToUpper(text)  return next(capitalized)}type TrimSpacePipe struct{}func (t *TrimSpacePipe) Handle(value pipeline.PipeValue, next pipeline.PipeNext) pipeline.PipeValue {  // get value  text := value.(string)  trimmed := strings.Trim(text, " ")  return next(trimmed)}

然后可以開始使用流水線:Z9f28資訊網(wǎng)——每日最新資訊28at.com

package mainimport ( "fmt" "strings" "github.com/izniburak/pipeline-go")type UpperCasePipe struct{}func (u *UpperCasePipe) Handle(value pipeline.PipeValue, next pipeline.PipeNext) pipeline.PipeValue {  // get value  text := value.(string)  capitalized := strings.ToUpper(text)  return next(capitalized)}type TrimSpacePipe struct{}func (t *TrimSpacePipe) Handle(value pipeline.PipeValue, next pipeline.PipeNext) pipeline.PipeValue {  // get value  text := value.(string)  trimmed := strings.Trim(text, " ")  return next(trimmed)}func main() {  text := "   buki.dev   "  pipes := []pipeline.PipeInterface{    new(UpperCasePipe),    new(TrimSpacePipe),  }  result := pipeline.Send(text).Through(pipes).ThenReturn()  fmt.Println(result) // BUKI.DEV}

如你所見,我們使用了兩個不同的管道,分別是UpperCasePipe和TrimSpacePipe。輸入是 buki.dev ,兩邊都有空格,輸出是BUKI.DEV。Z9f28資訊網(wǎng)——每日最新資訊28at.com

就是這樣。流水線非常有用,是吧?Z9f28資訊網(wǎng)——每日最新資訊28at.com

可以在GitHub上查看pipeline包[2]。Z9f28資訊網(wǎng)——每日最新資訊28at.com

參考資料:Z9f28資訊網(wǎng)——每日最新資訊28at.com

  • [1]Using a Pipeline Pattern in Golang: https://tech.jotform.com/pipeline-go-pipeline-pattern-in-golang-5a51e5d811a
  • [2]pipeline-go: https://github.com/izniburak/pipeline-go

本文鏈接:http://www.www897cc.com/showinfo-26-57888-0.htmlGolang流水線設(shè)計模式實踐

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 什么是Helm?它是如何提升云原生應(yīng)用私有化部署效率的

下一篇: 十個Java編程中記錄日志的小技巧

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro真機(jī)揭曉 鈦空灰配色質(zhì)感拉滿

    終于,在經(jīng)過了幾波預(yù)熱之后,一加Ace2 Pro的外觀真機(jī)圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設(shè)計還是延續(xù)了一加11的方案,只是細(xì)節(jié)上有了調(diào)整,例如新加入了鈦空灰
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 得物寵物生意「狂飆」,發(fā)力“它經(jīng)濟(jì)”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內(nèi)的“在線鑒別”,可找到鑒別寵物的選項。通過上傳自家寵物的部位細(xì)節(jié),就能收獲擁有專業(yè)資質(zhì)認(rèn)證的得物鑒
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災(zāi)

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災(zāi)。攜手抗災(zāi),京冀安康!以下為公告原文
  • 華為和江淮汽車合作開發(fā)百萬元問界MPV?雙方回應(yīng)來了

    8月1日消息,郭明錤今天在社交平臺發(fā)文稱,華為正在和江淮汽車合作,開發(fā)售價在100萬元的問界MPV,預(yù)計在2024年第2季度量產(chǎn),銷量目標(biāo)為上市首年交付5萬輛。
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • OPPO K11樣張首曝:千元機(jī)影像“卷”得真不錯!

    一直以來,OPPO K系列機(jī)型都保持著較為均衡的產(chǎn)品體驗,歷來都是2K價位的明星機(jī)型,去年推出的OPPO K10和OPPO K10 Pro兩款機(jī)型憑借各自的出色配置,堪稱有
  • Windows 11發(fā)布,微軟一改往常對老機(jī)型開放的態(tài)度

    距離 Windows 11 發(fā)布已經(jīng)過去一周,在過去一周里,很多數(shù)碼愛好者圍繞其對 Android 應(yīng)用的支持、對老機(jī)型的升級問題展開了激烈討論。與以往不同的是,在這次大
Top 主站蜘蛛池模板: 朝阳市| 杂多县| 北辰区| 广宁县| 永德县| 甘孜县| 根河市| 石柱| 贡觉县| 金坛市| 鲜城| 海伦市| 高碑店市| 洛南县| 五常市| 陇南市| 格尔木市| 广安市| 永丰县| 监利县| 商南县| 临安市| 阳新县| 南开区| 突泉县| 综艺| 荣成市| 德兴市| 射洪县| 常山县| 荣成市| 肃北| 岚皋县| 固安县| 山西省| 四平市| 法库县| 比如县| 永宁县| 宜宾县| 台北县|