files | ||
LICENSE | ||
README.md |
Backend cheats
Данный репозиторий представляет собой наглядную шпаргалку по основным темам в области Backend-разработки. Весь материал разбит на темы и подтемы. Структура материала состоит из 3 частей:
- Визуальная часть - различные изображения/таблицы для лучшего понимания (может отсутствовать). Все рисунки и таблицы сделаны с нуля, специально для этого репозитория.
- Краткое описание - очень краткая выжимка информации, позволяющая понять лишь основную суть.
- Ссылки на источники - ресурсы, где можно найти полную информацию по конкретному вопросу. По возможности мы стараемся указывать максимально авторитетные источники, либо же те, которые предоставляют информацию максимально простым и понятным языком.
Изучать материал можно последовательно шаг за шагом.
Репозиторий находится в стадии активной разработки, поэтому постоянно обновляется или дополняется.
Содержание
Сеть и интернет
Интернет - это всемирная система объединяющая компьютерные сети со всего мира в единую сеть для хранения/передачи информации. Изначально Интернет разрабатывался для нужд военных. Но вскоре он стал внедряться в учреждения образования (университеты), а затем его смогли использовать частные компании, которые начали организовывать сети провайдеров, предоставляющие услуги доступа в Интернет обычным гражданам. К началу 2020 года количество пользователей в сети Интернет перевалило за 4.5 млрд человек.
Интернет — Википедия (wikipedia.org)
История Интернета — Википедия (wikipedia.org)
-
Как устроен Интернет
Ваш компьютер никогда не был связан с Интернетом напрямую. Он видит только свою локальную сеть, в которую проводным (Ethernet) или беспроводным (Wi-Fi, Bluetooth) путем подключены другие устройства.
Для связи с Интернетом в вашей локальной находиться специальный мини-компьютер - маршрутизатор. Далее этот маршрутизатор связывает вас с интернет-провайдером, который в свою очередь связан с другими провайдерами более высокого уровня. Таким образом, ваше сообщение, пройдя транзитом через сеть нескольких провайдеров, достигнет сеть назначения.
Хост
(host - принимающий) - любое устройство, которое находится в какой-либо сети.
Сервер
(serve - обслуживать) - специальный компьютер в сети, который обслуживает запросы поступающие от других компьютеров.
Как работает Интернет - MDN (mozilla.org)
Основы программирования. Как работают сети? - YouTube
Хост — что это такое и как он работает
Сервер — Википедия (wikipedia.org)
Что такое сервер и как он работает
-
Браузеры и как они работают
Браузер - это клиент, с помощью которого можно отправлять запросы на сервер для получения файлов, которые впоследствии используются для отрисовки web-страниц. Большинство пользователей используют именно браузеры для работы в сети Интернет.
Как работают браузеры — MDN (mozilla.org)
Браузер — Википедия (wikipedia.org)
-
Что такое DNS
DNS (Domain Name System) - это децентрализованная система именования адресов в Интернете, которая позволяет создавать удобные для человека буквеные наименования (доменные имена) соответствующие числовым IP-адресам, которые используются компьютерами.
IP-адрес
- уникальный идентификатор устройства находящегося в какой-либо сети.
Система доменных имен DNS | Курс "Компьютерные сети" — YouTube
DNS — Википедия (wikipedia.org)
IP-адрес — Википедия (wikipedia.org)
-
Что такое доменное имя
Доменные имена представляют собой человеко-читаемые адреса веб-серверов, доступных в Интернете. Они состоят из частей (уровней) разделенных между собой точкой. Каждая из этих частей предоставляет специфическую информацию о доменном имени. Например страну, название сервиса, локализацию и т.д.
Что такое доменные имена - MDN (mozilla.org)
-
Хостинг
Хостинг (hosting) - специальная услуга, предоставляемая хостинг-провайдерами, которая позволяет арендовать пространство на сервере (который круглосуточно подключён к сети Интернет), где могут храниться ваши данные и файлы. Существуют различные варианты хостинга, где вы можете использовать не только дисковое пространство сервера, но и так же процессорную мощность для работы ваших сетевых приложений.
Хостинг: варианты, сравнения, пользовательская статистика — habr.com
Хостинг: что это, зачем и как выбрать
-
Cтек протоколов TCP/IP
Стек TCP/IP - это модель (набор правил), которая описывает способ передачи данных от источника информации к получателю.
Протокол
- это всего лишь набор правил, документ, фиксирующий договорённость. В частности в стеке TCP/IP протоколы описывают правила взаимодействия между уровнями / в пределах одного уровня.
На начальном этапе не стоит сильно погружаться в эту тему, но иметь общее представление, как ваши данные проходят через все уровни протоколов, будет полезно.
TCP
- это протокол обеспечивающий надежную передачу данных. TCP гарантирует доставку данных и сохранение порядка следования сообщений. Но это сказывается на скорости передачи. Данный протокол используется там, где потеря информации недопустима, например для отправки почты.
UDP
- это простой протокол с быстрой передачей данных. Он не использует механизмов для гарантирования доставки и порядка следования данных. Используется, например в онлайн-играх, где частичная потеря пакетов не критична, но скорость передачи данных имеет гораздо более важное значение. Так же, запросы к DNS-серверам происходят через UDP протокол.
MAC-адрес
- уникальный идентификатор, назначенный сетевому адаптеру какого либо-устройства.
Модель и стек протоколов TCP/IP — YouTube
TCP/IP — Википедия (wikipedia.org)
Всё, что вы хотели знать о МАС адресе — habr.com
-
Проблемы сети
-
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. В чем разница и что лучше?
-
Трассировка маршрутов
Трассировка маршрута - процедура, позволяющая отследить по каким узлам, с какими IP адресами, передаётся отправленный вами пакет прежде чем он достигнет точки назначения. Трассировка может применяться для выявления связанных с работой компьютерной сети проблем, а также для исследования/анализа сети.
Трассировка сетевого маршрута — HackWare.ru
Traceroute — Википедия (wikipedia.org)
Операционные системы
-
Как работают ОС
-
Управление процессами
-
Потоки и параллелизм
-
Управление памятью
-
Межпроцессорное взаимодействие
-
Ввод и вывод (I/O)
-
Основы POSIX
-
Концепции построения сети
Основы Linux
Операционные системы на базе ядра Linux это стандарт в мире серверной разработки, поскольку большинство серверов работают именно на таких ОС. Использовать Linux на серверах выгодно, ведь он рапространяется бесплатно.
Существует огромное количество дистрибутивов (сборок с набором предустановленного ПО) Linux на любой вкус и цвет. Одним из самых популярных является Ubuntu. Именно с него можно начать своё погружение в серверную разработку.
Установить Ubuntu можно на отдельный ПК или ноутбук. Если такой возможности нет, можно воспользоваться специальной программой Virtual Box, в которой можно запускать другие ОС поверх основной. Так же можно запустить Docker контейнер с образом Ubuntu (Docker - это отдельная тема, которая рассматривается в этом репозитории).
После этого можно быстро пройти вводный курс по Linux и Bash.
Далее приведены шпаргалки по основным темам.
-
Работа с терминалом
-
Установка пакетов
-
Скрипты Bash
-
Пользователи
-
Файловая система
-
Работа с SSH
-
Планировщик задач
-
Системные логи
-
Проблемы Linux
Общие знания
-
Структуры данных
-
Хэш-таблицы
-
Очередь и стек
-
Связанные списки
-
Двусвязные списки
-
-
Форматы хранения данных
-
Текстовые
JSON, YAML, XML
-
Бинарные
Message Pack, BSON, ProtoBuf
-
-
Криптография
-
Хэши и хеш-функции
-
Цифровые подписи
-
Соль для подписей
-
Коллизия хэшей
-
Язык программирования
Выберите для изучения один из языков (спсиок составлен по моему личному мнению):
-
Базовые знания
-
Примитивные типы данных
-
Функции
-
Набор, массив, хеш-таблица, кортеж
-
Объекты/классы/структуры, прототипы/интерфейсы/миксины
-
Ссылки, указатели
-
Область видимости переменных
-
Сборщик мусора
-
Преобразование типов
-
Слабая/сильная типизация в коде
-
Битовые операции
-
Обработка ошибок
-
-
Распараллеливание
-
Процессы
-
Потоки
-
КоРутины
-
Проблемы распараллеливания
-
Атомарные операции
-
Блокировки
-
-
Пакетный менеджер
-
Отладчик
-
Запуск HTTP-сервера
-
Кэширование
-
Шаблонизация
-
Ввод / Вывод (IO)
Протокол HTTP
-
Формат протокола
-
Методы HTTP-запросов
-
Коды ответов
-
Заголовки
-
Cookie
-
CORS
-
CSP
-
Безопасность (HTTPS)
-
Различия HTTP 1.0 и HTTP 1.1
-
HTTP 2
-
HTTP 3
-
Откладка сети в Chrome Dev Tools
-
Работа с HTTP через терминал
-
WebSockets
-
API форматы
-
Web сервера
-
NGNX
-
Apache httpd
-
Базовое ПО
-
Система контроля версий Git
-
Контейнеризация и Docker
-
Postman / Insomnia
Базы данных
-
Реляционные базы данных
-
Документоориентированные базы данных
-
Redis
-
Проблемы баз данных
Дополнительные материалы и источники
- Backend Developer Roadmap: Learn to become a modern backend developer
- bzick/oh-my-backend: Backend Roadmap (from Junior to Senior)
- zhashkevych/awesome-backend: 🚀 A curated and opinionated list of resources (English & Russian) for Backend developers
- УЧЕБНЫЙ КУРС: Компьютерные сети