RU

Почему O(1) проигрывает O(n): структуры данных в Go на реальном железе

Объясню структуры данных через очередь в поликлинике, а потом покажу, где эта аналогия ломается: почему связный список с «вставкой за O(1)» в прикла…

goструктуры данныхсвязный списокhash mapкеш процессоракеш-линиялокальность данныхbig oбенчмаркswiss tables
Habr
RU

Count-Min Sketch: как посчитать частоту миллиарда событий в 10 килобайт

Представьте: через ваш сервер проходит 10 миллионов запросов в минуту. Каждый запрос содержит метку (например, ID пользователя, IP-адрес или поисков…

ccount-min sketchcmsалгоритмывероятностные алгоритмывероятностные структуры данныхструктуры данныхcomputer sciencetimeweb_статьи
Habr
RU

Алгоритм был правильным. Ошибка была в контракте графа

Мне нужен был сервис, в котором должны были работать несколько разных алгоритмов. Часть математики я помнил, часть понимал поверхност…

golangпроектирование apiархитектура кодаграфовые алгоритмыopen sourceбенчмаркингструктуры данныхрефакторинг
Habr
RU

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust. В этой статье попытаюсь осветить нюансы написание своего иг…

rustиндексыбазы данныхбазы данных деревьяsqlструктуры данных
Habr
RU

99-й перцентиль за 20 мс: T-Digest и магия сжатых распределений

Представим, что вы имеете сервер, который обрабатывает и анализирует 100.000 RPS. Вам нужно высчитать и показать на дашборде 99-й перцентиль задержк…

tdigestструктуры данныхcomputer scienceперцентиликвантилиp99p90p50ctimeweb_статьи
Habr
RU

Ни одного ложноотрицательного: пишем Фильтр Блума на C

Представьте: вы пишете парсер, который обходит сотни миллионов URL. Каждую новую ссылку нужно проверить — посещали ли мы её раньше? Заводить гигабай…

структуры данныхалгоритмывероятностные алгоритмывероятностные структуры данныхвероятностное программированиеbloom filterфильтр блумаctimeweb_статьи
Habr
RU

Публичный мок АА в Яндексе: опыт, который не заменит никакая подготовка

Есть опыт, который не купишь и не прочитаешь. Его можно только пережить. Три недели алгоритмов с нуля, публичный мок в Яндекс Практикуме перед живой…

goалгоритмыструктуры данныхсобеседованиеяндекскарьера в itподготовка к собеседованиюмок-собеседование
Habr
RU

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

9 лет назад я разрабатывал геолокационную соц.сеть на заказ, где мы отображали чаты на карте. До релиза не дошло, но интересного опыта было получено…

iOSSwiftалгоритмыQuadTreeструктуры данныхпространственный индекссферическая геометрияMapboxкартыоптимизация
Habr
RU

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

Как-то раз я разрабатывал геолокационную соцсеть. Эта статья – продолжение предыдущей, в ней описывается, как определить, на что на карте нажал поль…

алгоритмыQuadTreeструктуры данныхпространственный индекссферическая геометрияMapboxкартыоптимизация
Habr
RU

[Перевод] 6/7. Целая прорва связных списков, чтобы выучить Rust: Небезопасный двусвязный дек продуктового уровня

Ладно, забудьте всё, что было раньше. Весь этот детский лепет про ссылки и указатели. Настало время писать настоящий продуктовый код. Посмотрим, как…

rustструктуры данныхсписки
Habr
RU

[Перевод] 5/7. Целая прорва связных списков, чтобы выучить Rust: Хорошая небезопасная очередь

Вероятно, самая важная глава в книге про реализацию связных списков на языке Rust. И уж точно самая длинная. Здесь автор рассказывает про сырые указ…

rustструктуры данныхсписки
Habr
RU

[Перевод] 4/7. Целая прорва связных списков, чтобы выучить Rust: Плохой, но безопасный двусвязный дек

Наконец мы добрались до поистине сложной темы. Если вы думаете, что раньше были сложные, вы глубоко заблуждаетесь! Двусвязный список на Rust. Это во…

rustструктуры данныхсписки
Habr
RU

Мой bloom фильтр побил оригинальный в 200 раз

Срочно переписывайте свои устаревшие bloom фильтры на мой богоподобный lz77-фильтр. Совершенно бесплатно! Спасибо великому нанабанана за обложку! Чи…

bloombloom filtermembershiplz77сжатие данныхструктурыструктуры данныхпоисковые алгоритмы
Habr
RU

[Перевод] 3/7. Целая прорва связных списков, чтобы выучить Rust: Устойчивый односвязный стек

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

rustструктуры данныхсписки
Habr
RU

[Перевод] 1/7. Целая прорва связных списков, чтобы выучить Rust: Плохой односвязный стек

Продолжаем знакомство с ссылочной магией в Rust. Вместе с автором создаём первый работающий список, наступая на все возможные грабли. В конце взъеро…

rustструктуры данныхсписки
Habr
RU

[Перевод] Структуры данных на практике. Глава 15: Графы и их обход с эффективным использованием кэша

«Задача абстракции — не быть расплывчатой, а создать новый семантический уровень, на котором можно достичь абсолютной точности», — Эдсгер Дейкстра В…

графыструктуры данныхобнаружение топологии сети
Habr
RU

[Перевод] Беззнаковые размеры: пять лет назад мы совершили ошибку

Краткое примечание для читателей, не знающих о C3: это язык системного программирования, продолжающий традиции C. В статье приведена специфика C3, н…

беззнаковые целочисленные типыструктуры данныхзнаковые числаc3
Habr
RU

Модуль collections в Python: ваш чит-код для решения алгоритмических задач

Пишете list.pop(0) и удивляетесь, почему решение на LeetCode отваливается по Time Limit? Пора перестать изобретать велосипед. Модуль collections — э…

pythoncollectionsалгоритмыleetcodeсобеседованияструктуры данныхdequecounterdefaultdictbig o