КраткоBlack-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления и используемых участков памяти. Пример реализации и оригинальная научная публикация.ПреимуществаАмортизированное время вставки/удаления/поиска - сравнимое с BTree от Google;Количество аллокаций памяти при операциях вставки так же - меньше давления на сборщик мусора, ниже фрагментация памяти;Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессо…
Привет! Эта статья - текстовая версия моего стрима с разбором задачи на бесконечную ленту по System Design из https://t.me/siliconchannel/141 этого поста.Рассмотрим классическую задачу из System Design интервью - персональная лента подписок. По сути, мы проектируем упрощённый клон Instagram. Сама задача звучит следующим образом:Делаем сервис: подписки на авторов, публикации постов, выдача персональной ленты с пагинацией. Нагрузка: чтение доминирует - 30 тыс. RPS; запись постов 1000 RPS; есть “м…
Всем привет! Меня зовут Нина Пакшина, и я уже 5 лет пишу на Go.Пару лет назад я готовилась к докладу и глубоко изучала исходники runtime Go. Там я наткнулась на очень интересный код.На время я о нём забыла, но сейчас наконец смогла погрузиться. Теперь я хочу поделиться этим с вами, чтобы мы стали понимать Go чуточку глубже.Когда мы говорим о сборщике мусора, то сразу думаем о куче. Зачем сборщик мусора нужен в стеке? Переменная попала на стек, функция завершила исполнение — стек вжух! — и очист…
Go разработчики постоянно сталкиваются с предупреждениями встроенного статического анализатора. А что делать, если его возможностей не хватает или нужно искать что-то специфичное для вашего проекта? Go предоставляет мощные инструменты для разбора и анализа кода. В этой статье мы поговорим о них и даже сделаем своё первое диагностическое правило.ВведениеОпыт работы с Go-инструментами для разбора кода был получен при разработке статического анализатора PVS-Studio для Go.Статья направлена на начин…
Команда Go for Devs подготовила перевод обзора языка Go от практикующего разработчика. Автор без прикрас разбирает сильные стороны Go — конкурентность, простоту и эргономику, — а затем подробно объясняет, почему его разочаровывают enum’ы, неизменяемость и модель ошибок.Я написал несколько небольших проектов на Go, так что не стоит воспринимать всё ниже как экспертное мнение о языке. Это всего лишь мои первые впечатления от работы с ним. Последние несколько месяцев я писал на Go. Сейчас я подум…
Все уже слышали, что в Go 1.25 завезли новый экспериментальный сборщик мусора - Green Tea GC. Теории о том, как он работает, много (в том числе на Хабре).Но когда мы с коллегой попытались просто включить GOEXPERIMENT=greenteagc на наших обычных бенчмарках, нас ждало разочарование: результаты были то чуть лучше, то чуть хуже, то вообще одинаковые. Сплошная лотерея.Мы задались целью: найти условия, в которых Green Tea GC побеждает безоговорочно. Не на 1-2% в пределах погрешности, а так, чтобы гра…
Снова здравствуйте, уважаемые хабровчане.Почти каждый день в ленте я вижу новости про очередного "революционного" AI-агента. AutoGPT, BabyAGI, Devin, Cursor, Perplexity, Atlas, Windsurf, Antigravity.... мол они заменят программистов, браузеры, людей, машины, а в итоге.... даже говорить не хочетсяЯ, как человек простой, хотел бы инструмент, который просто работает, мол "ыы зайди в гугл, найди доку, скажи мне ответ". Я скачал пару ( два ) популярных решений ( все они на питухоне …
Новая эра межъязыкового взаимодействияДо 2024 года интеграция Go и Rust была либо через хрупкий CGO, либо через сетевые вызовы с накладными расходами. Выход Go 1.24 с директивой //go:wasmexport и дальнейшие оптимизации в Go 1.25 изменили правила игры благодаря WebAssembly Component Model (WCM).Компонентная модель - это стандартизированная система типов (WIT) и ABI, позволяющая компонентам на разных языках взаимодействовать напрямую, без сериализации. Сегодня мы создадим Go-компонент и запустим …
Привет, Хабр! Меня зовут Иван, я инженер по информационной безопасности в департаменте разработки общей платформы компании YADRO. Я занимаюсь фаззинг-тестированием уже два года, через мой фаззинг прошло много кода на языках C и Go. В этой статье будет и теория, и практика. Сначала разберемся, как устроен фаззинг, его алгоритмы и при чем тут ГОСТ. Затем я расскажу, как написать инструмент для фаззинг-тестирования проектов на Go. В практической части подробно опишу процесс разработки и покажу при…