用一个整型字段保存多个开关状态
来源:互联网 发布:人工智能 炒作 知乎 编辑:程序博客网 时间:2024/04/28 18:26
需求: 任务系统中有多个任务, 用户完成每个任务都可以领取奖励, 为防止同一个任务奖励被同一个用户多次领取,需要将领取过的标记一下
比较直接的数据库表设计看起来像这样: 用户ID,任务ID,是否领取
不过这里要说的是另外一种设计: 用户ID,领取状态(一个整型字段)
限制: 领取状态字段为32位整型时只能存储任务ID在[1-32)范围内的31个状态值, 64位时为[1-64)内的63个值
PHP代码示例:
error_reporting(E_ALL ^ E_NOTICE);$status = 0; //多个任务的领取状态$tid1 = 9; //任务ID$mask1 = $tid1 > 2 ? (2 << ($tid1 - 2)) : $tid1;$status |= $mask1; //标识指定任务的领取状态为已领取$tid2 = 1;$mask2 = $tid2 > 2 ? (2 << ($tid2 - 2)) : $tid2;$status |= $mask2;$tid3 = 12;echo "任务 {$tid1}: ", ($mask1 & $status ? '已' : '未'), "领取\n";echo "任务 {$tid2}: ", ($mask2 & $status ? '已' : '未'), "领取\n";echo "任务 {$tid3}: ", ($mask3 & $status ? '已' : '未'), "领取\n";//MySQL更新 UPDATE uinfo SET status = status | $mask WHERE uid=$uid
1 0
- 用一个整型字段保存多个开关状态
- php之用一个常量控制多个开关状态
- 用一个字段保存多个图片或文件路径
- 数据库用一个int类型的字段保存前端多个字段(该字段为多选)
- Orcale多个字典ID保存在一个字段
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 用一个文档保存多个版本
- 在绝对定位中进行水平垂直居中的两种方法
- 梳理caffe代码softmaxWithLoss(二十三)
- 运动鞋市场需求现状---虎扑求购区数据分析报告
- list集合中根据对象排序的问题
- AngularJS中的$http、$q服务和promise对象的联系
- 用一个整型字段保存多个开关状态
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 设计模式(一):单例模式 java实现
- Mysql --分区表(1)
- 调试程序-断点,Debug,崩溃日志分析,友盟崩溃日志
- 传送门:Messenger通信
- perl的INC设置分析
- CocoaLumberjack彩色日志输出