记录一些坑 / 设计
如何设计一个投票系统?
- 多节点部署,统一先写入redis
- 定时从redis中读取数据落数据库mysql,再做统计之类的工作
数据溢出问题?
- 比如说购买道具,前端输入了一个特别大的数量,然后乘以单价之后可能会溢出,应该如何避免这种问题?
两次 a-1 等于 a-2 的问题?
- 比如说购买道具,客户端发了一次购买购买道具的请求,处理中又发送了另外一个购买请求,如何解决这类问题?
英雄技能冷却,如何做?
- 用最小堆,按照时间戳排序,每次只取出堆定元素判断是否已经完成冷却,如果没有则所有的技能都没有冷却,否则再取堆顶
微信红包如何随机的分成n个?
- 比如100元,由10个人分,那么平均一个人是10元钱。然后付款后,系统开始分份儿。
- 第一份:系统由0~10元之间随机一个数,作为这一份的钱数,设x1。
- 第二份:剩下的钱(100-x1),系统由0~(100-x1)/(10-1)随机一个数,作为这份的钱数,设x2
- …
- 第n份:剩下的钱(100-x1-x2-…-xn),系统由0~(100-x1-x2-…-xn-1)/(10-n)随机一个数,作为这个份的钱数,设为xn。
游戏中的支付一般怎么做?
- 一般服务端先去平台创建好订单,然后通知客户端
- 客户端根据订单号去支付
- 支付完成之后然后再由平台通知服务器/完成之后客户端告诉服务器支付完成,然后由服务器去平台认证