mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
Merge pull request #1446 from cal101/jdt-RemoveAllTrailingWhitespaceCleanUp-1
[cleanup] erefactor/EclipseJdt - Remove trailing whitespace - All lines
This commit is contained in:
commit
d8dccdbfe7
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 布隆过滤,提供一些Hash算法的布隆过滤
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
|
@ -8,14 +8,14 @@ import cn.hutool.bloomfilter.bitMap.IntMap;
|
||||
import cn.hutool.bloomfilter.bitMap.LongMap;
|
||||
|
||||
public class BitMapBloomFilterTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void filterTest() {
|
||||
BitMapBloomFilter filter = new BitMapBloomFilter(10);
|
||||
filter.add("123");
|
||||
filter.add("abc");
|
||||
filter.add("ddd");
|
||||
|
||||
|
||||
Assert.assertTrue(filter.contains("abc"));
|
||||
Assert.assertTrue(filter.contains("ddd"));
|
||||
Assert.assertTrue(filter.contains("123"));
|
||||
|
@ -13,10 +13,10 @@ import cn.hutool.cache.impl.WeakCache;
|
||||
*@since 3.0.1
|
||||
*/
|
||||
public class CacheUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 创建FIFO(first in first out) 先进先出缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -26,10 +26,10 @@ public class CacheUtil {
|
||||
public static <K, V> FIFOCache<K, V> newFIFOCache(int capacity, long timeout){
|
||||
return new FIFOCache<>(capacity, timeout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建FIFO(first in first out) 先进先出缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -38,10 +38,10 @@ public class CacheUtil {
|
||||
public static <K, V> FIFOCache<K, V> newFIFOCache(int capacity){
|
||||
return new FIFOCache<>(capacity);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建LFU(least frequently used) 最少使用率缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -51,10 +51,10 @@ public class CacheUtil {
|
||||
public static <K, V> LFUCache<K, V> newLFUCache(int capacity, long timeout){
|
||||
return new LFUCache<>(capacity, timeout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建LFU(least frequently used) 最少使用率缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -63,11 +63,11 @@ public class CacheUtil {
|
||||
public static <K, V> LFUCache<K, V> newLFUCache(int capacity){
|
||||
return new LFUCache<>(capacity);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建LRU (least recently used)最近最久未使用缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -77,10 +77,10 @@ public class CacheUtil {
|
||||
public static <K, V> LRUCache<K, V> newLRUCache(int capacity, long timeout){
|
||||
return new LRUCache<>(capacity, timeout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建LRU (least recently used)最近最久未使用缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param capacity 容量
|
||||
@ -89,10 +89,10 @@ public class CacheUtil {
|
||||
public static <K, V> LRUCache<K, V> newLRUCache(int capacity){
|
||||
return new LRUCache<>(capacity);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建定时缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param timeout 过期时长,单位:毫秒
|
||||
@ -101,10 +101,10 @@ public class CacheUtil {
|
||||
public static <K, V> TimedCache<K, V> newTimedCache(long timeout){
|
||||
return new TimedCache<>(timeout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建弱引用缓存.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @param timeout 过期时长,单位:毫秒
|
||||
@ -114,10 +114,10 @@ public class CacheUtil {
|
||||
public static <K, V> WeakCache<K, V> newWeakCache(long timeout){
|
||||
return new WeakCache<>(timeout);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建无缓存实现.
|
||||
*
|
||||
*
|
||||
* @param <K> Key类型
|
||||
* @param <V> Value类型
|
||||
* @return {@link NoCache}
|
||||
|
@ -23,7 +23,7 @@ public abstract class AbstractFileCache implements Serializable{
|
||||
protected final long timeout;
|
||||
/** 缓存实现 */
|
||||
protected final Cache<File, byte[]> cache;
|
||||
|
||||
|
||||
/** 已使用缓存空间 */
|
||||
protected int usedSize;
|
||||
|
||||
@ -122,7 +122,7 @@ public abstract class AbstractFileCache implements Serializable{
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------- protected method start
|
||||
/**
|
||||
* 初始化实现文件缓存的缓存对象
|
||||
|
@ -12,7 +12,7 @@ import cn.hutool.cache.impl.LFUCache;
|
||||
*/
|
||||
public class LFUFileCache extends AbstractFileCache{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 构造<br>
|
||||
* 最大文件大小为缓存容量的一半<br>
|
||||
|
@ -12,7 +12,7 @@ import cn.hutool.cache.impl.LRUCache;
|
||||
*/
|
||||
public class LRUFileCache extends AbstractFileCache{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 构造<br>
|
||||
* 最大文件大小为缓存容量的一半<br>
|
||||
|
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 提供针对文件的缓存实现
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
|
@ -12,20 +12,20 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||
*/
|
||||
public class CacheObj<K, V> implements Serializable{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
protected final K key;
|
||||
protected final V obj;
|
||||
|
||||
|
||||
/** 上次访问时间 */
|
||||
private volatile long lastAccess;
|
||||
/** 访问次数 */
|
||||
protected AtomicLong accessCount = new AtomicLong();
|
||||
/** 对象存活时长,0表示永久存活*/
|
||||
private final long ttl;
|
||||
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param key 键
|
||||
* @param obj 值
|
||||
* @param ttl 超时时长
|
||||
@ -36,10 +36,10 @@ public class CacheObj<K, V> implements Serializable{
|
||||
this.ttl = ttl;
|
||||
this.lastAccess = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 判断是否过期
|
||||
*
|
||||
*
|
||||
* @return 是否过期
|
||||
*/
|
||||
boolean isExpired() {
|
||||
@ -49,10 +49,10 @@ public class CacheObj<K, V> implements Serializable{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取值
|
||||
*
|
||||
*
|
||||
* @param isUpdateLastAccess 是否更新最后访问时间
|
||||
* @return 获得对象
|
||||
* @since 4.0.10
|
||||
@ -64,7 +64,7 @@ public class CacheObj<K, V> implements Serializable{
|
||||
accessCount.getAndIncrement();
|
||||
return this.obj;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取键
|
||||
* @return 键
|
||||
@ -73,7 +73,7 @@ public class CacheObj<K, V> implements Serializable{
|
||||
public K getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取值
|
||||
* @return 值
|
||||
@ -82,7 +82,7 @@ public class CacheObj<K, V> implements Serializable{
|
||||
public V getValue() {
|
||||
return this.obj;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CacheObj [key=" + key + ", obj=" + obj + ", lastAccess=" + lastAccess + ", accessCount=" + accessCount + ", ttl=" + ttl + "]";
|
||||
|
@ -6,7 +6,7 @@ import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* {@link cn.hutool.cache.impl.AbstractCache} 的CacheObj迭代器.
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
* @param <K> 键类型
|
||||
@ -21,7 +21,7 @@ public class CacheObjIterator<K, V> implements Iterator<CacheObj<K, V>>, Seriali
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param iterator 原{@link Iterator}
|
||||
*/
|
||||
CacheObjIterator(Iterator<CacheObj<K, V>> iterator) {
|
||||
|
@ -7,7 +7,7 @@ import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* 无缓存实现,用于快速关闭缓存
|
||||
*
|
||||
*
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @author Looly,jodd
|
||||
@ -49,7 +49,7 @@ public class NoCache<K, V> implements Cache<K, V> {
|
||||
public V get(K key, boolean isUpdateLastAccess) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public V get(K key, Func0<V> supplier) {
|
||||
return get(key, true, supplier);
|
||||
@ -78,7 +78,7 @@ public class NoCache<K, V> implements Cache<K, V> {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Iterator<CacheObj<K, V>> cacheObjIterator() {
|
||||
return null;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 提供各种缓存实现
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 提供简易的缓存实现,此模块参考了jodd工具中的Cache模块
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
|
@ -14,7 +14,7 @@ import org.junit.Test;
|
||||
*
|
||||
*/
|
||||
public class CacheTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void fifoCacheTest(){
|
||||
Cache<String,String> fifoCache = CacheUtil.newFIFOCache(3);
|
||||
@ -28,22 +28,22 @@ public class CacheTest {
|
||||
fifoCache.put("key2", "value2", DateUnit.SECOND.getMillis() * 3);
|
||||
fifoCache.put("key3", "value3", DateUnit.SECOND.getMillis() * 3);
|
||||
fifoCache.put("key4", "value4", DateUnit.SECOND.getMillis() * 3);
|
||||
|
||||
|
||||
//由于缓存容量只有3,当加入第四个元素的时候,根据FIFO规则,最先放入的对象将被移除
|
||||
String value1 = fifoCache.get("key1");
|
||||
Assert.assertNull(value1);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void lfuCacheTest(){
|
||||
Cache<String, String> lfuCache = CacheUtil.newLFUCache(3);
|
||||
lfuCache.put("key1", "value1", DateUnit.SECOND.getMillis() * 3);
|
||||
//使用次数+1
|
||||
lfuCache.get("key1");
|
||||
lfuCache.get("key1");
|
||||
lfuCache.put("key2", "value2", DateUnit.SECOND.getMillis() * 3);
|
||||
lfuCache.put("key3", "value3", DateUnit.SECOND.getMillis() * 3);
|
||||
lfuCache.put("key4", "value4", DateUnit.SECOND.getMillis() * 3);
|
||||
|
||||
|
||||
//由于缓存容量只有3,当加入第四个元素的时候,根据LFU规则,最少使用的将被移除(2,3被移除)
|
||||
String value1 = lfuCache.get("key1");
|
||||
String value2 = lfuCache.get("key2");
|
||||
@ -52,7 +52,7 @@ public class CacheTest {
|
||||
Assert.assertNull(value2);
|
||||
Assert.assertNull(value3);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void lruCacheTest(){
|
||||
Cache<String, String> lruCache = CacheUtil.newLRUCache(3);
|
||||
@ -71,7 +71,7 @@ public class CacheTest {
|
||||
String value2 = lruCache.get("key2");
|
||||
Assert.assertNull(value2);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void timedCacheTest(){
|
||||
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(4);
|
||||
@ -80,29 +80,29 @@ public class CacheTest {
|
||||
timedCache.put("key2", "value2", DateUnit.SECOND.getMillis() * 5);//5秒过期
|
||||
timedCache.put("key3", "value3");//默认过期(4毫秒)
|
||||
timedCache.put("key4", "value4", Long.MAX_VALUE);//永不过期
|
||||
|
||||
|
||||
//启动定时任务,每5毫秒秒检查一次过期
|
||||
timedCache.schedulePrune(5);
|
||||
//等待5毫秒
|
||||
ThreadUtil.sleep(5);
|
||||
|
||||
|
||||
//5毫秒后由于value2设置了5毫秒过期,因此只有value2被保留下来
|
||||
String value1 = timedCache.get("key1");
|
||||
Assert.assertNull(value1);
|
||||
String value2 = timedCache.get("key2");
|
||||
Assert.assertEquals("value2", value2);
|
||||
|
||||
|
||||
//5毫秒后,由于设置了默认过期,key3只被保留4毫秒,因此为null
|
||||
String value3 = timedCache.get("key3");
|
||||
Assert.assertNull(value3);
|
||||
|
||||
|
||||
String value3Supplier = timedCache.get("key3", () -> "Default supplier");
|
||||
Assert.assertEquals("Default supplier", value3Supplier);
|
||||
|
||||
|
||||
// 永不过期
|
||||
String value4 = timedCache.get("key4");
|
||||
Assert.assertEquals("value4", value4);
|
||||
|
||||
|
||||
//取消定时清理
|
||||
timedCache.cancelPruneSchedule();
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
/**
|
||||
* 圆圈干扰验证码
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 3.2.3
|
||||
*
|
||||
@ -23,7 +23,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
@ -33,7 +33,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
@ -44,7 +44,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
@ -71,7 +71,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics2D}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
@ -85,7 +85,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 画随机干扰
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics2D}
|
||||
*/
|
||||
private void drawInterfere(Graphics2D g) {
|
||||
|
@ -5,7 +5,7 @@ import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 验证码接口,提供验证码对象接口定义
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
*
|
||||
*/
|
||||
@ -18,14 +18,14 @@ public interface ICaptcha extends Serializable{
|
||||
|
||||
/**
|
||||
* 获取验证码的文字内容
|
||||
*
|
||||
*
|
||||
* @return 验证码文字内容
|
||||
*/
|
||||
String getCode();
|
||||
|
||||
/**
|
||||
* 验证验证码是否正确,建议忽略大小写
|
||||
*
|
||||
*
|
||||
* @param userInputCode 用户输入的验证码
|
||||
* @return 是否与生成的一直
|
||||
*/
|
||||
@ -33,7 +33,7 @@ public interface ICaptcha extends Serializable{
|
||||
|
||||
/**
|
||||
* 将验证码写出到目标流中
|
||||
*
|
||||
*
|
||||
* @param out 目标流
|
||||
*/
|
||||
void write(OutputStream out);
|
||||
|
@ -14,7 +14,7 @@ import cn.hutool.core.util.RandomUtil;
|
||||
|
||||
/**
|
||||
* 使用干扰线方式生成的图形验证码
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 3.1.2
|
||||
*/
|
||||
@ -24,7 +24,7 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
// -------------------------------------------------------------------- Constructor start
|
||||
/**
|
||||
* 构造,默认5位验证码,150条干扰线
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
@ -34,7 +34,7 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
@ -63,7 +63,7 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
@ -77,7 +77,7 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 绘制干扰线
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics2D}画笔
|
||||
*/
|
||||
private void drawInterfere(Graphics2D g) {
|
||||
|
@ -13,7 +13,7 @@ import java.awt.image.BufferedImage;
|
||||
|
||||
/**
|
||||
* 扭曲干扰验证码
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 3.2.3
|
||||
*
|
||||
@ -23,7 +23,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
@ -33,7 +33,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
@ -44,7 +44,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
@ -73,7 +73,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
@ -87,7 +87,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 扭曲
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 w1
|
||||
* @param h1 h1
|
||||
@ -100,7 +100,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* X坐标扭曲
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
@ -125,7 +125,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* Y坐标扭曲
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
@ -150,7 +150,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
|
||||
/**
|
||||
* 干扰线
|
||||
*
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param x1 x1
|
||||
* @param y1 y1
|
||||
|
@ -5,21 +5,21 @@ import cn.hutool.core.util.RandomUtil;
|
||||
/**
|
||||
* 随机字符验证码生成器<br>
|
||||
* 可以通过传入的基础集合和长度随机生成验证码字符
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 4.1.2
|
||||
*/
|
||||
public abstract class AbstractGenerator implements CodeGenerator {
|
||||
private static final long serialVersionUID = 8685744597154953479L;
|
||||
|
||||
|
||||
/** 基础字符集合,用于随机获取字符串的字符集合 */
|
||||
protected final String baseStr;
|
||||
/** 验证码长度 */
|
||||
protected final int length;
|
||||
|
||||
|
||||
/**
|
||||
* 构造,使用字母+数字做为基础
|
||||
*
|
||||
*
|
||||
* @param count 生成验证码长度
|
||||
*/
|
||||
public AbstractGenerator(int count) {
|
||||
@ -28,7 +28,7 @@ public abstract class AbstractGenerator implements CodeGenerator {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param baseStr 基础字符集合,用于随机获取字符串的字符集合
|
||||
* @param length 生成验证码长度
|
||||
*/
|
||||
@ -39,7 +39,7 @@ public abstract class AbstractGenerator implements CodeGenerator {
|
||||
|
||||
/**
|
||||
* 获取长度验证码
|
||||
*
|
||||
*
|
||||
* @return 验证码长度
|
||||
*/
|
||||
public int getLength() {
|
||||
|
@ -4,7 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 验证码文字生成器
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 4.1.2
|
||||
*/
|
||||
@ -12,7 +12,7 @@ public interface CodeGenerator extends Serializable{
|
||||
|
||||
/**
|
||||
* 生成验证码
|
||||
*
|
||||
*
|
||||
* @return 验证码
|
||||
*/
|
||||
String generate();
|
||||
@ -20,7 +20,7 @@ public interface CodeGenerator extends Serializable{
|
||||
/**
|
||||
* 验证用户输入的字符串是否与生成的验证码匹配<br>
|
||||
* 用户通过实现此方法定义验证码匹配方式
|
||||
*
|
||||
*
|
||||
* @param code 生成的随机验证码
|
||||
* @param userInputCode 用户输入的验证码
|
||||
* @return 是否验证通过
|
||||
|
@ -7,7 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
|
||||
/**
|
||||
* 数字计算验证码生成器
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 4.1.2
|
||||
*/
|
||||
@ -28,7 +28,7 @@ public class MathGenerator implements CodeGenerator {
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
*
|
||||
* @param numberLength 参与计算最大数字位数
|
||||
*/
|
||||
public MathGenerator(int numberLength) {
|
||||
@ -75,7 +75,7 @@ public class MathGenerator implements CodeGenerator {
|
||||
|
||||
/**
|
||||
* 根据长度获取参与计算数字最大值
|
||||
*
|
||||
*
|
||||
* @return 最大值
|
||||
*/
|
||||
private int getLimit() {
|
||||
|
Loading…
Reference in New Issue
Block a user