Commit 6d246f2e authored by ag's avatar ag

style: 调整了一些代码fengge

parent a2182aad
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version> <version>1.5.6.RELEASE</version>
</parent> </parent>
......
...@@ -25,7 +25,9 @@ import java.util.concurrent.locks.ReentrantLock; ...@@ -25,7 +25,9 @@ import java.util.concurrent.locks.ReentrantLock;
* 1. 使用前在配置文件内配置 DATA_CENTER_ID * 1. 使用前在配置文件内配置 DATA_CENTER_ID
* <p> * <p>
* <p> * <p>
* Created by zhiguo.liu on 2017/5/18. *
* @author zhiguo.liu
* @date 2017/5/18
*/ */
@Component @Component
public class IDGenerator { public class IDGenerator {
...@@ -38,27 +40,38 @@ public class IDGenerator { ...@@ -38,27 +40,38 @@ public class IDGenerator {
private static Lock lock = new ReentrantLock(); private static Lock lock = new ReentrantLock();
// data center,默认为 1 /**
* data center,默认为 1
*/
private static int DATA_CENTER_ID = 1; private static int DATA_CENTER_ID = 1;
private static int WORKER_ID = 0; /**
// 最高支持同时1W台机器 * 最高支持同时1W台机器
*/
private static final int MAX_WORK_ID = 10000; private static final int MAX_WORK_ID = 10000;
// 最高每秒发号 100w /**
* 最高每秒发号 100w
*/
private static final int MAX_COUNT = 999999; private static final int MAX_COUNT = 999999;
private static AtomicInteger COUNTER = new AtomicInteger(0); private static AtomicInteger COUNTER = new AtomicInteger(0);
private static long MAX_TIME_SECOND; private static long MAX_TIME_SECOND;
// Worker ID 字符串 /**
* Worker ID 字符串
*/
private static String WORKER_ID_STR; private static String WORKER_ID_STR;
// data center 字符串 /**
* data center 字符串
*/
private static String DATA_CENTER_STR; private static String DATA_CENTER_STR;
// 最长回退时间,120 秒 /**
* 最长回退时间,120 秒
*/
private static int MAX_BACK_SECOND = 120; private static int MAX_BACK_SECOND = 120;
static{
static {
Date now = new Date(); Date now = new Date();
Long timeSecond = now.getTime() / 1000; MAX_TIME_SECOND = now.getTime() / 1000;
MAX_TIME_SECOND = timeSecond;
} }
...@@ -82,8 +95,8 @@ public class IDGenerator { ...@@ -82,8 +95,8 @@ public class IDGenerator {
@PostConstruct @PostConstruct
public void init() { public void init() {
WORKER_ID = (int) (redis.opsForValue().increment(REDIS_WORK_ID_KEY + DATA_CENTER_ID, 1) % MAX_WORK_ID); int workerId = (int) (redis.opsForValue().increment(REDIS_WORK_ID_KEY + DATA_CENTER_ID, 1) % MAX_WORK_ID);
WORKER_ID_STR = String.format("%04d", WORKER_ID); WORKER_ID_STR = String.format("%04d", workerId);
DATA_CENTER_STR = String.format("%03d", DATA_CENTER_ID); DATA_CENTER_STR = String.format("%03d", DATA_CENTER_ID);
} }
...@@ -98,14 +111,14 @@ public class IDGenerator { ...@@ -98,14 +111,14 @@ public class IDGenerator {
Integer counter = 0; Integer counter = 0;
if (timeSecond > MAX_TIME_SECOND) { if (timeSecond > MAX_TIME_SECOND) {
lock.lock(); lock.lock();
if(timeSecond > MAX_TIME_SECOND){ if (timeSecond > MAX_TIME_SECOND) {
cache.put(MAX_TIME_SECOND, COUNTER); cache.put(MAX_TIME_SECOND, COUNTER);
COUNTER = new AtomicInteger(0); COUNTER = new AtomicInteger(0);
MAX_TIME_SECOND = timeSecond; MAX_TIME_SECOND = timeSecond;
} }
lock.unlock(); lock.unlock();
} }
if(timeSecond == MAX_TIME_SECOND){ if (timeSecond == MAX_TIME_SECOND) {
counter = COUNTER.incrementAndGet(); counter = COUNTER.incrementAndGet();
} }
// 时间回退时到 cache 里拿,或者直接抛出错误 // 时间回退时到 cache 里拿,或者直接抛出错误
......
...@@ -7,7 +7,9 @@ import org.springframework.data.redis.core.RedisTemplate; ...@@ -7,7 +7,9 @@ import org.springframework.data.redis.core.RedisTemplate;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
/** /**
* Created by zhiguo.liu on 2017/7/28. *
* @author zhiguo.liu
* @date 2017/7/28
*/ */
public class RedisUtils { public class RedisUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisUtils.class); private static final Logger LOGGER = LoggerFactory.getLogger(RedisUtils.class);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment