Files
Go-http_framework/util/bitStore/readme.md
T

83 lines
3.2 KiB
Markdown
Raw Normal View History

# 基本说明
作者:黄志军
代码审核:老施
时间: 2020/10/27 15:19
# 设计目的
​ 本工具类设计主要目的是为了实现通过bit位来存储不同档位奖励的领取情况,这边领取情况分为**0**,**1**两种,也就是当前档位奖励**已经被领取**和**未被领取**两种情况。
# 参数说明
#### const静态参数
​ bit:表示当前数组的**每个数字代表的档位**,比如说当前bit=32,如此的话,下面的属性**GearPickList**数组的每个元素就是代表了32个档位,如果bit = 30,则代表了30个档位。
​ 因为int类型最大是64位,所以在修改的时候设置bit最多为64位,超过则会出现奇怪的问题,无法保证。
​ 且有些机器int只支持32位,则需要根据不同的机器进行对应的设置,才能保证程序的完整功能实现。
#### BitStore属性参数
​ MaxGear:当前支持存储的最大档位,这边的最大档位是初始化的时候进行设置的。根据bit的值,拆分出对应数量的数组来表示每一个对应的档位。比如说这边的bit = 32.需要存储的最大档位是33,则数组通过两个元素进行档位确认。第一个数最多达到32位的存储,第二个数,最多存储1位。
GearPickList:数组,用来表示对应档位的奖励,举例,bit = 32,数组的第一个元素表示的是1-32档的档位领取情况,第二个数组表示33-64档的档位领取情况...当然这边最大的档位取决于MaxGear。
​ 支持动态增长、初始化。某一时刻数组长度不能代表对应的档位信息,因为其支持动态增长,长度与所属所有档位不一定对的上。
# 方法使用说明
#### 初始化方法
NewBitStore:这边接受两个参数
- 一个是最大的档位设置,这个是根据每次处理的最大档位进行传入的
- 一个是档位数组,这边支持传入nil,[]int,0 、或者是带有元素的数组(表示有存档信息,比如说从数据库中获取到的,表示前一次存储的结果.)
#### 所有档位领取情况Map
FindAllGearMap
​ 该方法支持返回所有档位领取情况的map.奖励已经领取则返回true,奖励未领取则返回false。
因为**GearPickList**数组支持动态增长,所以该方法对应完整数组和非完整数组拥有两套不同的实现方案,具体详见代码
####
#### 判断奖励是否被领取
IsGearReceive
​ 该方法会先检测传入的档位信息是否正确
若当前**GearPickList**数组未被初始化,则进行初始化(动态性)
​ 判断档位长度和数组长度对应关系,如果数组长度非完整,直接返回false,如果是被领取的,则当前档位对应的数组必定是完整的
​ 若档位完整,则通过与运算计算对应档位的领取情况.(true表示已领取,false表示未领取)
#### 获取对应档位奖励
ReceiveByGear
​ 领取对应档位的奖励,返回奖励档位数组**GearPickList**及所有档位领取情况map。
​ 判断对应档位是否被领取,如果被领取则直接报错
此方法对**GearPickList**的长度进行动态增长,并将对应档位的移位信息加到数组对应位置的元素上