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
700 - Telegram Web
Telegram Web
🧑‍💻 Статьи для 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 запрещена на территории РФ
👍1
Какой порядок перебора элементов в map?

Порядок перебора элементов в map Go неопределён. Это означает, что при каждом вызове for range элементы могут возвращаться в разном порядке

Почему так?

Использование хэш-таблицы:

Внутренне map реализована как хэш-таблица.
Позиция каждого элемента определяется хэш-значением ключа. Хэш-функция распределяет данные по бакетам, и порядок их расположения не сохраняется.

Случайный seed:

При запуске программы Go устанавливает случайный seed для хэш-функции. Это означает, что даже для одной и той же структуры данных порядок обхода map может различаться между разными запусками программы.
🙏8🔥43
Как избежать проблем с устаревшими данными в кэше?

Для предотвращения устаревания данных в кеше можно использовать следующие подходы:
TTL (Time-To-Live): Устанавливать срок жизни данных, после чего они автоматически удаляются.
Invalidate on Write: Удалять или обновлять кеш при изменении данных в источнике.
Background Refresh: Периодически обновлять данные в кеше с помощью фонового процесса.
Cache Busting: Использовать версионирование ключей кеша, чтобы автоматически использовать актуальные данные.
👍6
Что такое Compare-And-Swap (CAS)?

Это атомарная операция, широко используемая в многопоточном программировании для синхронизации доступа к общим данным без использования блокировок. Она обеспечивает механизм обновления значения переменной только если её текущее значение соответствует ожидаемому.
👍111
Что такое «кеш-пробивка» (cache penetration) и как с этим бороться?

Кеш-пробивка — это ситуация, когда запросы приходят на данные, которых нет в кеше и никогда не будет, например, для несуществующих идентификаторов. Такие запросы всегда попадают в базу данных, перегружая ее.

Как с этим бороться?

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

Блокировка запросов: использовать блокировку (mutex), чтобы один поток обрабатывал запрос, а остальные ждали результат.

Предварительная фильтрация: проверять валидность запросов до обращения к кешу.
🤔6👍21
Чем отличаются Lock-Free и Wait-Free алгоритмы?

Lock-Free алгоритмы:

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

Wait-Free алгоритмы:
Гарантируют, что каждый поток завершит операцию за конечное время.
Обычно сложнее в реализации и менее производительны из-за необходимости более сложной координации между потоками.
Используются там, где важно обеспечить равноправие (fairness).
👍51🔥1😢1
Что такое трэшинг? (В контексте кэширования)

Трэшинг — это состояние, когда кэш постоянно вытесняется новыми данными, из-за чего система вынуждена часто обращаться к основному источнику данных (например, к базе данных). Это приводит к значительному снижению производительности, так как теряется основная цель кэширования — ускорение доступа к часто используемой информации.
👍16
Способы борьбы с трэшингом

Увеличение размера кэша: выделить больше памяти для хранения данных.

Оптимизация алгоритма замещения: использовать эффективные алгоритмы, такие как:
LRU (Least Recently Used): замещает данные, которые не использовались дольше всего.
LFU (Least Frequently Used): удаляет данные, которые реже всего запрашиваются.

Категоризация кэша: разделить данные на сегменты для разных типов запросов, чтобы снизить конкуренцию.

Фильтрация данных: исключить из кэша редко запрашиваемую или устаревшую информацию.

Многоуровневое кэширование: организовать кэширование на нескольких уровнях:
Локальный кэш (в памяти приложения).
Распределённый кэш (например, Redis, Memcached).

Предварительное заполнение кэша: использовать pre-warming для загрузки часто запрашиваемых данных при запуске системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Какие механизмы используются для предотвращения бесконечных повторных попыток (spinlocks) в Lock-Free алгоритмах?

Для предотвращения бесконечных попыток используются:
Экспоненциальный бэкофф: поток ждёт случайный интервал времени перед следующей попыткой CAS, постепенно увеличивая задержку. Это снижает нагрузку на процессор.
Адаптивные алгоритмы: используют метрики системы, такие как нагрузка на процессор, чтобы регулировать поведение потоков.
Алгоритмы с ограничением времени ожидания (timed wait): если после определённого количества попыток CAS не удаётся, поток может прекратить выполнение или использовать fallback-метод.
Смешанный подход (Hybrid Locking): Использование мьютексов или других методов синхронизации как резервного механизма, если CAS не удаётся.
❤‍🔥3👍1
Что такое ABA-проблема в контексте Compare and Swap операций?

ABA-проблема — это ситуация, которая возникает при использовании операции Compare-And-Swap (CAS) в многопоточном программировании. Она связана с тем, что значение переменной изменяется с A на B, а затем снова на A. CAS не может определить, что значение изменялось между этими состояниями, и считает, что оно не изменилось.
7😁3
Что такое импортируемый и исполняемый пакеты?

Импортируемые пакеты содержат библиотечные функции и структуры данных, которые могут быть использованы в других пакетах. Исполняемые пакеты содержат функцию main() и являются точкой входа для выполнения программы. Исполняемые пакеты всегда имеют имя main
👍8🥱4
С Новым годом и Годом Змеи! 🐍 Пусть этот год принесет вам успех, рост и меньше усилий для достижения больших целей. Мы в Proglib Academy пришли с хорошими новостями в начале года.

🌟 Обновления курсов!

Мы работаем над тем, чтобы ваше обучение было проще и эффективнее. Вот что мы уже улучшили:

📈 Data Science: улучшили блок «Геометрическая прогрессия и векторная алгебра» — ключевой этап курса, который идет сразу после теории множеств.

Он закладывает фундамент для работы с данными: от анализа роста и убывания величин (геометрическая прогрессия) до понимания многомерных пространств и операций с векторами. Знания которых пригодятся в машинном обучения и аналитики.


🐍 Python: обновили курс с учетом последней версии Python 3.9.5, добавив актуальные материалы и улучшив структуру. Чтобы вы могли лучше закрепить пройденный материал, мы добавили новые интересные задачи и практические примеры.

Учебный процесс стал еще удобнее и эффективнее, а вы сможете быстрее освоить современные инструменты и техники программирования


Общие обновления:


- Перезаписали демо-курсы и презентации. Чтобы вы точно одурели с этой прикормки.
- Сократили время проверки домашних заданий, ответы теперь приходят быстрее.
- Видео теперь без перекрытий, презентации стали четче, а задания логичнее.


Но главное — мы растем для вас и с вами. Ваша обратная связь помогает нам становиться лучше. Делитесь идеями, и вместе мы создадим лучший образовательный продукт для вас!
💡 С 27.01.25 цены изменятся на 10%.

Пример: Математика для DS (Базовый): 20,990 → 23,090 ₽. Это позволяет нам делать курсы еще круче.
Давайте сделаем 2025 год годом вашего профессионального успеха! 🚀

Выбрать курс
Что такое руны?

В Go руны (тип rune) представляют собой символы Unicode и являются синонимом типа int32. Руны используются для представления символов, которые могут занимать более одного байта в кодировке UTF-8.
👍4🥱2
Как вы реализуете поддержку флагов командной строки в Go? Опишите, как вы бы создали программу, которая принимает следующие флаги:

-name (строка, имя пользователя, обязательный)

-age (целое число, возраст, необязательный, по умолчанию 18)

-verbose (булев флаг, включение подробного вывода, необязательный)

Также объясните, как вы бы обработали ошибки, например, если обязательный флаг не передан.

Для реализации поддержки флагов командной строки в Go используется стандартный пакет flag. Сначала определяются флаги с помощью функций flag.String, flag.Int и flag.Bool. Например, флаг name будет обязательным, age — необязательным со значением по умолчанию 18, а verbose — булевым флагом для включения подробного вывода.

После определения флагов вызывается flag.Parse(), чтобы обработать аргументы командной строки и заполнить значения переменных.

Затем добавляется проверка, чтобы убедиться, что обязательный флаг name не пустой. Если он пустой, программа завершается с ошибкой и выводит справку по использованию флагов с помощью flag.Usage().

Если все флаги корректны, их значения выводятся.

Если требуется поддержка коротких флагов или пользовательских типов, можно использовать сторонние библиотеки, такие как cobra или urfave/cli, так как стандартный пакет flag этого не поддерживает.
👍102
Что такое «Memory ballast»?

Это техника оптимизации работы сборщика мусора (GC) в Go, при которой в программе намеренно выделяется большой объём памяти (например, слайс var ballast = make([]byte, 1<<30)), чтобы повлиять на поведение GC.
👍9🤔2
Почему сейчас не используют «Memory ballast»?

Потому что в Go 1.19+ появилась runwww.tgoop.com/debug.SetMemoryLimit — более гибкий и безопасный способ управления сборщиком мусора (GC). Раньше Ballast был хаком для снижения частоты запусков GC, но теперь есть официальное решение, которое не требует выделения лишней памяти и лучше интегрировано в язык.

Библиотека Go для собеса
6
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
2025/07/08 23:29:57
Back to Top
HTML Embed Code: