U 修改资源读取和存储模块

升级版本为1.2
This commit is contained in:
liushaofeng
2021-08-07 17:16:57 +08:00
parent c5260356de
commit b56919f17d
14 changed files with 702 additions and 223 deletions
@@ -3,9 +3,6 @@ package cloud.tianai.captcha.template.slider;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -25,12 +22,23 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
private AtomicInteger pos = new AtomicInteger(0);
private SliderCaptchaTemplate target;
private int size;
/** 等待时间,一般报错或者拉取为空时会休眠一段时间再试. */
private int waitTime = 1000;
/** 调度器检查缓存的间隔时间. */
private int period = 100;
public CacheSliderCaptchaTemplate(SliderCaptchaTemplate target, int size) {
this.target = target;
this.size = size;
}
public CacheSliderCaptchaTemplate(SliderCaptchaTemplate target, int size, int waitTime, int period) {
this.target = target;
this.size = size;
this.waitTime = waitTime;
this.period = period;
}
/**
* 记的初始化调度器
*/
@@ -57,22 +65,26 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
pos.incrementAndGet();
}
} else {
// 休眠500毫秒
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException ignored) {
}
sleep();
}
}
} catch (Exception e) {
// cache所有
log.error("缓存队列扫描时出错, ex", e);
// 休眠
sleep();
}
}, 0, 100, TimeUnit.MILLISECONDS);
}, 0, period, TimeUnit.MILLISECONDS);
log.info("缓存滑块验证码调度器初始化完成: size:{}", size);
}
private void sleep() {
try {
TimeUnit.MILLISECONDS.sleep(waitTime);
} catch (InterruptedException ignored) {
}
}
@SneakyThrows
@Override
public SliderCaptchaInfo getSlideImageInfo() {
@@ -88,60 +100,21 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate {
}
@Override
public void addResource(URL url) {
target.addResource(url);
public SliderCaptchaInfo getSlideImageInfo(String targetFormatName, String matrixFormatName) {
return target.getSlideImageInfo(targetFormatName, matrixFormatName);
}
@Override
public void addTemplate(Map<String, URL> template) {
target.addTemplate(template);
}
@Override
public void setResource(List<URL> resources) {
target.setResource(resources);
}
@Override
public void setTemplates(List<Map<String, URL>> imageTemplates) {
target.setTemplates(imageTemplates);
}
@Override
public void deleteResource(URL resource) {
target.deleteResource(resource);
}
@Override
public List<URL> listResources() {
return target.listResources();
}
@Override
public void clearResources() {
target.clearResources();
}
@Override
public void deleteTemplate(Map<String, URL> template) {
target.deleteTemplate(template);
}
@Override
public List<Map<String, URL>> listTemplates() {
return target.listTemplates();
}
@Override
public void clearTemplates() {
target.clearTemplates();
}
@Override
public boolean percentageContrast(Float newPercentage, Float oriPercentage) {
return target.percentageContrast(newPercentage, oriPercentage);
}
@Override
public SliderCaptchaResourceManager getSlideImageResourceManager() {
return target.getSlideImageResourceManager();
}
// public static void main(String[] args) throws InterruptedException {
// SliderCaptchaTemplate captchaTemplate = new DefaultSliderCaptchaTemplate("jpeg", "png", true);