이것은 일관된 해싱과 관련이 있으며 내가해야 할 일을 개념적으로 이해하는 동안이 문제를 코드로 변환하는 데 어려움이 있습니다.알고리즘 방식으로 키 공간을 분할하는 방법은 무엇입니까?
주어진 키 공간 (예 : 128 비트)을 동일한 크기의 파티션으로 나눕니다. 각 파티션의 상한 (최상위 키)을 원합니다.
기본적으로 어떻게 완료합니까?
#define KEYSPACE_BYTE_SIZE 16
#define KEYSPACE_BIT_SIZE (KEYSPACE_BYTE_SIZE * 8)
typedef struct _key
{
char byte[KEYSPACE_BYTE_SIZE];
} key;
key * partition_keyspace(int num_partitions)
{
key * partitions = malloc(sizeof(key) * num_partitions);
// ...
}
편집 :
내가 이런 말을하는 또 다른 방법은 가정 : 문제가 2^128 물론
for (i = 0; i < num_partitions; i++)
{
partitions[i] = ((2^KEYSPACE_BIT_SIZE)/num_partitions) * i;
}
가 매우 많은 수이며 수 없습니다 수학을 수행하는 C의 단일 정수 변수에 포함될 수 있습니다 (따라서 char [16] 구조체).
정말 많은 수의 라이브러리 (또는 라이브러리)를 사용하고 싶지 않습니다.
편집 :
실제로 내가 찾고 숫자는, 비록 :
for (i = 0; i < num_partitions; i++)
{
partitions[i] = (((2^KEYSPACE_BIT_SIZE)/num_partitions) * (i + 1)) - 1;
}
감사합니다. 그게 내가 필요한 핵심이야. :) –
당신을 환영합니다! :) – tzaman