mirror of
https://github.com/cheatsnake/backend-cheats.git
synced 2024-11-24 13:12:04 +03:00
Compare commits
4 Commits
ea8942f38b
...
a692a60fba
Author | SHA1 | Date | |
---|---|---|---|
|
a692a60fba | ||
|
26dcfcb49e | ||
|
de9ecffa57 | ||
|
b10d4e00b7 |
258
README.md
258
README.md
@ -18,156 +18,118 @@
|
||||
|
||||
## Содержание
|
||||
|
||||
<details>
|
||||
<summary><a href="#сеть-и-интернет">1. Сеть и интернет</a></summary>
|
||||
|
||||
- [Как устроен интернет](#как-устроен-интернет)
|
||||
- [Что такое доменное имя](#что-такое-доменное-имя)
|
||||
- [IP-адрес](#ip-адрес)
|
||||
- [Что такое DNS](#что-такое-dns)
|
||||
- [Устройство веб-приложений](#устройство-веб-приложений)
|
||||
- [Браузеры и как они работают](#браузеры-и-как-они-работают)
|
||||
- [VPN и Proxy](#vpn-и-proxy)
|
||||
- [Хостинг](#хостинг)
|
||||
- [Сетевая модель OSI](#сетевая-модель-osi)
|
||||
- [Протокол HTTP](#протокол-http)
|
||||
- [Cтек протоколов TCP/IP](#cтек-протоколов-tcpip)
|
||||
- [Проблемы сети](#проблемы-сети)
|
||||
- [Диагностика сети](#диагностика-сети)
|
||||
</details>
|
||||
<table>
|
||||
<tr><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#устройство-пк">2. Устройство ПК</a></summary>
|
||||
|
||||
- [Основные компоненты (железо)](#основные-компоненты-железо)
|
||||
- [Устройство операционной системы](#устройство-операционной-системы)
|
||||
- [Процессы и потоки](#процессы-и-потоки)
|
||||
- [Конкурентность и параллелизм](#конкурентность-и-параллелизм)
|
||||
- [Межпроцессорное взаимодействие](#межпроцессорное-взаимодействие)
|
||||
</details>
|
||||
- [Сеть и интернет](#сеть-и-интернет)
|
||||
- [Как устроен интернет](#как-устроен-интернет)
|
||||
- [Что такое доменное имя](#что-такое-доменное-имя)
|
||||
- [IP-адрес](#ip-адрес)
|
||||
- [Что такое DNS](#что-такое-dns)
|
||||
- [Устройство веб-приложений](#устройство-веб-приложений)
|
||||
- [Браузеры и как они работают](#браузеры-и-как-они-работают)
|
||||
- [VPN и Proxy](#vpn-и-proxy)
|
||||
- [Хостинг](#хостинг)
|
||||
- [Сетевая модель OSI](#сетевая-модель-osi)
|
||||
- [Протокол HTTP](#протокол-http)
|
||||
- [Cтек протоколов TCP/IP](#cтек-протоколов-tcpip)
|
||||
- [Проблемы сети](#проблемы-сети)
|
||||
- [Диагностика сети](#диагностика-сети)
|
||||
- [Устройство ПК](#устройство-пк)
|
||||
- [Основные компоненты (железо)](#основные-компоненты-железо)
|
||||
- [Устройство операционной системы](#устройство-операционной-системы)
|
||||
- [Процессы и потоки](#процессы-и-потоки)
|
||||
- [Конкурентность и параллелизм](#конкурентность-и-параллелизм)
|
||||
- [Межпроцессорное взаимодействие](#межпроцессорное-взаимодействие)
|
||||
</td><td width=33% valign=top>
|
||||
|
||||
- [Основы Linux](#основы-linux)
|
||||
- [Работа с терминалом](#работа-с-терминалом)
|
||||
- [Менеджер пакетов](#менеджер-пакетов)
|
||||
- [Скрипты Bash](#скрипты-bash)
|
||||
- [Пользователи](#пользователи)
|
||||
- [Права доступа](#права-доступа)
|
||||
- [Работа с процессами](#работа-с-процессами)
|
||||
- [Работа с SSH](#работа-с-ssh)
|
||||
- [Сетевые утилиты](#сетевые-утилиты)
|
||||
- [Планировщик задач](#планировщик-задач)
|
||||
- [Системные логи](#системные-логи)
|
||||
- [Проблемы в Linux](#проблемы-в-linux)
|
||||
- [Общие знания](#общие-знания)
|
||||
- [Системы счисления](#системы-счисления)
|
||||
- [Логические операции](#логические-операции)
|
||||
- [Структуры данных](#структуры-данных)
|
||||
- [Базовые алгоритмы](#базовые-алгоритмы)
|
||||
- [Оценка сложности алгоритмов](#оценка-сложности-алгоритмов)
|
||||
- [Форматы хранения данных](#форматы-хранения-данных)
|
||||
- [Кодировки текста](#кодировки-текста)
|
||||
</td><td valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#основы-linux">3. Основы Linux</a></summary>
|
||||
|
||||
- [Работа с терминалом](#работа-с-терминалом)
|
||||
- [Менеджер пакетов](#менеджер-пакетов)
|
||||
- [Скрипты Bash](#скрипты-bash)
|
||||
- [Пользователи](#пользователи)
|
||||
- [Права доступа](#права-доступа)
|
||||
- [Работа с процессами](#работа-с-процессами)
|
||||
- [Работа с SSH](#работа-с-ssh)
|
||||
- [Сетевые утилиты](#сетевые-утилиты)
|
||||
- [Планировщик задач](#планировщик-задач)
|
||||
- [Системные логи](#системные-логи)
|
||||
- [Проблемы в Linux](#проблемы-в-linux)
|
||||
</details>
|
||||
- [Язык программирования](#язык-программирования)
|
||||
- [Классификация языков программирования](#классификация-языков-программирования)
|
||||
- [Основы языка](#основы-языка)
|
||||
- [Объектно ориентированное программирование](#объектно-ориентированное-программирование)
|
||||
- [Разработка серверов](#разработка-серверов)
|
||||
- [Многопоточность](#многопоточность)
|
||||
- [Продвинутые темы](#продвинутые-темы)
|
||||
- [Качество кода](#качество-кода)
|
||||
- [Базы данных](#базы-данных)
|
||||
- [Классификация баз данных](#классификация-баз-данных)
|
||||
- [Реляционная база данных](#реляционная-база-данных)
|
||||
- [MongoDB](#mongodb)
|
||||
- [Redis](#redis)
|
||||
- [Требования ACID](#требования-acid)
|
||||
- [Проектирование баз данных](#проектирование-баз-данных)
|
||||
- [Разработка API](#разработка-api)
|
||||
- [REST API](#rest-api)
|
||||
- [GraphQL](#graphql)
|
||||
- [WebSockets](#websockets)
|
||||
- [RPC и gRPC](#rpc-и-grpc)
|
||||
- [WebRTC](#webrtc)
|
||||
</td></tr>
|
||||
|
||||
<tr><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#общие-знания">4. Общие знания</a></summary>
|
||||
|
||||
- [Системы счисления](#системы-счисления)
|
||||
- [Логические операции](#логические-операции)
|
||||
- [Структуры данных](#структуры-данных)
|
||||
- [Базовые алгоритмы](#базовые-алгоритмы)
|
||||
- [Оценка сложности алгоритмов](#оценка-сложности-алгоритмов)
|
||||
- [Форматы хранения данных](#форматы-хранения-данных)
|
||||
- [Кодировки текста](#кодировки-текста)
|
||||
</details>
|
||||
- [Программное обеспечение](#программное-обеспечение)
|
||||
- [Система контроля версий Git](#система-контроля-версий-git)
|
||||
- [Docker](#docker)
|
||||
- [Postman/Insomnia](#postmaninsomnia)
|
||||
- [Веб-сервера](#веб-сервера)
|
||||
- [Брокеры сообщений](#брокеры-сообщений)
|
||||
- [Безопасность](#безопасность)
|
||||
- [Уязвимости веб-приложений](#уязвимости-веб-приложений)
|
||||
- [Переменные окружения](#переменные-окружения)
|
||||
- [Хеширование](#хеширование)
|
||||
- [Аутентификация и авторизация](#аутентификация-и-авторизация)
|
||||
- [SSL/TLS](#ssltls)
|
||||
</td><td width=33% valign=top>
|
||||
|
||||
- [Тестирование](#тестирование)
|
||||
- [Unit-тесты](#unit-тесты)
|
||||
- [Интеграционные тесты](#интеграционные-тесты)
|
||||
- [E2E тесты](#e2e-тесты)
|
||||
- [Нагрузочное тестирование](#нагрузочное-тестирование)
|
||||
- [Регрессионное тестирование](#регрессионное-тестирование)
|
||||
- [Оптимизация](#оптимизация)
|
||||
- [Профилирование](#профилирование)
|
||||
- [Бенчмарки](#бенчмарки)
|
||||
- [Кэширование](#кэширование)
|
||||
- [Балансировка нагрузки](#балансировка-нагрузки)
|
||||
</td><td valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#язык-программирования">5. Язык программирования</a></summary>
|
||||
|
||||
- [Классификация языков программирования](#классификация-языков-программирования)
|
||||
- [Основы языка](#основы-языка)
|
||||
- [Объектно ориентированное программирование](#объектно-ориентированное-программирование)
|
||||
- [Разработка серверов](#разработка-серверов)
|
||||
- [Многопоточность](#многопоточность)
|
||||
- [Продвинутые темы](#продвинутые-темы)
|
||||
- [Качество кода](#качество-кода)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#базы-данных">6. Базы данных</a></summary>
|
||||
|
||||
- [Классификация баз данных](#классификация-баз-данных)
|
||||
- [Реляционная база данных](#реляционная-база-данных)
|
||||
- [MongoDB](#mongodb)
|
||||
- [Redis](#redis)
|
||||
- [Требования ACID](#требования-acid)
|
||||
- [Проектирование баз данных](#проектирование-баз-данных)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#разработка-api">7. Разработка API</a></summary>
|
||||
|
||||
- [REST API](#rest-api)
|
||||
- [GraphQL](#graphql)
|
||||
- [WebSockets](#websockets)
|
||||
- [RPC и gRPC](#rpc-и-grpc)
|
||||
- [WebRTC](#webrtc)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#программное-обеспечение">8. Программное обеспечение</a></summary>
|
||||
|
||||
- [Система контроля версий Git](#система-контроля-версий-git)
|
||||
- [Docker](#docker)
|
||||
- [Postman/Insomnia](#postmaninsomnia)
|
||||
- [Веб-сервера](#веб-сервера)
|
||||
- [Брокеры сообщений](#брокеры-сообщений)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#безопасность">9. Безопасность</a></summary>
|
||||
|
||||
- [Уязвимости веб-приложений](#уязвимости-веб-приложений)
|
||||
- [Переменные окружения](#переменные-окружения)
|
||||
- [Хеширование](#хеширование)
|
||||
- [Аутентификация и авторизация](#аутентификация-и-авторизация)
|
||||
- [SSL/TLS](#ssltls)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#тестирование">10. Тестирование</a></summary>
|
||||
|
||||
- [Unit-тесты](#unit-тесты)
|
||||
- [Интеграционные тесты](#интеграционные-тесты)
|
||||
- [E2E тесты](#e2e-тесты)
|
||||
- [Нагрузочное тестирование](#нагрузочное-тестирование)
|
||||
- [Регрессионное тестирование](#регрессионное-тестирование)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#оптимизация">11. Оптимизация</a></summary>
|
||||
|
||||
- [Профилирование](#профилирование)
|
||||
- [Бенчмарки](#бенчмарки)
|
||||
- [Кэширование](#кэширование)
|
||||
- [Балансировка нагрузки](#балансировка-нагрузки)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#документирование">12. Документирование</a></summary>
|
||||
|
||||
- [Markdown](#markdown)
|
||||
- [Документация внутри кода](#документация-внутри-кода)
|
||||
- [Документирование API](#документирование-api)
|
||||
- [Генераторы статики](#генераторы-статики)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#построение-архитектуры">13. Построение архитектуры</a></summary>
|
||||
|
||||
- [Архитектурные шаблоны](#архитектурные-шаблоны)
|
||||
- [Паттерны проектирования](#паттерны-проектирования)
|
||||
- [Монолитная и микросервисная архитектура](#монолитная-и-микросервисная-архитектура)
|
||||
- [Горизонтальное и вертикальное масштабирование](#горизонтальное-и-вертикальное-масштабирование)
|
||||
</details>
|
||||
|
||||
[Дополнительные и похожие ресурсы](#дополнительные-и-похожие-ресурсы)
|
||||
- [Документирование](#документирование)
|
||||
- [Markdown](#markdown)
|
||||
- [Документация внутри кода](#документация-внутри-кода)
|
||||
- [Документирование API](#документирование-api)
|
||||
- [Генераторы статики](#генераторы-статики)
|
||||
- [Построение архитектуры](#построение-архитектуры)
|
||||
- [Архитектурные шаблоны](#архитектурные-шаблоны)
|
||||
- [Паттерны проектирования](#паттерны-проектирования)
|
||||
- [Монолитная и микросервисная архитектура](#монолитная-и-микросервисная-архитектура)
|
||||
- [Горизонтальное и вертикальное масштабирование](#горизонтальное-и-вертикальное-масштабирование)
|
||||
- [Дополнительные и похожие ресурсы](#дополнительные-и-похожие-ресурсы)
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
## Сеть и интернет
|
||||
|
||||
@ -177,9 +139,7 @@
|
||||
|
||||
<p align="center"><img src="./files/network-internet/Internet.png" alt="Internet"/></p>
|
||||
|
||||
Ваш компьютер никогда не был связан с Интернетом напрямую. Поскольку он способен видеть только свою локальную сеть, в которую проводным ([Ethernet](https://ru.wikipedia.org/wiki/Ethernet)) или беспроводным (Wi-Fi, Bluetooth) путем подключены другие устройства. Для связи с Интернетом в вашей локальной сети находиться специальный мини-компьютер – [маршрутизатор](https://ru.wikipedia.org/wiki/Маршрутизатор). Далее он связывает вас с [интернет-провайдером](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BF%D1%80%D0%BE%D0%B2%D0%B0%D0%B9%D0%B4%D0%B5%D1%80), который в свою очередь связан с другими провайдерами более высокого уровня. Таким образом, ваше сообщение, проходит транзитом через сеть нескольких провайдеров, прежде чем достигнет сеть назначения.
|
||||
|
||||
Интернет – это всего лишь длинный провод, к которому напрямую присоединены небольшое количество [провайдеров первого уровня](https://ru.wikipedia.org/wiki/Tier-1-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B). Провайдеры уровня ниже просто арендуют доступ.
|
||||
Ваш компьютер не имеет прямого доступа в Интернет. Вместо этого он имеет доступ к вашей локальной сети, к которой подключены другие устройства через проводное ([Ethernet](https://ru.wikipedia.org/wiki/Ethernet)) или беспроводное (Wi-Fi) соединение. Организатором такой сети является специальный мини-компьютер – [маршрутизатор](https://ru.wikipedia.org/wiki/Маршрутизатор). Это устройство связывает Вас с [интернет-провайдером](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BF%D1%80%D0%BE%D0%B2%D0%B0%D0%B9%D0%B4%D0%B5%D1%80), который в свою очередь связан с другими провайдерами более высокого уровня. Таким образом, все эти взаимодействия образуют Интернет, и ваши сообщения всегда проходят транзитом через разные сети, прежде чем достигнут конечного получателя.
|
||||
|
||||
- [Хост](https://ru.wikipedia.org/wiki/Хост)
|
||||
> (Host - принимающий) так называют любое устройство, которое находится в какой-либо сети.
|
||||
@ -487,7 +447,7 @@
|
||||
- [HTTPS](https://ru.wikipedia.org/wiki/HTTPS)
|
||||
> Тот же HTTP, но с поддержкой шифрования
|
||||
- [Cookie](https://developer.mozilla.org/ru/docs/Web/HTTP/Cookies)
|
||||
> Поскольку протокол HTTP не позволяет сохранять никакой информации о состояниях предыдущих запросов/ответов, возникает необходимость в использовании cookie. Куки позволяют серверу хранить различную информацию на стороне клиента, которую в последующем клиент может отсылать обратно на сервер. В частности куки могут использоваться для авторизации или для сохранения различных параметров/настроек.
|
||||
> Протокол HTTP не предоставляет возможности сохранять информацию о состояниях предыдущих запросов и ответов. Для решения этой проблемы используются куки. Куки позволяют серверу хранить информацию на стороне клиента, которую клиент может передавать обратно на сервер. Например, куки могут использоваться для авторизации пользователей или для сохранения различных параметров и настроек.
|
||||
- [CORS (Cross origin resource sharing)](https://ru.wikipedia.org/wiki/Cross-origin_resource_sharing)
|
||||
> Технология, которая позволяет одному домену получать данные от другого.
|
||||
- [CSP (Content Security Policy)](https://developer.mozilla.org/ru/docs/Web/HTTP/CSP)
|
||||
@ -2500,8 +2460,8 @@
|
||||
> Бенчмарки полезны, как для оценки производительности, так и для выбора наиболее эффективного решения поставленной задачи.
|
||||
- Какие конкретные инструменты для этого есть?
|
||||
> Для Python: [timeit](https://docs.python.org/3/library/timeit.html), [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark). <br>
|
||||
> Для Node.js: [console.time](https://nodejs.org/api/console.html#consoletimelabel) [Artillery](https://github.com/artilleryio/artillery) <br>
|
||||
> Для Go: [testing.B](https://pkg.go.dev/testing#hdr-Benchmarks), [Benchstat](https://pkg.go.dev/golang.org/x/perf/cmd/benchstat)
|
||||
> Для Node.js: [console.time](https://nodejs.org/api/console.html#consoletimelabel), [Artillery](https://github.com/artilleryio/artillery). <br>
|
||||
> Для Go: [testing.B](https://pkg.go.dev/testing#hdr-Benchmarks), [Benchstat](https://pkg.go.dev/golang.org/x/perf/cmd/benchstat).
|
||||
|
||||
Существуют бенчмарки для измерения производительности сетевых приложений, где можно получить подробную информацию о среднем времени обработки запросов, максимальном количестве поддерживаемых подключений, скорости передачи данных и так далее ([см. список HTTP бенчмарков](https://github.com/denji/awesome-http-benchmark)).
|
||||
|
||||
|
251
README_ENG.md
251
README_ENG.md
@ -16,153 +16,118 @@ This repository is a visual cheatsheet on the main topics in Backend-development
|
||||
|
||||
## Contents
|
||||
|
||||
<details>
|
||||
<summary><a href="#network---internet">1. Network & Internet</a></summary>
|
||||
|
||||
* [How the Internet works](#how-the-internet-works)
|
||||
* [What is a domain name](#what-is-a-domain-name)
|
||||
* [IP address](#ip-address)
|
||||
* [What is DNS](#what-is-dns)
|
||||
* [Web application design](#web-application-design)
|
||||
* [Browsers and how they work](#browsers-and-how-they-work)
|
||||
* [VPN and Proxy](#vpn-and-proxy)
|
||||
* [Hosting](#hosting)
|
||||
* [OSI network model](#osi-network-model)
|
||||
* [HTTP Protocol](#http-protocol)
|
||||
* [TCP/IP stack](#tcpip-stack)
|
||||
* [Network problems](#network-problems)
|
||||
* [Network diagnostics](#network-diagnostics)
|
||||
</details>
|
||||
<table>
|
||||
<tr><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#pc-device">2. PC device</a></summary>
|
||||
|
||||
* [Main components (hardware)](#main-components--hardware-)
|
||||
* [Operating system design](#operating-system-design)
|
||||
* [Processes and threads](#processes-and-threads)
|
||||
* [Concurrency and parallelism](#concurrency-and-parallelism)
|
||||
* [Inter-process communication](#inter-process-communication)
|
||||
</details>
|
||||
- [Network & Internet](#network--internet)
|
||||
* [How the Internet works](#how-the-internet-works)
|
||||
* [What is a domain name](#what-is-a-domain-name)
|
||||
* [IP address](#ip-address)
|
||||
* [What is DNS](#what-is-dns)
|
||||
* [Web application design](#web-application-design)
|
||||
* [Browsers and how they work](#browsers-and-how-they-work)
|
||||
* [VPN and Proxy](#vpn-and-proxy)
|
||||
* [Hosting](#hosting)
|
||||
* [OSI network model](#osi-network-model)
|
||||
* [HTTP Protocol](#http-protocol)
|
||||
* [TCP/IP stack](#tcpip-stack)
|
||||
* [Network problems](#network-problems)
|
||||
* [Network diagnostics](#network-diagnostics)
|
||||
- [PC device](#pc-device)
|
||||
* [Main components (hardware)](#main-components-hardware)
|
||||
* [Operating system design](#operating-system-design)
|
||||
* [Processes and threads](#processes-and-threads)
|
||||
* [Concurrency and parallelism](#concurrency-and-parallelism)
|
||||
* [Inter-process communication](#inter-process-communication)
|
||||
</td><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#linux-basics">3. Linux Basics</a></summary>
|
||||
|
||||
* [Working with the terminal](#working-with-the-terminal)
|
||||
* [Package manager](#package-manager)
|
||||
* [Bash scripts](#bash-scripts)
|
||||
* [Users and groups](#users-and-groups)
|
||||
* [Permissions](#permissions)
|
||||
* [Working with processes](#working-with-processes)
|
||||
* [Working with SSH](#working-with-ssh)
|
||||
* [Network utils](#network-utils)
|
||||
* [Task Scheduler](#task-scheduler)
|
||||
* [System logs](#system-logs)
|
||||
* [Linux problems](#linux-problems)
|
||||
</details>
|
||||
- [Linux basics](#linux-basics)
|
||||
* [Working with the terminal](#working-with-the-terminal)
|
||||
* [Package manager](#package-manager)
|
||||
* [Bash scripts](#bash-scripts)
|
||||
* [Users and groups](#users-and-groups)
|
||||
* [Permissions](#permissions)
|
||||
* [Working with processes](#working-with-processes)
|
||||
* [Working with SSH](#working-with-ssh)
|
||||
* [Network utils](#network-utils)
|
||||
* [Task Scheduler](#task-scheduler)
|
||||
* [System logs](#system-logs)
|
||||
* [Linux problems](#linux-problems)
|
||||
- [General knowledge](#general-knowledge)
|
||||
* [Numeral systems](#numeral-systems)
|
||||
* [Logical connective](#logical-connective)
|
||||
* [Data structures](#data-structures)
|
||||
* [Basic algorithms](#basic-algorithms)
|
||||
* [Algorithm complexity](#algorithm-complexity)
|
||||
* [Data storage formats](#data-storage-formats)
|
||||
* [Text encodings](#text-encodings)
|
||||
</td><td valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#general-knowledge">4. General knowledge</a></summary>
|
||||
|
||||
* [Numeral systems](#numeral-systems)
|
||||
* [Logical connective](#logical-connective)
|
||||
* [Data structures](#data-structures)
|
||||
* [Basic algorithms](#basic-algorithms)
|
||||
* [Algorithm complexity](#algorithm-complexity)
|
||||
* [Data storage formats](#data-storage-formats)
|
||||
* [Text encodings](#text-encodings)
|
||||
</details>
|
||||
- [Programming Language](#programming-language)
|
||||
* [Classification of programming languages](#classification-of-programming-languages)
|
||||
* [Language Basics](#language-basics)
|
||||
* [Object-oriented programming](#object-oriented-programming)
|
||||
* [Server development](#server-development)
|
||||
* [Multithreading](#multithreading)
|
||||
* [Advanced Topics](#advanced-topics)
|
||||
* [Code quality](#code-quality)
|
||||
- [Databases](#databases)
|
||||
* [Database classification](#database-classification)
|
||||
* [Relational database](#relational-database)
|
||||
* [MongoDB](#mongodb)
|
||||
* [Redis](#redis)
|
||||
* [ACID Requirements](#acid-requirements)
|
||||
* [Designing databases](#designing-databases)
|
||||
- [API development](#api-development)
|
||||
* [REST API](#rest-api)
|
||||
* [GraphQL](#graphql)
|
||||
* [WebSockets](#websockets)
|
||||
* [RPC and gRPC](#rpc-and-grpc)
|
||||
* [WebRTC](#webrtc)
|
||||
</td></tr>
|
||||
|
||||
<details>
|
||||
<summary><a href="#programming-language">5. Programming Language</a></summary>
|
||||
|
||||
* [Classification of programming languages](#classification-of-programming-languages)
|
||||
* [Language Basics](#language-basics)
|
||||
* [Object-oriented programming](#object-oriented-programming)
|
||||
* [Server development](#server-development)
|
||||
* [Multithreading](#multithreading)
|
||||
* [Advanced Topics](#advanced-topics)
|
||||
* [Code quality](#code-quality)
|
||||
</details>
|
||||
<tr><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#databases">6. Databases</a></summary>
|
||||
|
||||
* [Database classification](#database-classification)
|
||||
* [Relational database](#relational-database)
|
||||
* [MongoDB](#mongodb)
|
||||
* [Redis](#redis)
|
||||
* [ACID Requirements](#acid-requirements)
|
||||
* [Designing databases](#designing-databases)
|
||||
</details>
|
||||
- [Software](#security)
|
||||
* [Git version control system](#git-version-control-system)
|
||||
* [Docker](#docker)
|
||||
* [Postman/Insomnia](#postmaninsomnia)
|
||||
* [Web servers](#web-servers)
|
||||
* [Message brokers](#message-brokers)
|
||||
- [Security](#security)
|
||||
* [Web application vulnerabilities](#web-application-vulnerabilities)
|
||||
* [Environment variables](#environment-variables)
|
||||
* [Hashing](#hashing)
|
||||
* [Authentication and authorization](#authentication-and-authorization)
|
||||
* [SSL/TLS](#ssltls)
|
||||
</td><td width=33% valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#api-development">7. API development</a></summary>
|
||||
|
||||
* [REST API](#rest-api)
|
||||
* [GraphQL](#graphql)
|
||||
* [WebSockets](#websockets)
|
||||
* [RPC and gRPC](#rpc-and-grpc)
|
||||
* [WebRTC](#webrtc)
|
||||
</details>
|
||||
- [Testing](#testing)
|
||||
* [Unit Tests](#unit-tests)
|
||||
* [Integration tests](#integration-tests)
|
||||
* [E2E tests](#e2e-tests)
|
||||
* [Load testing](#load-testing)
|
||||
* [Regression testing](#regression-testing)
|
||||
- [Optimization](#optimization)
|
||||
* [Profiling](#profiling)
|
||||
* [Benchmarks](#benchmarks)
|
||||
* [Caching](#caching)
|
||||
* [Load balancing](#load-balancing)
|
||||
</td><td valign=top>
|
||||
|
||||
<details>
|
||||
<summary><a href="#software">8. Software</a></summary>
|
||||
|
||||
* [Git version control system](#git-version-control-system)
|
||||
* [Docker](#docker)
|
||||
* [Postman/Insomnia](#postmaninsomnia)
|
||||
* [Web servers](#web-servers)
|
||||
* [Message brokers](#message-brokers)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#security">9. Security</a></summary>
|
||||
|
||||
* [Web application vulnerabilities](#web-application-vulnerabilities)
|
||||
* [Environment variables](#environment-variables)
|
||||
* [Hashing](#hashing)
|
||||
* [Authentication and authorization](#authentication-and-authorization)
|
||||
* [SSL/TLS](#ssltls)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#testing">10. Testing</a></summary>
|
||||
|
||||
* [Unit Tests](#unit-tests)
|
||||
* [Integration tests](#integration-tests)
|
||||
* [E2E tests](#e2e-tests)
|
||||
* [Load testing](#load-testing)
|
||||
* [Regression testing](#regression-testing)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#optimization">11. Optimization</a></summary>
|
||||
|
||||
- [Profiling](#profiling)
|
||||
- [Benchmarks](#benchmarks)
|
||||
- [Caching](#caching)
|
||||
- [Load balancing](#load-balancing)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#documentation">12. Documentation</a></summary>
|
||||
|
||||
* [Markdown](#markdown)
|
||||
* [Documentation inside code](#documentation-inside-code)
|
||||
* [API Documentation](#api-documentation)
|
||||
* [Static generators](#static-generators)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><a href="#building-architecture">13. Building Architecture</a></summary>
|
||||
|
||||
* [Architectural Patterns](#architectural-patterns)
|
||||
* [Design patterns](#design-patterns)
|
||||
* [Monolithic and microservice architecture](#monolithic-and-microservice-architecture)
|
||||
* [Horizontal and vertical scaling](#horizontal-and-vertical-scaling)
|
||||
</details>
|
||||
|
||||
[Additional and similar resources](#additional-and-similar-resources)
|
||||
- [Documentation](#documentation)
|
||||
* [Markdown](#markdown)
|
||||
* [Documentation inside code](#documentation-inside-code)
|
||||
* [API Documentation](#api-documentation)
|
||||
* [Static generators](#static-generators)
|
||||
- [Building Architecture](#building-architecture)
|
||||
* [Architectural Patterns](#architectural-patterns)
|
||||
* [Design patterns](#design-patterns)
|
||||
* [Monolithic and microservice architecture](#monolithic-and-microservice-architecture)
|
||||
* [Horizontal and vertical scaling](#horizontal-and-vertical-scaling)
|
||||
- [Additional and similar resources](#additional-and-similar-resources)
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
## Network & Internet
|
||||
|
||||
@ -172,9 +137,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development
|
||||
|
||||
<p align="center"><img src="./files/network-internet/Internet.png" alt="Internet"/></p>
|
||||
|
||||
Your computer has never been directly connected to the Internet. Because it can only see its local network to which other devices are connected via wired ([Ethernet](https://en.wikipedia.org/wiki/Ethernet)) or wirelessly (Wi-Fi, Bluetooth). To communicate with the Internet, you have a special minicomputer in your local network - [router](<https://en.wikipedia.org/wiki/Router_(computing)>). It then connects you to [Internet Service Provider](https://en.wikipedia.org/wiki/Internet_service_provider) which in turn connects to other higher-level providers. Thus, your message, transits through the network of several ISPs before reaching the destination network.
|
||||
|
||||
The Internet is just a long wire to which a small number of [Tier 1 providers](https://en.wikipedia.org/wiki/Tier_1_network) are directly connected. The ISPs below that are just renting access.
|
||||
Your computer does not have direct access to the Internet. Instead, it has access to your local network to which other devices are connected via a wired ([Ethernet](https://en.wikipedia.org/wiki/Ethernet)) or wireless (Wi-Fi) connection. The organizer of such a network is a special minicomputer - [router](<https://en.wikipedia.org/wiki/Router_(computing)>). This device connects you to your [Internet Service Provider (ISP)](https://en.wikipedia.org/wiki/Internet_service_provider), which in turn is connected to other higher-level ISPs. Thus, all these interactions make up the Internet, and your messages always transit through different networks before reaching the final recipient.
|
||||
|
||||
- [Host](<https://en.wikipedia.org/wiki/Host_(network)>)
|
||||
> Any device that is on any network.
|
||||
@ -462,7 +425,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development
|
||||
- [HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/https)
|
||||
> Same HTTP, but with encryption support
|
||||
- [Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
|
||||
> Because the HTTP protocol does not allow you to save any information about the status of previous requests/responses, you need to use cookies. Cookies allow the server to store various information on the client side, which the client can then send back to the server. In particular, cookies can be used for authorization or to save various settings/configurations.
|
||||
> The HTTP protocol does not provide the ability to save information about the status of previous requests and responses. Cookies are used to solve this problem. Cookies allow the server to store information on the client side that the client can send back to the server. For example, cookies can be used to authenticate users or to store various settings.
|
||||
- [CORS (Cross origin resource sharing)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
|
||||
> A technology that allows one domain to securely receive data from another domain.
|
||||
- [CSP (Content Security Policy)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
|
||||
|
Loading…
Reference in New Issue
Block a user