Что значит Бакет?


17

Я нашел в унаследованном коде класс, имя которого BucketService.

Поскольку английский не мой родной язык, я пытался это перевести, но это не имеет смысла.

Я нашел несколько терминов, таких как сортировка ведра и так далее, но я до сих пор не понимаю. На самом деле это слово используется довольно часто в программировании

Я был бы полезен для простого объяснения этого слова


1
никогда не судите класс по его имени. Какой API это предоставляет? какое состояние оно содержит? как это используется / вызывается / создается? не зная этого, единственный правильный ответ на такой вопрос, как ваш, кажется, Mu
gnat

2
Особенно с неописуемым именем, таким как «BucketService» - оно звучит как «UtilityManager» или «ThingDoer». С таким расплывчатым именем ваш единственный вариант - посмотреть на код. К сожалению, классы с именами , которые расплывчатая обычно делаю немного обо всем (или много всего, если вам не повезло).
Такро

Ответы:


36

Ведро на английском языке представляет собой устройство для хранения воды.

При использовании в программном обеспечении это обычно означает тип данных, который группирует объекты вместе.

Термин часто используется при обсуждении алгоритмов хеширования , когда разные элементы с одинаковым хеш-кодом (коллизия хешей) попадают в одну и ту же «корзину». Это означает, что объекты сгруппированы по хешу.

В общем, функция хеширования может отображать несколько разных ключей в один и тот же индекс. Следовательно, каждый слот хеш-таблицы связан (неявно или явно) с набором записей, а не с одной записью. По этой причине каждый слот хеш-таблицы часто называют сегментом, а значения хеш-функции также называют индексами сегмента.

Неформально я видел термин, используемый со словарями, значение которых (не ключевое) представляет собой набор элементов.


В Википедии есть страница, посвященная термину, который используется в вычислениях - Bucket (Computing) :

В вычислительной технике термин «ведро» может иметь несколько значений. Он используется в качестве живой метафоры и общепринятого технического термина в некоторых специализированных областях. Сегмент чаще всего представляет собой тип буфера данных или тип документа, в котором данные делятся на регионы.


6
+1 ты побил меня к этому! Я хотел бы добавить, что цель сортировки элементов хэш-алгоритма по сегментам позволяет быстрее находить и сортировать большие коллекции. Если я хочу найти 20 элементов для определенного элемента, то неэффективный способ будет искать по одному по идентификатору. Лучшим способом было бы для коллекции хранить элементы с одинаковым хешем в корзине , поэтому в корзине нужно искать только несколько элементов, а не весь список.
maple_shaft

@maple_shaft - Хороший вопрос об использовании сегментов в хешировании. Я не думаю, что это имеет отношение к вопросу, хотя :)
Одед

0

Возможно, это ссылка на «бит ведро». Вот где биты, которые сдвигаются с байта, переходят в сдвиг влево и вправо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.