U 优化缓存

U 升级版本 改为1.2.7
This commit is contained in:
天爱有情
2022-02-24 16:53:07 +08:00
parent 04d149ea05
commit 0f516da9b4
3 changed files with 23 additions and 12 deletions
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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`获取滑块验证码
@@ -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();