❓ Как устроена map в Go
В Go map – это оптимизированная хеш-таблица с открытой адресацией, использующая buckets.
Вместо linked list при коллизиях, как в Java HashMap, Go хранит по 8 элементов в одной корзине, а при нехватке места создаёт overflow bucket.
type hmap struct {
count int // Количество элементов
B uint8 // log₂(количества корзин)
hash0 uint32 // Случайная "соль" для хеширования
buckets unsafe.Pointer // Указатель на массив корзин
oldbuckets unsafe.Pointer // Для ленивого rehash
nevacuate uintptr // Состояние эвакуации (grow)
}
buckets – массив корзин (bmap), каждая хранит до 8 элементов.
oldbuckets – используется при ленивом rehash при увеличении map.
hash0 – случайная "соль" для предотвращения атак на хеш-таблицу.
Вместо linked list при коллизиях, как в Java HashMap, Go хранит по 8 элементов в одной корзине, а при нехватке места создаёт overflow bucket.
type hmap struct {
count int // Количество элементов
B uint8 // log₂(количества корзин)
hash0 uint32 // Случайная "соль" для хеширования
buckets unsafe.Pointer // Указатель на массив корзин
oldbuckets unsafe.Pointer // Для ленивого rehash
nevacuate uintptr // Состояние эвакуации (grow)
}
buckets – массив корзин (bmap), каждая хранит до 8 элементов.
oldbuckets – используется при ленивом rehash при увеличении map.
hash0 – случайная "соль" для предотвращения атак на хеш-таблицу.
😁15👍6
❓ Вкратце объясните, для чего нужен пакет singleflight
Если несколько горутин одновременно требуют одни и те же данные, singleflight гарантирует, что операция будет выполнена лишь один раз, а результат поделится между всеми запросившими его, тем самым снижая избыточную нагрузку и экономя ресурсы.
👍20💯3❤1
❓Для чего применяется context в Go
В Go пакет context используется для управления временем жизни горутин: передачи тайм-аутов, дедлайнов и отмены операций.
👍16👾1
📊 Как себя чувствует IT-рынок в 2025 году?
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Совет на 2025-й — будьте осторожнее с выбором работы.
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.
Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦♂️
Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:
— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер
Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.
Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
👍1
❓ Что делать, если контекст не нужен, но его требуется передать
Если функция требует передать context.Context, но в вашем случае контекст не нужен, нужно передать context.TODO()
😁11🤔6
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
👉 Список самого важного
Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.
👉 Список самого важного
👍3❤1💯1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7👾1
❓ Что такое RPS
Requests Per Second — это метрика, обозначающая количество запросов в секунду, которые система, сервер или API способны обработать. Используется для измерения производительности и нагрузки на веб-приложения, базы данных и сетевые сервисы.
🤔7👍6😁6
❓ Как map добавляет элементы? (m[key] = value)
1️⃣ Вычисляется хеш ключа с учётом hash0.
2️⃣ Определяется номер корзины: bucket = hash % 2^B.
3️⃣ Проверяется наличие места среди слотов:
Если есть — записываем ключ и значение.
Если корзина заполнена — создаётся overflow bucket.
🌚8🤔5👍1
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/4c54dd82
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.
🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг
👉 Подробная программа обучения
А по промокоду
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Библиотека Go-разработчика | Golang
Работа мечты в один клик 💼
💭 Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер?
📌 Зарегистрируйся здесь
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
💭 Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер?
📌 Зарегистрируйся здесь
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
👍1🌚1
❓ Как работает пробинг в Swiss Table
1. Вычисляется хеш ключа (hash(key))
Используется aeshash (на поддерживаемых CPU) или memhash (на других архитектурах).
Определяется bucket: bucket_index = hash(key) % num_buckets.
2. Проверяется metadata (fingerprint) в bucket'е
Каждый bucket хранит 8 слотов, где хранятся fingerprints ключей.
Если fingerprint совпадает → проверяем полный ключ.
3. Если слот занят → применяется квадратичный пробинг:
next_index = (index + i²) % num_buckets
i увеличивается (1, 4, 9, 16...), что уменьшает кластеризацию.
Если после нескольких попыток элемент не найден → он отсутствует.
👍19
❓ Как map ищет элементы (value, ok := m[key])
1️⃣ Находим bucket по hash % 2^B.
2️⃣ Сравниваем tophash (если совпадает — проверяем ключ).
3️⃣ Если не нашли — идём в overflow (если есть).
4️⃣ Если ключ отсутствует — возвращаем ok = false.
🌚14🤔1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❓ В чём разница между Query() и QueryRow()?
Query() — выполняет SQL-запрос, который возвращает несколько строк (например, SELECT * FROM users). Возвращает *Rows, требует итерации через rows.Next().
QueryRow() — выполняет SQL-запрос, который возвращает одну строку (например, SELECT name FROM users WHERE id = 1). Возвращает *Row, требует вызова .Scan().
👍6😁2
🤔 Основы математики в Machine Learning / Deep Learning
🗓 6 марта приглашаем вас на прямой эфир, где мы подробно разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML.
(ссылка)
🌟 Спикер: *Мария Горденко* – Старший преподаватель ФКН НИУ ВШЭ, НИТУ МИСИС, аспирант департамента анализа данных и искусственного интеллекта ФКН НИУ ВШЭ, а также преподаватель на курсе Алгоритмы и структуры данных в proglib academy.
Место работы: Инженер-программист, ведущий эксперт НИУ ВШЭ, цифровой ассистент и цифровой консультант НИУ ВШЭ.
😮 На вебинаре вы узнаете:
🔵 Теорию вероятностей: обсудим случайные величины, вероятность, математическое ожидание и дисперсию.
🔵 Линейную алгебру: изучим векторы, матрицы, собственные векторы и собственные значения.
🔵 Математический анализ: разберем производные и разложение функций в ряд Тейлора.
🔵 Практику: применим полученные знания на реальных кейсах из области Machine Learning и Deep Learning.
🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
👉 Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/01d4b6df
🗓 6 марта приглашаем вас на прямой эфир, где мы подробно разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML.
(ссылка)
🌟 Спикер: *Мария Горденко* – Старший преподаватель ФКН НИУ ВШЭ, НИТУ МИСИС, аспирант департамента анализа данных и искусственного интеллекта ФКН НИУ ВШЭ, а также преподаватель на курсе Алгоритмы и структуры данных в proglib academy.
Место работы: Инженер-программист, ведущий эксперт НИУ ВШЭ, цифровой ассистент и цифровой консультант НИУ ВШЭ.
😮 На вебинаре вы узнаете:
🔵 Теорию вероятностей: обсудим случайные величины, вероятность, математическое ожидание и дисперсию.
🔵 Линейную алгебру: изучим векторы, матрицы, собственные векторы и собственные значения.
🔵 Математический анализ: разберем производные и разложение функций в ряд Тейлора.
🔵 Практику: применим полученные знания на реальных кейсах из области Machine Learning и Deep Learning.
🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
👉 Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/01d4b6df
🥰1
❓ Что такое fuzzing?
Fuzzing (фаззинг) — это метод тестирования программного обеспечения, при котором на вход программы подаются случайные, невалидные или некорректные данные с целью выявления уязвимостей, сбоев или неожиданного поведения.
👍10🥱2🔥1