static int optimalNumOfHashFunctions(long expectEntries, long bitSize) {
        return Math.max(1, (int) Math.round((double) bitSize / expectEntries * Math.log(2)));
    }
@Test
    void testBloomFilterNumHashFunctions() {
        assertThat(BloomFilter.optimalNumOfHashFunctions(-1, -1)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(0, 0)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(10, 0)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(10, 10)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(10, 100)).isEqualTo(7);
        assertThat(BloomFilter.optimalNumOfHashFunctions(100, 100)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(1000, 100)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(10000, 100)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(100000, 100)).isOne();
        assertThat(BloomFilter.optimalNumOfHashFunctions(1000000, 100)).isOne();
    }