博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
房间号生成器
阅读量:7118 次
发布时间:2019-06-28

本文共 1302 字,大约阅读时间需要 4 分钟。

在写游戏服务器中, 特别是卡牌一类的游戏, 经常需要让用户手动输入房间号加入一个房间, 为了用户友好, 这个房间号通常需要限定长度, 比如4位或者6位数字. 因此用数据库的auto_increment对用户不太友好, 其一是长度不固定, 其二是后期房间号会很长, 所以专门写了一个房间号生成器服务器, 其满足以下需求:

  1. 指定生成的的房间号范围: 比如[100000, 1000000)
  2. 租借过期: 当一个房间号被生成后, 若超时未续期, 则自动释放(冻结)
  3. 房间号冻结: 当一个房间号被归还后, 在指定时间范围内不会被重新分配

安装

项目地址:

安装:

go get -u github.com/acrazing/uno

使用

接口很简单:

import "github.com/acrazing/uno"import "context"// 创建一个workerw := uno.NewWorker()// 配置w.Init(&uno.Options{    MinValue: 1e5,    MaxValue: 1e6,})
// 启动服务go w.Run(context.Background())
// 生成IDno := w.Rent()if no == 0 {    // 如果返回0, 则表示生成房间号失败    panic("")}
// 释放IDw.Return(no)
// 续租IDok := w.Relet(no)if ok {    // 如果返回false, 表示续租失败}

gRPC

gRPC的服务和消息都已经定义好, 可以直接取用:

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)

转载地址:http://mubel.baihongyu.com/

你可能感兴趣的文章
用DeepMind教AI玩游戏?一文为你讲清原理!
查看>>
我的WCF之旅(4):WCF中的序列化[上篇]
查看>>
NGINX小技巧--将所有目录和目录下所有文件分别给与不同的权限
查看>>
DOCKER功能练习
查看>>
如何来看单片机外设A/D转换器ADC0804时序图
查看>>
NetApp发布云计算计划及新操作系统
查看>>
IPHONE 6S电池保护壳丑?漂亮的都有专利了
查看>>
云计算和社交网络将推动美科技业重组
查看>>
浙江乌镇已布500多个人脸识别摄像头;宁波、嘉兴将引入中考英语人机对话考试技术,用机器为考生口语评分...
查看>>
15分钟学会使用Git和远程代码库
查看>>
《OpenStack实战》——1.3 关联OpenStack及其控制的计算资源
查看>>
《C++面向对象高效编程(第2版)》——1.15 小结
查看>>
人工智能悖论:简单的动作比复杂的推理更难以实现
查看>>
《C++游戏编程入门(第4版)》——2.9 使用逻辑运算符
查看>>
PostgreSQL修炼之道:从小工到专家. 2.1 从发行版本安装
查看>>
《Unity 5.x游戏开发实战》一1.2 从头开始——Unity中的项目
查看>>
深入实践Spring Boot1.4.1 在IDEA环境中运行
查看>>
《CUDA高性能并行计算》----1.2 运行我们自己的串行程序
查看>>
《HBase实战》一2.9 小结
查看>>
细说分布式数据库的过去、现在与未来
查看>>