Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
768 - Telegram Web
Telegram Web
Как работает пробинг в 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...), что уменьшает кластеризацию.
Если после нескольких попыток элемент не найден → он отсутствует.
Как map ищет элементы (value, ok := m[key])

1️⃣ Находим bucket по hash % 2^B.

2️⃣ Сравниваем tophash (если совпадает — проверяем ключ).

3️⃣ Если не нашли — идём в overflow (если есть).

4️⃣ Если ключ отсутствует — возвращаем ok = false.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
В чём разница между Query() и QueryRow()?

Query() — выполняет SQL-запрос, который возвращает несколько строк (например, SELECT * FROM users). Возвращает *Rows, требует итерации через rows.Next().

QueryRow() — выполняет SQL-запрос, который возвращает одну строку (например, SELECT name FROM users WHERE id = 1). Возвращает *Row, требует вызова .Scan().
🤔 Основы математики в Machine Learning / Deep Learning

🗓 6 марта приглашаем вас на прямой эфир, где мы подробно разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML.
(ссылка)

🌟 Спикер: *Мария Горденко* – Старший преподаватель ФКН НИУ ВШЭ, НИТУ МИСИС, аспирант департамента анализа данных и искусственного интеллекта ФКН НИУ ВШЭ, а также преподаватель на курсе Алгоритмы и структуры данных в proglib academy.


Место работы: Инженер-программист, ведущий эксперт НИУ ВШЭ, цифровой ассистент и цифровой консультант НИУ ВШЭ.


😮 На вебинаре вы узнаете:

🔵 Теорию вероятностей: обсудим случайные величины, вероятность, математическое ожидание и дисперсию.

🔵 Линейную алгебру: изучим векторы, матрицы, собственные векторы и собственные значения.

🔵 Математический анализ: разберем производные и разложение функций в ряд Тейлора.

🔵 Практику: применим полученные знания на реальных кейсах из области Machine Learning и Deep Learning.

🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.

👉 Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!

📌 Регистрация по ссылке: https://proglib.io/w/01d4b6df
Что такое fuzzing?

Fuzzing (фаззинг) — это метод тестирования программного обеспечения, при котором на вход программы подаются случайные, невалидные или некорректные данные с целью выявления уязвимостей, сбоев или неожиданного поведения.
У вас есть код на Go версии 1.20, который использует map. Что нужно сделать, чтобы мигрировать на версию 1.24, которая принесла Swiss Table в Go

Делать ничего не нужно, потому что внешне map не изменилась. Методы работают также, как и до обновления.
Что делает переменная окружения GOOS в Go

Переменная окружения GOOS определяет операционную систему, для которой будет скомпилировано Go-приложение. Она используется при кросс-компиляции, когда код пишется на одной платформе, но компилируется для другой.

Поддерживаемые значения GOOS:
• Linux
• Windows
• macOS
• FreeBSD
• OpenBSD
• NetBSD
• Android
• iOS
• Plan 9


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое префиксная сумма

Префиксная сумма — это массив, в котором каждый элемент содержит сумму всех предыдущих элементов исходного массива до текущего индекса.

Это позволяет быстро вычислять сумму любого подмассива за O(1) после предварительной обработки.


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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Как отличается управление памятью в Go от С++

Управление памятью в Go и C++ различается по подходу. Go использует автоматический сборщик мусора, который упрощает написание кода и уменьшает риск утечек памяти, но может влиять на производительность. C++ же требует ручного управления памятью с помощью операторов new и delete, что дает низкоуровневый контроль и высокую производительность, но увеличивает сложность и риск ошибок.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое канареечный релиз/тестирование

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Starvation

Это ситуация в многопоточном программировании, когда один поток не получает доступа к ресурсу из-за приоритетного обслуживания других потоков. В результате этот "обделённый" поток не может завершить свою работу или выполняется крайне редко.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Cache contention

Cache contention возникает, когда несколько горутин одновременно обращаются к одной и той же структуре данных, что приводит к конкуренции за доступ к данным и снижению производительности.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🏃‍♀️ 40+ каналов, которые должен читать каждый разработчик

Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов.

IT Job Hub | Работа и вакансии в IT — избранные IT-вакансии

Библиотека программиста — новости из мира IT и технологий

Книги для программистов — самые годные книги по любым языкам и стекам

IT-мемы — мемы про жизу айтишника

Proglib Academy — обучение и курсы, чтобы стать топовым специалистом

Азбука айтишника — азы из мира разработки

Библиотека нейросетей — лайфхаки и промпты для разных задач, баттлы нейронок и новости из мира ИИ

Библиотека фронтендера — все о JS, React, Angular и не только

Библиотека мобильного разработчика — лайфхаки и новости из мира Swift и Kotlin

Библиотека хакера — уязвимости, атаки, бэкдоры и как от них защититься

Библиотека тестировщика — самое интересное о том, как крашить код

🦫 Go
Библиотека Go-разработчика
Библиотека задач по Go
Библиотека Go для собеса
Вакансии по Go

#️⃣ C#
Библиотека шарписта
Библиотека задач по C#
Библиотека собеса по C#
Вакансии по C#

🔧 DevOps
Библиотека devops’а
Библиотека задач по DevOps
Библиотека собеса по DevOps
Вакансии по DevOps & SRE

🐘 PHP
Библиотека пхпшника
Библиотека задач по PHP
Библиотека PHP для собеса
Вакансии по PHP, Symfony, Laravel

🐍 Python
Библиотека питониста
Библиотека Python для собеса
Библиотека задач по Python
Вакансии по питону, Django, Flask

☕️ Java
Библиотека джависта
Библиотека задач по Java
Библиотека Java для собеса
Вакансии по Java

📊 Data Science
Библиотека дата-сайентиста
Библиотека задач по Data Science
Библиотека Data Science для собеса
Вакансии по Data Science

🎮 C++
Библиотека C/C++ разработчика
Библиотека задач по C++
Библиотека C++ для собеса
Вакансии по C++

Подписывайтесь на интересные вам каналы и сохраняйте пост в закладки, чтобы не потерять 🔑
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает CGO_ENABLED

CGO_ENABLED — это переменная окружения, которая управляет использованием CGo при компиляции Go-приложений.

CGo — это механизм в Go, который позволяет взаимодействовать с C-кодом, вызывать C-функции и использовать C-библиотеки внутри Go-программ.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем CGO_ENABLED=0 полезен при сборке Go-приложений

Переменная окружения CGO_ENABLED=0 отключает поддержку CGo при компиляции Go-кода. Это означает, что все зависимости компилируются исключительно на чистом Go, без использования C-библиотек.

Если CGO_ENABLED=1, компилятору Go могут понадобиться инструменты и заголовочные файлы C для целевой платформы. С CGO_ENABLED=0 можно без проблем собирать бинарники для других архитектур и ОС.

Отключение CGo позволяет Go-компилятору использовать статическую компоновку, что уменьшает размер бинарного файла и исключает динамические зависимости.

Приложение не зависит от внешних C-библиотек, что делает его легче для развертывания, особенно в контейнерах или в средах с минимальным окружением.

Исключение C-кода уменьшает вероятность уязвимостей, связанных с управлением памятью в C, и делает код более платформонезависимым.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает система пакетов в Go

В начале каждого .go файла указывается, к какому пакету он принадлежит

Если в коде есть package main, то этот пакет может быть скомпилирован в исполняемый файл. В противном случае это библиотечный пакет.

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

Ограниченная область видимости

Если идентификатор (переменная, функция, структура) начинается с заглавной буквы, он доступен за пределами пакета.

Если начинается с маленькой буквы, он доступен только внутри пакета.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Как в Go реализовать wildcard импорт

В Go нет wildcard-импортов (import "*"), как в Java или Python.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/08 10:03:49
Back to Top
HTML Embed Code: