#Собес #postgres
🤔 Что такое схемы (schemas) в PostgreSQL?
Схемы в PostgreSQL — это контейнеры для объектов базы данных (таблиц, представлений, функций и т. д.). Они позволяют организовывать объекты базы данных в логически разделенные группы, что помогает упорядочить структуру базы данных и избегать конфликтов имен.
👉 Новости 👉 База вопросов
Схемы в PostgreSQL — это контейнеры для объектов базы данных (таблиц, представлений, функций и т. д.). Они позволяют организовывать объекты базы данных в логически разделенные группы, что помогает упорядочить структуру базы данных и избегать конфликтов имен.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵💫 Улучшения производительности
👉 Новости 👉 База вопросов
FrozenDictionary с целочисленными (int) ключами в .NET 10FrozenDictionary представляют собой коллекции, оптимизированные для чтения (Dictionary и Set), создание которых занимает больше времени, но чтение из них происходит быстрее по сравнению с неизменяемыми (immutable) коллекциями.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🥺 Внедрение настроек в .NET? Существует три основных интерфейса:
🟠
🟠
🟠
Используйте
Подробнее о том, как работает паттерн Options и когда какой интерфейс использовать: read
👉 Новости 👉 База вопросов
IOptions: кэшируется на всё время жизни приложенияIOptionsSnapshot: переоценивается при каждом запросе (scoped)IOptionsMonitor: позволяет получать текущее значение и реагировать на измененияИспользуйте
IOptions для статической конфигурации, IOptionsSnapshot — в веб-приложениях, где конфигурация может меняться между запросами, а IOptionsMonitor — когда нужно отслеживать изменения настроек.Подробнее о том, как работает паттерн Options и когда какой интерфейс использовать: read
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴1
#полезное
🤓 EF Core:
👉 Новости 👉 База вопросов
DbContextOptionsBuilder используется для настройки DbContext, как показано в примере для консольного проекта. Также он может применяться вместе с внедрением зависимостей (dependency injection)Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥴1
#Собес #postgres
🤔 Что такое Foreign Key (внешний ключ) в PostgreSQL?
Foreign Key - это ограничение в PostgreSQL, которое гарантирует целостность данных между двумя таблицами. Он связывает столбец одной таблицы с первичным ключом другой, обеспечивая, что все значения во внешнем ключе существуют в связанной таблице.
👉 Новости 👉 База вопросов
Foreign Key - это ограничение в PostgreSQL, которое гарантирует целостность данных между двумя таблицами. Он связывает столбец одной таблицы с первичным ключом другой, обеспечивая, что все значения во внешнем ключе существуют в связанной таблице.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь отслеживать изменения в базе данных в реальном времени?
Я реализовал Change Data Capture (CDC) в .NET с использованием Debezium, PostgreSQL и RabbitMQ.
Поток обработки:
🟠 PostgreSQL настроен на генерацию событий об изменениях
🟠 Debezium перехватывает эти изменения
🟠 События публикуются в RabbitMQ
🟠 MassTransit в .NET потребляет и обрабатывает их
Это лишь один из способов реализации архитектуры, основанной на событиях (Event-Driven Architecture).
Если ты проектируешь распределённые системы в .NET — вот полный гайд по созданию event-driven-систем с RabbitMQ
👉 Новости 👉 База вопросов
Я реализовал Change Data Capture (CDC) в .NET с использованием Debezium, PostgreSQL и RabbitMQ.
Поток обработки:
Это лишь один из способов реализации архитектуры, основанной на событиях (Event-Driven Architecture).
Если ты проектируешь распределённые системы в .NET — вот полный гайд по созданию event-driven-систем с RabbitMQ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😜 Видишь баг?
9 из 10 разработчиков пропускают его. Проверь себя
Проблема:
>
> Если
Решение:
✅ Явно оборачивай все такие команды в транзакцию вручную
Мелочь, а последствия могут быть серьёзные
👉 Новости 👉 База вопросов
9 из 10 разработчиков пропускают его. Проверь себя
Проблема:
>
ExecuteUpdateAsync и ExecuteDeleteAsync обходят Change Tracker в EF Core> Если
SaveChangesAsync() потом упадёт — обновления в базе не откатятся автоматическиРешение:
Мелочь, а последствия могут быть серьёзные
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤯1
#полезное
😜 5 недооценённых LINQ-методов, которые мгновенно улучшают твой код:
1⃣
2⃣
3⃣
4⃣
5⃣
Бонус, который почти попал в топ:
🟠
🟠
🟠
🟠
🟠
LINQ — кладезь полезных методов, если знаешь, где копать
👉 Новости 👉 База вопросов
Zip — объединяет две последовательности в парыChunk — разбивает коллекцию на чанки фиксированного размераOfType<T>() — фильтрует элементы по типуDistinctBy — возвращает уникальные элементы по заданному ключуSelectMany — разворачивает вложенные коллекции в плоский списокБонус, который почти попал в топ:
SequenceEqual — сравнивает две коллекции на равенствоAggregate — накапливает значение с помощью функции (reduce)GroupJoin — объединяет по группам (аналог LEFT OUTER JOIN)ToLookup — создает коллекцию, похожую на Dictionary, но с множеством значенийIntersect — возвращает пересечение двух коллекцийLINQ — кладезь полезных методов, если знаешь, где копать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что такое EXPLAIN в PostgreSQL?
EXPLAIN — это команда в PostgreSQL, которая показывает план выполнения запроса. Она помогает увидеть, как PostgreSQL планирует обрабатывать запрос, какие индексы используются и сколько времени займет выполнение каждого шага.
👉 Новости 👉 База вопросов
EXPLAIN — это команда в PostgreSQL, которая показывает план выполнения запроса. Она помогает увидеть, как PostgreSQL планирует обрабатывать запрос, какие индексы используются и сколько времени займет выполнение каждого шага.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Визуализатор планов SQL-запросов для Entity Framework
Расширение EFCore.Visualizer для Visual Studio может стать настоящим прорывом.
Оно позволяет разработчикам просматривать план выполнения SQL-запросов напрямую внутри Visual Studio.
👉 Новости 👉 База вопросов
Расширение EFCore.Visualizer для Visual Studio может стать настоящим прорывом.
Оно позволяет разработчикам просматривать план выполнения SQL-запросов напрямую внутри Visual Studio.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2
#полезное
😊 В .NET 10 появится
Теперь разработчики смогут удобно генерировать бесконечные последовательности как в синхронном, так и в асинхронном виде.
Гитхаб
👉 Новости 👉 База вопросов
{Async}Enumerable.{Infinite}SequenceТеперь разработчики смогут удобно генерировать бесконечные последовательности как в синхронном, так и в асинхронном виде.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое триггеры (Triggers) в PostgreSQL?
Триггер - это специальная функция, которая автоматически выполняется при определенных событиях в таблице, например, при вставке, обновлении или удалении данных. Они используются для проверки данных, поддержания целостности или логирования изменений.
👉 Новости 👉 База вопросов
Триггер - это специальная функция, которая автоматически выполняется при определенных событиях в таблице, например, при вставке, обновлении или удалении данных. Они используются для проверки данных, поддержания целостности или логирования изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 В .NET 10, который выйдет в ноябре этого года, значительно оптимизируют работу с небольшими массивами
Если JIT-компилятор определяет, что массив достаточно мал и не выходит за пределы области видимости метода, он размещает его в стеке, а не в куче. Это означает, что память не аллоцируется в heap, GC не задействуется, а производительность повышается почти в два раза.
Например, в .NET 9 массив из 11 элементов занимал 72 байта и выполнялся за 7.7 наносекунды. В .NET 10 те же данные, но 0 байт аллокации и всего 3.9 наносекунды. И самое главное это работает автоматически
👉 Новости 👉 База вопросов
Если JIT-компилятор определяет, что массив достаточно мал и не выходит за пределы области видимости метода, он размещает его в стеке, а не в куче. Это означает, что память не аллоцируется в heap, GC не задействуется, а производительность повышается почти в два раза.
Например, в .NET 9 массив из 11 элементов занимал 72 байта и выполнялся за 7.7 наносекунды. В .NET 10 те же данные, но 0 байт аллокации и всего 3.9 наносекунды. И самое главное это работает автоматически
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👋 Стриминговые API в C# — используй
🟠 Производители используют
🟠 Потребители читают данные через
Зачем нужны стриминговые API?
В отличие от bulk-передачи, стриминг отправляет данные пакетами.
Сколько и когда передавать — зависит от кода, создающего
Параметр
Где особенно полезно:
1⃣ Отправка больших (или даже бесконечных) наборов данных
Пример: поливать сад из шланга вместо таскания вёдер с водой.
Вёдра тяжелее (ресурсоёмко) и требуют ожидания (блокировка).
2⃣ Получение внешних данных — API, IoT-сенсоры, очереди сообщений
Когда нельзя предсказать, когда будет готов следующий элемент —
3⃣ Снижение потребления памяти
Данные проходят потоком и не накапливаются в памяти целиком.
👉 Новости 👉 База вопросов
IAsyncEnumerableIAsyncEnumerable оптимизирован для потоковой передачи данных и полностью совместим с async/await.IAsyncEnumerable<T> с yield returnawait foreachЗачем нужны стриминговые API?
В отличие от bulk-передачи, стриминг отправляет данные пакетами.
Сколько и когда передавать — зависит от кода, создающего
IAsyncEnumerable.Параметр
T задаёт тип элемента, который будет возвращаться в потоке.Где особенно полезно:
Пример: поливать сад из шланга вместо таскания вёдер с водой.
Вёдра тяжелее (ресурсоёмко) и требуют ожидания (блокировка).
Когда нельзя предсказать, когда будет готов следующий элемент —
IAsyncEnumerable идеально подходит.Данные проходят потоком и не накапливаются в памяти целиком.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️🔥 Рекомендуемые расширения для работы с Copilot prompt-файлами:
🟠 File Explorer for Visual Studio — даёт доступ к prompt-файлам прямо внутри Visual Studio.
🟠 Open in Visual Studio Code — позволяет удобно создавать и редактировать prompt-файлы во внешнем редакторе (VS Code)
👉 Новости 👉 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 Как организовывалось взаимодействие между микросервисами (REST API, брокеры сообщений) ?
Для синхронных операций использовали REST/gRPC: сервисы запрашивали данные друг у друга по НТТР или НТТР/2. Для асинхронных процессов - RabbitMQ или Kafka: публиковали события (OrderCreated) и слушали клиенты. REST подходит для прямых запросов с ожиданием ответа, брокеры - для фоновых задач, рассылок и обеспечения eventual consistency.
👉 Новости 👉 База вопросов
Для синхронных операций использовали REST/gRPC: сервисы запрашивали данные друг у друга по НТТР или НТТР/2. Для асинхронных процессов - RabbitMQ или Kafka: публиковали события (OrderCreated) и слушали клиенты. REST подходит для прямых запросов с ожиданием ответа, брокеры - для фоновых задач, рассылок и обеспечения eventual consistency.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 Временные сложности различных структур данных
Big O-нотация описывает, как производительность алгоритма растёт относительно размера входных данных (n). Она используется для оценки эффективности алгоритмов вне зависимости от оборудования или языка программирования.
👉 Новости 👉 База вопросов
Big O-нотация описывает, как производительность алгоритма растёт относительно размера входных данных (n). Она используется для оценки эффективности алгоритмов вне зависимости от оборудования или языка программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤓 В VS Code Insiders теперь по умолчанию включён IntelliSense в терминале
Попробуй — ты получишь плавные и динамичные подсказки прямо в терминале, например, при переключении на другую ветку
👉 Новости 👉 База вопросов
Попробуй — ты получишь плавные и динамичные подсказки прямо в терминале, например, при переключении на другую ветку
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😎 Это может быть полезно
WhatItPrints — это браузерная головоломка для разработчиков
Тебе показывают фрагмент кода, а ты должен угадать, что он выведет.
Поддерживает разные языки, включая C#, так что отлично прокачивает:
🟠 понимание синтаксиса
🟠 поведение компилятора
🟠 нюансы типов, LINQ, boxing/unboxing и т.п.
👉 Новости 👉 База вопросов
WhatItPrints — это браузерная головоломка для разработчиков
Тебе показывают фрагмент кода, а ты должен угадать, что он выведет.
Поддерживает разные языки, включая C#, так что отлично прокачивает:
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Какова сложность доступа к элементу по индексу в List ‹Т› и почему?
Доступ по индексу к
👉 Новости 👉 База вопросов
Доступ по индексу к
List‹T› выполняется за время О (1) - константное. Это происходит потому, что List<T› хранит элементы в непрерывном массиве, и обращение по индексу сводится к вычислению адреса памяти base + index * sizeof(T) и чтению значения.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵💫 Трудно отследить, что происходит внутри твоего .NET-приложения?
Вот базовая настройка OpenTelemetry, которую я использую в каждом проекте:
- ASP .NET Core instrumentation
- HttpClient instrumentation
- EF Core instrumentation
- Redis instrumentation
- Npgsql (или SqlClient)
Это даёт полноценные, сквозные трассировки — и всё это быстро.
Для визуализации можно использовать:
- Seq
- Jaeger
- Grafana
- Aspire Dashboard
Seq также поддерживает структурированные логи, что хорошо сочетается с трассировкой.
Вот практическое руководство: ссылка
👉 Новости 👉 База вопросов
Вот базовая настройка OpenTelemetry, которую я использую в каждом проекте:
- ASP .NET Core instrumentation
- HttpClient instrumentation
- EF Core instrumentation
- Redis instrumentation
- Npgsql (или SqlClient)
Это даёт полноценные, сквозные трассировки — и всё это быстро.
Для визуализации можно использовать:
- Seq
- Jaeger
- Grafana
- Aspire Dashboard
Seq также поддерживает структурированные логи, что хорошо сочетается с трассировкой.
Вот практическое руководство: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM