Глоссарий
Словарь веб-разработчика
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
терминов
46
букв
Н
Нагрузочное тестирование
Нагрузочное тестирование — проверка того, как система ведёт себя под ожидаемой и пиковой нагрузкой. Отвечает на вопросы: сколько одновременных пользователей выдержит сервер? Где возникает деградация?ТипыLoad test — ожидаемая нагрузка. Держится ли p99 latency < 500 мс при 1000 RPS?Stress test — нагрузка выше ожидаемой. Где «ломается» система?Spike test — внезапный пик. Выдержит ли 10x нагрузку за 1 минуту?Soak test — стабильная нагрузка длительное время. Есть ли утечки памяти?Инструментыk6 — JavaScript, open-source, отличный DXApache JMeter — Java, GUI, проверен годамиGatling — Scala, DSL, хорошая отчётностьМетрикиRPS, latency percentiles (p50, p95, p99), error rate, throughput. Тестируйте в окружении, максимально близком к продакшну.
Наследование
Наследование — механизм, при котором класс-потомок получает свойства и методы родительского класса и может переопределять или расширять их. PHP поддерживает одиночное наследование: класс может иметь только одного родителя.
Базовый пример
class Animal {
public function __construct(protected string $name) {}
public function speak(): string { return '...'; }
}
class Dog extends Animal {
public function speak(): string { return 'Woof!'; }
public function fetch(): void { /* ... */ }
}
$d = new Dog('Rex');
$d->speak(); // "Woof!" — overriding
$d->fetch(); // собственный метод
Когда НЕ стоит использовать
Наследование часто избыточно. Вопрос: «является ли B разновидностью A?» (is-a). Если да — ок. Если вы наследуете только ради повторного использования кода — лучше Composition или Trait.
Composition over Inheritance
Встраивание объектов вместо наследования — более гибко. Вместо class EmailService extends Mailer → class EmailService { private Mailer $mailer; }.
Неизменяемость (Immutability)
Неизменяемый объект — тот, чьё состояние нельзя изменить после создания. Вместо мутации — возвращается новый объект с обновлёнными значениями. Устраняет целый класс багов, связанных с неожиданными мутациями.ПреимуществаПотокобезопасность: неизменяемый объект можно безопасно читать из нескольких потоков одновременноПростота рассуждений: значение не меняется «где-то там», легче отслеживать состояниеUndo/Redo: старое состояние всегда доступноЧистые функции: без побочных эффектов — проще тестироватьПример (Value Object)class Money {
public function __construct(
public readonly int $amount,
public readonly string $currency
) {}
public function add(Money $other): self {
return new self($this->amount + $other->amount, $this->currency);
}
}В JavaScriptconst, Object.freeze(), spread-оператор {...obj, key: newVal}. Библиотеки: Immer, Immutable.js.
Нормализация БД
Нормализация — процесс организации таблиц для минимизации дублирования данных и предотвращения аномалий при вставке, обновлении и удалении. Каждая нормальная форма накладывает более строгие требования.Первые три нормальные формы1NF — каждая ячейка содержит одно атомарное значение (не массив, не список через запятую)2NF — нет частичных зависимостей: каждый не-ключевой атрибут зависит от всего первичного ключа3NF — нет транзитивных зависимостей: не-ключевые атрибуты зависят только от ключа, а не от других не-ключевыхДенормализацияНормализация снижает избыточность, но увеличивает число JOIN. В нагруженных системах чтения данные намеренно денормализуют (дублируют), чтобы избежать сложных запросов. Типичный пример — хранение username вместе с комментарием, чтобы не делать JOIN к таблице users.