我是如何如何理解擁抱變化的

?擁抱變化這句話,相信大家都有不同的理解,我這里也分享一下我的看法。以前我是這樣理解這句話的,簡要來說就是“等要變化的時候我才去擁抱”,舉個例子,比如在公司上班,等到公司業務不行了,項目要腰斬了,直到這份工作保不住了,需要尋找新的工作了,這個時候才意識到,我要變化了。然后開始尋找新的機會,開始為新的去處而做準備。?經過一些事之后,我對這句話有了新的認識。首先擁抱變化的本質我有了新的理解,這句話的本質是什么呢?套用我們軟件架構的一個理念,總結來說就是擴展性好,從而達到高可用的效果,19年相信在天朝的程序員們或多或少都感覺到絲絲寒潮,996,35大限這些詞會在一些自媒體中每每出現,偶然思考,可能會意識[...]

繼續閱讀 ?

日常打怪之golang基于channel的生產消費者程序

0x1日常中用的生產者,消費者程序都是阻塞實時消費的,跟golang的channel處理機制是一樣的,所以用channel來實現可以說是天然合適,這里用golang來寫一個范例0x2packagegolang_in_actionimport("fmt""sync""testing""time")funcdataProducer(chchanint,wg*sync.WaitGroup){gofunc(){fori:=0;i<10;i++{[...]

繼續閱讀 ?

python的try閉包作用域的問題

0x1:python的try,except很給力,在有一些需要捕捉異常的場景下,能夠安裝異常的類別來進行特定的操作,假如說現在我們有一個場景是“無論產生什么異常,我們都有一個總的捕捉邏輯,這種情況下,我們就要注意try的閉包作用域問題了0x2,直接上碼:defallCatch(func):defwrapper(*args,**kwargs):try:ret=func(*args,**kwargs)returnretexceptExceptionase:print"[allcatch]-----------[...]

繼續閱讀 ?

golang的全局聲明的生命周期

場景:當我們要進行redis操作或者其他中間件操作的時候,為了少發起服務端的連接,我們會在main函數外先建立連接,以減少服務端的連接次數真相:事實上,很多中間件的連接只是一個語法聲明,其實并沒有進行真正的連接,比如下面的代碼packagemainimport("fmt""github.com/garyburd/redigo/redis""github.com/spf13/cast""math/rand""time")var(rds,errxx[...]

繼續閱讀 ?

golang協程閉包數據陷阱

0x1我們在寫協程程序的時候,經?;崤齙揭桓齔【熬褪俏頤且址⒅蔥腥撾窀煌膅oroutine(簡稱gor),然后再把各個gor的處理結果匯總起來,這個時候就要注意gor的數據污染問題,我們可以通過閉包來防范各個gor之間的數據污染0x2下面的一個gor之間數據互相污染的范例funcmain(){setMem:=make(map[int]int)wg:=sync.WaitGroup{}lk:=sync.RWMutex{}fori:=0;i<10;i++{//1wg.Add(1)gofun[...]

繼續閱讀 ?

golang并行編程模型范型舉例

在實際的日??⒅?,按照場景來考慮golang的并行編程模型是比較合適的一種做法,這樣既避免了空談,又能清晰易懂,代入感比較強場景一并行處理很多任務,任務之間彼此不用進行信息匯總或者通信比如現在我們有一個程序,是要請求很多URL,只要每個協程能發出請求便可,沒必要驗證請求結果和請求進行時設置數據,或者通信數據,這種場景因為沒有涉及到數據流的走向,所以用WaitGroup比較合適varwgsync.WaitGroupfuncReqUrl(){//請求URLdeferwg.Done()}funcmain(){urlCout:=10fori:=0;i[...]

繼續閱讀 ?

Concurrency in Go 讀書筆記一

Mutex和RWMutex的區別Mutex會鎖住聲明語句之內的所有的內存,上下文,IO等,是完全資源獨享的RWMutex只會所以聲明語句之內的內存讀寫的資源,其他的資源是不會獨享鎖住的所以假如只是內存讀寫的需求,用RWMutex的效率遠比Mutex要高[...]

繼續閱讀 ?

關于golang范型函數的總結1

為什么是關于golang范型函數的總結1,因為自己也不確定以后會有什么總結,所以先寫1,哈哈~一段程序看懂golang的范型函數的關鍵問題,以前一直被數據類型誤導了,要總結的都在代碼里了,直接上代碼了事packagemain/**關于范型函數的兩個要點總結,以前一直以為范型函數要匹配好傳入的參數數據類型,然后要定義好返回的數據類型,其實不是這樣的,因為傳入的參數和返回的參數都是在調用范型程序的代碼塊去處理的,范型函數根本不用考慮1.傳入的參數在調用處interface化2.返回的數據必須是interface化,然后在調用處獲得之后,自己根本已經有的數據類型去做適配*/import("fmt"[...]

上海快三派彩电子走势图:繼續閱讀 ?

關于eiblog的二次修改流程記錄

運行時加載博客程序運行的時候,初始化db連接時,就已經把一些需要用到的數據從數據庫取出來,以后都不要再次查詢,所以博客的性能還是不錯的,該邏輯代碼在funcinit(){數據庫加索引err:=mgo.Index(DB,COLLECTION_ACCOUNT,[]string{"username"})iferr!=nil{logd.Fatal(err)}err=mgo.Index(DB,COLLECTION_ARTICLE,[]string{"id"})iferr!=nil{logd.Fatal(err)}err=[...]

繼續閱讀 ?