#массивы — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #массивы, aggregated by home.social.
-
[Перевод] Структуры данных на практике. Глава 5: Связанные списки — убийцы кэша
«Связанные списки — это goto структур данных.», — авторство приписывают разным системным программистам. История из учебника Все студенты, изучающие computer science, узнают о связанных списках на первом курсе по структурам данных. Их описание звучит привлекательно: Преимущества (согласно учебникам): - Вставки и удаления за O(1) в известных позициях - Динамический размер : увеличиваются и уменьшаются согласно необходимости - Пространство не тратится впустую : можно распределять ровно столько, сколько нужно - Гибкость : простота реализации стеков, очередей и других структур Недостатки (согласно учебникам): - Поиск за O(n) : необходим обход, начиная с головы списка - Лишняя память : указатели добавляют оверхед - Невозможность произвольного доступа : нельзя выполнять переходы в произвольные позиции Вывод из учебника: «Используйте связанные списки, когда требуются частые вставки/удаления и не нужен произвольный доступ». Вроде бы звучит разумно? Проверка реальностью А вот, чего учебники нам не говорят: связанные списки — это почти всегда плохой выбор. Не потому, что ошибочен анализ «О» большого, в нём всё правильно, а потому, что он неполон. Он забывает про оборудование.
-
[Перевод] Структуры данных на практике. Глава 4: Массивы и локальность кэша
«Массив — самая важная структура данных в computer science», — Дональд Кнут (вольное изложение цитаты) Простейшая структура данных Массивы настолько просты, что мы иногда воспринимаем их, как нечто само собой разумеющееся. Смежная память, доступ за O(1): что тут ещё оптимизировать? Всё. Я работал над конвейером обработки пакетов сетевого коммутатора. Код был простым: считываем пакеты из кольцевого буфера (массива), обрабатываем их и записываем результаты в другой массив. Всё просто, правда? Но производительность была ужасной. Мы обрабатывали 100 тысяч пакетов в секунду, хотя оборудование должно было справляться с 1 миллионом. Профилировщик показал нечто странное: $ perf stat -e cache-misses,instructions ./packet_processor Performance counter stats: 450,000 cache-misses 1,000,000 instructions 450000 промахов кэша на 1000000 команд? То есть промах происходил раз в 2-3 команды. При простых операциях с массивами это не имело никакого смысла. Проблема заключалась не в самих массивах, а в том, как мы их использовали .
https://habr.com/ru/articles/992014/
#массивы #структуры_данных #связанные_списки #оптимизация_кода
-
Окончательно разбираем списки в питоне
Какая структура данных стоит за list ? Как быстро отрабатывает операция append ? Эти вопросы часто задают на собеседованиях, и чтобы на них отвечать, нужно понимать, как список работает под капотом. В этой статье разберём, как же устроен список в питоне, копнём на уровень CPython и позапускаем код. После прочтения вы будете знать о списках больше, чем ваши коллеги. Разобраться в списках
https://habr.com/ru/articles/989942/
#python #подготовка_к_собеседованию #бэкенд #списки #типы_данных #типы_данных_в_python #структуры_данных #динамический_массив #массивы #питон
-
Операторы rest и spread в JavaScript
Если вы осваиваете JavaScript, то наверняка знаете об операторах rest и spread. Первый группирует несколько значений, второй - разгруппировывает. Но давайте посмотрим чуть глубже. Привет, Хабр! Меня зовут Александр Дудукало, я автор
https://habr.com/ru/companies/selectel/articles/947666/
#javascript #rest #spread #операторы #массивы #массивы_данных #Копирование_массива #синтаксис_javascript
-
Params-коллекции и collection expressions в C#
Привет, Хабр! В экосистеме C# за последние два релиза случилось ровно то, чего многим не хватало для аккуратной работы со списками значений. В C# 12 появились collection expressions — синтаксис вида [1, 2, 3] со spread-элементами .. , который конвертируется в массивы, Span , ReadOnlySpan , интерфейсы коллекций и любые правильно устроенные типы. В C# 13 к этому добавили params-коллекции: теперь params может быть не только массивом, а почти любой поддерживаемой коллекцией, включая спаны и неизменяемые контейнеры.
https://habr.com/ru/companies/otus/articles/938200/
#c# #C#_12 #C#_13 #collection_expressions #paramsколлекции #ReadOnlySpan #Span #массивы #интерфейсы_коллекций
-
JavaScript: массивы от А до Я для тех, кто только начал
Привет! Я — Александр Дудукало, автор
https://habr.com/ru/companies/selectel/articles/936586/
#javascript #массивы #циклы_JS #свойство_массива #Методы_массивов #изучение_js #js #элементы_массива
-
Нечисть, игра в одни ворота и арифметика
Привет, Хабр! Эта история произошла в канун Нового года. Один из последних рабочих дней медленно подходил к концу, мысли уже давно отмечали праздник. Идиллию нарушил звонок коллеги за два часа до окончания смены — мне предложили заняться проблемой функционирования массива Fujitsu AF650 S3. Попытки делегировать диагностику не увенчались успехом – я остался последним. Что ж, вот моя история. Ни к чему нам лишние переживания за главного героя — Новый год я отметил с семьей за праздничным столом.
https://habr.com/ru/companies/jetinfosystems/articles/934872/
-
Массивы в Pine Script: что это такое, как создавать, использовать и исправлять ошибки
Подробно знакомимся с массивами в Pine Script: что это такое, как создавать массивы с фиксированным или динамическим размером, как с ними работать, менять содержимое, выполнять арифметические операции и визуализировать результаты на графике. Также разбираем типичные ошибки, которые возникают при работе. Всё это пригодится при создании пользовательских индикаторов и стратегий в TradingView.
https://habr.com/ru/articles/930842/
#массивы_данных #массивы #tradingview #pine_script #алготрейдинг #алгоритмическая_торговля
-
Массивы вместо self-join: как писать быстрые запросы в ClickHouse
Привет, Хабр! Я — Максим Шитилов, продуктовый аналитик в каршеринг-сервисе Ситидрайв. Каждый день мы обрабатываем большие объёмы данных, и ClickHouse — один из наших ключевых инструментов. Если вы когда-либо пытались связать события с временными интервалами или рассчитать метрику за определённое окно после события, то наверняка сталкивались с типичной конструкцией на self-join. Вроде бы работает, но запрос становится громоздким, ресурсоёмким и плохо масштабируется. В этой статье я расскажу, как решать такие задачи проще и эффективнее — с помощью массивов, arrayFilter и arrayMap. Покажу, как отказаться от self-join’ов без потери точности, ускорить обработку и упростить код. Примеры — из реальных бизнес-кейсов: телеметрия, аренды, GMV и события, которые нужно связать между собой по времени. Так как схожих решений на просторах интернета я не нашёл, предлагаю назвать этот подход “Array Join Pattern”. Если метод окажется полезным для сообщества, то такой паттерн легко будет найти другим аналитикам и девам.
https://habr.com/ru/companies/citydrive/articles/913866/
#sql #ClickHouse #телеметрия #каршеринг #массивы #каршеринговый_сервис
-
SQL HowTo: работаем с массивами (Advent of Code 2024, Day 23: LAN Party)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. Применяем простые операции над массивами, чтобы определить связность графов.
-
Когда слайсы начинают расти
Я не применяю Go в коммерческой разработке, я недавно начал изучать и применять этот язык для пет-проектов и разного рода опытов. В этой статье мы поговорим о слайсах, принципах работы с ними, а также о том, как они растут, по каким правилам и насколько очевиден их рост.
https://habr.com/ru/articles/874084/
#go #golang #программирование #слайсы #slice #массивы #array
-
SQL HowTo: оптимизируем рекурсию (Advent of Code 2024, Day 9: Disk Fragmenter)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. В этой части рассмотрим некоторые "грабли", на которые можно наступить, реализуя рекурсивные алгоритмы на SQL... Которые иногда можно сделать вовсе нерекурсивными, ускоряя запрос в десятки раз !
-
Белый Прямоугольник (классическая задачка вместо приветствия)
Оказывается Хабр доброжелательно предоставляет возможность завести бесплатный "корпоративный" блог для опенсорсного проекта. Какое-то время назад я подал заявку - и недавно обнаружил что она была удовлетворена. Начинать программисты любят с "тестового" поста, но т.к. речь идёт о публичном пространстве, пусть он будет хоть немного содержательным :) На сайт CodeAbbey сегодня добавилась задачка про поиск Белого Прямоугольника . Речь идёт о матрице в которой есть чёрные и белые клетки - расставленные достаточно хаотично - и хочется найти прямоугольник без чёрных клеток максимальной площади (со сторонами параллельными сторонам матрицы, конечно). Про сам сайт мы ещё расскажем в отдельно (иначе зачем блог было заводить) - а сейчас всё же про саму задачку. И что там про задачку?
-
SQL HowTo: поиск в словаре и массивах, сортировка «пузырьком» (Advent of Code 2024, Day 5: Print Queue)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. В этой части воспользуемся обширными возможностями поиска в массивах и реализуем рекурсивную сортировку "пузырьком".
https://habr.com/ru/companies/tensor/articles/869654/
#postgresql #sql #sql_tips_and_tricks #advent_of_code__2024 #массивы #словари
-
SQL HowTo: поиск в словаре и массивах, сортировка «пузырьком» (Advent of Code 2024, Day 5: Print Queue)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. В этой части воспользуемся обширными возможностями поиска в массивах и реализуем рекурсивную сортировку "пузырьком".
https://habr.com/ru/companies/tensor/articles/869654/
#postgresql #sql #sql_tips_and_tricks #advent_of_code__2024 #массивы #словари
-
SQL HowTo: поиск в словаре и массивах, сортировка «пузырьком» (Advent of Code 2024, Day 5: Print Queue)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. В этой части воспользуемся обширными возможностями поиска в массивах и реализуем рекурсивную сортировку "пузырьком".
https://habr.com/ru/companies/tensor/articles/869654/
#postgresql #sql #sql_tips_and_tricks #advent_of_code__2024 #массивы #словари
-
SQL HowTo: поиск в словаре и массивах, сортировка «пузырьком» (Advent of Code 2024, Day 5: Print Queue)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024 . Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать. В этой части воспользуемся обширными возможностями поиска в массивах и реализуем рекурсивную сортировку "пузырьком".
https://habr.com/ru/companies/tensor/articles/869654/
#postgresql #sql #sql_tips_and_tricks #advent_of_code__2024 #массивы #словари
-
Базовое программирование, или Почему джуны не могут пройти к нам собеседование
Я – начальник отдела разработки небольшой государственной компании, и в последнее время мне снова пришлось провести несколько десятков созвонов-собеседований, с которых мне удалось отобрать только одного человека. О том, почему выпускники скиллбоксов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии – эта статья. Важно при этом отметить, что я считаю себя достаточно адекватным собеседующим. Я практически не задаю лично-специфичных вопросов (моя часть – техническое собеседование, и мы с него начинаем); отвечаю всем кандидатам, чтобы сразу было понятно, рассматриваем мы их или нет; стараюсь построить собеседование так, чтобы на него не уходило больше полутора часов; не спрашиваю про красно-черные деревья и знание алгоритмов; и вообще имею достаточно четкие критерии для оценки собеседуемых, которые и попытаюсь для вас обосновать.
-
Array функции Clickhouse
Когда вы анализируете данные, базовых функций SQL часто недостаточно, особенно когда дело касается сложных запросов и обработки больших объемов информации. В таких случаях на помощь приходят функции для работы с массивами в ClickHouse. Однако, многие пользователи не знают о их существовании или не используют их в полной мере. Эта статья — небольшой гид по функциям работы с массивами в ClickHouse. Мы рассмотрим самые полезные и мощные инструменты, такие как arrayJoin , arrayMap , arrayFilter , и другие. Разберём, как их использовать для решения повседневных задач аналитики данных, на конкретных примерах. Почему это важно? Потому что умение грамотно работать с массивами позволяет сократить и упростить код, делая его более читаемым и поддерживаемым. Это ключевой навык для тех, кто хочет писать оптимальные запросы. Вам могут пригодиться array функции, когда стандартные SQL-запросы становятся сложными и трудными для понимания. Например, вместо использования множества подзапросов и объединений для отслеживания последовательности действий пользователя, вы можете использовать функции работы с массивами. Кроме того, использование функций позволяет фильтровать элементы внутри массива, избавляя от необходимости написания сложных условий в подзапросах. Функции работы с массивами в ClickHouse помогут сократить количество кода и упростить запросы, заменяя многократные подзапросы на более элегантные и читабельные решения.
-
[Перевод] Механизм перезапускаемых последовательностей (Rseq) при работе с TCMalloc
❯ Кэши для отдельных ядер процессора В TCMalloc кэши для отдельных ядер процессора реализуются при помощи перезапускаемых последовательностей (man rseq(2)) под Linux. Эту возможность ядра разработали Пол Тёрнер и Эндрю Хантер из Google , а также Мэтью Дезнойерс из EfficiOS. При помощи перезапускаемых последовательностей можно вплоть до завершения выполнять область памяти (атомарно, относительно других потоков, выполняющихся на том же ядре процессора), либо выходить из этого процесса, если ядро прервёт этот процесс, например, вытеснив его или прервавшись на обработку сигнала. Если вы хотите организовать перезапуск системы при миграции с ядра на ядро или при вытеснении процесса, то наиболее общий случай такой операции можно оптимизировать (не переносить с ядра на ядро тот процесс, который уже выполняется), избегая атомарных операций. Можно оптимизировать и более редкий случай – вытеснение как таковое. В результате такого компромисса нужно обеспечить, чтобы на всех путях выполнения нашего кода поддерживались такие операции перезапуска. Вся последовательность, кроме окончательного сохранения в памяти, когда изменение фиксируется, должна быть приспособлена к перезапуску.
https://habr.com/ru/companies/timeweb/articles/789470/
#timeweb_статьи_перевод #Rseq #TCMalloc #Google #EfficiOS #ядро #ID #ПК #C++ #массивы #ЦП #begin #x86 #процессор #кэш
-
Массивы в Kotlin
Я - Денис, Junior Android-разработчик в «Лайв Тайпинге». В этой статье расскажу о массивах. Вы узнаете: как они устроены в памяти компьютера, особенности реализации в разных ЯП, оптимизациях, а также частых вопросах на собеседованиях. Даже, если у вас большой опыт в разработки с Kotlin, думаю вы найдете что-то новое для себя в этой статье. Погнали!