Глоссарий

Словарь веб-разработчика

Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.

228 терминов
46 букв
С
Сборщик мусора (Garbage Collection)
Garbage Collection (GC) — автоматическое освобождение памяти от объектов, которые больше не используются. Вместо ручного управления памятью (malloc/free в C) — рантайм сам отслеживает и удаляет недостижимые объекты.АлгоритмыReference Counting — счётчик ссылок на объект. При 0 — объект удаляется. PHP, CPython. Проблема: циклические ссылкиMark and Sweep — обходит граф объектов, помечает достижимые, удаляет непомеченные. Java, Go, JavaScriptGenerational GC — молодые объекты (короткоживущие) собираются чаще старых. JVM, .NET, V8PHP и GCPHP использует reference counting + cyclic garbage collector. Циклические ссылки (A → B → A) не освобождаются reference counting — их убирает cyclic GC. gc_collect_cycles() — ручной запуск.Влияние на производительностьGC-паузы могут влиять на latency. В Go GC concurrent — паузы < 1 мс. В старых JVM GC-паузы были секундами.
Связный список
Связный список — линейная структура данных, где каждый элемент (узел) содержит значение и указатель на следующий узел. В отличие от массива — элементы не хранятся рядом в памяти. Типы Singly Linked — каждый узел → следующий. Обход только вперёд Doubly Linked — каждый узел → следующий и предыдущий. Обход в обоих направлениях Circular — последний узел → первый Сравнение с массивом Вставка/удаление в начале: список O(1) vs массив O(n) (сдвиг) Вставка/удаление в середине: список O(n) (поиск) vs массив O(n) (сдвиг) Доступ по индексу: список O(n) vs массив O(1) Память: список тратит больше (указатели) В PHP PHP-массивы — хеш-таблицы, а не связные списки. Для настоящего связного списка: SplDoublyLinkedList или собственная реализация. На практике редко нужен.
Семантическое версионирование (SemVer)
Семантическое версионирование — соглашение о номерах версий в формате MAJOR.MINOR.PATCH (2.4.1). Каждая часть несёт конкретный смысл, и разработчик сразу понимает, безопасно ли обновиться.ПравилаPATCH (2.4.1 → 2.4.2) — исправление багов. Обратно совместимо, обновляйте спокойноMINOR (2.4.1 → 2.5.0) — новые функции. Обратно совместимо, старый код продолжает работатьMAJOR (2.4.1 → 3.0.0) — ломающие изменения (breaking changes). Нужна проверка перед обновлениемВ Composer и npm"^2.4.1" — разрешает MINOR и PATCH (2.x.x), но не MAJOR"~2.4.1" — разрешает только PATCH (2.4.x)"2.4.1" — фиксированная версияPre-release и метаданные2.0.0-alpha.1, 2.0.0-rc.2 — предварительные версии. 2.0.0+build.42 — метаданные сборки (не влияют на сравнение).
Сессия (Session)
Сессия — механизм сохранения состояния между HTTP-запросами на стороне сервера. Сервер хранит данные сессии (user_id, корзина, flash-сообщения), а клиент получает только идентификатор сессии — обычно в cookie.Как это работаетПри первом запросе сервер создаёт session_id, сохраняет данные сессии и отправляет session_id в cookie. Каждый последующий запрос содержит cookie с session_id — сервер находит данные и «узнаёт» пользователя.Где хранятся данныеФайловая система — просто, но не масштабируется на несколько серверовБаза данных — централизованно, но добавляет задержку на каждом запросеRedis / Memcached — наиболее распространённый вариант для продакшна. Быстро и масштабируетсяSession vs JWTСессия — состояние на сервере, JWT — состояние в токене (на клиенте). Сессию можно сразу отозвать, JWT — только после истечения срока или через blacklist. Сессии лучше для традиционных веб-приложений, JWT — для stateless API и микросервисов.
Сложность алгоритма (Big O)
Big O notation — способ описать, как растёт время выполнения или объём памяти алгоритма с ростом размера входных данных n. Позволяет сравнивать алгоритмы независимо от железа.Основные классыO(1) — константное время. Доступ к массиву по индексу, хеш-таблица. Не зависит от nO(log n) — логарифмическое. Бинарный поиск. Быстро даже для миллиардов элементовO(n) — линейное. Перебор массива. Удвоили n — удвоили времяO(n log n) — Merge Sort, QuickSort (средний случай)O(n²) — вложенные циклы. Bubble Sort. Непригоден при n > 10000O(2ⁿ) — экспоненциальное. Перебор всех подмножеств. Слишком медленноНа практикеSQL-запрос без индекса — O(n). С индексом — O(log n). Именно поэтому индексы в 100 раз важнее оптимизации кода приложения.
Специфичность CSS
Специфичность (specificity) — алгоритм, по которому браузер решает, какое CSS-правило «побеждает» при конфликте. Выше специфичность = правило применяется. Счёт специфичности Три группы: (A, B, C) A — inline styles (style="..."): 1,0,0 B — ID-селекторы (#main): 0,1,0 каждый C — class, псевдокласс, атрибут (.btn, :hover, [type]): 0,0,1 каждый Теги и псевдоэлементы (div, ::before): 0,0,1, но в отдельном счёте Примеры #nav .item a:hover → (0,1,2) /* ID + class + псевдокласс */ .btn.btn-primary → (0,0,2) button → (0,0,1) /* Побеждает первое */ !important !important перекрывает любую специфичность. Избегайте — делает CSS непредсказуемым. Оправдан только для утилит (.hidden { display: none !important; }). Порядок при равной специфичности Побеждает правило, объявленное позже в CSS.
Статический анализ (PHPStan, Psalm)
Статический анализ — автоматическая проверка кода без его выполнения. Находит ошибки типов, недостижимый код, некорректные вызовы методов на этапе CI — до того как баг попадёт на продакшн. PHPStan Самый популярный PHP-анализатор. 10 уровней строгости (0–10). Уровень 0 — базовые ошибки, уровень 9 — проверка каждой строки на корректность типов. vendor/bin/phpstan analyse src --level=6 Psalm Альтернатива от Vimeo. Строже, поддерживает @template generics, taint analysis (поиск SQL-инъекций и XSS через поток данных). Что находит Вызов метода на null-значении Передача неправильного типа в функцию Недостижимый код после return Неиспользуемые переменные и импорты Неисчерпывающие match-выражения
Стек и Очередь (структуры данных)
Стек (Stack) и Очередь (Queue) — базовые линейные структуры данных с разной логикой доступа. Стек: последний пришёл — первый вышел (LIFO). Очередь: первый пришёл — первый вышел (FIFO).Стек (LIFO)push(A), push(B), push(C) pop() → C pop() → BПрименение: стек вызовов (call stack), undo/redo, парсинг выражений, обход дерева в глубину (DFS).Очередь (FIFO)enqueue(A), enqueue(B), enqueue(C) dequeue() → A dequeue() → BПрименение: очередь задач, BFS (обход в ширину), буферы между производителем и потребителем.DequeDouble-ended queue — добавление и удаление с обоих концов. Объединяет возможности стека и очереди.
Строгая типизация (strict_types)
strict_types — директива PHP, включающая строгое соблюдение типов: если функция ожидает int, а передаётся string — бросается TypeError, а не молча конвертируется. Добавляет безопасность и явность в код.