国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

房間號(hào)生成器

LdhAndroid / 1004人閱讀

摘要:在寫游戲服務(wù)器中特別是卡牌一類的游戲經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間為了用戶友好這個(gè)房間號(hào)通常需要限定長(zhǎng)度比如位或者位數(shù)字因此用數(shù)據(jù)庫(kù)的對(duì)用戶不太友好其一是長(zhǎng)度不固定其二是后期房間號(hào)會(huì)很長(zhǎng)所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器其滿足以下

在寫游戲服務(wù)器中, 特別是卡牌一類的游戲, 經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間, 為了用戶友好, 這個(gè)房間號(hào)通常需要限定長(zhǎng)度, 比如4位或者6位數(shù)字. 因此用數(shù)據(jù)庫(kù)的auto_increment對(duì)用戶不太友好, 其一是長(zhǎng)度不固定, 其二是后期房間號(hào)會(huì)很長(zhǎng), 所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器, 其滿足以下需求:

指定生成的的房間號(hào)范圍: 比如[100000, 1000000)

租借過(guò)期: 當(dāng)一個(gè)房間號(hào)被生成后, 若超時(shí)未續(xù)期, 則自動(dòng)釋放(凍結(jié))

房間號(hào)凍結(jié): 當(dāng)一個(gè)房間號(hào)被歸還后, 在指定時(shí)間范圍內(nèi)不會(huì)被重新分配

安裝

項(xiàng)目地址: https://github.com/acrazing/uno

安裝:

go get -u github.com/acrazing/uno
使用

接口很簡(jiǎn)單:

import "github.com/acrazing/uno"
import "context"

// 創(chuàng)建一個(gè)worker
w := uno.NewWorker()

// 配置
w.Init(&uno.Options{
    MinValue: 1e5,
    MaxValue: 1e6,
})
// 啟動(dòng)服務(wù)
go w.Run(context.Background())
// 生成ID
no := w.Rent()
if no == 0 {
    // 如果返回0, 則表示生成房間號(hào)失敗
    panic("")
}
// 釋放ID
w.Return(no)
// 續(xù)租ID
ok := w.Relet(no)
if ok {
    // 如果返回false, 表示續(xù)租失敗
}
gRPC

gRPC的服務(wù)和消息都已經(jīng)定義好, 可以直接取用:

    addr := "127.0.0.1:1234"

    // server
    listener, err := net.Listen("tcp", addr)
    if err != nil {
        panic(err)
    }
    server := grpc.NewServer()
    uno.RegisterUnoServer(server, uno.Service)
    uno.Service.Init(&uno.Options{
        MinValue: 2,
        MaxValue: 5,
        TTF:      time.Second,
        TTL:      time.Second,
    })
    go uno.Service.Run(context.Background())
    go server.Serve(listener)

    // client
    conn, _ := grpc.Dial(addr, grpc.WithInsecure())
    client := uno.NewUnoClient(conn)
    no, err := client.Rent(context.Background(), &uno.Empty{})
    log.Printf("rent: %v, err: %v", no, err)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30830.html

相關(guān)文章

  • 房間號(hào)成器

    摘要:在寫游戲服務(wù)器中特別是卡牌一類的游戲經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間為了用戶友好這個(gè)房間號(hào)通常需要限定長(zhǎng)度比如位或者位數(shù)字因此用數(shù)據(jù)庫(kù)的對(duì)用戶不太友好其一是長(zhǎng)度不固定其二是后期房間號(hào)會(huì)很長(zhǎng)所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器其滿足以下 在寫游戲服務(wù)器中, 特別是卡牌一類的游戲, 經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間, 為了用戶友好, 這個(gè)房間號(hào)通常需要限定長(zhǎng)度, 比如4位或者...

    LMou 評(píng)論0 收藏0
  • Vue2 + Nodejs + WebSocket 完成你畫我猜多人在線游戲

    摘要:使用即可完成一個(gè)很有意思的在線游戲作品。你畫我猜,相信大家對(duì)這個(gè)游戲都很熟悉。我用實(shí)現(xiàn)了你畫我猜這個(gè)游戲。可以修改畫筆顏色,粗細(xì),進(jìn)行撤銷,恢復(fù),清空等操作。第一個(gè)猜完后,游戲時(shí)間縮短為秒。 使用 websocket + vue2 即可完成一個(gè)很有意思的在線游戲作品。你畫我猜,相信大家對(duì)這個(gè)游戲都很熟悉。 我用Vue2 + mint-ui + nodejs + websocket ...

    XanaHopper 評(píng)論0 收藏0
  • 前言 項(xiàng)目開(kāi)始是因?yàn)楣ぷ餍枰粋€(gè)聊天室功能,但是因?yàn)槟承┰蜃罱K選用的是基于xmpp協(xié)議的Strophe.js寫的。于是就想用node自己寫一套,本來(lái)只是想簡(jiǎn)單的寫個(gè)聊天頁(yè)面,但是寫完了又不滿意,所以不斷的重構(gòu)(似乎可以理解產(chǎn)品經(jīng)理為什么老是改需求了?乛?乛?)。很多東西,比如mongodb,我也是第一次用,以前只接觸過(guò)mysql。所以都是一邊學(xué)一邊寫,利用工作之余的時(shí)間,斷斷續(xù)續(xù)的寫了幾個(gè)月(...

    PAMPANG 評(píng)論0 收藏0
  • 前言 項(xiàng)目開(kāi)始是因?yàn)楣ぷ餍枰粋€(gè)聊天室功能,但是因?yàn)槟承┰蜃罱K選用的是基于xmpp協(xié)議的Strophe.js寫的。于是就想用node自己寫一套,本來(lái)只是想簡(jiǎn)單的寫個(gè)聊天頁(yè)面,但是寫完了又不滿意,所以不斷的重構(gòu)(似乎可以理解產(chǎn)品經(jīng)理為什么老是改需求了?乛?乛?)。很多東西,比如mongodb,我也是第一次用,以前只接觸過(guò)mysql。所以都是一邊學(xué)一邊寫,利用工作之余的時(shí)間,斷斷續(xù)續(xù)的寫了幾個(gè)月(...

    fireflow 評(píng)論0 收藏0
  • B 站直播間數(shù)據(jù)爬蟲

    摘要:站的彈幕服務(wù)器也有類似的機(jī)制,隨便打開(kāi)一個(gè)未開(kāi)播的直播間,抓包將看到每隔左右會(huì)給服務(wù)端發(fā)送一個(gè)心跳包,協(xié)議頭第四部分的值從修改為即可。 原文:B 站直播間數(shù)據(jù)爬蟲, 歡迎轉(zhuǎn)載項(xiàng)目地址:bilibili-live-crawler 前言 起因 去年在 B 站發(fā)現(xiàn)一個(gè)后期超強(qiáng)的 UP 主:修仙不倒大小眼,專出 PDD 這樣知名主播的吃雞精彩集錦,漲粉超快。于是想怎么做這樣的 UP,遇到的第一...

    xuweijian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<