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

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
🤔 Как работает хеш таблица?

Это структура данных, которая позволяет эффективно хранить и извлекать пары "ключ-значение". Она использует хеш-функцию для преобразования ключа в индекс массива, где хранится соответствующее значение.

🚩Основные концепции

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

🟠Коллизии
Это ситуации, когда два разных ключа хешируются в один и тот же индекс. Существуют различные методы разрешения коллизий:
Метод цепочек (chaining): В каждой ячейке массива хранится список (или другая структура данных), содержащий все значения, соответствующие этому индексу.
Открытая адресация (open addressing): При коллизии ищется другая свободная ячейка по определённому алгоритму (например, линейное пробирование, квадратичное пробирование или двойное хеширование).

🟠Размер хеш-таблицы
Количество ячеек (бакетов) в массиве. Оптимальный размер зависит от количества ключей и используемой хеш-функции. Обычно размер выбирается простым числом для уменьшения вероятности коллизий.

🚩Как работает хеш-таблица

🟠Вставка элемента
Хеш-функция вычисляет индекс для ключа.
Если ячейка пуста, значение записывается в неё.
Если ячейка занята (коллизия), применяется выбранный метод разрешения коллизий.

🟠Поиск элемента
Хеш-функция вычисляет индекс для ключа.
Проверяется ячейка по этому индексу.
Если ключи совпадают, возвращается значение.
Если ключи не совпадают (коллизия), применяется метод разрешения коллизий до нахождения нужного ключа или пустой ячейки (что означает отсутствие ключа).

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

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

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

🚩Основные компоненты HTTP:

🟠Клиент и сервер
HTTP работает по модели клиент-сервер. Клиент, например, веб-браузер, инициирует запросы к серверу, который предоставляет доступ к запрашиваемым ресурсам.

🟠URI (Uniform Resource Identifier)
Используется для идентификации ресурсов. Наиболее распространенным типом URI является URL (Uniform Resource Locator).

🟠Методы HTTP
Определяют действия, которые клиент хочет выполнить над ресурсом. Основные методы включают:
GET: Запрос данных с сервера.
POST: Отправка данных на сервер для обработки.
PUT: Обновление ресурса на сервере.
DELETE: Удаление ресурса с сервера.

🟠Статус-коды
Серверы возвращают клиентам статус-коды, чтобы сообщить о результате обработки запроса. Например, 200 (OK) означает успешное выполнение запроса, а 404 (Not Found) — что ресурс не найден.

🟠Заголовки HTTP
Несут метаданные о запросе или ответе, такие как тип содержимого (Content-Type), длина содержимого (Content-Length), информация об авторизации и так далее.

🟠Сообщения HTTP
Состоят из запроса от клиента и ответа от сервера, каждый из которых включает стартовую строку, заголовки и тело сообщения.

🚩Как это используется:

🟠Веб-серфинг
Каждый раз, когда пользователь вводит URL в адресной строке браузера или нажимает на ссылку, браузер отправляет HTTP-запрос к серверу, который возвращает HTML-страницу.

🟠API
HTTP широко используется для взаимодействия между различными системами через RESTful API. Программы могут отправлять HTTP-запросы для получения данных или выполнения действий на удаленных серверах.

🟠Мобильные приложения
Большинство мобильных приложений взаимодействуют с серверными частями через HTTP, запрашивая и отправляя данные, которые отображаются пользователю.

🟠Загрузка файлов
HTTP используется для скачивания файлов из Интернета.

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

В реляционных базах данных SQL используется несколько видов операций JOIN для объединения строк из двух или более таблиц на основе связанных столбцов. Каждая из этих операций предназначена для определенных сценариев. Основные виды JOIN включают:

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

🟠LEFT (OUTER) JOIN
LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если нет совпадения, то результаты из правой таблицы будут NULL. Использование: Когда необходимо получить все данные из одной таблицы и только соответствующие данные из другой.

🟠RIGHT (OUTER) JOIN
RIGHT JOIN (или RIGHT OUTER JOIN) возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если нет совпадения, то результаты из левой таблицы будут NULL. Использование: Когда необходимо получить все данные из правой таблицы и только соответствующие данные из левой.

🟠FULL (OUTER) JOIN
FULL JOIN (или FULL OUTER JOIN) возвращает все строки, когда есть совпадение в одной из таблиц. Если совпадения нет, то возвращаются NULL для соответствующей таблицы. Использование: Для получения всех данных из обеих таблиц, независимо от совпадений.

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

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

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

🟠INNER JOIN
Для получения списка студентов и их курсов.
🟠LEFT JOIN
Для получения всех сотрудников и их проектов, даже если у сотрудника нет проекта.
🟠RIGHT JOIN
Для получения всех проектов и сотрудников, даже если у проекта нет назначенного сотрудника.
🟠FULL JOIN
Для получения полной информации о студентах и курсах, включая тех, кто еще не записан на курс или курсы, на которые еще никто не записан.
🟠CROSS JOIN
Для создания всех возможных комбинаций продуктов и категорий.
🟠SELF JOIN
Для нахождения пар сотрудников из одной таблицы с одинаковыми менеджерами.

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

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

🟠Стартовая линия (Request Line)
Метод: Определяет тип запроса и действия, которые должен выполнить сервер. Основные методы включают:
GET: Запрос на получение данных с сервера.
POST: Отправка данных на сервер для обработки (например, форма).
PUT: Замена существующего ресурса на сервере.
DELETE: Удаление ресурса с сервера.
PATCH: Частичное обновление ресурса.
URI (Uniform Resource Identifier): Указывает путь к ресурсу на сервере.
Версия протокола HTTP: Определяет используемую версию HTTP, например, HTTP/1.1.

🟠Заголовки (Headers)
Метаданные, которые предоставляют дополнительную информацию о запросе. Примеры заголовков:
Host: Указывает имя хоста и, возможно, номер порта сервера (например, www.example.com).
User-Agent: Информация о клиентском приложении, совершающем запрос (например, браузер).
Accept: Типы данных, которые клиент готов принять (например, text/html, application/json).
Content-Type: Тип данных, передаваемых в теле запроса (например, application/json для JSON данных).
Authorization: Информация для аутентификации, если запрос требует авторизации.

🟠Тело запроса (Body)
Содержит данные, отправляемые на сервер. Тело запроса используется в методах POST, PUT, PATCH для передачи данных, таких как формы, файлы или JSON-объекты. Для методов GET и DELETE тело запроса обычно не используется.

🚩Зачем нужны эти компоненты

🟠Метод и URI
Метод определяет действие, которое клиент хочет выполнить, а URI указывает конкретный ресурс, к которому это действие применяется. Это основа понимания сервером того, что именно клиент запрашивает.

🟠Заголовки
Заголовки предоставляют контекст и дополнительную информацию, необходимую для корректной обработки запроса. Они могут содержать данные о клиенте, указывать формат передаваемых данных, управлять кэшированием и аутентификацией.

🟠Тело запроса
Тело запроса содержит основное содержание, которое клиент хочет передать на сервер. Например, данные формы, JSON-объекты или файлы. Без тела запроса невозможно передать на сервер данные, которые необходимо обработать.

POST /submit-form HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

name=John+Doe&age=30


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Forwarded from Идущий к IT
🔥 Записал видос "Как за 3 минуты настроить Автоотклики на вакансии HeadHunter" больше не придется заниматься этой унылой рутиной

📺 Видео: https://youtu.be/G_FOwEGPwlw
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем разница get от post?

Методы GET и POST являются двумя наиболее часто используемыми HTTP-методами для передачи данных между клиентом и сервером. Они выполняют разные задачи и имеют свои особенности и случаи применения.

🚩GET

🟠Цель использования
Метод GET используется для получения данных с сервера. Это наиболее часто используемый метод для запросов, которые не изменяют состояние сервера.

🟠Передача данных
Данные передаются через URL в строке запроса (query string). Это делает данные видимыми и ограничивает их размер.

🟠Кэширование
Запросы GET могут кэшироваться браузерами, серверами и прокси-серверами. Это позволяет ускорить повторные запросы и снизить нагрузку на сервер.

🟠Идемпотентность
GET-запросы являются идемпотентными, что означает, что повторное выполнение одного и того же GET-запроса приведет к одному и тому же результату, не изменяя состояние ресурса.

🟠Безопасность
GET-запросы считаются безопасными, так как они не изменяют данные на сервере.

🚩POST

🟠Цель использования
Метод POST используется для отправки данных на сервер, чтобы создать или изменить ресурсы. Это подходящий метод для операций, которые изменяют состояние сервера.

🟠Передача данных
Данные передаются в теле запроса. Это позволяет отправлять большие объемы данных и сохранять конфиденциальность данных, поскольку они не видны в URL.

🟠Кэширование
Запросы POST не кэшируются браузерами и прокси-серверами по умолчанию. Это обеспечивает, что данные будут отправлены на сервер каждый раз при выполнении запроса.

🟠Идемпотентность
POST-запросы не являются идемпотентными. Каждый новый POST-запрос может привести к созданию новых ресурсов или изменению существующих, что делает их выполнение неоднозначным при повторении.

🟠Безопасность
POST-запросы более безопасны в плане передачи данных, так как информация передается в теле запроса и не видна в URL.

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

🟠GET
Получение информации о пользователе, загрузка страницы или получение данных с API.
🟠POST
Отправка формы с данными регистрации, добавление нового товара в базу данных, обновление информации о пользователе.

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

Это методология управления проектами и одна из наиболее популярных реализаций Agile, предназначенная для гибкой разработки программного обеспечения. Scrum помогает командам работать более эффективно и адаптироваться к изменениям в требованиях и приоритетах. Основные концепции и элементы Scrum включают следующие компоненты:

🚩Основные концепции

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

🟠Самоорганизующиеся команды
Команды в Scrum сами управляют своей работой и распределяют задачи между участниками без вмешательства извне.

🟠Роли в Scrum
В Scrum выделяются три основных роли:
Product Owner (Владелец продукта): отвечает за создание и управление бэклогом продукта, определение приоритетов и взаимодействие с заинтересованными сторонами.
Scrum Master: помогает команде следовать принципам Scrum, устраняет препятствия и обеспечивает эффективность работы команды.
Development Team (Команда разработки): непосредственно занимается созданием продукта, включает специалистов различных профилей, необходимых для выполнения задач.

🚩Основные элементы

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

🟠Sprint Backlog (Бэклог спринта)
список задач, которые команда обязуется выполнить в текущем спринте. Эти задачи выбираются из бэклога продукта на основе приоритетов и возможностей команды.

🟠Sprint (Спринт)
фиксированный период времени, в течение которого команда работает над выполнением задач из бэклога спринта. В конце спринта команда демонстрирует результат своей работы.

🟠Daily Scrum (Ежедневный скрам)
ежедневные короткие встречи (обычно 15 минут), на которых команда обсуждает прогресс, планирует работу на день и выявляет препятствия.

🟠Sprint Review (Обзор спринта)
встреча в конце каждого спринта, на которой команда демонстрирует результаты своей работы заинтересованным сторонам и получает обратную связь.

🟠Sprint Retrospective (Ретроспектива спринта)
встреча после завершения спринта, на которой команда анализирует свою работу, обсуждает, что было хорошо, что можно улучшить, и разрабатывает план улучшений на следующий спринт.

🚩Плюсы

Гибкость
Scrum позволяет быстро адаптироваться к изменяющимся требованиям и приоритетам.
Прозрачность
Частые демонстрации результата и обратная связь обеспечивают высокую степень прозрачности процесса разработки.
Повышение качества
Регулярные проверки и ретроспективы помогают команде постоянно улучшать качество продукта и процесса.
Улучшение взаимодействия
Scrum способствует более тесному взаимодействию между членами команды и заинтересованными сторонами.

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

🚩Гибкость

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

🚩Аспекты

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

🟠Краткие итерации и обратная связь
В Agile-подходе используются короткие спринты (обычно 1–4 недели), в конце которых предоставляется работающий продукт или его часть. Это позволяет учитывать обратную связь и своевременно корректировать курс.

🟠Минимизация технического долга
Гибкость также зависит от качества кода и архитектуры системы. Хорошо структурированный код облегчает внесение изменений и снижает риск появления ошибок.

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

🟠Инструменты и автоматизация
Использование CI/CD (Continuous Integration/Continuous Delivery) помогает оперативно вносить изменения в код и быстро их доставлять пользователям.

🚩Применение гибкости

🟠Запуск продукта на рынок
Быстрое тестирование гипотез и выпуск минимально жизнеспособного продукта (MVP), чтобы собрать обратную связь от пользователей.
🟠Изменение бизнес-целей
Если меняются бизнес-требования, гибкая команда может переключиться на новые приоритеты, сохраняя при этом эффективность.
🟠Технические изменения
Адаптация к новым технологиям или платформам без больших затрат.

🚩Плюсы

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT

Там есть буквально всё: чаты для общения, тонны материала(книги, курсы, ресурсы и гайды), свежие новости и конечно же мемы

Выбирайте своё направление:

💩 Frontend 🐍 Python

🐧 Linux 👩‍💻 С/С++

👩‍💻 C# 🤔 Хакинг & ИБ

📱 GitHub 🖥 SQL

👩‍💻 Сисадмин 🤟 DevOps

⚙️ Backend 🖥 Data Science

🧑‍💻 Java 🐞 Тестирование

🖥 PM / PdM 👩‍💻 GameDev

🧑‍💻 Golang 🤵‍♂️ IT-Митапы

🧑‍💻 PHP 💻 WebDev

🖥 Моб. Dev 🖥Анали.(SA&BA)

👩‍💻 Дизайн 🖥 Нейросети

💛 1C 🤓 Книги IT

➡️ Сохраняйте в закладки
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
"Ты че, дурак?" – базовая реакция сеньора на тех, кто покупает IT курсы

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

Трушные ребята учатся на жизненных каналах для айтишников. Вот топ-5 от тимлида из Сбера:

⚙️ Технолоджия – для тех, кто хочет быть в курсе новостей в айти

🧠 Ai-чница – способы превратить нейросети в заработок $$$

💻 ИИ тебя заменит! – тенденции айти рынка в связке с нейросетями

4️⃣ Войти в IT – тонны бесплатного обучения для прогеров

😄 IT индус – сборник айти мемов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤔1
🤔 Что такое Agile?

Это подход к разработке программного обеспечения, который фокусируется на гибкости, сотрудничестве и быстрой адаптации к изменениям. Agile основывается на следующих принципах и ценностях:

🚩Основные принципы

🟠Индивидуумы и взаимодействия важнее процессов и инструментов
Акцент на командную работу и эффективное общение.

🟠Работающее программное обеспечение важнее исчерпывающей документации
Быстрая поставка работающих продуктов с минимально необходимой документацией.

🟠Сотрудничество с заказчиком важнее согласования условий контракта
Постоянное взаимодействие с заказчиком для удовлетворения его потребностей.

🟠Готовность к изменениям важнее следования первоначальному плану
Гибкость в адаптации к изменениям требований и условий.

🚩Основные методологии

🟠Scrum
Итеративный процесс с фиксированными временными промежутками, называемыми спринтами. Роли: Product Owner, Scrum Master, Команда разработки. Артефакты: Product Backlog, Sprint Backlog, Инкремент. Встречи: Планирование спринта, Ежедневные стендап-совещания, Обзор спринта, Ретроспектива.

🟠Kanban
Визуализация процесса работы с помощью доски Kanban. Ограничение незавершенной работы (Work In Progress, WIP). Постоянное улучшение и адаптация.

🟠Extreme Programming (XP)
Практики: Парное программирование, Частые релизы, Непрерывная интеграция, Тестирование.

🟠Lean
Сокращение избыточности и увеличение ценности для клиента.- Принципы: Устранение потерь, Увеличение потока, Улучшение качества.

🚩Плюсы

Быстрая адаптация к изменениям
Возможность быстро реагировать на изменения требований или условий рынка.
Улучшенное качество продукта
Постоянное тестирование и интеграция.
Повышенная вовлеченность команды
Активное участие всех членов команды в процессе разработки.
Удовлетворенность клиентов
Постоянное взаимодействие с заказчиками и предоставление им ценности на каждом этапе разработки.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM