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

83 lines
3.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 基本说明
作者:黄志军
代码审核:老施
时间: 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**的长度进行动态增长,并将对应档位的移位信息加到数组对应位置的元素上