🔰 Шпаргалка по бэкенду с картинками и не только / Backend cheatsheet with pictures and more
Go to file
2022-03-01 10:17:11 +03:00
files Add file 2022-03-01 10:16:59 +03:00
README_ENG.md 🇬🇧 Preparing the English version 2022-02-27 19:43:25 +03:00
README.md 📝 Update 2022-03-01 10:17:11 +03:00

Backend cheats

Данный репозиторий представляет собой наглядную шпаргалку по основным темам в области Backend-разработки. Весь материал разбит на темы и подтемы. Структура материала состоит из 3 частей:

  • Визуальная часть - различные изображения/таблицы для лучшего понимания (может отсутствовать). Все рисунки и таблицы сделаны с нуля, специально для этого репозитория.
  • Краткое описание - очень краткая выжимка информации, позволяющая понять лишь основную суть.
  • Ссылки на источники - ресурсы, где можно найти полную информацию по конкретному вопросу. По возможности мы стараемся указывать максимально авторитетные источники, либо же те, которые предоставляют информацию максимально простым и понятным языком.

Содержание

Сеть и интернет

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

Интернет — Википедия (wikipedia.org)

История Интернета — Википедия (wikipedia.org)

  • Как устроен Интернет

Internet

Ваш компьютер никогда не был связан с Интернетом напрямую. Вместо этого, он видит только свою локальную сеть, в которую проводным (Ethernet) или беспроводным (Wi-Fi, Bluetooth) путем подключены другие устройства.

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

Хост (host - принимающий) - любое устройство, которое находится в какой-либо сети.

Сервер (serve - обслуживать) - специальный компьютер в сети, который обслуживает запросы поступающие от других компьютеров.

Как работает Интернет - MDN (mozilla.org)

Основы программирования. Как работают сети? - YouTube

Хост — что это такое и как он работает

Сервер — Википедия (wikipedia.org)

Что такое сервер и как он работает

  • Браузеры и как они работают

Browser

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

Как работают браузеры — MDN (mozilla.org)

Браузер — Википедия (wikipedia.org)

  • Что такое DNS

DNS

DNS (Domain Name System) - это децентрализованная система именования адрессов в Интернете, которая позволяет создавать удобные для человека буквеные наименования (доменные имена) соответствующие числовым IP-адрессам, которые используются компьютерами.

IP-адресс - уникальный идентификатор устройства находящегося в какой-либо сети.

Система доменных имен DNS | Курс "Компьютерные сети" — YouTube

DNS — Википедия (wikipedia.org)

IP адрес — HackWare.ru

IP-адрес — Википедия (wikipedia.org)

  • Что такое доменное имя

Domain

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

Что такое доменные имена - MDN (mozilla.org)

  • Хостинг

Hosting

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

Хостинг: варианты, сравнения, пользовательская статистика - habr.com

Хостинг: что это, зачем и как выбрать

  • TCP протокол

  • UDP протокол

  • Проблемы сети

  • IPv4 и IPv6

IPv4-IPv6

IPv4 и IPv6 соответственно 4 и 6 версии IP-адресса. IPv4 разработана в 1981 году и ограничивает адрессное пространство около 4.3 млрд (2^32) возможными уникальными адрессами. Вскоре распределение адресного пространства стало происходить значительно более быстрыми темпами, что вынудило создание новой версии IP-адресса для хранения большего количества адрессов. IPv6 способен обеспечить более 300 млн IP-адресов на каждого жителя Земли.

IPv4 — Википедия (wikipedia.org)

IPv6 — Википедия (wikipedia.org)

В чём разница между протоколами IPv4 и IPv6

  • Трассировка маршрутов

Traceroute

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

Трассировка сетевого маршрута — HackWare.ru

Traceroute — Википедия (wikipedia.org)

Протокол HTTP

  • Формат протокола

  • Методы HTTP-запросов

  • Коды ответов

  • Заголовки

  • CORS

  • CSP

  • Безопасность (HTTPS)

  • Различия HTTP 1.0 и HTTP 1.1

  • HTTP 2

  • HTTP 3

  • Откладка сети в Chrome Dev Tools

  • Работа с HTTP через терминал

  • WebSockets

  • API форматы

  • Web сервера

    • NGNX

    • Apache httpd

Общие знания

  • Структуры данных

    • Хэш-таблицы

    • Очередь и стек

    • Связанные списки

    • Двусвязные списки

  • Форматы хранения данных

  • Текстовые

JSON, YAML, XML

  • Бинарные

Message Pack, BSON, ProtoBuf

  • Криптография

    • Хэши и хеш-функции

    • Цифровые подписи

    • Соль для подписей

    • Коллизия хэшей

Язык программирования

Выберите для изучения один из языков (спсиок составлен по моему личному мнению):

  • Базовые знания

    • Примитивные типы данных

    • Функции

    • Набор, массив, хеш-таблица, кортеж

    • Объекты/классы/структуры, прототипы/интерфейсы/миксины

    • Ссылки, указатели

    • Область видимости переменных

    • Сборщик мусора

    • Преобразование типов

    • Слабая/сильная типизация в коде

    • Битовые операции

    • Обработка ошибок

  • Распараллеливание

    • Процессы

    • Потоки

    • КоРутины

    • Проблемы распараллеливания

    • Атомарные операции

    • Блокировки

  • Пакетный менеджер

  • Отладчик

  • Запуск HTTP-сервера

  • Кэширование

  • Шаблонизация

  • Ввод / Вывод (IO)

Базовое ПО

  • Система контроля версий Git

  • Контейнеризация и Docker

  • Postman / Insomnia

Базы данных

  • Реляционные базы данных

  • Документоориентированные базы данных

  • Redis

  • Проблемы баз данных

Дополнительные материалы и источники