mirror of
https://github.com/dromara/tianai-captcha.git
synced 2026-05-07 06:04:34 +08:00
U 优化缓存
U 升级版本 改为1.2.7
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>cloud.tianai.captcha</groupId>
|
<groupId>cloud.tianai.captcha</groupId>
|
||||||
<artifactId>tianai-captcha</artifactId>
|
<artifactId>tianai-captcha</artifactId>
|
||||||
<version>1.2.6</version>
|
<version>1.2.7</version>
|
||||||
|
|
||||||
<name>tianai-captcha</name>
|
<name>tianai-captcha</name>
|
||||||
<description>滑块验证码</description>
|
<description>滑块验证码</description>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cloud.tianai.captcha</groupId>
|
<groupId>cloud.tianai.captcha</groupId>
|
||||||
<artifactId>tianai-captcha</artifactId>
|
<artifactId>tianai-captcha</artifactId>
|
||||||
<version>1.2.6</version>
|
<version>1.2.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
2. 使用 `SliderCaptchaTemplate`获取滑块验证码
|
2. 使用 `SliderCaptchaTemplate`获取滑块验证码
|
||||||
|
|||||||
+21
-10
@@ -1,5 +1,7 @@
|
|||||||
package cloud.tianai.captcha.template.slider;
|
package cloud.tianai.captcha.template.slider;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@@ -17,16 +19,20 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
|
public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
|
||||||
|
|
||||||
private final ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("slider-captcha-queue"));
|
protected final ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("slider-captcha-queue"));
|
||||||
private ConcurrentLinkedQueue<SliderCaptchaInfo> queue;
|
protected ConcurrentLinkedQueue<SliderCaptchaInfo> queue;
|
||||||
private AtomicInteger pos = new AtomicInteger(0);
|
protected AtomicInteger pos = new AtomicInteger(0);
|
||||||
private SliderCaptchaTemplate target;
|
protected SliderCaptchaTemplate target;
|
||||||
private int size;
|
protected int size;
|
||||||
/** 等待时间,一般报错或者拉取为空时会休眠一段时间再试. */
|
/** 等待时间,一般报错或者拉取为空时会休眠一段时间再试. */
|
||||||
private int waitTime = 1000;
|
protected int waitTime = 1000;
|
||||||
/** 调度器检查缓存的间隔时间. */
|
/** 调度器检查缓存的间隔时间. */
|
||||||
private int period = 100;
|
protected int period = 100;
|
||||||
private GenerateParam generateParam;
|
protected GenerateParam generateParam;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
protected boolean requiredGetCaptcha = true;
|
||||||
|
|
||||||
public CacheSliderCaptchaTemplate(SliderCaptchaTemplate target, GenerateParam generateParam, int size) {
|
public CacheSliderCaptchaTemplate(SliderCaptchaTemplate target, GenerateParam generateParam, int size) {
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -91,11 +97,16 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public SliderCaptchaInfo getSlideImageInfo() {
|
public SliderCaptchaInfo getSlideImageInfo() {
|
||||||
|
return getSlideImageInfo(this.requiredGetCaptcha);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public SliderCaptchaInfo getSlideImageInfo(boolean requiredGetCaptcha) {
|
||||||
SliderCaptchaInfo poll = queue.poll();
|
SliderCaptchaInfo poll = queue.poll();
|
||||||
if (poll == null) {
|
if (poll == null && requiredGetCaptcha) {
|
||||||
log.warn("滑块验证码缓存不足, genParam:{}", generateParam);
|
log.warn("滑块验证码缓存不足, genParam:{}", generateParam);
|
||||||
// 如果池内没数据, 则直接生成
|
// 如果池内没数据, 则直接生成
|
||||||
return target.getSlideImageInfo();
|
return target.getSlideImageInfo(generateParam);
|
||||||
}
|
}
|
||||||
// 减1
|
// 减1
|
||||||
pos.decrementAndGet();
|
pos.decrementAndGet();
|
||||||
|
|||||||
Reference in New Issue
Block a user