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