2023年9月15日21点45分,没错,我还在加班,本来快到6点可以下班走人了,另外一个部门的人突然群里发消息,和我联调功能。功能的作用是他们给我们用文件推送100万人员信息,我们把100万人员订单信息查出来,再推送给他们,双方规定每个文件最大2万条。
遇到的问题是:
我给对方推送了591955条数据,但是对方只收到591933条数据,差了22条。我一看我给对方推送的刚好有22个2万条数据的文件,那么问题就出现在文件分割上了,本质出现在查询分页上了。
下面是我写的代码:
for (int i=0;i<count;i++) {
int offsit = i;
int limit = 20000;
fun(offsit,limit);
i+= 20000;
}
最后就出现了我上面说的问题。
后来我网上一查,发现问题了,limit 0,20000,其实查询的是第0-19999条,所以我第二次循环的时候,就变成 limit 20001,20000,丢了一条。
我的做法是把for循环上的i++去掉了,或者你也可以把偏移量改成i+=19999;
下班!!!