From ced34c0e3bde149b978789fc91227cc805889121 Mon Sep 17 00:00:00 2001 From: liushaofeng Date: Tue, 20 Oct 2020 09:35:40 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=9B=B4=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E4=B8=BA1.0.1-alpha=202.=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E6=B1=A0=EF=BC=8C=E5=BD=93=E6=B1=A0=E5=86=85?= =?UTF-8?q?=E6=B2=A1=E6=95=B0=E6=8D=AE=E6=97=B6=E5=88=99=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../slider/CacheSliderCaptchaTemplate.java | 47 +++++++++---------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 6be7170..7ed643f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 cloud.tianai.captcha tianai-captcha - 1.0 + 1.0.1-alpha tianai-captcha 滑块验证码 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java b/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java index 73433b7..253f834 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java +++ b/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java @@ -1,6 +1,5 @@ package cloud.tianai.captcha.template.slider; -import cloud.tianai.captcha.template.slider.exception.SliderCaptchaException; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -13,10 +12,14 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +/** + * @Author: 天爱有情 + * @date 2020/10/20 9:23 + * @Description 滑块验证码缓冲器 + */ @Slf4j public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate { - public static final int RETRY = 10; private final ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("slider-captcha-queue")); private ConcurrentLinkedQueue queue; private AtomicInteger pos = new AtomicInteger(0); @@ -65,15 +68,11 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate { @SneakyThrows @Override public SliderCaptchaInfo getSlideImageInfo() { - SliderCaptchaInfo poll; - int retryIdx = 0; - while ((poll = queue.poll()) == null) { - retryIdx++; - if (retryIdx > RETRY) { - throw new SliderCaptchaException("获取滑块验证码限流"); - } - // 休眠50毫秒 - TimeUnit.MILLISECONDS.sleep(50); + SliderCaptchaInfo poll = queue.poll(); + if (poll == null) { + log.warn("滑块验证码缓存不足"); + // 如果池内没数据, 则直接生成 + return target.getSlideImageInfo(); } // 减1 pos.decrementAndGet(); @@ -81,19 +80,19 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate { } - public static void main(String[] args) throws InterruptedException { - SliderCaptchaTemplate captchaTemplate = new DefaultSliderCaptchaTemplate("jpeg", "png", true); - - captchaTemplate = new CacheSliderCaptchaTemplate(captchaTemplate, 20); - TimeUnit.SECONDS.sleep(5); - for (int i = 0; i < 100; i++) { - long start = System.currentTimeMillis(); - SliderCaptchaInfo info = captchaTemplate.getSlideImageInfo(); - long end = System.currentTimeMillis(); - System.out.println("耗时:" + (end - start)); - TimeUnit.MILLISECONDS.sleep(10); - } - } +// public static void main(String[] args) throws InterruptedException { +// SliderCaptchaTemplate captchaTemplate = new DefaultSliderCaptchaTemplate("jpeg", "png", true); +// +// captchaTemplate = new CacheSliderCaptchaTemplate(captchaTemplate, 20); +// TimeUnit.SECONDS.sleep(5); +// for (int i = 0; i < 100; i++) { +// long start = System.currentTimeMillis(); +// SliderCaptchaInfo info = captchaTemplate.getSlideImageInfo(); +// long end = System.currentTimeMillis(); +// System.out.println("耗时:" + (end - start)); +// TimeUnit.MILLISECONDS.sleep(10); +// } +// } @Override public void addResource(URL url) {