Backend
3.95K subscribers
38 photos
716 links
Комьюнити Backend программистов.
Python, Java, Golang, PHP, C#, C/C++, DevOps

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
🤔 Как выбрать данные из двух таблиц без метода JOIN()?

Можно использовать:
- Подзапросы (SELECT ... WHERE ... IN) – выбираем данные из одной таблицы, используя фильтр из другой.
- Объединение (UNION) – соединение строк двух таблиц, если у них одинаковая структура.
- Перекрестное соединение (CROSS JOIN) – аналог JOIN, но без явного указания соединения.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Расскажи об отличиях MVC от MVP?

MVC (Model-View-Controller) и MVP (Model-View-Presenter) – это архитектурные шаблоны, используемые в разработке программного обеспечения для разделения логики приложения на отдельные компоненты. Хотя обе архитектуры помогают улучшить структуру и поддерживаемость кода, между ними существуют важные различия.

🚩MVC (Model-View-Controller)

🟠Model (Модель)
Отвечает за управление данными и бизнес-логикой приложения. Она не знает о существовании View и Controller.

🟠View (Представление)
Отображает данные, полученные от Model, и отправляет пользовательский ввод в Controller.

🟠Controller (Контроллер)
Получает ввод от View, обновляет Model и выбирает, какое View должно быть обновлено.

🚩MVP (Model-View-Presenter)

🟠Model (Модель)
Отвечает за управление данными и бизнес-логикой приложения.

🟠View (Представление)
Отображает данные и передает пользовательский ввод Presenter'у.

🟠Presenter (Презентер)
Получает ввод от View, обновляет Model и передает данные обратно в View для отображения.

🚩Основные отличия

🟠Взаимодействие View и других компонентов
В MVC View взаимодействует напрямую с Model. В MVP View взаимодействует только с Presenter, а Presenter уже работает с Model.

🟠Уведомления об изменениях
В MVC Model уведомляет View об изменениях напрямую. В MVP Model уведомляет Presenter, а Presenter обновляет View.

🟠Роль Controller и Presenter
В MVC Controller отвечает за определение, какое View отображать. В MVP Presenter отвечает за всю логику взаимодействия между Model и View, а также за обновление View.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое IP?

Это сетевой протокол, который определяет правила адресации и передачи данных между устройствами в сети.
Разделяется на:
- IPv4 – классические 32-битные адреса (например,
192.168.1.1).
- IPv6 – 128-битные адреса (например, 2001:db8::ff00:42:8329), решающие проблему нехватки IP-адресов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое JSON?

Это легкий формат обмена данными, который легко читается и пишется человеком, а также легко парсится и генерируется компьютером. Он используется для представления структурированных данных в текстовом формате и основан на подмножестве языка программирования JavaScript, но независим от него. JSON часто используется для передачи данных между сервером и веб-приложением в формате, который легко обрабатывается.

🚩Основные характеристики

🟠Простота
JSON имеет простой и понятный синтаксис, состоящий из двух основных структур: коллекций пар "ключ-значение" (объектов) и упорядоченных списков значений (массивов). Это делает его легким для понимания и работы как для людей, так и для машин.

🟠Легковесность
В отличие от более сложных форматов, таких как XML, JSON занимает меньше места благодаря лаконичному синтаксису, что делает его идеальным для передачи данных по сети, особенно в веб-приложениях.

🟠Язык-независимость
Хотя JSON основан на синтаксисе JavaScript, он поддерживается практически всеми языками программирования. В большинстве современных языков существуют библиотеки для парсинга и генерации JSON, что облегчает его интеграцию в различные системы.

🟠Читаемость человеком
JSON форматы легко читаются человеком благодаря своей структурированности и использованию простой текстовой нотации.

🚩Структура

🟠Объекты
Представляют собой коллекции пар "ключ-значение", заключенные в фигурные скобки {}. Ключи являются строками, а значения могут быть любыми допустимыми типами данных JSON (строки, числа, массивы, объекты, логические значения, null).
  {
"name": "John",
"age": 30,
"isStudent": false,
"address": {
"street": "123 Main St",
"city": "Anytown"
},
"courses": ["Math", "Science", "History"]
}


🟠Массивы
Представляют собой упорядоченные списки значений, заключенные в квадратные скобки []. Значения могут быть любого типа данных JSON.
["apple", "banana", "cherry"]  


🟠Примитивные типы данных
Включают строки, числа, логические значения (true или false), и null.
  {
"stringExample": "Hello, World!",
"numberExample": 42,
"booleanExample": true,
"nullExample": null
}


🚩Использование JSON

🟠Передача данных между клиентом и сервером
JSON широко используется в веб-разработке для обмена данными между клиентскими приложениями и сервером через HTTP-запросы, обычно с использованием методов GET или POST.

🟠Конфигурационные файлы
JSON используется для хранения конфигурационных настроек в различных приложениях, поскольку его структура легко читаема и редактируема.

🟠Хранение данных
В некоторых базах данных, таких как MongoDB, JSON используется как формат для хранения документов.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Чем отличаются LEFT JOIN от INNER JOIN?

- LEFT JOIN – возвращает все записи из левой таблицы и только совпадающие из правой. Если совпадений нет, недостающие значения будут NULL.
- INNER JOIN – возвращает только записи, у которых есть совпадения в обеих таблицах.
LEFT JOIN используют, если важны все данные из первой таблицы, INNER JOIN – если нужны только совпадающие записи.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какая разница у протоколов http и https ?

Основное различие между протоколами HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) заключается в уровне безопасности, который они обеспечивают при передаче данных между клиентом (например, веб-браузером) и сервером.

🚩Основные различия

🟠Шифрование
HTTP: Данные передаются в открытом виде, что делает их уязвимыми для перехвата и чтения злоумышленниками.
HTTPS: Данные передаются в зашифрованном виде с использованием SSL/TLS (Secure Sockets Layer/Transport Layer Security). Это обеспечивает защиту данных от перехвата и несанкционированного доступа.

🟠Аутентификация
HTTP: Отсутствует механизм аутентификации, что затрудняет проверку подлинности веб-сайта.
HTTPS: Использует сертификаты SSL/TLS, которые удостоверяют подлинность веб-сайта, подтверждая, что соединение установлено с тем сервером, с которым намеревался связаться пользователь.

🟠Интегритет данных
HTTP: Данные могут быть изменены или повреждены во время передачи, и это не будет обнаружено.
HTTPS: Гарантирует целостность данных, так как любые изменения данных при передаче будут обнаружены, и соединение будет разорвано.

🟠Порт
HTTP: Использует порт 80 по умолчанию.
HTTPS: Использует порт 443 по умолчанию.

🚩Плюсы

Безопасность
Обеспечивает защиту конфиденциальной информации, такой как логины, пароли, номера кредитных карт.

Доверие пользователей
Пользователи склонны больше доверять веб-сайтам, использующим HTTPS, так как это указывает на то, что сайт заботится о безопасности данных.

SEO
Поисковые системы, такие как Google, предпочитают сайты, использующие HTTPS, и ранжируют их выше по сравнению с сайтами, использующими HTTP.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Что такое Git?

Это распределенная система контроля версий (VCS), которая позволяет отслеживать изменения в коде, работать с разными версиями и объединять их.
Основные возможности:
- Ведение истории изменений

- Совместная работа над проектами
- Ветки (branching) и слияния (merge/rebase)
- Работа с удаленными репозиториями (GitHub, GitLab)


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Какие бывают блокировки в PostgreSQL?

В PostgreSQL существует несколько видов блокировок, которые используются для управления конкурентным доступом к данным и обеспечения целостности транзакций.

🚩Блокировки уровня таблицы (Table-Level Locks)

Эти блокировки применяются к целым таблицам и используются для операций, которые требуют эксклюзивного доступа к таблице.

🟠ACCESS SHARE:
Блокировка на уровне доступа для чтения данных из таблицы (например, при выполнении команды SELECT). Не блокирует другие команды SELECT.

🟠ROW SHARE:
Блокировка уровня строки, позволяющая другим транзакциям выполнять команды SELECT FOR UPDATE и SELECT FOR SHARE.

🟠ROW EXCLUSIVE:
Блокировка, применяемая при вставке, обновлении или удалении строк (INSERT, UPDATE, DELETE). Блокирует блокировки SHARE и EXCLUSIVE.

🟠SHARE UPDATE EXCLUSIVE:
Используется для выполнения команд, которые обновляют индексы, но не данные (VACUUM). Блокирует другие блокировки SHARE UPDATE EXCLUSIVE и более строгие.

🟠SHARE:
Блокировка для чтения данных из таблицы с возможностью блокировки изменений. Используется для операций, которые должны видеть согласованное состояние данных (ANALYZE).

🟠SHARE ROW EXCLUSIVE:
Используется для команд, которые выполняют чтение с возможностью блокировки последующих изменений, таких как CREATE INDEX CONCURRENTLY.

🟠EXCLUSIVE:
Блокирует доступ к таблице для всех операций, кроме команд SELECT и команд с уровнем блокировки ACCESS SHARE.

🟠ACCESS EXCLUSIVE:
Самая строгая блокировка, блокирующая все другие операции. Применяется для структурных изменений таблицы (ALTER TABLE, DROP TABLE).

🚩Блокировки уровня строки (Row-Level Locks)

Эти блокировки применяются к отдельным строкам таблицы и используются для управления конкурентным доступом к данным на более детальном уровне.

🟠SELECT FOR UPDATE:
Блокирует выбранные строки для обновления другими транзакциями. Строки с такой блокировкой могут быть изменены только текущей транзакцией.

🟠SELECT FOR SHARE:
Блокирует строки для чтения, но не для изменения. Другие транзакции могут читать эти строки, но не изменять их.

🟠SELECT FOR NO KEY UPDATE:
Похоже на SELECT FOR UPDATE, но позволяет другим транзакциям выполнять операции, не изменяющие ключи.

🟠SELECT FOR KEY SHARE:
Похоже на SELECT FOR SHARE, но позволяет другим транзакциям выполнять операции, не изменяющие строки.

🚩Блокировки на уровне индексов (Index-Level Locks)

Эти блокировки применяются к индексам и используются для управления доступом к индексированным данным.

🟠Блокировки индексов:
Используются автоматически при доступе к индексам для обеспечения целостности данных. Это может включать блокировки при обновлении индексов или их чтении.

🚩Дедлоки (Deadlocks)

Дедлоки возникают, когда две или более транзакций блокируют друг друга, ожидая освобождения ресурсов, которые заблокированы друг другом. PostgreSQL автоматически обнаруживает дедлоки и прерывает одну из транзакций для их разрешения.

🚩Примеры использования

🟠Обеспечение целостности данных:
Использование блокировок для предотвращения конкурентных изменений данных.

🟠Управление конкурентным доступом:
Применение блокировок для управления доступом к ресурсам в многопользовательских средах.

🟠Оптимизация производительности:
Выбор оптимальных типов блокировок для балансировки между целостностью данных и производительностью.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Из чего состоит ответ на сервере?

HTTP-ответ сервера включает:
1. Статус-код (например, 200 OK, 404 Not Found)
2. Заголовки (Content-Type, Content-Length) – описывают параметры ответа
3. Тело ответа – HTML, JSON, файл или другой контент


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое итератор?

Это объект, который позволяет поочередно проходить через элементы коллекции (например, списка или множества) без необходимости знать внутреннее представление этой коллекции. Итераторы предоставляют стандартный интерфейс для доступа к элементам, что делает их важной частью объектно-ориентированного программирования и функционального программирования.

🚩Основные аспекты итераторов

🟠Итерабельные объекты (Iterable)
Объекты, которые поддерживают протокол итерации, называются итерабельными. Примеры включают списки, кортежи, множества и словари.

🟠Протокол итерации
В Python, чтобы объект был итерабельным, он должен реализовать метод __iter__(), который возвращает итератор.

🟠Итератор
Итератор — это объект, который реализует методы __iter__() и __next__(). Метод __next__() возвращает следующий элемент последовательности, а когда элементы заканчиваются, возбуждает исключение StopIteration.

🚩Пример использования итератора в Python

Пример с использованием встроенного итератора
numbers = [1, 2, 3, 4, 5]
iterator = iter(numbers) # Получение итератора из списка

print(next(iterator)) # Вывод: 1
print(next(iterator)) # Вывод: 2
print(next(iterator)) # Вывод: 3
print(next(iterator)) # Вывод: 4
print(next(iterator)) # Вывод: 5
# print(next(iterator)) # Вызывается StopIteration


Пример создания собственного итератора
class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end

def __iter__(self):
return self

def __next__(self):
if self.current >= self.end:
raise StopIteration
else:
self.current += 1
return self.current - 1

# Использование собственного итератора
my_iter = MyIterator(1, 5)

for num in my_iter:
print(num) # Вывод: 1 2 3 4


🚩Плюсы

Унифицированный интерфейс
Итераторы предоставляют единый интерфейс для прохода по элементам коллекции, независимо от их типа.
Ленивая загрузка
Итераторы генерируют элементы по одному, что экономит память при работе с большими наборами данных.
Инкапсуляция логики прохода
Итераторы инкапсулируют логику обхода элементов, упрощая код и делая его более читаемым.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤯1
🤔 Слышали о жизненном цикле разработки ПО?

Да, SDLC (Software Development Life Cycle) – это процесс создания ПО, включающий:
1. Анализ требований – сбор информации о проекте.
2. Проектирование – создание архитектуры системы.
3. Разработка – написание кода.
4. Тестирование – поиск и исправление ошибок.
5. Деплой – развертывание продукта.
6. Поддержка – обновления и исправления.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🤔 Какие связи с моделями в БД знаешь?

🚩"Один к одному" (One-to-One)

Каждая запись в одной таблице связана с одной и только одной записью в другой таблице.

Пользователь (User) и Паспорт (Passport)
Каждому пользователю соответствует один уникальный паспорт. В реляционных базах данных можно реализовать эту связь с помощью уникального внешнего ключа.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);

CREATE TABLE passports (
id SERIAL PRIMARY KEY,
user_id INTEGER UNIQUE,
passport_number VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES users(id)
);


🚩"Один ко многим" (One-to-Many)

Каждая запись в одной таблице может быть связана с несколькими записями в другой таблице, но каждая запись в другой таблице связана только с одной записью в первой таблице.

Пользователь (User) и Заказы (Orders)
Один пользователь может сделать много заказов, но каждый заказ связан с одним пользователем. Эта связь обычно реализуется с помощью внешнего ключа.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);

CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);


🚩"Многие ко многим" (Many-to-Many)

Каждая запись в одной таблице может быть связана с множеством записей в другой таблице, и наоборот.

Студенты (Students) и Курсы (Courses)

Один студент может записаться на множество курсов, и каждый курс может быть записан многими студентами. Эта связь обычно реализуется с помощью промежуточной таблицы (таблицы связи), которая содержит внешние ключи обеих связанных таблиц.
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);

CREATE TABLE courses (
id SERIAL PRIMARY KEY,
course_name VARCHAR(100)
);

CREATE TABLE student_courses (
student_id INTEGER,
course_id INTEGER,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);


🚩Варианты связей в нереляционных базах данных (NoSQL)

В нереляционных базах данных связи могут быть организованы иначе, поскольку они часто не поддерживают традиционные реляционные модели.

Вложенные документы
Например, в MongoDB документы могут включать вложенные документы или массивы, что позволяет моделировать отношения "один ко многим" и "многие ко многим" внутри одного документа.
{
"_id": 1,
"name": "John",
"orders": [
{ "order_id": 1, "order_date": "2023-08-01" },
{ "order_id": 2, "order_date": "2023-08-05" }
]
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое транзакция?

Это атомарная последовательность операций в базе данных, которая выполняется как единое целое. Она гарантирует целостность данных с помощью ACID-принципов:
- Atomicity (Атомарность) – все операции выполняются либо полностью, либо не выполняются вовсе.
- Consistency (Согласованность) – данные остаются в корректном состоянии после выполнения.
- Isolation (Изоляция) – параллельные транзакции не мешают друг другу.
- Durability (Долговечность) – изменения сохраняются даже при сбое системы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 В чём разница между SQL и NoSQL?

Разница между SQL и NoSQL базами данных заключается в их архитектуре, структуре, методах хранения данных и использовании. Рассмотрим эти различия подробнее.

🟠Архитектура и структура данных
SQL (Structured Query Language) базы данных
Реляционные базы данных: SQL базы данных являются реляционными и используют таблицы для хранения данных. Каждая таблица состоит из строк и столбцов, что позволяет структурировать данные в виде отношений.
Схемы данных: SQL базы данных требуют четко определенных схем (schemas), которые строго контролируют структуру данных. Все записи в таблице должны следовать заранее определенной структуре.
Язык запросов: SQL использует структурированный язык запросов для манипуляции данными. Язык SQL стандартизирован и включает команды для создания, чтения, обновления и удаления данных (CRUD).
🟠NoSQL (Not Only SQL)
Нереляционные базы данных: NoSQL базы данных не обязательно используют таблицы для хранения данных. Вместо этого они могут использовать различные модели данных, такие как документы, графы, ключ-значение и столбцы
Гибкость схем: NoSQL базы данных часто не требуют фиксированных схем. Это позволяет хранить данные разной структуры в одной и той же коллекции или таблице.
Разнообразие языков запросов: В NoSQL базах данных отсутствует единый стандарт языка запросов. Они могут использовать различные методы доступа к данным, включая REST API и собственные языки запросов.

🚩Масштабируемость и производительность

🟠SQL базы данных
Вертикальная масштабируемость: SQL базы данных обычно масштабируются вертикально, то есть увеличивая мощность сервера (CPU, RAM, дисковое пространство).
Транзакции и консистентность: SQL базы данных поддерживают ACID транзакции (Atomicity, Consistency, Isolation, Durability), что обеспечивает высокую надежность и консистентность данных.
🟠NoSQL базы данных
Горизонтальная масштабируемость: NoSQL базы данных предназначены для горизонтального масштабирования, что позволяет распределять данные по множеству серверов.
Гибкость и скорость: NoSQL базы данных обычно более гибки и могут обеспечивать высокую производительность при работе с большими объемами данных и высокими нагрузками на запись и чтение.

🚩Использование и примеры

🟠SQL базы данных
MySQL, PostgreSQL, Oracle, Microsoft SQL Server.
Финансовые системы, системы управления запасами, системы управления клиентами (CRM), где требуется сложные запросы и транзакции.
🟠NoSQL базы данных
MongoDB, Cassandra, Redis, Couchbase.
Системы больших данных, реального времени аналитика, социальные сети, приложения для интернета вещей (IoT), где требуется высокая производительность и гибкость.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Почему синглтон называют антипаттерном?

Хотя паттерн Singleton обеспечивает глобальную точку доступа к объекту, он считается антипаттерном, потому что:
- Нарушает SRP (Single Responsibility Principle), смешивая управление объектом и его логику.
- Создает скрытые зависимости, усложняя тестирование.
- Увеличивает связность кода, усложняя поддержку и расширение.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🤔 Что такое операция GROUP BY ?

Это конструкция SQL, используемая для группировки строк в таблице на основе значений одного или нескольких столбцов. Она часто используется в сочетании с агрегатными функциями (такими как COUNT, SUM, AVG, MAX, MIN), чтобы выполнять вычисления для каждой группы в результате запроса.

🚩Основные аспекты `GROUP BY`

🟠Группировка данных
Операция GROUP BY группирует строки, имеющие одинаковые значения в указанных столбцах, в одну группу.
🟠Агрегатные функции
В сочетании с GROUP BY часто используются агрегатные функции для выполнения вычислений на уровне групп, а не отдельных строк.

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;


Ставь
👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое спринт в Scrum?

Это фиксированный временной отрезок (обычно 1-4 недели), в течение которого команда Scrum работает над задачами из бэклога и выпускает инкремент продукта.
Основные события спринта:
1. Планирование (Sprint Planning) – выбираются задачи.
2. Ежедневные митинги (Daily Scrum) – синхронизация работы.
3. Демонстрация (Sprint Review) – показ результата.
4. Ретроспектива (Sprint Retrospective) – анализ ошибок и улучшений.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🤔 Какие есть коды ответов HTTP?

Коды ответов HTTP — это трехзначные числовые коды, используемые для обозначения результата запроса клиента к серверу. Они помогают клиенту (например, браузеру) понять, как обрабатывать ответ. Все коды делятся на пять категорий:

🟠1xx: Информационные
Эти коды указывают, что запрос был получен, и процесс продолжается.
100 Continue: Клиент должен продолжать запрос.
101 Switching Protocols: Сервер переключается на другой протокол по запросу клиента.

🟠2xx: Успех
Эти коды указывают на успешное выполнение запроса.
200 OK: Запрос успешно выполнен, и сервер вернул нужные данные.
201 Created: Запрос успешно выполнен, и был создан новый ресурс.
202 Accepted: Запрос принят, но еще не обработан.
204 No Content: Запрос успешно выполнен, но в ответе нет содержимого.

🟠3xx: Перенаправление
Эти коды указывают, что клиент должен предпринять дополнительные действия для завершения запроса.
301 Moved Permanently: Ресурс был перемещен на постоянный новый URL.
302 Found: Ресурс временно находится по другому URL.
304 Not Modified: Ресурс не изменился с последнего запроса клиента.

🟠4xx: Ошибки клиента
Эти коды указывают на ошибки клиента при формировании запроса.
400 Bad Request: Некорректный запрос из-за синтаксической ошибки.
401 Unauthorized: Запрос требует аутентификации.
403 Forbidden: У клиента нет прав доступа к ресурсу.
404 Not Found: Ресурс не найден.
409 Conflict: Конфликт запроса с текущим состоянием ресурса.

🟠5xx: Ошибки сервера
Эти коды указывают на ошибки сервера при обработке корректного запроса клиента.
500 Internal Server Error: Внутренняя ошибка сервера.
501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
502 Bad Gateway: Сервер получил некорректный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно недоступен.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое SOLID?

SOLID – это пять принципов объектно-ориентированного программирования, повышающих читаемость и гибкость кода:
1. S – Single Responsibility Principle (Принцип единственной ответственности) – у класса должна быть только одна причина для изменения.
2. O – Open/Closed Principle (Принцип открытости/закрытости) – классы должны быть открыты для расширения, но закрыты для модификации.
3. L – Liskov Substitution Principle (Принцип подстановки Барбары Лисков) – подклассы должны заменять родительские классы без изменения поведения.
4. I – Interface Segregation Principle (Принцип разделения интерфейсов) – интерфейсы не должны заставлять классы реализовывать ненужные методы.
5. D – Dependency Inversion Principle (Принцип инверсии зависимостей) – классы должны зависеть от абстракций, а не от конкретных реализаций.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое CGI?

Это стандартный протокол для веб-серверов, который позволяет запускать внешние программы (скрипты) для генерации веб-страниц динамически. CGI скрипты могут быть написаны на различных языках программирования, таких как Perl, Python, PHP, C и других. Когда веб-сервер получает запрос на страницу, обрабатываемую CGI, он запускает соответствующий скрипт и передает ему данные запроса.

🚩Как работает

1⃣Запрос клиента: Клиент (например, веб-браузер) отправляет HTTP-запрос на веб-сервер.
2⃣Запуск CGI-скрипта: Веб-сервер определяет, что запрос предназначен для CGI-скрипта, и запускает его как отдельный процесс.
3⃣Передача данных: Веб-сервер передает данные запроса (например, параметры формы) в CGI-скрипт через стандартный ввод (stdin) и переменные окружения.
4⃣Выполнение скрипта: CGI-скрипт выполняет необходимые операции (например, доступ к базе данных) и генерирует HTML-страницу.
5⃣Ответ сервера: CGI-скрипт отправляет сгенерированную HTML-страницу обратно на веб-сервер через стандартный вывод (stdout), а сервер передает этот ответ клиенту.

🚩Плюсы

Простота и универсальность
CGI прост в реализации и не требует сложной настройки. Поддерживает множество языков программирования, что делает его универсальным решением.
Совместимость
CGI является стандартом и поддерживается практически всеми веб-серверами.
Изоляция процессов
Каждый запрос запускает новый процесс, что обеспечивает изоляцию запросов и повышает безопасность.

🚩Минусы

Производительность
Каждый запрос создает новый процесс, что может быть ресурсоемким и замедлять работу сервера при большом количестве запросов. Создание и завершение процессов занимает время, что увеличивает задержку ответа.

Масштабируемость
Плохая производительность при высоких нагрузках делает CGI плохо подходящим для масштабируемых веб-приложений. Ограниченная возможность использования пула процессов для повышения эффективности.

Ограниченная функциональность
Сложнее интегрироваться с современными технологиями и фреймворками. Отсутствие встроенных средств для работы с сессиями, аутентификацией и другими функциями современных веб-приложений.

🚩Современные альтернативы

🟠FastCGI
Улучшенная версия CGI, которая повторно использует процессы для обработки нескольких запросов, что повышает производительность.

🟠Server-side scripting
Языки и фреймворки, такие как PHP, ASP.NET, Node.js, Django, Ruby on Rails, которые интегрируются непосредственно с веб-серверами и обеспечивают высокую производительность.

🟠Web Server Gateway Interface (WSGI)
Стандартный интерфейс для Python-приложений, позволяющий эффективную обработку запросов.

🟠Application Servers
Серверы приложений, такие как Apache Tomcat, JBoss, которые предоставляют контейнеры для выполнения веб-приложений и управления ими.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
🤔 В чем разница между PostgreSQL и MySQL?

1. Архитектура
- PostgreSQL – объектно-реляционная СУБД (поддерживает JSONB, XML, GIS).
- MySQL – реляционная СУБД (быстрее при простых операциях).
2. Производительность
- PostgreSQL – лучше работает с сложными запросами и большими объемами данных.
- MySQL – быстрее на чтении и простых операциях.
3. Расширяемость
- PostgreSQL – поддерживает кастомные типы данных, индексы, процедурные языки.
- MySQL – более ограничен в расширяемости.
4. Транзакции и ACID
- PostgreSQL – строго соблюдает ACID.
- MySQL – зависит от типа таблицы (InnoDB поддерживает ACID, MyISAM – нет).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9