files | ||
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
Хостинг: что это, зачем и как выбрать
-
TCP протокол
-
UDP протокол
-
Проблемы сети
-
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
-
Работа с терминалом
-
Установка пакетов
-
Скрипты Bash
-
Пользователи
-
Файловая система
-
Работа с SSH
-
Планировщик задач
-
Системные логи
-
Проблемы Linux
Протокол 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
-
Общие знания
-
Структуры данных
-
Хэш-таблицы
-
Очередь и стек
-
Связанные списки
-
Двусвязные списки
-
-
Форматы хранения данных
-
Текстовые
JSON, YAML, XML
-
Бинарные
Message Pack, BSON, ProtoBuf
-
-
Криптография
-
Хэши и хеш-функции
-
Цифровые подписи
-
Соль для подписей
-
Коллизия хэшей
-
Язык программирования
Выберите для изучения один из языков (спсиок составлен по моему личному мнению):
-
Базовые знания
-
Примитивные типы данных
-
Функции
-
Набор, массив, хеш-таблица, кортеж
-
Объекты/классы/структуры, прототипы/интерфейсы/миксины
-
Ссылки, указатели
-
Область видимости переменных
-
Сборщик мусора
-
Преобразование типов
-
Слабая/сильная типизация в коде
-
Битовые операции
-
Обработка ошибок
-
-
Распараллеливание
-
Процессы
-
Потоки
-
КоРутины
-
Проблемы распараллеливания
-
Атомарные операции
-
Блокировки
-
-
Пакетный менеджер
-
Отладчик
-
Запуск HTTP-сервера
-
Кэширование
-
Шаблонизация
-
Ввод / Вывод (IO)
Базовое ПО
-
Система контроля версий Git
-
Контейнеризация и Docker
-
Postman / Insomnia
Базы данных
-
Реляционные базы данных
-
Документоориентированные базы данных
-
Redis
-
Проблемы баз данных