// Path: src/main/java/io/mycat/jcache/enums/hash/Hash_func_type.java
// public enum Hash_func_type {
//     JENKINS_HASH, MURMUR3_HASH, PIG_HASH
// }
// 
// Path: src/main/java/io/mycat/jcache/hash/impl/HashImpl.java
// @Deprecated
// public class HashImpl implements Hash_init {
// 
//     private Hash hash;
// 
//     @Override
//     public long hash(String key, long... length) {
//         return hash.hash(key);
//     }
// 
//     @Override
//     public int hash_init(Hash_func_type type) {
//         switch (type){
//             case JENKINS_HASH:
//                 Settings.hash_algorithm="jenkins";
//                 hash = new Jenkins_hash();
//                 break;
//             case MURMUR3_HASH:
//                 Settings.hash_algorithm="murmur3";
//                 break;
//             case PIG_HASH:
//                 Settings.hash_algorithm="Pig_SDBM_hash";
//                 hash = new Pig_SDBM_hash();
//                 break;
//             default:
//             	return -1;
//         }
//         return 0;
//     }
//     public HashImpl(){
//     }
//     
//     public HashImpl(Hash_func_type hashfunc_type){
//         hash_init(hashfunc_type);
//     }
// }


import java.util.Date;
import java.util.HashSet;
import java.util.Random;
import java.util.UUID;
import io.mycat.jcache.enums.hash.Hash_func_type;
import io.mycat.jcache.hash.impl.HashImpl;
/*
 *  文件创建时间： 2016年12月11日
 *  文件创建者: PigBrother(LZY/LZS)二师兄
 *  所属工程: JCache
 *  CopyRights
 *
 *  备注:
 */
package io.mycat.jcache.hash;




/**
 * Created by PigBrother(LZS/LZY) on 2016/12/12 17:16.
 */

/**
 * 类功能描述：test类  demo
 * <p>
 * 方法调用：
 * Hash hash = new HashImpl(Hash_func_type.PIG_HASH);
 * hash.hash(key); //此处返回 自定义 hashcode
 * 新的hashcode 为 long 类型 冲突率 较 原生的hashcode 小一些
 * 数据如下 若条件允许 可以 生成几乎不冲突的hashcode 条件是接受long[]类型的hashcode数组
 *                                  数据量     :随机字符串不相同的个数:java自带hashcode的不相同个数:优化后的hashcode的不相同个数
 * Tue Dec 13 08:27:41 CST 2016     :1          :1                     :1                           :1
 * Tue Dec 13 08:27:41 CST 2016     :10         :10                    :10                          :10
 * Tue Dec 13 08:27:41 CST 2016     :100        :100                   :100                         :100
 * Tue Dec 13 08:27:42 CST 2016     :1000       :1000                  :1000                        :1000
 * Tue Dec 13 08:27:42 CST 2016     :10000      :10000                 :10000                       :10000
 * Tue Dec 13 08:27:42 CST 2016     :100000     :100000                :99995                       :100000
 * Tue Dec 13 08:27:47 CST 2016     :1000000    :1000000               :999892                      :1000000
 * Tue Dec 13 08:29:55 CST 2016     :10000000   :10000000              :9988403                     :10000000
 * <p>
 * <p>
 * <p>
 * <p>
 * <p> 版权所有：
 * <p> 未经许可，不得以任何方式复制或使用本程序任何部分 <p>
 *
 * @author <a href="mailto:2393647162@qq.com">PigBrother</a>
 * @version 0.0.1
 * @since 2016年12月11日
 */
public class TestHashCode {
    public static void main(String[] args) {
    	Hash_init hash = new HashImpl();
// Path: src/main/java/io/mycat/jcache/enums/hash/Hash_func_type.java
// public enum Hash_func_type {
//     JENKINS_HASH, MURMUR3_HASH, PIG_HASH
// }
// 
// Path: src/main/java/io/mycat/jcache/hash/impl/HashImpl.java
// @Deprecated
// public class HashImpl implements Hash_init {
// 
//     private Hash hash;
// 
//     @Override
//     public long hash(String key, long... length) {
//         return hash.hash(key);
//     }
// 
//     @Override
//     public int hash_init(Hash_func_type type) {
//         switch (type){
//             case JENKINS_HASH:
//                 Settings.hash_algorithm="jenkins";
//                 hash = new Jenkins_hash();
//                 break;
//             case MURMUR3_HASH:
//                 Settings.hash_algorithm="murmur3";
//                 break;
//             case PIG_HASH:
//                 Settings.hash_algorithm="Pig_SDBM_hash";
//                 hash = new Pig_SDBM_hash();
//                 break;
//             default:
//             	return -1;
//         }
//         return 0;
//     }
//     public HashImpl(){
//     }
//     
//     public HashImpl(Hash_func_type hashfunc_type){
//         hash_init(hashfunc_type);
//     }
// }


// Path: src/main/java/io/mycat/jcache/hash/TestHashCode.java
import java.util.Date;
import java.util.HashSet;
import java.util.Random;
import java.util.UUID;
import io.mycat.jcache.enums.hash.Hash_func_type;
import io.mycat.jcache.hash.impl.HashImpl;

/*
 *  文件创建时间： 2016年12月11日
 *  文件创建者: PigBrother(LZY/LZS)二师兄
 *  所属工程: JCache
 *  CopyRights
 *
 *  备注:
 */
package io.mycat.jcache.hash;




/**
 * Created by PigBrother(LZS/LZY) on 2016/12/12 17:16.
 */

/**
 * 类功能描述：test类  demo
 * <p>
 * 方法调用：
 * Hash hash = new HashImpl(Hash_func_type.PIG_HASH);
 * hash.hash(key); //此处返回 自定义 hashcode
 * 新的hashcode 为 long 类型 冲突率 较 原生的hashcode 小一些
 * 数据如下 若条件允许 可以 生成几乎不冲突的hashcode 条件是接受long[]类型的hashcode数组
 *                                  数据量     :随机字符串不相同的个数:java自带hashcode的不相同个数:优化后的hashcode的不相同个数
 * Tue Dec 13 08:27:41 CST 2016     :1          :1                     :1                           :1
 * Tue Dec 13 08:27:41 CST 2016     :10         :10                    :10                          :10
 * Tue Dec 13 08:27:41 CST 2016     :100        :100                   :100                         :100
 * Tue Dec 13 08:27:42 CST 2016     :1000       :1000                  :1000                        :1000
 * Tue Dec 13 08:27:42 CST 2016     :10000      :10000                 :10000                       :10000
 * Tue Dec 13 08:27:42 CST 2016     :100000     :100000                :99995                       :100000
 * Tue Dec 13 08:27:47 CST 2016     :1000000    :1000000               :999892                      :1000000
 * Tue Dec 13 08:29:55 CST 2016     :10000000   :10000000              :9988403                     :10000000
 * <p>
 * <p>
 * <p>
 * <p>
 * <p> 版权所有：
 * <p> 未经许可，不得以任何方式复制或使用本程序任何部分 <p>
 *
 * @author <a href="mailto:2393647162@qq.com">PigBrother</a>
 * @version 0.0.1
 * @since 2016年12月11日
 */
public class TestHashCode {
    public static void main(String[] args) {
    	Hash_init hash = new HashImpl();
    	hash.hash_init(Hash_func_type.PIG_HASH);