From d096953776519f10cf99e73b9d019a3c4aa5cabe Mon Sep 17 00:00:00 2001 From: luliqiang <kidgrow> Date: Wed, 24 Mar 2021 19:07:50 +0800 Subject: [PATCH] 1、完善哈希表后缀生成方法 2、增加哈希表后缀生成工具类(只传入字符串参数,其他参数用方法中的默认值) --- kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java index 7304b90..f9686b1 100644 --- a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java +++ b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java @@ -13,17 +13,28 @@ public class HashModTableSuffix implements TableSuffix { private String hash; - private static final int MOD = 100; + private Long tableSize = 128L; + private String tableSuffix="_000"; - public HashModTableSuffix(String hash) { + public HashModTableSuffix(String hash,long tableSize, String tableSuffix) { if (StringUtils.isEmpty(hash)) { throw new IllegalArgumentException("hash should not be null or empty"); + } else { + this.hash = hash; } - this.hash = hash; + if (tableSize != 0) { + this.tableSize = tableSize; + } + if (!StringUtils.isEmpty(tableSuffix)) { + this.tableSuffix=tableSuffix; + } + } @Override public String getSuffix() { - return String.format("_%d", hash.hashCode() / MOD); + String format = "%0" + (tableSuffix.length() - 1) + "d"; + return tableSuffix.substring(0,1)+String.format(format, Math.abs(hash.hashCode()) % tableSize); } + } -- Gitblit v1.8.0