常见的限流算法

常见的几种限流算法如下:

  1. 令牌桶
  2. 漏桶
  3. 滑动窗口
  4. 固定窗口

我在面试的时候实现的方式就有点类似于4,面试官也提出会有突刺问题,后面问我怎么优化,因为我实在不会写令牌桶的算法,我就说了滑动窗口,更加细粒度的划分这块。

所以接下来实现一下漏桶和令牌桶吧

漏桶

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.concurrent.*;
import java.util.*;

public class LeakyBucket {
//定义漏桶速率
private int qps;
//定义漏桶
private LinkedBlockingDeque<Object> waterBucket;

public void initLeaky(){
Runnable run = new Runnable() {
@Override
public void run() {
while(true){
//使用TimeUnit组件,每隔1000/qps处理一个消息
try {
TimeUnit.MICROSECONDS.sleep(1000/qps);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//漏水
waterBucket.poll();
}
}
};
Thread thread = new Thread(run);
thread.start();
}

public LeakyBucket(int capacity,int qps){
this.qps = qps;
this.waterBucket = new LinkedBlockingDeque<>(capacity);
//创建完桶要开始滴水
initLeaky();
}

public boolean tryAcquire(){
//这里一定要用offer,否则超容量就报错了
return waterBucket.offer(1);
}

public static void main(String[] args) throws InterruptedException {
int count = 0;
LeakyBucket leakyBucket = new LeakyBucket(100,100);
for(int i=0;i<200;i++){
Date now = new Date();
if(leakyBucket.tryAcquire()){
count++;
System.out.println(i+" at "+now+" get success");
}else {
System.out.println(i+" at "+now+" get error");
}
}
System.out.println("total num:"+ count);
}
}

输出结果并不严格限制1s只能获取一百个,而是只要桶还能装下即可获取流量允许,所以结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
0 at Mon Apr 07 13:56:23 CST 2025 get success
1 at Mon Apr 07 13:56:23 CST 2025 get success
2 at Mon Apr 07 13:56:23 CST 2025 get success
3 at Mon Apr 07 13:56:23 CST 2025 get success
4 at Mon Apr 07 13:56:23 CST 2025 get success
5 at Mon Apr 07 13:56:23 CST 2025 get success
6 at Mon Apr 07 13:56:23 CST 2025 get success
7 at Mon Apr 07 13:56:23 CST 2025 get success
8 at Mon Apr 07 13:56:23 CST 2025 get success
9 at Mon Apr 07 13:56:23 CST 2025 get success
10 at Mon Apr 07 13:56:23 CST 2025 get success
11 at Mon Apr 07 13:56:23 CST 2025 get success
12 at Mon Apr 07 13:56:23 CST 2025 get success
13 at Mon Apr 07 13:56:23 CST 2025 get success
14 at Mon Apr 07 13:56:23 CST 2025 get success
15 at Mon Apr 07 13:56:23 CST 2025 get success
16 at Mon Apr 07 13:56:23 CST 2025 get success
17 at Mon Apr 07 13:56:23 CST 2025 get success
18 at Mon Apr 07 13:56:23 CST 2025 get success
19 at Mon Apr 07 13:56:23 CST 2025 get success
20 at Mon Apr 07 13:56:23 CST 2025 get success
21 at Mon Apr 07 13:56:23 CST 2025 get success
22 at Mon Apr 07 13:56:23 CST 2025 get success
23 at Mon Apr 07 13:56:23 CST 2025 get success
24 at Mon Apr 07 13:56:23 CST 2025 get success
25 at Mon Apr 07 13:56:23 CST 2025 get success
26 at Mon Apr 07 13:56:23 CST 2025 get success
27 at Mon Apr 07 13:56:23 CST 2025 get success
28 at Mon Apr 07 13:56:23 CST 2025 get success
29 at Mon Apr 07 13:56:23 CST 2025 get success
30 at Mon Apr 07 13:56:23 CST 2025 get success
31 at Mon Apr 07 13:56:23 CST 2025 get success
32 at Mon Apr 07 13:56:23 CST 2025 get success
33 at Mon Apr 07 13:56:23 CST 2025 get success
34 at Mon Apr 07 13:56:23 CST 2025 get success
35 at Mon Apr 07 13:56:23 CST 2025 get success
36 at Mon Apr 07 13:56:23 CST 2025 get success
37 at Mon Apr 07 13:56:23 CST 2025 get success
38 at Mon Apr 07 13:56:23 CST 2025 get success
39 at Mon Apr 07 13:56:23 CST 2025 get success
40 at Mon Apr 07 13:56:23 CST 2025 get success
41 at Mon Apr 07 13:56:23 CST 2025 get success
42 at Mon Apr 07 13:56:23 CST 2025 get success
43 at Mon Apr 07 13:56:23 CST 2025 get success
44 at Mon Apr 07 13:56:23 CST 2025 get success
45 at Mon Apr 07 13:56:23 CST 2025 get success
46 at Mon Apr 07 13:56:23 CST 2025 get success
47 at Mon Apr 07 13:56:23 CST 2025 get success
48 at Mon Apr 07 13:56:23 CST 2025 get success
49 at Mon Apr 07 13:56:23 CST 2025 get success
50 at Mon Apr 07 13:56:23 CST 2025 get success
51 at Mon Apr 07 13:56:23 CST 2025 get success
52 at Mon Apr 07 13:56:23 CST 2025 get success
53 at Mon Apr 07 13:56:23 CST 2025 get success
54 at Mon Apr 07 13:56:23 CST 2025 get success
55 at Mon Apr 07 13:56:23 CST 2025 get success
56 at Mon Apr 07 13:56:23 CST 2025 get success
57 at Mon Apr 07 13:56:23 CST 2025 get success
58 at Mon Apr 07 13:56:23 CST 2025 get success
59 at Mon Apr 07 13:56:23 CST 2025 get success
60 at Mon Apr 07 13:56:23 CST 2025 get success
61 at Mon Apr 07 13:56:23 CST 2025 get success
62 at Mon Apr 07 13:56:23 CST 2025 get success
63 at Mon Apr 07 13:56:23 CST 2025 get success
64 at Mon Apr 07 13:56:23 CST 2025 get success
65 at Mon Apr 07 13:56:23 CST 2025 get success
66 at Mon Apr 07 13:56:23 CST 2025 get success
67 at Mon Apr 07 13:56:23 CST 2025 get success
68 at Mon Apr 07 13:56:23 CST 2025 get success
69 at Mon Apr 07 13:56:23 CST 2025 get success
70 at Mon Apr 07 13:56:23 CST 2025 get success
71 at Mon Apr 07 13:56:23 CST 2025 get success
72 at Mon Apr 07 13:56:23 CST 2025 get success
73 at Mon Apr 07 13:56:23 CST 2025 get success
74 at Mon Apr 07 13:56:23 CST 2025 get success
75 at Mon Apr 07 13:56:23 CST 2025 get success
76 at Mon Apr 07 13:56:23 CST 2025 get success
77 at Mon Apr 07 13:56:23 CST 2025 get success
78 at Mon Apr 07 13:56:23 CST 2025 get success
79 at Mon Apr 07 13:56:23 CST 2025 get success
80 at Mon Apr 07 13:56:23 CST 2025 get success
81 at Mon Apr 07 13:56:23 CST 2025 get success
82 at Mon Apr 07 13:56:23 CST 2025 get success
83 at Mon Apr 07 13:56:23 CST 2025 get success
84 at Mon Apr 07 13:56:23 CST 2025 get success
85 at Mon Apr 07 13:56:23 CST 2025 get success
86 at Mon Apr 07 13:56:23 CST 2025 get success
87 at Mon Apr 07 13:56:23 CST 2025 get success
88 at Mon Apr 07 13:56:23 CST 2025 get success
89 at Mon Apr 07 13:56:23 CST 2025 get success
90 at Mon Apr 07 13:56:23 CST 2025 get success
91 at Mon Apr 07 13:56:23 CST 2025 get success
92 at Mon Apr 07 13:56:23 CST 2025 get success
93 at Mon Apr 07 13:56:23 CST 2025 get success
94 at Mon Apr 07 13:56:23 CST 2025 get success
95 at Mon Apr 07 13:56:23 CST 2025 get success
96 at Mon Apr 07 13:56:23 CST 2025 get success
97 at Mon Apr 07 13:56:23 CST 2025 get success
98 at Mon Apr 07 13:56:23 CST 2025 get success
99 at Mon Apr 07 13:56:23 CST 2025 get success
100 at Mon Apr 07 13:56:23 CST 2025 get success
101 at Mon Apr 07 13:56:23 CST 2025 get success
102 at Mon Apr 07 13:56:23 CST 2025 get success
103 at Mon Apr 07 13:56:23 CST 2025 get success
104 at Mon Apr 07 13:56:23 CST 2025 get error
105 at Mon Apr 07 13:56:23 CST 2025 get error
106 at Mon Apr 07 13:56:23 CST 2025 get error
107 at Mon Apr 07 13:56:23 CST 2025 get error
108 at Mon Apr 07 13:56:23 CST 2025 get error
109 at Mon Apr 07 13:56:23 CST 2025 get error
110 at Mon Apr 07 13:56:23 CST 2025 get error
111 at Mon Apr 07 13:56:23 CST 2025 get error
112 at Mon Apr 07 13:56:23 CST 2025 get error
113 at Mon Apr 07 13:56:23 CST 2025 get error
114 at Mon Apr 07 13:56:23 CST 2025 get error
115 at Mon Apr 07 13:56:23 CST 2025 get error
116 at Mon Apr 07 13:56:23 CST 2025 get error
117 at Mon Apr 07 13:56:23 CST 2025 get error
118 at Mon Apr 07 13:56:23 CST 2025 get error
119 at Mon Apr 07 13:56:23 CST 2025 get error
120 at Mon Apr 07 13:56:23 CST 2025 get error
121 at Mon Apr 07 13:56:23 CST 2025 get error
122 at Mon Apr 07 13:56:23 CST 2025 get error
123 at Mon Apr 07 13:56:23 CST 2025 get error
124 at Mon Apr 07 13:56:23 CST 2025 get error
125 at Mon Apr 07 13:56:23 CST 2025 get error
126 at Mon Apr 07 13:56:23 CST 2025 get error
127 at Mon Apr 07 13:56:23 CST 2025 get error
128 at Mon Apr 07 13:56:23 CST 2025 get error
129 at Mon Apr 07 13:56:23 CST 2025 get error
130 at Mon Apr 07 13:56:23 CST 2025 get error
131 at Mon Apr 07 13:56:23 CST 2025 get error
132 at Mon Apr 07 13:56:23 CST 2025 get success
133 at Mon Apr 07 13:56:23 CST 2025 get error
134 at Mon Apr 07 13:56:23 CST 2025 get error
135 at Mon Apr 07 13:56:23 CST 2025 get error
136 at Mon Apr 07 13:56:23 CST 2025 get error
137 at Mon Apr 07 13:56:23 CST 2025 get error
138 at Mon Apr 07 13:56:23 CST 2025 get error
139 at Mon Apr 07 13:56:23 CST 2025 get error
140 at Mon Apr 07 13:56:23 CST 2025 get error
141 at Mon Apr 07 13:56:23 CST 2025 get error
142 at Mon Apr 07 13:56:23 CST 2025 get error
143 at Mon Apr 07 13:56:23 CST 2025 get error
144 at Mon Apr 07 13:56:23 CST 2025 get error
145 at Mon Apr 07 13:56:23 CST 2025 get error
146 at Mon Apr 07 13:56:23 CST 2025 get error
147 at Mon Apr 07 13:56:23 CST 2025 get error
148 at Mon Apr 07 13:56:23 CST 2025 get error
149 at Mon Apr 07 13:56:23 CST 2025 get error
150 at Mon Apr 07 13:56:23 CST 2025 get error
151 at Mon Apr 07 13:56:23 CST 2025 get error
152 at Mon Apr 07 13:56:23 CST 2025 get error
153 at Mon Apr 07 13:56:23 CST 2025 get error
154 at Mon Apr 07 13:56:23 CST 2025 get error
155 at Mon Apr 07 13:56:23 CST 2025 get error
156 at Mon Apr 07 13:56:23 CST 2025 get error
157 at Mon Apr 07 13:56:23 CST 2025 get error
158 at Mon Apr 07 13:56:23 CST 2025 get error
159 at Mon Apr 07 13:56:23 CST 2025 get error
160 at Mon Apr 07 13:56:23 CST 2025 get error
161 at Mon Apr 07 13:56:23 CST 2025 get error
162 at Mon Apr 07 13:56:23 CST 2025 get error
163 at Mon Apr 07 13:56:23 CST 2025 get error
164 at Mon Apr 07 13:56:23 CST 2025 get error
165 at Mon Apr 07 13:56:23 CST 2025 get error
166 at Mon Apr 07 13:56:23 CST 2025 get error
167 at Mon Apr 07 13:56:23 CST 2025 get error
168 at Mon Apr 07 13:56:23 CST 2025 get error
169 at Mon Apr 07 13:56:23 CST 2025 get success
170 at Mon Apr 07 13:56:23 CST 2025 get error
171 at Mon Apr 07 13:56:23 CST 2025 get error
172 at Mon Apr 07 13:56:23 CST 2025 get error
173 at Mon Apr 07 13:56:23 CST 2025 get error
174 at Mon Apr 07 13:56:23 CST 2025 get error
175 at Mon Apr 07 13:56:23 CST 2025 get error
176 at Mon Apr 07 13:56:23 CST 2025 get error
177 at Mon Apr 07 13:56:23 CST 2025 get error
178 at Mon Apr 07 13:56:23 CST 2025 get error
179 at Mon Apr 07 13:56:23 CST 2025 get error
180 at Mon Apr 07 13:56:23 CST 2025 get error
181 at Mon Apr 07 13:56:23 CST 2025 get error
182 at Mon Apr 07 13:56:23 CST 2025 get error
183 at Mon Apr 07 13:56:23 CST 2025 get error
184 at Mon Apr 07 13:56:23 CST 2025 get error
185 at Mon Apr 07 13:56:23 CST 2025 get error
186 at Mon Apr 07 13:56:23 CST 2025 get error
187 at Mon Apr 07 13:56:23 CST 2025 get error
188 at Mon Apr 07 13:56:23 CST 2025 get error
189 at Mon Apr 07 13:56:23 CST 2025 get error
190 at Mon Apr 07 13:56:23 CST 2025 get error
191 at Mon Apr 07 13:56:23 CST 2025 get error
192 at Mon Apr 07 13:56:23 CST 2025 get error
193 at Mon Apr 07 13:56:23 CST 2025 get error
194 at Mon Apr 07 13:56:23 CST 2025 get error
195 at Mon Apr 07 13:56:23 CST 2025 get error
196 at Mon Apr 07 13:56:23 CST 2025 get error
197 at Mon Apr 07 13:56:23 CST 2025 get error
198 at Mon Apr 07 13:56:23 CST 2025 get error
199 at Mon Apr 07 13:56:23 CST 2025 get error
total num:106

可以看到,漏桶在处理突发流量上存在一定的问题,如果流量迅速打满这个桶,那么漏桶就会出现很长一段时间的不能获取。

这里主要是IO耗时,和无法模拟真实流量,所以不太好测试

这时候我们再搓一个令牌桶

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Date;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;

public class TokenBucket {
private int qps;
private LinkedBlockingDeque<Date> tokenBucket;

private void initGenToken(){
for (int i = 0; i < qps; i++) {
//一开始先把桶装满
tokenBucket.offer(new Date());
}
//生成,令牌
Runnable run = new Runnable() {
@Override
public void run() {
while(true){
try {
TimeUnit.MICROSECONDS.sleep(1000/qps);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
tokenBucket.offer(new Date());
}
}
};
Thread thread = new Thread(run);
thread.start();

}

public TokenBucket(int qps,int capacity){
this.qps = qps;
this.tokenBucket = new LinkedBlockingDeque<>(capacity);
initGenToken();
}

public boolean tryAcquire(){
Date date = tokenBucket.poll();
return date != null;
}
public static void main(String[] args) throws InterruptedException {
TokenBucket tokenBucket = new TokenBucket(100,100);
int count = 0;
for(int i=0;i<200;i++){
Date now = new Date();
if(tokenBucket.tryAcquire()){
count++;
System.out.println(i+" at "+now+" get success");
}else {
System.out.println(i+" at "+now+" get error");
}
}
System.out.println("total num:"+ count);
}
}

消耗令牌的过程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
0 at Mon Apr 07 13:54:10 CST 2025 get success
1 at Mon Apr 07 13:54:10 CST 2025 get success
2 at Mon Apr 07 13:54:10 CST 2025 get success
3 at Mon Apr 07 13:54:10 CST 2025 get success
4 at Mon Apr 07 13:54:10 CST 2025 get success
5 at Mon Apr 07 13:54:10 CST 2025 get success
6 at Mon Apr 07 13:54:10 CST 2025 get success
7 at Mon Apr 07 13:54:10 CST 2025 get success
8 at Mon Apr 07 13:54:10 CST 2025 get success
9 at Mon Apr 07 13:54:10 CST 2025 get success
10 at Mon Apr 07 13:54:10 CST 2025 get success
11 at Mon Apr 07 13:54:10 CST 2025 get success
12 at Mon Apr 07 13:54:10 CST 2025 get success
13 at Mon Apr 07 13:54:10 CST 2025 get success
14 at Mon Apr 07 13:54:10 CST 2025 get success
15 at Mon Apr 07 13:54:10 CST 2025 get success
16 at Mon Apr 07 13:54:10 CST 2025 get success
17 at Mon Apr 07 13:54:10 CST 2025 get success
18 at Mon Apr 07 13:54:10 CST 2025 get success
19 at Mon Apr 07 13:54:10 CST 2025 get success
20 at Mon Apr 07 13:54:10 CST 2025 get success
21 at Mon Apr 07 13:54:10 CST 2025 get success
22 at Mon Apr 07 13:54:10 CST 2025 get success
23 at Mon Apr 07 13:54:10 CST 2025 get success
24 at Mon Apr 07 13:54:10 CST 2025 get success
25 at Mon Apr 07 13:54:10 CST 2025 get success
26 at Mon Apr 07 13:54:10 CST 2025 get success
27 at Mon Apr 07 13:54:10 CST 2025 get success
28 at Mon Apr 07 13:54:10 CST 2025 get success
29 at Mon Apr 07 13:54:10 CST 2025 get success
30 at Mon Apr 07 13:54:10 CST 2025 get success
31 at Mon Apr 07 13:54:10 CST 2025 get success
32 at Mon Apr 07 13:54:10 CST 2025 get success
33 at Mon Apr 07 13:54:10 CST 2025 get success
34 at Mon Apr 07 13:54:10 CST 2025 get success
35 at Mon Apr 07 13:54:10 CST 2025 get success
36 at Mon Apr 07 13:54:10 CST 2025 get success
37 at Mon Apr 07 13:54:10 CST 2025 get success
38 at Mon Apr 07 13:54:10 CST 2025 get success
39 at Mon Apr 07 13:54:10 CST 2025 get success
40 at Mon Apr 07 13:54:10 CST 2025 get success
41 at Mon Apr 07 13:54:10 CST 2025 get success
42 at Mon Apr 07 13:54:10 CST 2025 get success
43 at Mon Apr 07 13:54:10 CST 2025 get success
44 at Mon Apr 07 13:54:10 CST 2025 get success
45 at Mon Apr 07 13:54:10 CST 2025 get success
46 at Mon Apr 07 13:54:10 CST 2025 get success
47 at Mon Apr 07 13:54:10 CST 2025 get success
48 at Mon Apr 07 13:54:10 CST 2025 get success
49 at Mon Apr 07 13:54:10 CST 2025 get success
50 at Mon Apr 07 13:54:10 CST 2025 get success
51 at Mon Apr 07 13:54:10 CST 2025 get success
52 at Mon Apr 07 13:54:10 CST 2025 get success
53 at Mon Apr 07 13:54:10 CST 2025 get success
54 at Mon Apr 07 13:54:10 CST 2025 get success
55 at Mon Apr 07 13:54:10 CST 2025 get success
56 at Mon Apr 07 13:54:10 CST 2025 get success
57 at Mon Apr 07 13:54:10 CST 2025 get success
58 at Mon Apr 07 13:54:10 CST 2025 get success
59 at Mon Apr 07 13:54:10 CST 2025 get success
60 at Mon Apr 07 13:54:10 CST 2025 get success
61 at Mon Apr 07 13:54:10 CST 2025 get success
62 at Mon Apr 07 13:54:10 CST 2025 get success
63 at Mon Apr 07 13:54:10 CST 2025 get success
64 at Mon Apr 07 13:54:10 CST 2025 get success
65 at Mon Apr 07 13:54:10 CST 2025 get success
66 at Mon Apr 07 13:54:10 CST 2025 get success
67 at Mon Apr 07 13:54:10 CST 2025 get success
68 at Mon Apr 07 13:54:10 CST 2025 get success
69 at Mon Apr 07 13:54:10 CST 2025 get success
70 at Mon Apr 07 13:54:10 CST 2025 get success
71 at Mon Apr 07 13:54:10 CST 2025 get success
72 at Mon Apr 07 13:54:10 CST 2025 get success
73 at Mon Apr 07 13:54:10 CST 2025 get success
74 at Mon Apr 07 13:54:10 CST 2025 get success
75 at Mon Apr 07 13:54:10 CST 2025 get success
76 at Mon Apr 07 13:54:10 CST 2025 get success
77 at Mon Apr 07 13:54:10 CST 2025 get success
78 at Mon Apr 07 13:54:10 CST 2025 get success
79 at Mon Apr 07 13:54:10 CST 2025 get success
80 at Mon Apr 07 13:54:10 CST 2025 get success
81 at Mon Apr 07 13:54:10 CST 2025 get success
82 at Mon Apr 07 13:54:10 CST 2025 get success
83 at Mon Apr 07 13:54:10 CST 2025 get success
84 at Mon Apr 07 13:54:10 CST 2025 get success
85 at Mon Apr 07 13:54:10 CST 2025 get success
86 at Mon Apr 07 13:54:10 CST 2025 get success
87 at Mon Apr 07 13:54:10 CST 2025 get success
88 at Mon Apr 07 13:54:10 CST 2025 get success
89 at Mon Apr 07 13:54:10 CST 2025 get success
90 at Mon Apr 07 13:54:10 CST 2025 get success
91 at Mon Apr 07 13:54:10 CST 2025 get success
92 at Mon Apr 07 13:54:10 CST 2025 get success
93 at Mon Apr 07 13:54:10 CST 2025 get success
94 at Mon Apr 07 13:54:10 CST 2025 get success
95 at Mon Apr 07 13:54:10 CST 2025 get success
96 at Mon Apr 07 13:54:10 CST 2025 get success
97 at Mon Apr 07 13:54:10 CST 2025 get success
98 at Mon Apr 07 13:54:10 CST 2025 get success
99 at Mon Apr 07 13:54:10 CST 2025 get success
100 at Mon Apr 07 13:54:10 CST 2025 get success
101 at Mon Apr 07 13:54:10 CST 2025 get success
102 at Mon Apr 07 13:54:10 CST 2025 get success
103 at Mon Apr 07 13:54:10 CST 2025 get success
104 at Mon Apr 07 13:54:10 CST 2025 get error
105 at Mon Apr 07 13:54:10 CST 2025 get error
106 at Mon Apr 07 13:54:10 CST 2025 get error
107 at Mon Apr 07 13:54:10 CST 2025 get error
108 at Mon Apr 07 13:54:10 CST 2025 get error
109 at Mon Apr 07 13:54:10 CST 2025 get error
110 at Mon Apr 07 13:54:10 CST 2025 get error
111 at Mon Apr 07 13:54:10 CST 2025 get error
112 at Mon Apr 07 13:54:10 CST 2025 get error
113 at Mon Apr 07 13:54:10 CST 2025 get error
114 at Mon Apr 07 13:54:10 CST 2025 get error
115 at Mon Apr 07 13:54:10 CST 2025 get error
116 at Mon Apr 07 13:54:10 CST 2025 get error
117 at Mon Apr 07 13:54:10 CST 2025 get error
118 at Mon Apr 07 13:54:10 CST 2025 get error
119 at Mon Apr 07 13:54:10 CST 2025 get error
120 at Mon Apr 07 13:54:10 CST 2025 get error
121 at Mon Apr 07 13:54:10 CST 2025 get success
122 at Mon Apr 07 13:54:10 CST 2025 get error
123 at Mon Apr 07 13:54:10 CST 2025 get error
124 at Mon Apr 07 13:54:10 CST 2025 get error
125 at Mon Apr 07 13:54:10 CST 2025 get error
126 at Mon Apr 07 13:54:10 CST 2025 get error
127 at Mon Apr 07 13:54:10 CST 2025 get error
128 at Mon Apr 07 13:54:10 CST 2025 get error
129 at Mon Apr 07 13:54:10 CST 2025 get error
130 at Mon Apr 07 13:54:10 CST 2025 get error
131 at Mon Apr 07 13:54:10 CST 2025 get error
132 at Mon Apr 07 13:54:10 CST 2025 get error
133 at Mon Apr 07 13:54:10 CST 2025 get error
134 at Mon Apr 07 13:54:10 CST 2025 get error
135 at Mon Apr 07 13:54:10 CST 2025 get error
136 at Mon Apr 07 13:54:10 CST 2025 get error
137 at Mon Apr 07 13:54:10 CST 2025 get error
138 at Mon Apr 07 13:54:10 CST 2025 get error
139 at Mon Apr 07 13:54:10 CST 2025 get error
140 at Mon Apr 07 13:54:10 CST 2025 get error
141 at Mon Apr 07 13:54:10 CST 2025 get error
142 at Mon Apr 07 13:54:10 CST 2025 get error
143 at Mon Apr 07 13:54:10 CST 2025 get error
144 at Mon Apr 07 13:54:10 CST 2025 get error
145 at Mon Apr 07 13:54:10 CST 2025 get error
146 at Mon Apr 07 13:54:10 CST 2025 get error
147 at Mon Apr 07 13:54:10 CST 2025 get error
148 at Mon Apr 07 13:54:10 CST 2025 get error
149 at Mon Apr 07 13:54:10 CST 2025 get error
150 at Mon Apr 07 13:54:10 CST 2025 get error
151 at Mon Apr 07 13:54:10 CST 2025 get error
152 at Mon Apr 07 13:54:10 CST 2025 get error
153 at Mon Apr 07 13:54:10 CST 2025 get error
154 at Mon Apr 07 13:54:10 CST 2025 get error
155 at Mon Apr 07 13:54:10 CST 2025 get error
156 at Mon Apr 07 13:54:10 CST 2025 get error
157 at Mon Apr 07 13:54:10 CST 2025 get error
158 at Mon Apr 07 13:54:10 CST 2025 get error
159 at Mon Apr 07 13:54:10 CST 2025 get error
160 at Mon Apr 07 13:54:10 CST 2025 get success
161 at Mon Apr 07 13:54:10 CST 2025 get error
162 at Mon Apr 07 13:54:10 CST 2025 get error
163 at Mon Apr 07 13:54:10 CST 2025 get error
164 at Mon Apr 07 13:54:10 CST 2025 get error
165 at Mon Apr 07 13:54:10 CST 2025 get error
166 at Mon Apr 07 13:54:10 CST 2025 get error
167 at Mon Apr 07 13:54:10 CST 2025 get error
168 at Mon Apr 07 13:54:10 CST 2025 get error
169 at Mon Apr 07 13:54:10 CST 2025 get error
170 at Mon Apr 07 13:54:10 CST 2025 get error
171 at Mon Apr 07 13:54:10 CST 2025 get error
172 at Mon Apr 07 13:54:10 CST 2025 get error
173 at Mon Apr 07 13:54:10 CST 2025 get error
174 at Mon Apr 07 13:54:10 CST 2025 get error
175 at Mon Apr 07 13:54:10 CST 2025 get error
176 at Mon Apr 07 13:54:10 CST 2025 get error
177 at Mon Apr 07 13:54:10 CST 2025 get error
178 at Mon Apr 07 13:54:10 CST 2025 get error
179 at Mon Apr 07 13:54:10 CST 2025 get error
180 at Mon Apr 07 13:54:10 CST 2025 get error
181 at Mon Apr 07 13:54:10 CST 2025 get error
182 at Mon Apr 07 13:54:10 CST 2025 get error
183 at Mon Apr 07 13:54:10 CST 2025 get error
184 at Mon Apr 07 13:54:10 CST 2025 get error
185 at Mon Apr 07 13:54:10 CST 2025 get error
186 at Mon Apr 07 13:54:10 CST 2025 get error
187 at Mon Apr 07 13:54:10 CST 2025 get error
188 at Mon Apr 07 13:54:10 CST 2025 get error
189 at Mon Apr 07 13:54:10 CST 2025 get success
190 at Mon Apr 07 13:54:10 CST 2025 get error
191 at Mon Apr 07 13:54:10 CST 2025 get error
192 at Mon Apr 07 13:54:10 CST 2025 get error
193 at Mon Apr 07 13:54:10 CST 2025 get error
194 at Mon Apr 07 13:54:10 CST 2025 get error
195 at Mon Apr 07 13:54:10 CST 2025 get error
196 at Mon Apr 07 13:54:10 CST 2025 get error
197 at Mon Apr 07 13:54:10 CST 2025 get error
198 at Mon Apr 07 13:54:10 CST 2025 get error
199 at Mon Apr 07 13:54:10 CST 2025 get error
total num:107