
Backend
Очень активная и лояльная аудитория Backend разработчиков сайта easyoffer
Статистика канала
The Billion Dollar Mistake) был введён Тони Хоаром (Tony Hoare), создателем NULL, который в 2009 году на конференции признался, что введение NULL было его крупнейшей ошибкой. Название связано с тем, что NULL стал причиной множества багов, сбоев в программах и уязвимостей, что привело к огромным финансовым потерям в индустрии.
🚩Какие проблемы вызывает `NULL`?
🟠NullPointerException (NPE) и аварийные сбои
- Попытка вызвать метод у NULL приводит к ошибке NullPointerException в Java, NullReferenceException в C# и аналогичным сбоям в других языках.
- Это одна из самых распространённых ошибок в программировании.
🟠Дополнительные проверки и сложность кода
- Из-за NULL приходится постоянно писать проверки if (x != null), что раздувает код и делает его менее читаемым.
- Если забыть такую проверку, можно получить неожиданный сбой.
🟠Слабая типизация и отсутствие явности
- NULL можно передавать в любую функцию или объект, что ломает строгую типизацию.
- Код становится менее предсказуемым.
🟠Проблемы с базами данных
- NULL в SQL ведёт себя неинтуитивно (NULL != NULL, сравнение может давать UNKNOWN).
- Может приводить к некорректным вычислениям в агрегатных функциях.
🟠Уязвимости в безопасности
- Некоторые атаки используют NULL для взлома систем (например, null dereference в C/C++ может привести к DoS-атаке).
- NULL может скрывать ошибки и приводить к утечке данных.
🚩Какие альтернативы `NULL`?
🟠Optional / Maybe (Java, Kotlin, Haskell, Rust)
- Использование обёрток вроде Optional<T> (Java) или Option<T> (Rust) позволяет явно указывать возможность отсутствия значения.
🟠Исключения вместо `NULL` (C# и Java)
- Вместо возврата NULL можно выбрасывать осмысленные исключения (IllegalArgumentException, NotFoundException).
🟠Специальные значения по умолчанию
- Вместо NULL можно использовать дефолтные объекты (EmptyList, GuestUser и т. д.).
🟠Типы-юнит (Tagged Union) в функциональных языках
- Например, в Haskell и Rust применяют Either<T, E>, Option<T>, что делает обработку NULL-подобных случаев более явной.
Ставь 👍 и забирай 📚 Базу знаний
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._instance
# Пример использования
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # True{}
🚩Реализация на Java
public class Singleton {
private static Singleton instance;
private Singleton() {
// приватный конструктор предотвращает создание объектов вне класса
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
// Пример использования
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton1 == singleton2); // True{}
Ставь 👍 и забирай 📚 Базу знанийINNER JOIN, LEFT JOIN, RIGHT JOIN, и каждый из них имеет свои особенности и использование. Рассмотрим их различия на примере двух таблиц:
Таблица A:
id | name
-----------
1 | Alice
2 | Bob
3 | Charlie{}
Таблица B:
id | city
-----------
1 | New York
3 | Los Angeles
4 | Chicago {}
🟠INNER JOIN
INNER JOIN возвращает только те строки, которые имеют совпадения в обеих таблицах. Если нет совпадающих строк, такие строки не включаются в результат.
SELECT A.id, A.name, B.city
FROM A
INNER JOIN B ON A.id = B.id;{}
Результат:
id | name | city
------------------------
1 | Alice | New York
3 | Charlie | Los Angeles{}
🟠LEFT JOIN (или LEFT OUTER JOIN)
LEFT JOIN возвращает все строки из левой таблицы (A) и совпадающие строки из правой таблицы (B). Если совпадения не найдено, в результате будут строки из левой таблицы с NULL значениями для столбцов из правой таблицы.
SELECT A.id, A.name, B.city
FROM A
LEFT JOIN B ON A.id = B.id;{}
Результат:
id | name | city
------------------------
1 | Alice | New York
2 | Bob | NULL
3 | Charlie | Los Angeles{}
🟠RIGHT JOIN (или RIGHT OUTER JOIN)
RIGHT JOIN возвращает все строки из правой таблицы (B) и совпадающие строки из левой таблицы (A). Если совпадения не найдено, в результате будут строки из правой таблицы с NULL значениями для столбцов из левой таблицы.
SELECT A.id, A.name, B.city
FROM A
RIGHT JOIN B ON A.id = B.id;{}
Результат:
id | name | city
------------------------
1 | Alice | New York
3 | Charlie | Los Angeles
4 | NULL | Chicago{}
🟠FULL JOIN (или FULL OUTER JOIN)
FULL JOIN возвращает все строки, когда есть совпадение в одной из таблиц. Это объединение LEFT JOIN и RIGHT JOIN. Если совпадения не найдено, результат будет содержать NULL значения для столбцов из другой таблицы.
SELECT A.id, A.name, B.city
FROM A
FULL JOIN B ON A.id = B.id;
id | name | city
------------------------
1 | Alice | New York
2 | Bob | NULL
3 | Charlie | Los Angeles
4 | NULL | Chicago{}
Ставь 👍 и забирай 📚 Базу знанийОтзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Backend — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 3.9K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 5.4, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 699.3 ₽, а за 25 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий