#Собес #postgres
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?
В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.
👉 Новости 👉 Платформа
В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#ЛитКод
Задача: 728. Self Dividing Numbers
Например, 128 является саморазделяющимся числом, потому что 128 % 1 == 0, 128 % 2 == 0 и 128 % 8 == 0. Саморазделяющееся число не может содержать цифру ноль. Если даны два целых числа left и right, верните список всех саморазделяющихся чисел в диапазоне [left, right].
Пример:
👨💻 Алгоритм:
1⃣ Переберите все числа в диапазоне от left до right.
2⃣ Для каждого числа проверьте, является ли оно саморазделяющимся: Разделите число на его цифры. Убедитесь, что ни одна цифра не равна нулю и число делится на каждую из своих цифр без остатка.
3⃣ Добавьте саморазделяющиеся числа в результативный список и верните его.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 728. Self Dividing Numbers
Например, 128 является саморазделяющимся числом, потому что 128 % 1 == 0, 128 % 2 == 0 и 128 % 8 == 0. Саморазделяющееся число не может содержать цифру ноль. Если даны два целых числа left и right, верните список всех саморазделяющихся чисел в диапазоне [left, right].
Пример:
Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
public class Solution {
public IList<int> SelfDividingNumbers(int left, int right) {
List<int> result = new List<int>();
for (int num = left; num <= right; num++) {
if (IsSelfDividing(num)) {
result.Add(num);
}
}
return result;
}
private bool IsSelfDividing(int num) {
int n = num;
while (n > 0) {
int digit = n % 10;
if (digit == 0 || num % digit != 0) {
return false;
}
n /= 10;
}
return true;
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
LeetCode
Self Dividing Numbers - LeetCode
Can you solve this real interview question? Self Dividing Numbers - A self-dividing number is a number that is divisible by every digit it contains.
* For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
A self…
* For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
A self…
👍4❤2
#полезное
🛞 Числовой
Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.
👉 Новости 👉 База вопросов
StringComparer появится в dotnet 10Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
#Собес #postgres
🤔 Какие существуют типы индексов в PostgreSQLu когда их использовать?
PostgreSQL поддерживает несколько типов индексов: B-Tree, Hash, GIN, GiST, BRIN, и SP-GiST. B-Tree подходит для поиска равенства и диапазона, Hash - только для равенства, GIN и GiST - для полнотекстового поиска, а BRIN оптимален для больших таблиц с последовательными данными.
👉 Новости 👉 Платформа
PostgreSQL поддерживает несколько типов индексов: B-Tree, Hash, GIN, GiST, BRIN, и SP-GiST. B-Tree подходит для поиска равенства и диапазона, Hash - только для равенства, GIN и GiST - для полнотекстового поиска, а BRIN оптимален для больших таблиц с последовательными данными.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😊 Не совершайте эту ошибку
Не используйте
Метод
Представьте метод, который вызывается очень часто — это может деградировать производительность приложения.
Кроме того,
Что использовать вместо этого?
В .NET есть мощное перечисление —
Возможные варианты StringComparison:
- Ordinal — используйте в большинстве случаев, когда культурные правила не важны. Самый быстрый вариант.
- OrdinalIgnoreCase — для сравнений без учёта регистра, где культурные правила не имеют значения.
- CurrentCulture и CurrentCultureIgnoreCase — используйте при сравнении строк, отображаемых пользователю, так как они учитывают культурные правила.
- InvariantCulture и InvariantCultureIgnoreCase — подходят, когда нужна единообразная логика вне зависимости от культуры, например, при сохранении и извлечении данных.
> EF Core выбросит исключение, если использовать методы вроде
>
Это не будет работать с EF.
Если вы используете SQL Server с коллацией по умолчанию, сравнение строк уже нечувствительно к регистру, поэтому обычное
👉 Новости 👉 База вопросов
Не используйте
.ToLower() для сравнения строк. Почему? Метод
.ToLower() создаёт новую строку в памяти для каждого сравнения, что приводит к лишним аллокациям. Представьте метод, который вызывается очень часто — это может деградировать производительность приложения.
Кроме того,
.ToLower() чувствителен к культуре, то есть результат может различаться в зависимости от текущей культуры, установленной в исполняющем потоке. Что использовать вместо этого?
В .NET есть мощное перечисление —
StringComparison. Возможные варианты StringComparison:
- Ordinal — используйте в большинстве случаев, когда культурные правила не важны. Самый быстрый вариант.
- OrdinalIgnoreCase — для сравнений без учёта регистра, где культурные правила не имеют значения.
- CurrentCulture и CurrentCultureIgnoreCase — используйте при сравнении строк, отображаемых пользователю, так как они учитывают культурные правила.
- InvariantCulture и InvariantCultureIgnoreCase — подходят, когда нужна единообразная логика вне зависимости от культуры, например, при сохранении и извлечении данных.
> EF Core выбросит исключение, если использовать методы вроде
>
String.Equals(string, StringComparison), так как они не транслируются в SQL. Это не будет работать с EF.
Если вы используете SQL Server с коллацией по умолчанию, сравнение строк уже нечувствительно к регистру, поэтому обычное
a == b или string.Equals(a, b) в LINQ будет работать.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Техническое собеседование. Осень 2024. Просил 270к+. Опыт в резюме: 3.6 года. Обсуждали опыт работы с микросервисами, оптимизацию запросов. Был лайвкодинг - задачи на проверку дубликатов в массиве и вычисление чисел Фибоначчи.
Вопросы:
- Как обеспечивается атомарность и изоляция транзакций?
- Как проектировали архитектуру базы данных для системы с высокой нагрузкой?
- Как работают кластеризованные и некластеризованные индексы? Когда их стоит применять?
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL) ?
Все вопросы можно посмотреть на нашей платформе
#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #postgres
🤔 Что такое таблица в PostgreSQL и как её создать?
Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда
👉 Новости 👉 Платформа
Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда
CREATE TABLE имя таблицы (список_ столбцов) ; .Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😬 Посмотрите этот классный open-source инструмент для визуализации JSON-данных в интерактивных графах.
Он предлагает функции конвертации JSON в другие форматы (CSV, YAML), генерацию JSON Schema, выполнение запросов и экспорт визуализаций в виде изображений.
Также он умеет форматировать, валидировать и создавать интерфейсы TypeScript.
Репозиторий: https://github.com/AykutSarac/jsoncrack.com
👉 Новости 👉 База вопросов
Он предлагает функции конвертации JSON в другие форматы (CSV, YAML), генерацию JSON Schema, выполнение запросов и экспорт визуализаций в виде изображений.
Также он умеет форматировать, валидировать и создавать интерфейсы TypeScript.
Репозиторий: https://github.com/AykutSarac/jsoncrack.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#полезное
🤣 Паттерн Options в .NET — это одна из тех фич, которые я стабильно использую во всех своих C#-проектах
✅ Более чистое управление конфигами
✅ Сильно типизированные классы
✅ Простая интеграция с DI
✅ Без проблем работает с
Почему это важно
Вместо того чтобы раскидывать значения конфигов по всему коду, ты централизуешь их в структурированных классах. Это не только улучшает читаемость, но и делает код более тестируемым и удобным в сопровождении.
Обычно это выглядит так
🟠 Определяешь конфиг в
🟠 Создаёшь POCO-класс
🟠 Биндишь его через
🟠 Инжектишь в сервисы через
Просто. Масштабируемо. Аккуратно.
А ты используешь этот паттерн у себя или до сих пор дёргаешь значения конфигов через
👉 Новости 👉 База вопросов
appsettings.json, secrets.json, Azure Key Vault и прочим Почему это важно
Вместо того чтобы раскидывать значения конфигов по всему коду, ты централизуешь их в структурированных классах. Это не только улучшает читаемость, но и делает код более тестируемым и удобным в сопровождении.
Обычно это выглядит так
appsettings.json .AddOptions<T>().BindConfiguration() IOptions<T> Просто. Масштабируемо. Аккуратно.
А ты используешь этот паттерн у себя или до сих пор дёргаешь значения конфигов через
IConfiguration["key"] Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#Собес #postgres
🤔 Что такое PostgreSQL каковы его основные особенности?
PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.
👉 Новости 👉 Платформа
PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Как создать новую базу данных в PostgreSQL?
B PostgreSQL новую базу данных можно создать с помощью команды SQL
👉 Новости 👉 Платформа
B PostgreSQL новую базу данных можно создать с помощью команды SQL
CREATE DATABASE имя_базы; или используя утилиту командной строки createdb имя_базы Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Изоляция данных в модульном монолите
🟠 Схема и роль на модуль — для каждого модуля создаётся собственная схема и роль
🟠 Привилегии только для своей схемы — модуль не имеет доступа к данным других схем
🟠 Отдельный DbContext + схема по умолчанию — разделение кода и данных на уровне ORM
🟠 Разные строки подключения и миграции — независимое управление конфигурацией и развёртыванием
🟠 Read-only представления для межмодульных запросов — безопасный доступ к данным между модулями
Смотрите пошаговое руководство: ссылка
👉 Новости 👉 База вопросов
Смотрите пошаговое руководство: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😅 Запуск .NET в браузере без Blazor
https://andrewlock.net/running-dotnet-in-the-browser-without-blazor/
В этой статье автор показывает, как запустить .NET в браузере без использования Blazor, а вместо этого опереться на более низкоуровневые абстракции, которые предоставляют [JSImport] и [JSExport].
👉 Новости 👉 База вопросов
https://andrewlock.net/running-dotnet-in-the-browser-without-blazor/
В этой статье автор показывает, как запустить .NET в браузере без использования Blazor, а вместо этого опереться на более низкоуровневые абстракции, которые предоставляют [JSImport] и [JSExport].
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😱 Вызов Azure Function из Azure SQL DB
Да, это реально. Хранимая процедура
👉 Новости 👉 База вопросов
Да, это реально. Хранимая процедура
sp_invoke_external_rest_endpoint позволяет дергать HTTPS REST endpoint, переданный ей в качестве аргумента.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🤯 Что такое RBAC и как это помогает с авторизацией
RBAC расшифровывается как Role-Based Access Control, то есть управление доступом на основе ролей
Суть простая
• У ролей есть набор разрешений
• Пользователи получают роли
• Разрешения определяют, что пользователи могут делать
Всё довольно просто, но при этом мощно
Хотя сами по себе роли могут быть слишком широкими
Поэтому я предпочитаю комбинировать роли с более точечными разрешениями.
Вместо того чтобы хардкодить правила доступа, я привязываю разрешения к конкретным действиям и уже потом связываю эти разрешения с ролями
Так проще управлять и легче расширять
Как смоделировать такой подход и применить его в .NET — читать
👉 Новости 👉 База вопросов
RBAC расшифровывается как Role-Based Access Control, то есть управление доступом на основе ролей
Суть простая
• У ролей есть набор разрешений
• Пользователи получают роли
• Разрешения определяют, что пользователи могут делать
Всё довольно просто, но при этом мощно
Хотя сами по себе роли могут быть слишком широкими
Поэтому я предпочитаю комбинировать роли с более точечными разрешениями.
Вместо того чтобы хардкодить правила доступа, я привязываю разрешения к конкретным действиям и уже потом связываю эти разрешения с ролями
Так проще управлять и легче расширять
Как смоделировать такой подход и применить его в .NET — читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏕 Rider 2025.2 теперь с расширенной поддержкой C# 14
Теперь доступны все свежие фичи языка:
🟠 Extensions
🟠 Partial events и конструкторы
🟠 Null-conditional assignments
Плюс обновления анализа кода в Rider 2025.2 : подробнее
👉 Новости 👉 База вопросов
Теперь доступны все свежие фичи языка:
Плюс обновления анализа кода в Rider 2025.2 : подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
🏠 Когда исключения неизбежны, нужен механизм для их обработки.
Вот как это можно настроить за несколько минут:
Начиная с .NET 8 у вас есть интерфейс
Это абстракция для управления исключениями с одним методом:
Он отвечает за обработку исключений в пайплайне ASP.NET Core.
Метод возвращает
Это позволяет реализовать кастомную логику под разные сценарии.
Для конфигурации нужно сделать три шага:
1⃣ Зарегистрировать сервис
2⃣ Зарегистрировать
3⃣ Зарегистрировать
Третий шаг опционален, но я настоятельно рекомендую его использовать, чтобы ошибки были более читаемыми.
👉 Новости 👉 База вопросов
Вот как это можно настроить за несколько минут:
Начиная с .NET 8 у вас есть интерфейс
IExceptionHandlerЭто абстракция для управления исключениями с одним методом:
TryHandleAsyncОн отвечает за обработку исключений в пайплайне ASP.NET Core.
Метод возвращает
true, если исключение обработано успешно, и false, если его нельзя обработать.Это позволяет реализовать кастомную логику под разные сценарии.
Для конфигурации нужно сделать три шага:
IExceptionHandler через dependency injectionExceptionHandlerMiddleware в пайплайне запросовProblemDetails ответТретий шаг опционален, но я настоятельно рекомендую его использовать, чтобы ошибки были более читаемыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #mongoDB
🤔 Что такое составной индекс и когда его следует использовать?
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь писать более чистый C#-код?
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
👉 Новости 👉 База вопросов
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
#полезное
🤯 Примеры использования разделителя цифр (_) в C#
👉 Новости 👉 База вопросов
// Можно использовать в целых числах
int oneMillion = 1_000_000;
Console.WriteLine(oneMillion); // Выведет: 1000000
// Работает и с числами с плавающей точкой
double billion = 1_000_000_000.0;
Console.WriteLine(billion); // Выведет: 1000000000
// Поддерживается и в двоичной, и в шестнадцатеричной записи
int binary = 0b1010_1011_1100;
Console.WriteLine(binary); // Выведет: 2748
int hexadecimal = 0x1234_abcd;
Console.WriteLine(hexadecimal); // Выведет: 305441741
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4