Примеры:
Важно: объекты из sync.Pool могут быть очищены сборщиком мусора, если память ограничена.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Что делает функция runtime.GC()?
Функция runtime.GC() инициирует принудительную сборку мусора.
1. Выполняет полный цикл сборки мусора (включая STW).
2. Полезна для тестирования или контроля состояния памяти (например, измерения выделений памяти).
Примечание: использование runtime.GC() в продакшене не рекомендуется, так как оно нарушает автоматическое управление памятью.
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Можно ли использовать embed для встраивания динамически изменяемых файлов, например, конфигурационных файлов, которые могут изменяться в процессе работы приложения?
Anonymous Quiz
30%
Да
60%
Нет
10%
Наверное
🔥5
❓Что делает инструмент go vet?
Это инструмент для статического анализа кода в Go, который помогает обнаружить потенциальные ошибки, такие как неправильное использование форматов в fmt.Printf, неиспользуемые переменные или параметры, проблемы с указателями и возможные ошибки, которые могут повлиять на выполнение программы.
👍14❤3
❓Какие стандартные инструменты для сортировки предоставляет пакет sort в Go?
В пакете sort Go предоставляет несколько встроенных функций для сортировки стандартных типов данных. Например, sort.Ints используется для сортировки слайсов целых чисел, sort.Strings — для сортировки строк, а sort.Float64s — для чисел с плавающей запятой.
❓А если требуется сортировка не только чисел и строк, а пользовательских структур?
Если требуется кастомная сортировка, пакет предлагает интерфейс sort.Interface. Для его использования нужно реализовать три метода: Len, который возвращает длину слайса, Less для определения порядка элементов и Swap для их перестановки. Это позволяет гибко задавать правила сортировки, например, для структур или сложных типов данных.
❓А если требуется сортировка не только чисел и строк, а пользовательских структур?
👍19
❓Массив и срез в Go это одно и то же? Почему?
Нет, массив и срез в Go — это разные структуры.
Массив: имеет фиксированный размер, который является частью его типа ([5]int), и не может изменяться.
Срез: это динамическая структура, которая ссылается на базовый массив, поддерживает изменение размера и удобнее для работы с данными.
🥱29👍6
Преимущества:
Сценарии, где это полезно:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
go clean -cache
Это удалит все закэшированные данные, включая кэш для go run, освобождая место на диске.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🌚5
❓Что такое Escape Analysis?
Escape Analysis (анализ утечки) — это процесс, который компилятор Go использует, чтобы определить, где должны быть размещены переменные: в стеке или в куче.
⚙️ Если переменная не «выходит» за пределы области видимости функции, компилятор размещает её в стеке. Это быстрее и дешевле, поскольку стек управляется автоматически, и память освобождается при выходе из функции.
⚙️ Если переменная выходит за пределы области видимости функции, она размещается в куче. Это необходимо, чтобы гарантировать её доступность в других частях программы, но работа с кучей более затратна (например, требуется garbage collector).
👍17
❓ Что конкретно проверяет Escape Analysis?
Go выполняет анализ утечки во время компиляции. Компилятор проверяет, может ли ссылка на переменную:
✅ Возвращаться из функции.
✅Использоваться в других goroutines.
✅Передаваться в функцию, которая сохраняет её для последующего использования.
Если хотя бы одно из этих условий выполняется, переменная размещается в куче.
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👾2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❓Что такое холодный и тёплый кэш?
Холодный кэш — это состояние кэша, когда он только начинает наполняться данными. В этом случае при запросе данных часто приходится обращаться к источнику (например, базе данных), так как кэш ещё не заполнен.
Тёплый кэш— это состояние, когда кэш уже заполнен часто запрашиваемыми данными, и большинство запросов обрабатываются из кэша, что значительно увеличивает производительность.
😁3👍1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
👍1
❓ Какой порядок перебора элементов в map?
Порядок перебора элементов в map Go неопределён. Это означает, что при каждом вызове for range элементы могут возвращаться в разном порядке
❓ Почему так?
Использование хэш-таблицы:
Внутренне map реализована как хэш-таблица.
Позиция каждого элемента определяется хэш-значением ключа. Хэш-функция распределяет данные по бакетам, и порядок их расположения не сохраняется.
Случайный seed:
При запуске программы Go устанавливает случайный seed для хэш-функции. Это означает, что даже для одной и той же структуры данных порядок обхода map может различаться между разными запусками программы.
❓ Почему так?
Случайный seed:
🙏8🔥4❤3
❓Как избежать проблем с устаревшими данными в кэше?
Для предотвращения устаревания данных в кеше можно использовать следующие подходы:
✅ TTL (Time-To-Live): Устанавливать срок жизни данных, после чего они автоматически удаляются.
✅ Invalidate on Write: Удалять или обновлять кеш при изменении данных в источнике.
✅ Background Refresh: Периодически обновлять данные в кеше с помощью фонового процесса.
✅ Cache Busting: Использовать версионирование ключей кеша, чтобы автоматически использовать актуальные данные.
👍7
❓В какой момент Go устанавливает случайный seed для map?
Anonymous Quiz
28%
При создании каждой новой map
51%
Один раз при старте программы
15%
Перед каждой итерацией range
6%
При каждом доступе к элементу map
❓Что такое Compare-And-Swap (CAS)?
Это атомарная операция, широко используемая в многопоточном программировании для синхронизации доступа к общим данным без использования блокировок. Она обеспечивает механизм обновления значения переменной только если её текущее значение соответствует ожидаемому.
👍11❤1
❓ Что такое «кеш-пробивка» (cache penetration) и как с этим бороться?
Кеш-пробивка — это ситуация, когда запросы приходят на данные, которых нет в кеше и никогда не будет, например, для несуществующих идентификаторов. Такие запросы всегда попадают в базу данных, перегружая ее.
❓ Как с этим бороться?
Занесение пустых значений: если данные отсутствуют, сохранять в кеше пустое значение с коротким TTL.
Блокировка запросов: использовать блокировку (mutex), чтобы один поток обрабатывал запрос, а остальные ждали результат.
Предварительная фильтрация: проверять валидность запросов до обращения к кешу.
❓ Как с этим бороться?
🤔6👍2❤1