已采納回答 / 楓荇
@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?您好!這個案例中關鍵的邏輯是對數據版本字段的維護和使用數據版本字段進行CAS。第一個問題:通過在where條件中添加數據版本字段的驗證,來確定要更新的數據是最新的才能被修改;如果已經被修改,數據版本就會被更新,那么當前更新就要被更新失敗。第二個問題:這種方案不通用,但在很多場景中來代替鎖,簡單說就是避免使用鎖來優化性能。
2019-03-03
講師回答 / 楓荇
@Q646448149?您好!悲觀鎖:簡單說就是先占了我要使用的所有資源,強制絕對串行化,不允許我開始執行時,不管是否要真的執行,涉及到的資源絕對的私有,絕對占有。用一個簡單的案例講,我要去停車,進停車場時,系統給我分配一個停車位A201,告訴讓所有停車的人,并且A201車位上安裝了車位鎖,只有我的車過去才能打開;那么也就是說,我入場是就占了這個車位,不管這個時候不管我是否真的要停,A201車位是我的其他人不能停。樂觀鎖:不管資源是否能用,我先去嘗試,如果資源已經被占了或者狀態變了,大不了失敗重來。用上面...
2019-03-03