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

3.2 KiB
Raw Blame History

基本说明

作者:黄志军

代码审核:老施

时间: 2020/10/27 15:19

设计目的

​ 本工具类设计主要目的是为了实现通过bit位来存储不同档位奖励的领取情况,这边领取情况分为01两种,也就是当前档位奖励已经被领取未被领取两种情况。

参数说明

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的长度进行动态增长,并将对应档位的移位信息加到数组对应位置的元素上