Напишите особенности обобщений на C#?
Generics — это метод, который улучшает ваши программы во многих отношениях, например: Он помогает вам в повторном использовании кода, производительности и безопасности типов. Вы можете создавать собственные универсальные классы, методы, интерфейсы и делегаты. Вы можете создавать универсальные классы коллекций. Библиотека классов .NET Framework содержит много новых универсальных классов коллекций в пространстве имен System.Collections.Generic. Вы также можете получить информацию о типах, используемых в универсальных типах данных во время выполнения.
Библиотека собеса по С#
Библиотека собеса по С#
Что такое асинхронные потоки в C#?
Асинхронные потоки в C# — это языковая функция, представленная в C# 8.0, которая позволяет вам потреблять асинхронные последовательности данных асинхронно. Они объединяют возможности async/await и IEnumerable/IAsyncEnumerable для обеспечения эффективной и удобной обработки асинхронных потоков данных.
Библиотека собеса по С#
Библиотека собеса по С#
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
Forwarded from Proglib.academy | IT-курсы
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как устроить высокопроизводительную сериализацию JSON без лишних аллокаций?
Реюзайте один JsonSerializerOptions (кешируйте статически), используйте System.Text.Json с Utf8JsonWriter/IAsyncEnumerable<T> для стриминга, избегайте промежуточных строк, включайте source-generators (JsonSerializerContext) вместо рефлексии, буферизуйте через ArrayPool<byte> и пишите напрямую в PipeWriter/BodyWriter.
Библиотека собеса по С#
Библиотека собеса по С#
Разница между LINQ lazy loading и eager loading
В случае lazy loading зависимые таблицы (дочерние объекты) не загружаются автоматически с родительскими, а загрузятся в тот момент, когда они понадобятся. В LINQ по умолчанию используется lazy loading.
В случае eager loading зависимые объекты загружаются автоматически с родительской таблицей. Для того, чтобы использовать eager loading, нужно применить метод Include().
🐸 Библиотека собеса по С#
В случае lazy loading зависимые таблицы (дочерние объекты) не загружаются автоматически с родительскими, а загрузятся в тот момент, когда они понадобятся. В LINQ по умолчанию используется lazy loading.
В случае eager loading зависимые объекты загружаются автоматически с родительской таблицей. Для того, чтобы использовать eager loading, нужно применить метод Include().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механика. Нашли альтернативу 👇
🥱1
Forwarded from Proglib.academy | IT-курсы
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.
Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки
Please open Telegram to view this post
VIEW IN TELEGRAM
Долгоживущий .NET-сервис постепенно “распухает” по памяти без явных LOH-пиков. В дампе видно множество делегатов/лямбд, Timer и CancellationTokenRegistration, висящих в Gen2. Как диагностировать и устранить утечки из-за событий/таймеров/регистраций?
Проанализировать пути до корней (dotMemory/PerfView/dotnet-dump gcroot) — проверить коллекции подписчиков и списки делегатов у источников событий. Убедиться, что:
✍🏻 все подписки снимаются в Dispose/IAsyncDisposable;
✍🏻 CancellationToken.Register хранит IDisposable и корректно Dispose();
✍🏻 Timer/PeriodicTimer/System.Threading.Channels закрываются/завершаются;
✍🏻 не удерживаются замыканиями большие объекты/this.
При необходимости — слабые события/WeakReference, паттерн “own the lifetime”, и тест “утечек” в CI с сравнением heap-снимков.
Библиотека собеса по С#
✍🏻 все подписки снимаются в Dispose/IAsyncDisposable;
✍🏻 CancellationToken.Register хранит IDisposable и корректно Dispose();
✍🏻 Timer/PeriodicTimer/System.Threading.Channels закрываются/завершаются;
✍🏻 не удерживаются замыканиями большие объекты/this.
При необходимости — слабые события/WeakReference, паттерн “own the lifetime”, и тест “утечек” в CI с сравнением heap-снимков.
Библиотека собеса по С#
❤1🥱1
ASP.NET Core API под нагрузкой: как сделать сервис устойчивым к сбоям и росту трафика
Пока пользователей немного, ASP.NET Core API обычно работает быстро и без ошибок. Но с ростом нагрузки начинают проявляться проблемы: отдельные запросы занимают все доступные ресурсы, повторные обращения только увеличивают нагрузку, операции продолжают выполняться даже после отключения клиента, а ошибки во внешних сервисах могут привести к каскадным отказам.
На открытом уроке 3 сентября в 20:00 разберём, как защитить ASP.NET Core API от подобных ситуаций. Возьмём сервис с типичными проблемами, проведём нагрузочное тестирование, найдём узкие места и поэтапно внедрим механизмы защиты. После каждого изменения сравним результаты и посмотрим, как они влияют на время ответа, пропускную способность и количество ошибок. Поговорим о Rate Limiting, контроле числа одновременно выполняемых запросов, использовании CancellationToken, паттернах Timeout и Circuit Breaker для внешних сервисов, а также о кешировании в Redis и о том, как избежать ситуации, когда повторные попытки только усиливают перегрузку системы.
Урок не для тех, кто только начал знакомство с ASP.NET Core и хочет изучить базовый синтаксис. Будет полезен C#-разработчикам, создающим Web API, backend-инженерам, столкнувшимся с ростом нагрузки, и всем, кто хочет перейти от базового использования ASP.NET Core к production-практикам.
После урока вы будете понимать не только какие механизмы доступны в ASP.NET Core, но и когда их стоит применять, чтобы API оставался стабильным даже при высокой нагрузке.
👉 Записаться
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пока пользователей немного, ASP.NET Core API обычно работает быстро и без ошибок. Но с ростом нагрузки начинают проявляться проблемы: отдельные запросы занимают все доступные ресурсы, повторные обращения только увеличивают нагрузку, операции продолжают выполняться даже после отключения клиента, а ошибки во внешних сервисах могут привести к каскадным отказам.
На открытом уроке 3 сентября в 20:00 разберём, как защитить ASP.NET Core API от подобных ситуаций. Возьмём сервис с типичными проблемами, проведём нагрузочное тестирование, найдём узкие места и поэтапно внедрим механизмы защиты. После каждого изменения сравним результаты и посмотрим, как они влияют на время ответа, пропускную способность и количество ошибок. Поговорим о Rate Limiting, контроле числа одновременно выполняемых запросов, использовании CancellationToken, паттернах Timeout и Circuit Breaker для внешних сервисов, а также о кешировании в Redis и о том, как избежать ситуации, когда повторные попытки только усиливают перегрузку системы.
Урок не для тех, кто только начал знакомство с ASP.NET Core и хочет изучить базовый синтаксис. Будет полезен C#-разработчикам, создающим Web API, backend-инженерам, столкнувшимся с ростом нагрузки, и всем, кто хочет перейти от базового использования ASP.NET Core к production-практикам.
После урока вы будете понимать не только какие механизмы доступны в ASP.NET Core, но и когда их стоит применять, чтобы API оставался стабильным даже при высокой нагрузке.
👉 Записаться
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru