什么是自然区间?
每一个单位都可以顺序访问的区间就称之为自然区间。
什么是自然区间匹配?
很多时候需要验证一个值,这个值的粒度很小或者说是异构的(从另外的模块获取的)。配置这个值是否正确,我们通常会设定一个误差允许范围,然后计算每一个范围内的点的值,来验证是否正确。
应用场景:
Client给Server发送一个验证码,验证码是通过一个用户字符串和时间计算出来的,如下:
// 伪代码
void SendCode()
{
int userString = GetUserString(); //获取用户字符串
int nTimes = GetTime(); // 获取当前时间ms
string codeString = calcCode(userString, nTimes); //calcCode客户端服务器逻辑一样
send(codeString); // 发送
}
Server收到这个codeString后,计算这个值是否正确,考虑到网络延时等问题,Server设定Times的允许误差在-100ms到100ms范围内,服务器有如下逻辑:
// codeString作为输入
bool verify(string codeString)
{
int userString = GetUserString(); //获取用户字符串
int nTimes = GetTime(); // 获取当前时间ms
int deviations = 100; //允许误差ms</