已采納回答 / 楓荇
@?PumkinPie?sleep的方法不可取啊,rand.Seed是為了改變初始隨機種子數(shù),反正程序重新啟動時的隨機序列一樣的,只要保證每次重啟后的初始隨機種子數(shù)不一樣就行。
2019-03-17
已采納回答 / 楓荇
@smarty 您好!在這個例子中金額字段使用了decimal類型,這里使用的decimal類型是由下面這個第三方庫提供的:
github.com/shopspring/decimal可以使用go get 進行安裝:
go?get?-u?github.com/shopspring/...
2019-03-08
已采納回答 / 楓荇
@misaki_rain?很認真的一位同學,實際上通過這個bug,也可以更深刻的理解最小金額的意義。除了生成序列還進一步對生成的結果做了一些驗證,這些思考和驗證方法可以進一步使用自動化測試來驗證,實際上后洗牌算法在課程中沒有編寫自動化測試來驗證,沒有測試就有bug,也說了測試的重要性。非常感謝@misaki_rain的問題,非常棒!???
2019-03-07
講師回答 / 楓荇
@Q646448149?您好!這個案例中關鍵的邏輯是對數(shù)據(jù)版本字段的維護和使用數(shù)據(jù)版本字段進行CAS。第一個問題:通過在where條件中添加數(shù)據(jù)版本字段的驗證,來確定要更新的數(shù)據(jù)是最新的才能被修改;如果已經(jīng)被修改,數(shù)據(jù)版本就會被更新,那么當前更新就要被更新失敗。第二個問題:這種方案不通用,但在很多場景中來代替鎖,簡單說就是避免使用鎖來優(yōu)化性能。
2019-03-03
講師回答 / 楓荇
@Q646448149?您好!悲觀鎖:簡單說就是先占了我要使用的所有資源,強制絕對串行化,不允許我開始執(zhí)行時,不管是否要真的執(zhí)行,涉及到的資源絕對的私有,絕對占有。用一個簡單的案例講,我要去停車,進停車場時,系統(tǒng)給我分配一個停車位A201,告訴讓所有停車的人,并且A201車位上安裝了車位鎖,只有我的車過去才能打開;那么也就是說,我入場是就占了這個車位,不管這個時候不管我是否真的要停,A201車位是我的其他人不能停。樂觀鎖:不管資源是否能用,我先去嘗試,如果資源已經(jīng)被占了或者狀態(tài)變了,大不了失敗重來。用上面...
2019-03-03
講師回答 / 楓荇
可以參考官方文檔:https://golang.org/pkg/math/rand/#Seed 意思就是:seed方法用來提供一個初始化的種子值,從而來確定隨機源中默認的狀態(tài)值;如果不調(diào)用seed方法,那么默認的行為就是調(diào)用Seed(1),將1作為初始化的種子值;這樣rand每次使用的種子數(shù)都是1,所以每次重啟程序都會隨機生成的序列都是一樣的;不重啟時程序也不停止,一直獲取的隨機數(shù)是不一樣的;每次重新設置種子值,那么隨機序列就不一樣了。
2019-02-28
講師回答 / 楓荇
@qq_boy_3?您好!在課程中使用的是Goland,是jetbrains也就是我們熟知的Intellji IDEA的golang開發(fā)定制版本。也可以使用Intellji IDEA安裝Golang插件,是一樣的。下載地址:https://www.jetbrains.com/go/
2019-02-26