Например: перевод денег с одного счета на другой, система остаётся в корректном состоянии: сумма на одном счете уменьшилась, а на другом увеличилась. Если транзакция не завершится, изменения не будут внесены, и система останется в исходном валидном состоянии.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🎮🔌 4 cамых популярных фреймворка для разработки онлайн-игр на Unity
Сетевое взаимодействие — это сердце многопользовательской игры, и правильный выбор фреймворка это решающий фактор для проекта.
Посмотрите обзор самых популярных фреймворков для разработки онлайн-игр на Unity и выберите тот, который подходит для вашего проекта.
➡️ Читать обзор
🐸 Библиотека шарписта
Сетевое взаимодействие — это сердце многопользовательской игры, и правильный выбор фреймворка это решающий фактор для проекта.
Посмотрите обзор самых популярных фреймворков для разработки онлайн-игр на Unity и выберите тот, который подходит для вашего проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍🏼 Расскажите про конкурентные коллекции в C#?
Конкурентные коллекции в C# предназначены для безопасного доступа к данным в многозадачных приложениях. Они позволяют нескольким потокам одновременно читать и изменять данные, исключая необходимость ручной синхронизации и минимизируя блокировки.
ConcurrentQueue — потокобезопасная очередь (FIFO), отлично подходит для сценариев с последовательной обработкой;
ConcurrentStack — потокобезопасный стек (LIFO), полезен, когда важен обратный порядок обработки;
ConcurrentBag — коллекция без определённого порядка, оптимальна для хранения данных в локальном кэше потоков;
ConcurrentDictionarу — потокобезопасный словарь, замена обычному Dictionary в многопоточном окружении; и наконец,
BlockingCollection — высокоуровневая обёртка над другими коллекциями, поддерживающая блокировки и ограничение размера, идеально подходит для реализации паттерна "продюсер-потребитель"
🐸 Библиотека собеса по С#
ConcurrentStack — потокобезопасный стек (LIFO), полезен, когда важен обратный порядок обработки;
ConcurrentBag — коллекция без определённого порядка, оптимальна для хранения данных в локальном кэше потоков;
ConcurrentDictionarу — потокобезопасный словарь, замена обычному Dictionary в многопоточном окружении; и наконец,
BlockingCollection — высокоуровневая обёртка над другими коллекциями, поддерживающая блокировки и ограничение размера, идеально подходит для реализации паттерна "продюсер-потребитель"
Please open Telegram to view this post
VIEW IN TELEGRAM
Например: два пользователя одновременно пытаются обновить информацию о товаре в магазине, то изменения одного пользователя не могут "перемешиваться" с действиями другого. Транзакции не видят промежуточные результаты других транзакций, пока они не будут завершены. Это гарантирует, что одна транзакция не повлияет на другую до её завершения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Правильный выбор типа JOIN-а, например, INNER JOIN вместо LEFT JOIN, тоже важен для производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Допустим, вы перевели деньги через интернет-банк, и транзакция завершилась успешно. Даже если сервер после этого упал, ваш перевод всё равно будет сохранён. Это означает, что данные, записанные в процессе транзакции, не потеряются и останутся целыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
Основная цель ThreadPool — эффективно управлять количеством потоков, чтобы не перегружать систему и при этом поддерживать высокую производительность. Когда задача добавляется в пул потоков, ThreadPool выбирает свободный поток или создает новый, если их недостаточно. Это позволяет избежать утечек памяти и перегрузки, которые могут возникнуть при прямом управлении потоками вручную.
Это особенно полезно для приложений с большим количеством короткоживущих задач, таких как веб-сервисы или серверные приложения, где создание нового потока для каждой задачи может сильно снизить производительность.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🤔📝 Псевдокод: когда преподы не шарят, а ты в тупике
Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.
Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.
➡️ Читать статью
🐸 Библиотека шарписта
Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.
Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Например:
Если класс является ссылочным типом (class), то сам объект класса будет размещен в куче (heap), но значимый тип данных будет храниться в этом объекте в том же месте.
Если класс является структурой (struct), то данные будут храниться в том месте, где создается экземпляр структуры (например, в стеке, если структура объявлена локально).
Таким образом, где именно будет храниться значимый тип данных, зависит от того, является ли класс ссылочным типом или значимым типом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда вы используете lock, поток блокируется до тех пор, пока не завершится выполнение кода внутри блока. Операции с await требуют освобождения потока, чтобы он мог продолжить выполнение других задач, что несовместимо с блокировкой потока через lock.
Если вы хотите использовать асинхронные операции с ожиданием, следует использовать другие механизмы синхронизации, такие как SemaphoreSlim, которые поддерживают асинхронное ожидание.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🎮⛰ Дорожная карта Unity-разработчика 2025: с нуля до джуна
Если вы хотите создать свою игру с нуля или систематизировать знания, эта дорожная карта — идеальный старт.
Рассмотрели все важные этапы: от основ языка C# до работы с физикой, интерфейсом и сторонними SDK. Шаг за шагом объясняются ключевые темы, такие как ООП, паттерны проектирования, корутины и оптимизация.
В конце бонус — подборка полезных ресурсов.
➡️ Пройти путь по карте
🐸 Библиотека шарписта
Если вы хотите создать свою игру с нуля или систематизировать знания, эта дорожная карта — идеальный старт.
Рассмотрели все важные этапы: от основ языка C# до работы с физикой, интерфейсом и сторонними SDK. Шаг за шагом объясняются ключевые темы, такие как ООП, паттерны проектирования, корутины и оптимизация.
В конце бонус — подборка полезных ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM