Параметры конструктора прямо в объявлении типа: class Service(ILogger log). Для class и struct появились в C# 12; параметры видны во всём теле типа, но не становятся свойствами.
Глоссарий
Термины, которые встречаются в ответах. В тексте они подчёркнуты пунктиром и открываются по нажатию.
- .editorconfig
Файл настроек в репозитории, общий для IDE и сборки: отступы, стиль кода и важность правил анализаторов (
dotnet_diagnostic.CA2016.severity = error). Действует на папку, где лежит, и вложенные.- .NET Core (современный .NET)
Кроссплатформенная реализация .NET с открытым кодом, появилась в 2016 году. С версии 5 называется просто .NET и выходит каждый ноябрь.
- .NET Framework
Исходная реализация .NET только для Windows, входит в состав ОС. Последняя версия — 4.8.1; поддерживается, пока поддерживается Windows, но новых возможностей не получает.
- .NET Hosting Bundle
Установщик для Windows-сервера с IIS: ставит рантайм .NET, ASP.NET Core и ASP.NET Core Module. Без него IIS не умеет запускать приложения ASP.NET Core.
- .NET SDK
Набор для разработки: компилятор, MSBuild, шаблоны и команда
dotnetсbuild,test,publish. Рантайм нужен только для запуска готового приложения, а версию SDK для репозитория фиксируют вglobal.json.- .NET Standard
Формальная спецификация API, доступных в нескольких реализациях .NET. Последняя версия — 2.1;
netstandard2.0— последняя, которую поддерживает .NET Framework.- «Банда четырёх» (Gang of Four, GoF)
Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — авторы книги «Design Patterns» (1994), где описаны 23 классических паттерна в трёх группах.
- Абсолютное истечение (absolute expiration)
Запись удаляется из кеша в заданный момент или через заданное время после добавления, сколько бы её ни читали.
- Абстрактная фабрика (Abstract Factory)
Порождающий паттерн: интерфейс с методами создания целого семейства согласованных объектов без указания их конкретных классов. Пример в .NET —
DbProviderFactory.- Абстрактный класс (abstract class)
Класс с модификатором
abstract: создать его экземпляр нельзя, только унаследоваться. Может содержать поля, конструкторы, готовые методы и абстрактные члены без тела, которые наследник обязан реализовать.- Абстракция (abstraction)
Принцип ООП: наружу виден только существенный для клиента контракт — что объект умеет, а не как он это делает. В C# абстракцию задают интерфейсы и абстрактные классы.
- Автокоммит (autocommit)
Режим, в котором каждый оператор — отдельная транзакция и фиксируется сразу после выполнения. Режим по умолчанию в SQL Server, SqlClient и PostgreSQL.
- Авторизация (authorization)
Решение, что разрешено уже известному пользователю: какой endpoint вызвать, какой документ открыть. Отказ вошедшему пользователю — 403, невошедшему — 401.
- Авторизация по ресурсу (resource-based authorization)
Проверка доступа к конкретному объекту — документу, заявке — после его загрузки. В ASP.NET Core выполняется в коде вызовом
IAuthorizationService.AuthorizeAsync(user, resource, policy).- Агрегат (aggregate)
Группа связанных объектов, которую меняют как единое целое через корень. Агрегат — граница консистентности: его инварианты выполняются после каждой транзакции.
- Агрегатная функция
Функция, которая сворачивает набор строк в одно значение:
COUNT,SUM,AVG,MIN,MAX. Все они, кромеCOUNT(*), пропускаютNULL.- Адаптер (Adapter)
Структурный паттерн: обёртка реализует интерфейс, который ждёт клиент, и переводит вызовы в API другого объекта с несовместимым интерфейсом.
- Адаптер платформы (platform adapter)
Слой, через который NestJS работает с HTTP-библиотекой:
@nestjs/platform-express(по умолчанию) или@nestjs/platform-fastify. Код на декораторах NestJS от выбора адаптера не зависит.- Амортизированная сложность (amortized complexity)
Средняя стоимость операции на длинной серии вызовов.
List<T>.Addиногда копирует весь массив за O(n), но в среднем стоит O(1), потому что ёмкость растёт удвоением.- Анализ null-состояния (null-state analysis)
Статический анализ компилятора, который отслеживает для каждого выражения состояние not-null или maybe-null с учётом проверок, присваиваний и атрибутов вроде
[NotNullWhen].- Анализатор Roslyn (Roslyn analyzer)
Расширение компилятора C#, которое проверяет код во время сборки и в IDE и выдаёт диагностики вроде
CA2016илиIDE0161. Анализаторы качества кода встроены в .NET SDK с .NET 5.- Анемичная модель предметной области (anemic domain model)
Модель, в которой сущности — только данные со свойствами, а вся логика и проверки живут в сервисах. Фаулер считает её антипаттерном; она не связана с выбором слоёной или чистой архитектуры.
- Аннотация типа (type hint)
Указание типа параметра, переменной или результата функции:
item_id: int,-> dict. Интерпретатор её не проверяет, но её читают mypy, IDE и библиотеки вроде FastAPI и Pydantic.- Аномалии изменения (update anomalies)
Ошибки, которые возникают, когда один факт хранится в нескольких строках: при обновлении меняют не все копии, при удалении теряют лишние данные, а при вставке не могут завести запись без связанной.
- Анонимный метод (anonymous method)
Процедура или функция без имени, которую можно присвоить переменной типа
reference to procedureили передать параметром. Это замыкание: оно захватывает внешние переменные (не значения) и продлевает им жизнь. Появились в Delphi 2009.- Антипаттерн (anti-pattern)
Часто повторяемое решение, которое кажется разумным, но приносит больше вреда, чем пользы, и для которого известна лучшая замена.
- Антисоединение (anti semi join)
Соединение, которое возвращает строки левой таблицы, не имеющие ни одной пары справа. В SQL его пишут через
NOT EXISTS;NOT INдаёт тот же результат, только если в подзапросе нетNULL.- Артефакт сборки (build artifact)
Результат конвейера, который сохраняют и выкладывают: архив с результатом
dotnet publish, NuGet-пакет или образ контейнера. Его собирают один раз и продвигают по окружениям без пересборки.- Асимптотическая сложность (O-нотация)
Оценка того, как растёт время или память операции с ростом числа элементов n. O(1) — не зависит от n, O(log n) — растёт очень медленно, O(n) — пропорционально n.
- Асинхронный запрос-ответ (asynchronous request-reply)
Паттерн для долгих операций по HTTP: сервер сразу отвечает 202 Accepted с адресом статуса, а клиент опрашивает его или получает уведомление, когда результат готов.
- Асинхронный поток (async stream)
Последовательность
IAsyncEnumerable<T>, элементы которой приходят асинхронно. Создаётся методомasyncсyield return, читается черезawait foreach; появилась в C# 8.- Атомарная операция
Операция, которая выполняется целиком: другие потоки видят либо состояние до неё, либо после, но не промежуточное. В .NET атомарны чтение и запись выровненных значений до размера указателя и методы Interlocked.
- Атрибут [ApiController]
Атрибут контроллера, который включает поведение для API: обязательную маршрутизацию атрибутами, автоматический ответ 400 при ошибках валидации, вывод источников параметров и ProblemDetails для кодов ошибок.
- Аутентификация (authentication)
Проверка того, кто делает запрос: по паролю, сертификату, учётной записи Windows или токену. В ASP.NET Core её результат —
ClaimsPrincipalвHttpContext.User.- Балансировщик нагрузки (load balancer)
Компонент, который распределяет входящий трафик между экземплярами сервиса и исключает неисправные. L4 работает с TCP/UDP-соединениями, L7 — с HTTP-запросами.
- Барьер памяти (memory barrier)
Инструкция, которая запрещает компилятору и процессору переносить обращения к памяти через неё. Полный барьер в .NET дают Interlocked и Thread.MemoryBarrier.
- Безопасная точка (safe point)
Место в коде, где рантайм точно знает, где лежат ссылки, и может остановить поток для сборки. Блокирующая сборка ждёт, пока потоки дойдут до таких точек; поток в нативном коде не останавливают, но вернуться в управляемый код до конца сборки он не сможет.
- Безопасный метод HTTP
Метод, который по семантике не меняет состояние сервера: GET, HEAD, OPTIONS, TRACE. Такие запросы можно кешировать и повторять без последствий.
- Бинарный поиск (binary search)
Поиск в отсортированном массиве делением диапазона пополам: сравнить с серединой и отбросить половину, где элемента быть не может. Работает за O(log n); в .NET —
Array.BinarySearchиList<T>.BinarySearch.- Блок @defer (deferrable views)
Блок шаблона, код которого загружается отдельным чанком по триггеру: появление в области видимости, простой браузера, взаимодействие. Блоки
@placeholderи@loadingпоказывают заглушку. Появился в Angular 17.- Блокировка Sch-M (schema modification)
Блокировка, которую берёт DDL при изменении объекта. Несовместима ни с одной другой блокировкой, поэтому пока она ждёт или удерживается, все запросы к таблице стоят.
- Блокирующий ресурс (render-blocking resource)
Ресурс, без которого браузер не начнёт отрисовку: стили в
headи синхронные скрипты. Скрипты сdefer,asyncи модули не блокируют.- Блочная модель (box model)
Представление каждого элемента в CSS как прямоугольника из содержимого, внутреннего отступа (padding), рамки (border) и внешнего отступа (margin). Что входит в
width, задаётbox-sizing.- Божественный объект (God object)
Антипаттерн: один класс знает и делает слишком много — проверки, расчёты, доступ к данным, интеграции. Его меняют в каждой задаче, и он тянет за собой десятки зависимостей.
- Большой ком грязи (Big Ball of Mud)
Система без различимой архитектуры, выросшая из сиюминутных решений. Описана Брайаном Футом и Джозефом Йодером в 1997 году.
- Брокер сообщений (message broker)
Промежуточный сервер, который принимает сообщения от отправителей, хранит их и доставляет получателям. Отправителю не нужно, чтобы получатель был доступен в момент отправки. Примеры — RabbitMQ, Apache Kafka, Azure Service Bus.
- Быстрая сортировка (quicksort)
Сортировка, которая выбирает опорный элемент, раскладывает остальные на меньшие и большие и рекурсивно сортирует части. В среднем O(n log n) на месте, в худшем O(n²); нестабильная.
- Версионирование строк (row versioning)
Механизм, при котором изменение строки сохраняет её прежнюю зафиксированную версию. Читатели берут подходящую версию вместо ожидания блокировок; на нём построены RCSI и SNAPSHOT.
- Версионирование API
Поддержка нескольких версий контракта одновременно, чтобы ломающие изменения не затрагивали старых клиентов. Версию передают в пути, query-параметре, заголовке или media type.
- Ветка (branch)
Подвижный указатель на коммит. При новом коммите текущая ветка автоматически сдвигается на него, поэтому создать ветку — значит записать один хеш, а не копировать файлы.
- Ветка удалённого отслеживания (remote-tracking branch)
Локальная ссылка вида
origin/main, которая запоминает, где была ветка на сервере при последнемfetch. Вы не коммитите в неё напрямую: её обновляютfetchиpull.- Взаимоблокировка (deadlock)
Ситуация, когда потоки навсегда ждут друг друга: каждый держит ресурс, который нужен другому. Типичная причина — захват одних и тех же блокировок в разном порядке.
- Взрыв ролей (role explosion)
Неконтролируемый рост числа ролей, когда под каждое сочетание должности, отдела, региона или проекта заводят свою роль. Признак того, что параметр пора вынести в атрибут (ABAC) или отношение (ReBAC).
- Видимость членов класса в Delphi
Разделы
private,protected,publicиpublished.privateиprotectedв Delphi видны всему модулю, поэтому для доступа только из класса естьstrict privateиstrict protected, аpublishedдополнительно генерирует RTTI.- Виртуальная прокрутка (virtual scrolling)
Приём, при котором в DOM есть только видимые строки длинного списка, а остальные подставляются при прокрутке. В Angular —
cdk-virtual-scroll-viewportиз CDK или встроенный режим таблиц библиотек компонентов.- Виртуальное окружение (venv)
Каталог со ссылкой на интерпретатор Python и собственным набором пакетов. Изолирует зависимости одного проекта от системы и других проектов.
- Виртуальный метод (virtual method)
Метод с модификатором
virtualилиabstract, который наследник может переопределить черезoverride. Какая реализация вызовется, решает реальный тип объекта во время выполнения.- Витрина данных (data mart)
Отдельная база или схема под отчёты одного направления: продажи, склад, финансы. Её наполняет ETL, а структура заточена под агрегаты, а не под запись.
- Включённые колонки (INCLUDE)
Неключевые колонки некластерного индекса, которые хранятся только на листовом уровне. Они не сортируются и не участвуют в поиске, зато покрывают запрос, не расширяя ключ.
- Владелец компонента (Owner)
Компонент, переданный в конструктор
TComponent.Create(AOwner). Владелец хранит список своих компонентов и освобождает их в своём деструкторе, поэтому кнопки формы освобождаются вместе с формой.- Владелец компонента (Owner)
Компонент, переданный в конструктор
Create(AOwner). Хранит список своих компонентов вComponentsи освобождает их при своём уничтожении.- Вложенные группы
Группы AD, входящие в другие группы. Член вложенной группы получает права внешней; Windows-токен и атрибут
tokenGroupsуже содержат такое транзитивное членство, аmemberOf— только прямое.- Внедрение зависимостей (dependency injection, DI)
Приём, при котором объект получает свои зависимости снаружи, обычно через конструктор, а не создаёт их сам. В ASP.NET Core зависимости создаёт и передаёт встроенный контейнер.
- Внедрение через конструктор (constructor injection)
Способ DI, при котором зависимости приходят параметрами конструктора. Все зависимости класса видны в его сигнатуре, а объект не может существовать без них.
- Внедрение через свойства (property injection)
Способ DI, при котором контейнер присваивает зависимости публичным свойствам уже созданного объекта. Встроенный контейнер .NET его не поддерживает, Autofac — поддерживает.
- Внешнее соединение (LEFT, RIGHT, FULL JOIN)
Соединение, которое сохраняет строки одной или обеих таблиц даже без пары и подставляет
NULLвместо колонок другой стороны. LEFT сохраняет левую таблицу, RIGHT — правую, FULL — обе.- Внутреннее соединение (INNER JOIN)
Соединение, которое возвращает только пары строк двух таблиц, для которых выполнилось условие в
ON. Строки без пары в результат не попадают.- Внутрипроцессный COM-сервер (in-process COM server)
COM-объект в DLL, который загружается в процесс клиента. Поэтому его разрядность должна совпадать с разрядностью клиента, в отличие от внепроцессного сервера в EXE.
- Водяной знак загрузки (watermark)
Сохранённая граница последней загрузки: максимальная
rowversionили дата изменения. Следующий запуск читает только строки за этой границей — так строится инкрементальная загрузка.- Временная мёртвая зона (TDZ)
Участок от начала блока до объявления
let,constилиclass, где переменная уже существует, но обращение к ней выбрасываетReferenceError.- Временный доступ (just-in-time access)
Права, которые действуют ограниченное время: выдаются с датой окончания или активируются по запросу на несколько часов. Пример — Microsoft Entra Privileged Identity Management.
- Временный сбой (transient fault)
Ошибка, которая проходит сама через короткое время: обрыв сети, перезапуск сервиса, ответ 503 или 429. Такие ошибки имеет смысл повторять с паузой.
- Время жизни сервиса (service lifetime)
Правило, по которому контейнер решает, когда создать новый экземпляр сервиса и когда его освободить. В .NET три варианта — Transient, Scoped и Singleton.
- Встраиваемая табличная функция (inline TVF)
Функция вида
RETURNS TABLE AS RETURN (SELECT ...). Оптимизатор подставляет её текст в запрос, как параметризованное представление, и строит общий план.- Встроенный control flow (@if, @for, @switch)
Синтаксис шаблонов Angular 17+ для условий и циклов вместо директив
*ngIf,*ngForиngSwitch. В@forобязателенtrack, есть блок@empty; старые директивы deprecated с v20.- Выделение памяти запросу (memory grant)
Память, которую запрос резервирует до старта под сортировки и хеш-таблицы, исходя из оценки числа строк. Завышенная оценка заставляет другие запросы ждать памяти, заниженная ведёт к сбросу данных в tempdb (spill).
- Выражение with (with expression)
Создаёт копию record или структуры с изменёнными свойствами:
p with { X = 1 }. Копия поверхностная: ссылочные поля указывают на те же объекты.- Выровненный индекс (aligned index)
Индекс, секционированный так же, как его таблица: та же функция или функция с теми же границами и колонкой. Только с выровненными индексами возможно переключение секций.
- Вычисляемая колонка (computed column)
Колонка, значение которой задано выражением от других колонок. Детерминированную вычисляемую колонку можно проиндексировать, и оптимизатор использует индекс для запросов с тем же выражением.
- Генератор (generator)
Функция с
yield: её вызов возвращает итератор, который выполняет тело по частям, до очередногоyield. Значения вычисляются лениво, по одному.- Генератор исходного кода (source generator)
Расширение компилятора Roslyn, которое во время сборки добавляет в проект сгенерированный код. Заменяет рефлексию в рантайме: так работают
[LoggerMessage],[OptionsValidator]и[GeneratedRegex].- Генератор коллекции (comprehension)
Выражение, которое строит список, словарь или множество из итерируемого объекта с фильтром:
[x * x for x in items if x > 0]. АналогSelectиWhereиз LINQ.- Гидратация (hydration)
Восстановление приложения в браузере поверх HTML, отрисованного на сервере (SSR): Angular переиспользует готовый DOM, а не строит его заново. Стабильна с v17, инкрементальная — с v20.
- Гидратация (hydration)
Привязка React к HTML, пришедшему с сервера: React строит дерево компонентов и подключает обработчики событий к готовой разметке. Первый клиентский рендер должен совпасть с HTML сервера.
- Гистограмма статистики (histogram)
Часть статистики: до 200 шагов по значениям первой колонки. Для каждого шага известно, сколько строк равно его границе и сколько лежит внутри диапазона.
- Главный поток VCL
Поток, в котором создаются окна и работает цикл сообщений приложения. VCL не потокобезопасна, поэтому контролы меняют только из него.
- Голодание пула потоков (thread pool starvation)
Состояние, когда у пула нет свободных потоков для новой работы, потому что существующие заблокированы. Проявляется ростом задержек при низкой загрузке CPU.
- Горизонт xmin (xmin horizon)
Номер самой старой транзакции, чей снимок ещё может понадобиться: открытой транзакции, слота репликации или реплики. VACUUM не удаляет версии строк новее горизонта, поэтому одна долгая транзакция вызывает bloat во всей базе.
- Горизонтальное масштабирование (scale out)
Рост пропускной способности добавлением экземпляров сервиса, а не усилением одного сервера (вертикальное, scale up). Требует, чтобы экземпляры не хранили состояние у себя.
- Горячий путь (hot path)
Участок кода, который выполняется очень часто и заметно влияет на производительность. Только на нём оправданы микрооптимизации вроде
ValueTask.- Граф (graph)
Набор вершин и рёбер между ними: города и дороги, задачи и зависимости, пользователи и связи. Рёбра бывают направленными и взвешенными; готового типа графа в .NET нет.
- Граф дедлока (deadlock graph)
XML-отчёт о дедлоке: участники, удерживаемые и ожидаемые ресурсы, режимы блокировок, тексты запросов и жертва. В SQL Server его по умолчанию пишет сессия Extended Events
system_health(событиеxml_deadlock_report).- Группа доступности Always On (availability group)
Механизм высокой доступности SQL Server: первичная реплика отправляет журнал вторичным, и при сбое одна из них становится первичной. В Enterprise вторичные реплики можно открыть для чтения.
- Группа маршрутов (route group)
Набор эндпоинтов Minimal API с общим префиксом, созданный через
MapGroup(.NET 7+). Фильтры, авторизация и метаданные, заданные группе, применяются ко всем её эндпоинтам.- Группа потребителей (consumer group)
Набор потребителей Kafka с общим
group.id, которые вместе читают топик. Партиции делятся между участниками, а позиция чтения у группы общая.- Группа SignalR
Именованный набор соединений, которым можно отправить сообщение одним вызовом
Clients.Group(name). Хранится в памяти и не сохраняется при переподключении.- Грязное чтение (dirty read)
Аномалия, при которой транзакция читает изменения другой транзакции, ещё не зафиксированные и способные откатиться. Возможно только на READ UNCOMMITTED, в том числе через
NOLOCK.- Два указателя (two pointers)
Приём, при котором два индекса движутся по массиву навстречу друг другу или в одну сторону. Решает задачи на отсортированных массивах за O(n) и O(1) памяти: пара с заданной суммой, палиндром, слияние.
- Двоичная куча (binary heap)
Дерево, хранящееся в массиве, где каждый родитель не больше своих потомков, поэтому минимум лежит в корне. Вставка и извлечение минимума — O(log n). В .NET на куче построен
PriorityQueue<TElement, TPriority>.- Двоичное дерево поиска (binary search tree)
Дерево, где у каждого узла ключи слева меньше, а справа больше. Поиск, вставка и удаление стоят O(высоты): O(log n) у сбалансированного дерева и O(n) у вырожденного.
- Двойная запись (dual write)
Запись одного изменения в две системы без общей транзакции, например в базу и в брокер. При сбое между записями системы расходятся: событие теряется или описывает откатившееся изменение.
- Двухфазный коммит (two-phase commit, 2PC)
Протокол распределённой транзакции: координатор сначала спрашивает всех участников о готовности, затем рассылает commit или rollback. Участники держат блокировки до решения координатора.
- Девиртуализация (devirtualization)
Оптимизация JIT: виртуальный или интерфейсный вызов заменяется прямым, если точный тип известен, например у
sealed-класса. После этого метод можно встроить (inline).- Дедупликация сообщений
Отбрасывание повторно доставленных сообщений по их id или бизнес-ключу. Обычно это таблица обработанных id с уникальным ключом, которая пополняется в одной транзакции с изменением данных.
- Декоратор (decorator)
Паттерн, при котором объект оборачивает другой объект с тем же интерфейсом и добавляет поведение до или после вызова: кеш, логирование, повторы. Встроенный контейнер .NET декораторы не поддерживает.
- Декоратор (decorator)
Функция, которая принимает функцию или класс и возвращает замену. Запись
@dнадdef fравнаf = d(f); обёртку оформляют черезfunctools.wraps.- Делегат (delegate)
Тип, экземпляр которого ссылается на метод и, если метод экземплярный, на объект. Готовые делегаты —
Func<...>иAction<...>.- Делегирование (delegation)
Приём композиции: объект переадресует вызов своему компоненту, иногда добавляя поведение до или после. Не путать с делегатами C# — типами-ссылками на методы.
- Денормализация
Сознательное дублирование данных ради скорости чтения: итог в шапке документа, копия названия, отчётная таблица. Требует механизма, который держит копии согласованными.
- Дерево выражений (expression tree)
Представление кода в виде объектов
System.Linq.Expressions. Лямбда, присвоеннаяExpression<Func<...>>, становится деревом, которое провайдер может разобрать и перевести, например, в SQL.- Дерево доступности (accessibility tree)
Структура, которую браузер строит из DOM для вспомогательных технологий: у каждого узла есть роль, доступное имя, описание и состояние.
- Диапазонная блокировка (key-range lock)
Блокировка диапазона ключей индекса между существующими строками. Её ставит SERIALIZABLE или хинт
HOLDLOCK, чтобы в прочитанный диапазон нельзя было вставить строку, то есть чтобы не было фантомов.- Динамический батчинг (dynamic batching)
Приём сервера инференса: запросы, пришедшие почти одновременно, собираются в одну пачку и проходят через модель за один вызов. Повышает загрузку GPU ценой небольшой задержки.
- Динамический метод (dynamic)
Переопределяемый метод, который вызывается через таблицу DMT: она хранит только методы, объявленные или переопределённые в самом классе. По смыслу равен
virtual, но экономит память ценой более медленного вызова.- Динамический прокси (dynamic proxy)
Тип-заместитель, сгенерированный во время выполнения, который перехватывает вызовы методов. Так работают Castle DynamicProxy, моки Moq, ленивая загрузка EF Core и
DispatchProxy.- Динамическое программирование (dynamic programming)
Метод решения задач, которые складываются из перекрывающихся подзадач: ответ каждой подзадачи вычисляют один раз и переиспользуют. Превращает экспоненциальный перебор в полиномиальный алгоритм.
- Директива 'use cache'
Директива Next.js (Cache Components), которая кеширует результат асинхронной функции, компонента или всех экспортов файла. Ключ кеша — аргументы и захваченные значения, срок задаёт
cacheLife, метки для сброса —cacheTag.- Директива Angular
Класс с декоратором
@Directive, который добавляет поведение существующему элементу, например меняет классы или атрибуты. Компонент — частный случай директивы со своим шаблоном.- Доменное событие (domain event)
Объект, который описывает значимый для бизнеса факт в прошедшем времени:
OrderSubmitted. Другие части системы реагируют на него, не связываясь с источником напрямую.- Допуск расхождения часов (clock skew)
Запас времени при проверке
expиnbfна случай, если часы издателя и API расходятся. ВTokenValidationParameters.ClockSkewпо умолчанию 5 минут.- Драйверный адаптер Prisma (driver adapter)
Пакет, через который Prisma Client выполняет запросы обычным драйвером базы, например
@prisma/adapter-pgповерхpg. С Prisma 7 адаптер обязателен, а пул соединений настраивается в драйвере.- Европейский акт о доступности (European Accessibility Act, EAA)
Директива ЕС 2019/882, которая с 28 июня 2025 года требует доступности ряда продуктов и услуг: интернет-магазинов, банков, транспорта, электронных книг. Техническая опора — EN 301 549.
- Единая точка отказа (single point of failure)
Компонент, отказ которого останавливает всю систему: единственный экземпляр шлюза, базы или балансировщика. Устраняется резервированием в разных зонах отказа.
- Единица работы (unit of work)
Набор операций, которые выполняются и сохраняются вместе, как одна бизнес-транзакция. В EF Core единицу работы представляет экземпляр
DbContext.- Единый язык (ubiquitous language)
Общий словарь разработчиков и экспертов предметной области внутри одного ограниченного контекста. Одни и те же слова звучат в разговорах, требованиях, именах классов и методов.
- Естественный ключ
Ключ из атрибутов предметной области: код товара, ИНН, ISO-код валюты. Понятен человеку, но может меняться и бывает длинным.
- Жадная загрузка (eager loading)
Загрузка связанных данных в том же запросе, что и основные: в EF Core —
IncludeиThenInclude, которые превращаются вJOINили, со split query, в отдельные запросы.- Жёсткий лимит кучи (GCHeapHardLimit)
Максимальный объём памяти, который может занять куча GC. В контейнере с лимитом памяти по умолчанию равен большему из 20 МБ и 75 % лимита; задаётся через
GCHeapHardLimitилиGCHeapHardLimitPercent.- Журнал транзакций (write-ahead log, WAL)
Последовательный журнал изменений, который пишется на диск раньше страниц данных. При коммите база ждёт записи журнала, а после сбоя восстанавливает по нему зафиксированное и откатывает незафиксированное.
- Зависть к функциям (feature envy)
Запах кода из каталога Фаулера: метод работает с данными чужого класса больше, чем со своими. Обычно его стоит перенести в тот класс.
- Задача (Task)
Объект, который описывает асинхронную работу и её будущий результат. По умолчанию делегат задачи выполняется на пуле потоков, а задача от асинхронного I/O может вообще не занимать поток.
- Задача asyncio (Task)
Обёртка, которая ставит корутину в очередь цикла событий и выполняет её независимо от вызывающего кода. Создаётся через
asyncio.create_task(); цикл держит на задачи только слабые ссылки.- Задержка event loop (event loop delay)
Насколько позже запланированного цикл событий успевает выполнить колбэк. Рост задержки значит, что главный поток занят синхронной работой; её измеряет
perf_hooks.monitorEventLoopDelay().- Закон Деметры (Law of Demeter)
Правило «говори только с ближайшими друзьями»: метод вызывает методы своего объекта, параметров, созданных в нём объектов и полей, но не ходит по цепочке
a.B.C.D().- Закон Конвея (Conway's law)
Наблюдение Мелвина Конвея (1968): организации проектируют системы, структура которых копирует структуру коммуникаций в самой организации. Поэтому границы сервисов обычно совпадают с границами команд.
- Закрепление (pinning)
Запрет GC перемещать объект, чтобы передать его адрес в нативный код:
fixed,GCHandleс типомPinnedили аллокация в POH. Закреплённые объекты мешают уплотнению и фрагментируют кучу.- Заместитель (Proxy)
Структурный паттерн: объект с тем же интерфейсом, что и реальный, управляет доступом к нему — создаёт лениво, вызывает удалённо, проверяет права или кеширует.
- Заморозка фич (feature freeze)
Период, когда в продукт не добавляют новую функциональность, а только исправляют ошибки. При миграции так избегают переноса каждой новой фичи в две версии.
- Замыкание (closure)
Лямбда или локальная функция вместе с захваченными переменными внешней области. Компилятор переносит захваченные переменные в поля сгенерированного класса, и они живут, пока жив делегат.
- Замыкание (closure)
Вложенная функция вместе с переменными объемлющей функции, которые она использует. Переменные хранятся в ячейках (
__closure__) и живут, пока жива функция; перепривязать их можно черезnonlocal.- Замыкание в JavaScript (closure)
Функция вместе со ссылкой на лексическое окружение, в котором её создали. Захваченные переменные живут, пока жива функция, и видны ей по ссылке, а не копией значения.
- Зацепление (coupling)
Мера зависимости модулей или классов друг от друга: насколько изменение одного требует изменения другого. Стремятся к слабому зацеплению: зависеть от узкого контракта, а не от устройства.
- Защитная копия (defensive copy)
Скрытая копия структуры, которую компилятор делает при вызове её метода через
readonly-поле илиin-параметр, чтобы метод не изменил исходное значение. Не возникает уreadonly struct.- Значимый тип (value type)
Тип, переменная которого содержит само значение; при присваивании значение копируется. В C# это
struct,enumи встроенные числовые типы.- Идемпотентность
Свойство операции, при котором повторное выполнение даёт тот же результат, что и однократное. Нужна везде, где возможны повторы: фоновые задачи, сообщения, ретраи HTTP.
- Идемпотентный producer
Режим producer Kafka (
enable.idempotence=true), в котором брокер по producer id и номеру последовательности отбрасывает повторные отправки. Убирает дубли от ретраев и сохраняет порядок; вConfluent.Kafkaпо умолчанию выключен.- Иерархические инжекторы
Устройство DI в Angular: инжекторы элементов повторяют дерево компонентов, а над ними стоят инжекторы маршрутов, корневой и платформенный. Провайдер ищется снизу вверх, и место его объявления задаёт, кто делит экземпляр.
- Изменяемый объект (mutable)
Объект, состояние которого можно изменить на месте:
list,dict,set. Неизменяемые (int,str,tuple,frozenset) при каждой «правке» дают новый объект. Изменяемость задаётся типом.- Изоляция SNAPSHOT (snapshot isolation)
Уровень изоляции SQL Server на версиях строк: вся транзакция видит данные на момент своего первого обращения к ним. При попытке изменить строку, которую уже изменили после этого момента, транзакция падает с ошибкой 3960.
- Именованные опции (named options)
Несколько экземпляров одного класса настроек под разными именами, например для двух платёжных шлюзов. Читаются через
Get(name)уIOptionsSnapshot<T>илиIOptionsMonitor<T>.- Имперсонация (impersonation)
Выполнение кода от имени другого пользователя Windows. В ASP.NET Core —
WindowsIdentity.RunImpersonatedиRunImpersonatedAsync, только на Windows.- Инвалидация кеша
Удаление или пометка устаревшими записей кеша, когда исходные данные изменились: по сроку жизни, по ключу, по тегу или по событию.
- Инвариантность (invariance)
Generic-тип допускает только точно тот аргумент, с которым объявлен:
List<string>нельзя использовать какList<object>. Так ведут себя все классы и структуры и интерфейсы безin/out.- Инверсия управления (inversion of control, IoC)
Принцип, по которому управление потоком программы или созданием объектов передаётся фреймворку: не ваш код вызывает библиотеку, а фреймворк вызывает ваш код. DI — частный случай IoC.
- Индекс (staging area)
Промежуточная область между рабочей копией и репозиторием: в неё командой
git addкладут изменения, которые войдут в следующий коммит. Позволяет закоммитить только часть правок.- Индекс по выражению (expression index)
Индекс по результату выражения или функции, например
lower(email). Используется, только если запрос содержит то же выражение; в SQL Server для этого нужен вычисляемый столбец.- Индексированное представление (indexed view)
Представление с уникальным кластерным индексом: SQL Server хранит его результат и обновляет в той же транзакции, что и базовые таблицы. Ускоряет агрегаты ценой более дорогой записи.
- Инкапсуляция (encapsulation)
Принцип ООП: данные объекта и правила их изменения собраны в одном классе, а состояние меняется только через его методы. Так класс сам защищает свои инварианты.
- Инспектор Node.js (--inspect)
Встроенный протокол отладки и профилирования, к которому подключаются Chrome DevTools и VS Code. Включается флагом
--inspectи по умолчанию слушает127.0.0.1:9229.- Инструмент метрики (instrument)
Объект
System.Diagnostics.Metrics, через который код записывает измерения:Counter<T>,UpDownCounter<T>,Histogram<T>,Gauge<T>и их observable-варианты. Создаётся изMeter.- Интеграционная шина (ESB)
Центральная платформа интеграции с адаптерами, маршрутизацией и преобразованием сообщений между системами, например BizTalk Server. Сокращает число связей точка-точка, но становится центральной зависимостью.
- Интеграционный тест
Тест, который проверяет несколько частей системы вместе: например, HTTP-конвейер, DI и настоящую базу. Медленнее модульного, зато ловит ошибки на стыках.
- Интерактивная транзакция Prisma
Вызов
prisma.$transaction(async (tx) => ...): все запросы черезtxидут в одной транзакции, а между ними можно выполнять свою логику. Исключение откатывает транзакцию; по умолчанию таймаут 5 секунд.- Интерактивный rebase (interactive rebase)
git rebase -i: rebase, при котором вы редактируете список коммитов — меняете порядок, объединяете (squash,fixup), правите сообщения или удаляете коммиты. Служит для чистки своей ветки перед pull request.- Интернирование (interning)
Хранение одного объекта на каждое значение: CPython кеширует целые от −5 до 256 и интернирует часть строк,
sys.internделает это явно. Это деталь реализации, наisдля значений полагаться нельзя.- Интернирование строк (string interning)
Хранение одного экземпляра на каждое уникальное значение строки в пуле рантайма (intern pool).
string.Internдобавляет строку в пул; интернированные строки живут до завершения процесса.- Интроспективная сортировка (introsort)
Гибридная сортировка в
Array.Sort: quicksort, который на маленьких участках переключается на вставки, а при слишком глубоком разбиении — на heapsort. Даёт O(n log n) в худшем случае, нестабильна.- Интроспекция токена
Запрос API к серверу авторизации «действителен ли этот токен и что в нём» (RFC 7662). Даёт мгновенный отзыв ценой сетевого вызова на каждую проверку.
- Исключение секций (partition elimination)
Оптимизация, при которой запрос с условием по колонке секционирования читает только нужные секции. Без такого условия запрос обходит все секции.
- Источник отмены (CancellationTokenSource)
Объект, который выдаёт токены и отменяет их вызовом
Cancelили по таймауту черезCancelAfter. РеализуетIDisposable, после использования его освобождают.- Исчерпываемость (exhaustiveness)
Свойство
switch-выражения: его ветки покрывают все возможные значения входа. Если нет, компилятор выдаёт предупреждение CS8509.- Итератор (iterator)
Метод с
yield return, который возвращает элементы последовательности по одному. Компилятор превращает его в класс, реализующийIEnumerable<T>иIEnumerator<T>.- Кадр стека (stack frame)
Участок стека, который занимает один вызов метода: адрес возврата, сохранённые регистры, локальные переменные и часть аргументов. Снимается при возврате из метода.
- Как минимум один раз (at-least-once)
Гарантия доставки или выполнения, при которой работа не теряется, но после сбоя может выполниться повторно. Обработчик должен быть идемпотентным.
- Каналы (System.Threading.Channels)
Асинхронные очереди производитель — потребитель: запись и чтение ждут через await и не блокируют потоки. Бывают ограниченные и неограниченные.
- Канареечный релиз (canary release)
Стратегия, при которой новая версия сначала получает малую долю трафика или пользователей. Её ошибки и задержки сравнивают со старой и увеличивают долю ступенями или откатывают.
- Каноническая модель данных
Общий формат сообщений, в который каждая система переводит свои данные. Вместо маппинга каждой пары систем нужен один маппинг на систему.
- Кардинальность метрики
Число уникальных комбинаций значений меток метрики, то есть число временных рядов. Метка с id пользователя или полным URL даёт миллионы рядов и перегружает хранилище.
- Каскадный отказ (cascading failure)
Отказ, который распространяется по системе: сбой одного компонента перегружает или выключает другие. Пример — readiness-проба на общую БД, которая при её сбое выводит из балансировки все экземпляры сразу.
- Категория лога (log category)
Строка, с которой создан логгер; у
ILogger<T>это полное имя типаT. По префиксу категории в конфигурации задают уровни логирования.- Кворум (quorum)
Минимальное число реплик, которое должно подтвердить запись (W) или ответить на чтение (R). При W + R больше числа реплик N чтение пересекается хотя бы с одной свежей репликой.
- Кеш в памяти (IMemoryCache)
Кеш внутри процесса приложения: хранит объекты по ссылке, без сериализации. У каждого экземпляра приложения он свой и пропадает при перезапуске.
- Кеш планов (plan cache)
Область памяти, где SQL Server хранит скомпилированные планы для повторного использования. План находится по тексту запроса с объявлениями параметров и по SET-параметрам сессии.
- Кешированные обновления (cached updates)
Режим, в котором изменения записей копятся в журнале на клиенте и отправляются в базу одним вызовом
ApplyUpdates, а не при каждомPost.- Класс данных (dataclass)
Класс с декоратором
@dataclass, для которого Python генерирует__init__,__repr__и__eq__по аннотированным полям. Параметрыfrozen=Trueиslots=Trueделают его неизменяемым и компактным.- Класс замыкания (display class)
Скрытый класс, который компилятор генерирует для лямбды с захватом: захваченные переменные становятся его полями, лямбда — его методом. Создание его экземпляра — аллокация в куче.
- Кластерный индекс (clustered index)
Индекс, в листьях которого лежат сами строки таблицы, упорядоченные по ключу. У таблицы он один;
PRIMARY KEYпо умолчанию создаёт именно его.- Клиентская оценка (client evaluation)
Выполнение части запроса EF Core в памяти приложения, а не в базе. С EF Core 3.0 разрешена только в финальной проекции
Select, в остальных местах непереводимое выражение вызывает исключение.- Клиентский компонент (Client Component)
Компонент из модуля с директивой
'use client'. Рендерится на сервере в HTML и в браузере, его JS попадает в бандл, поэтому ему доступны state, эффекты и события.- Ключ идемпотентности (idempotency key)
Уникальный ключ, который клиент передаёт с запросом, обычно заголовком
Idempotency-Key. Сервер сохраняет результат первой обработки и на повтор с тем же ключом возвращает его, не выполняя операцию снова.- Ключ кластеризации (clustering key)
Колонки кластерного индекса. Ключ копируется в каждый некластерный индекс как указатель на строку, поэтому его делают узким, уникальным и неизменяемым.
- Ключевое слово field
Контекстное ключевое слово C# 14: обращение к сгенерированному компилятором полю свойства прямо в аксессоре, без объявления своего поля.
- Ковариантность (covariance)
Возможность использовать generic-тип с более производным аргументом там, где ждут более общий:
IEnumerable<string>вместоIEnumerable<object>. Объявляетсяout Tу интерфейсов и делегатов.- Кодовая страница (code page)
Таблица, которая сопоставляет байтам символы однобайтовой кодировки. Для кириллицы в Windows это обычно 1251; символы, которых нет в таблице, при преобразовании теряются.
- Коллизия хешей (hash collision)
Ситуация, когда разные ключи дают одинаковый хеш-код или попадают в одну корзину хеш-таблицы. Коллизии неизбежны; их разрешают сравнением через
Equals, но при их избытке поиск деградирует до O(n).- Команда (Command)
Поведенческий паттерн: запрос упакован в объект с данными, поэтому его можно передать, поставить в очередь, залогировать или отменить.
- Командная инъекция (command injection)
Данные пользователя попадают в командную строку оболочки и добавляют свою команду, например
& del *. Защита — запуск процесса без оболочки и передача аргументов списком.- Коммит (commit)
Зафиксированный снимок всех файлов проекта вместе с автором, датой, сообщением и ссылкой на родительский коммит. Идентифицируется хешем и после создания не меняется.
- Компаратор равенства (IEqualityComparer)
Объект с методами
EqualsиGetHashCode, который задаёт равенство ключей дляDictionary,HashSetи LINQ. По умолчанию используетсяEqualityComparer<T>.Default.- Компенсирующее действие (compensating transaction)
Операция, которая отменяет бизнес-эффект уже зафиксированного шага, например возврат денег после списания. Это не откат, а новое действие, и его результат виден в системе.
- Компилированный запрос (compiled query)
LINQ-запрос, заранее превращённый в делегат через
EF.CompileQueryилиEF.CompileAsyncQuery. При вызове EF не строит и не сравнивает дерево выражений, что экономит время на горячих путях.- Композитинг (compositing)
Сборка кадра из готовых слоёв в отдельном потоке композитора. Изменения
transformиopacityслоя обходятся без layout и paint.- Композиция (composition)
Объект хранит другой объект в поле и использует его через публичный контракт — отношение «содержит» вместо «является». Совет GoF — предпочитать композицию наследованию классов.
- Компонент Angular
Класс TypeScript с декоратором
@Component, HTML-шаблоном и стилями. Основной строительный блок интерфейса: приложение — дерево компонентов, вложенных друг в друга через шаблоны.- Конвейер запросов (request pipeline)
Цепочка middleware, через которую проходит каждый HTTP-запрос: в порядке регистрации на входе и в обратном порядке на выходе. Собирается один раз при старте приложения.
- Конвейер CI/CD (pipeline)
Описанная кодом последовательность шагов, которую CI-система выполняет на каждое изменение: restore, сборка, тесты, анализ, публикация и выкладка. В GitHub Actions это workflow в YAML, в Jenkins —
Jenkinsfile.- Конкурентность (concurrency)
Несколько операций находятся в процессе выполнения одновременно, но не обязательно исполняются в один и тот же момент. Параллелизм — частный случай, когда они идут одновременно на разных ядрах.
- Конкурентные коллекции
Потокобезопасные коллекции из System.Collections.Concurrent: ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag и BlockingCollection.
- Контейнерный запрос (container query)
Условие
@container, которое проверяет размер ближайшего предка сcontainer-type, а не окна. Позволяет компоненту подстраиваться под место, куда его поставили.- Контекст выполнения (ExecutionContext)
«Окружающие» данные потока, например значения
AsyncLocal<T>, которые переносятся черезawait,Task.Runи другие асинхронные переходы. Течёт всегда, независимо отConfigureAwait.- Контекст синхронизации (SynchronizationContext)
Абстракция, которая планирует выполнение кода в нужном окружении, например в UI-потоке.
awaitпо умолчанию возвращает продолжение метода в захваченный контекст.- Контекстный менеджер (context manager)
Объект с методами
__enter__и__exit__для оператораwith.__exit__вызывается при любом выходе из блока, в том числе по исключению, — аналогusingв C#.- Контравариантность (contravariance)
Возможность использовать generic-тип с более общим аргументом там, где ждут более производный:
Action<object>вместоAction<string>. Объявляетсяin Tу интерфейсов и делегатов.- Контракт (design by contract)
Описание поведения метода через предусловия (что верно до вызова), постусловия (что гарантировано после) и инварианты (что верно всегда). Подход Бертрана Мейера; на нём держится LSP.
- Контрактный тест (contract test)
Тест, который проверяет, что поставщик API и его потребитель соблюдают общую договорённость о запросах и ответах. В consumer-driven подходе контракт пишет потребитель; инструмент — Pact (PactNet).
- Контролируемый компонент (controlled component)
Поле формы, значение которого задаёт state:
valueберётся из state, аonChangeего обновляет. Источник правды — React, а не DOM.- Контроллер (API controller)
Класс-наследник
ControllerBase, публичные методы которого (action) обрабатывают HTTP-запросы. Маршруты задаются атрибутами, а запрос проходит конвейер MVC: фильтры, привязку модели, валидацию и форматирование ответа.- Контрольные группы (cgroups)
Механизм ядра Linux, который ограничивает и учитывает ресурсы группы процессов: CPU, память, ввод-вывод. Лимиты контейнера задаются через cgroups, и .NET читает их при старте.
- Конфиденциальный клиент
Клиент, который хранит секрет или ключ на сервере и аутентифицируется у сервера авторизации: серверное веб-приложение, BFF, сервис.
- Кооперативная отмена
Модель отмены в .NET: инициатор только запрашивает отмену, а операция сама проверяет токен и решает, как остановиться. Принудительного прерывания нет.
- Корень GC (GC root)
Ссылка, с которой GC начинает обход графа объектов: локальная переменная или регистр потока, статическое поле, GC-хендл, запись очереди финализации. Всё, что недостижимо от корней, считается мусором.
- Корневой провайдер (root service provider)
IServiceProvider, который создаётbuilder.Build(). Живёт всё время работы приложения, хранит singleton-сервисы и освобождает их при остановке.- Короткое замыкание конвейера (short-circuit)
Ситуация, когда middleware отвечает сам и не вызывает
next, и остальная часть конвейера не выполняется. Так, например, работает отдача статических файлов.- Корректная остановка (graceful shutdown)
Остановка, при которой приложение перестаёт принимать новую работу, доделывает начатую и освобождает ресурсы, а не обрывается посреди операции. Время на неё ограничено
HostOptions.ShutdownTimeout.- Корутина (coroutine)
Функция, объявленная через
async def, и объект, который возвращает её вызов. Код выполняется, только когда корутину ждут черезawaitили оборачивают в задачу; на каждомawaitона может приостановиться.- Красно-чёрное дерево (red-black tree)
Самобалансирующееся двоичное дерево поиска: вставка, удаление и поиск занимают O(log n). На нём построены
SortedSet<T>иSortedDictionary<TKey, TValue>.- Критическая секция (critical section)
Участок кода, который работает с общими данными и поэтому должен выполняться не более чем одним потоком одновременно. В C# её обычно ограничивают оператором lock.
- Критический путь отрисовки (critical rendering path)
Шаги браузера от получения HTML до первого кадра: DOM, CSSOM, дерево отрисовки, layout, paint, composite. Его длину определяют блокирующие CSS и скрипты.
- Курсор
Объект T-SQL, который проходит результат запроса по одной строке (
DECLARE CURSOR,FETCH NEXT). Нужен для действий, которые нельзя выразить одной инструкцией; если он нужен, его объявляютLOCAL FAST_FORWARD.- Куча (heap)
Таблица без кластерного индекса. Строки лежат без определённого порядка, а некластерные индексы ссылаются на них по физическому адресу RID — файл, страница, слот.
- Лексическая область видимости (lexical scope)
Правило, по которому доступность переменной определяется местом её объявления в коде, а не местом вызова. В JavaScript области бывают глобальные, модульные, функциональные и блочные.
- Ленивая загрузка (lazy loading)
Загрузка навигационного свойства отдельным запросом при первом обращении к нему. В EF Core включается пакетом
Microsoft.EntityFrameworkCore.ProxiesиUseLazyLoadingProxies()и легко приводит к N+1.- Ленивая инициализация (lazy initialization)
Создание объекта при первом обращении, а не заранее. В .NET для этого есть
Lazy<T>: по умолчанию он потокобезопасен и кеширует исключение фабрики.- Ленивый маршрут (lazy-loaded route)
Маршрут, код которого выносится в отдельный чанк и загружается при первом переходе: через
loadComponentилиloadChildrenс динамическимimport(). Уменьшает начальный бандл.- Линеаризуемость (linearizability)
Самая сильная гарантия согласованности одного объекта: система ведёт себя как одна копия, и завершённую запись видят все последующие чтения. Именно это C в теореме CAP.
- Лог событий (event log, commit log)
Упорядоченный журнал, в который записи только дописываются в конец и не удаляются при чтении. Каждый читатель хранит свою позицию и может перечитать историю в пределах срока хранения. Так устроены топики Kafka.
- Логический порядок обработки запроса
Порядок, в котором SQL связывает части
SELECT:FROM,WHERE,GROUP BY,HAVING,SELECT,ORDER BY. Он определяет, какие имена видны на каждом шаге, а физический порядок выполнения выбирает оптимизатор.- Ломающее изменение (breaking change)
Изменение контракта, после которого существующий клиент перестаёт работать: удаление или переименование поля, смена типа, новый обязательный параметр, другой смысл кода ответа.
- Макрос FireDAC (substitution variable)
Подстановка в текст SQL до отправки на сервер:
&Nameили!Name. Нужна там, где параметр не работает, например для имени таблицы; ввод пользователя в макрос не подставляют.- Маппинг входящих claims (MapInboundClaims)
Переименование коротких claims из токена в длинные типы WS-Federation:
subстановитсяClaimTypes.NameIdentifier. ВJwtBearerOptionsвключено по умолчанию, выключаетсяMapInboundClaims = false.- Массив зависимостей (dependency array)
Второй аргумент
useEffect,useMemoиuseCallback. React сравнивает его элементы черезObject.isи перезапускает эффект или пересчитывает значение, только если что-то изменилось.- Материализация запроса
Выполнение ленивого запроса с сохранением результата в коллекцию:
ToList(),ToArray(),ToDictionary(). После неё повторные обращения не выполняют запрос снова.- Машина состояний (state machine)
Тип, который компилятор генерирует из async-метода. Хранит номер текущего шага и локальные переменные, а метод
MoveNextпродолжает выполнение с места последнегоawait.- Медиазапрос (media query)
Условие
@media, при котором применяются стили: ширина окна, ориентация, тип устройства, тёмная тема. Основа адаптивной вёрстки.- Мелкозернистая блокировка (fine-grained locking)
Приём, при котором структура защищена не одной блокировкой, а несколькими, каждая на свою часть данных. Потоки, работающие с разными частями, не мешают друг другу.
- Мемоизация (memoization)
Кеширование результатов функции по аргументам: повторный вызов с теми же аргументами берёт ответ из словаря или массива. Это ДП сверху вниз — рекурсия плюс кеш.
- Мёртвая версия строки (dead tuple)
Версия строки, удалённая или заменённая завершённой транзакцией, которую уже не видит ни одна активная транзакция. Занимает место в таблице и индексах, пока её не уберёт VACUUM.
- Метаданные декораторов (emitDecoratorMetadata)
Сведения о типах, которые TypeScript сохраняет для декорированных классов при флаге
emitDecoratorMetadata, напримерdesign:paramtypes— типы параметров конструктора. NestJS читает их черезreflect-metadataи по ним понимает, что внедрять.- Метаданные endpoint'а (endpoint metadata)
Произвольные объекты, прикреплённые к endpoint'у: атрибуты
[Authorize], политики CORS, свои маркеры черезWithMetadata. Их читают middleware послеUseRoutingчерезcontext.GetEndpoint().- Метод расширения (extension method)
Статический метод статического класса с
thisперед первым параметром (C# 3). Вызывается как метод экземпляра; компилятор превращает вызов в обычный статический.- Метод цепочек (separate chaining)
Способ разрешения коллизий, при котором элементы одной корзины хеш-таблицы связаны в цепочку. В
Dictionaryцепочка — это индексы внутри массива записей, а не отдельные объекты-узлы.- Метод RED
Набор метрик для сервиса, обрабатывающего запросы: Rate (запросов в секунду), Errors (ошибки), Duration (время ответа). Предложен Томом Уилки как дополнение к USE.
- Метод USE
Набор метрик для каждого ресурса: Utilization (загрузка), Saturation (насыщение, очередь ожидающей работы), Errors (ошибки). Предложен Бренданом Греггом для анализа производительности.
- Миграция EF Core
Класс с методами
UpиDown, который переводит схему базы от одной версии модели к следующей. Создаётся командойdotnet ef migrations addпо разнице модели и снапшота.- Микрозадача (microtask)
Короткий колбэк, который выполняется сразу после текущей задачи, до следующей задачи и отрисовки: реакции промисов, продолжения после
await,queueMicrotask. Очередь микрозадач выполняется целиком.- Микросервисы (microservices)
Архитектурный стиль, в котором система состоит из небольших сервисов. Каждый владеет своими данными, выпускается независимо и общается с другими по сети.
- Многооператорная табличная функция (multi-statement TVF)
Функция, которая заполняет табличную переменную несколькими инструкциями и возвращает её. Оптимизатор не видит её содержимое и оценивает результат в фиксированные 100 строк, а до SQL Server 2014 — в одну.
- Многоэтапная сборка (multi-stage build)
Dockerfile с несколькими
FROM: на одних этапах собирают, в последний копируют только результат черезCOPY --from. Инструменты сборки не попадают в итоговый образ.- Модальная форма
Окно, которое блокирует остальные окна приложения до своего закрытия. В VCL его открывает
ShowModal, который возвращаетModalResult.- Модель памяти .NET
Правила того, какие перестановки чтений и записей разрешены компилятору, JIT и процессору и что видят другие потоки. Описана в спецификации Memory-model.md в репозитории dotnet/runtime.
- Модель чтения (read model)
Данные, подготовленные под конкретные запросы: плоские таблицы, документы, кеш. В CQRS их обновляют по событиям или изменениям модели записи, поэтому они могут отставать.
- Модель EF Core
Метаданные о сущностях: свойства, ключи, связи, имена таблиц и типы столбцов. EF строит её один раз на тип контекста по соглашениям, атрибутам и Fluent API и по ней генерирует SQL и миграции.
- Модуль Delphi (unit)
Файл
.pas— единица компиляции Delphi. Секцияinterfaceобъявляет то, что видно другим модулям,implementationсодержит код, а необязательныеinitializationиfinalizationвыполняются при старте и завершении программы.- Модуль NestJS (@Module)
Класс с декоратором
@Module(), который объединяет контроллеры и провайдеры одной области, импортирует другие модули и черезexportsрешает, чем они могут пользоваться. Приложение — дерево модулей от корневогоAppModule.- Модульный монолит (modular monolith)
Одно развёртываемое приложение, код которого разбит на модули по бизнес-возможностям. Модуль открывает другим только публичный контракт и владеет своими данными.
- Модульный тест (unit test)
Автоматический тест, который проверяет одно поведение небольшой части кода в изоляции от базы, сети и файловой системы. Выполняется за миллисекунды.
- Мок (mock object)
Дублёр, по которому тест проверяет взаимодействие: был ли вызов, сколько раз и с какими аргументами. В .NET их создают NSubstitute и Moq.
- Мутационное тестирование
Способ оценить качество тестов: инструмент вносит в код маленькие изменения (мутанты) и проверяет, падают ли тесты. Выживший мутант — непроверенное поведение. В .NET — Stryker.NET.
- Наблюдаемость (observability)
Свойство системы, позволяющее понять её внутреннее состояние по данным, которые она отдаёт наружу: метрикам, трейсам и логам. В отличие от мониторинга, отвечает и на вопросы, о которых не думали заранее.
- Наблюдатель (Observer)
Поведенческий паттерн: издатель оповещает всех подписчиков об изменении. В .NET это события (
event) и интерфейсыIObservable<T>иIObserver<T>.- Нагрузочное тестирование
Проверка сервиса под заданным или растущим потоком запросов, чтобы найти предел пропускной способности, рост задержек и точку деградации. Инструменты — k6, NBomber, JMeter, bombardier.
- Накопление прав (privilege creep)
Постепенный рост прав сотрудника: при переводах и новых проектах права выдают, а старые не забирают. Лечится пересмотром доступа и отзывом прав при смене должности.
- Намеренная блокировка (intent lock)
Блокировка на верхнем уровне иерархии (страница, таблица), которая сообщает, что ниже уже стоят S или X. Позволяет быстро понять, можно ли заблокировать всю таблицу, не проверяя каждую строку.
- Нарушение контроля доступа (broken access control)
Пользователь читает или меняет то, что ему не положено: чужие заказы, админские функции. Первая категория OWASP Top 10 в редакциях 2021 и 2025 годов.
- Наследование (inheritance)
Механизм, при котором новый класс получает члены базового и может их расширить или переопределить. В C# у класса один базовый класс, а интерфейсов — сколько угодно.
- Не более одного раза (at-most-once)
Гарантия доставки, при которой сообщение не обрабатывается повторно, но может потеряться. Получается, если подтвердить сообщение до обработки.
- Небезопасная десериализация
Десериализатор создаёт типы, указанные в самих данных, и атакующий подбирает тип, конструктор или сеттер которого выполняет нужный ему код. Классические примеры —
BinaryFormatterиTypeNameHandlingв Newtonsoft.Json.- Небезопасная ссылка [unsafe]
Атрибут ссылки, который отключает для неё подсчёт ссылок полностью: ни
_AddRef, ни обнуления при уничтожении объекта. Бесплатна, но после уничтожения объекта указывает на освобождённую память.- Неизменяемая коллекция (immutable collection)
Коллекция из
System.Collections.Immutable, которую нельзя изменить после создания:AddиRemoveвозвращают новый экземпляр. Её безопасно передавать между потоками без блокировок.- Неизменяемый тип (immutable type)
Тип, состояние экземпляра которого нельзя изменить после создания: «изменяющие» методы возвращают новый экземпляр. Примеры —
string,DateTime,readonly record struct.- Некластерный индекс (nonclustered index)
Отдельная от таблицы структура: ключ индекса и указатель на строку — ключ кластеризации или RID. Колонки, которых нет в индексе, сервер дочитывает из таблицы.
- Необработанное отклонение (unhandled rejection)
Отклонённый промис, к которому не подключили обработчик ошибки. Браузер генерирует событие
unhandledrejection, а Node.js с версии 15 по умолчанию завершает процесс.- Неограниченное делегирование
Режим Kerberos, при котором клиент пересылает серверу свой TGT и сервер может действовать от имени пользователя перед любой службой. Опасен; Credential Guard его блокирует.
- Неповторяемое чтение (non-repeatable read)
Аномалия, при которой повторное чтение той же строки в транзакции даёт другое значение, потому что её изменила и зафиксировала другая транзакция.
- Непрерывная интеграция (continuous integration, CI)
Практика, при которой разработчики часто сливают изменения в общую ветку, а каждое изменение автоматически собирается и проверяется тестами. Ошибка интеграции видна через минуты, а не в день релиза.
- Непрерывная поставка (continuous delivery, CD)
Продолжение CI: каждая проверенная сборка автоматически упаковывается и выкладывается на тестовые окружения, так что в прод её можно выпустить в любой момент — по ручному подтверждению.
- Непрерывное развёртывание (continuous deployment)
Вариант CD без ручного шага: каждое изменение, прошедшее все проверки конвейера, автоматически уходит в прод. Требует надёжных автотестов, мониторинга и быстрого отката.
- Непрозрачный токен (reference token)
Случайная строка без данных внутри. API узнаёт, что за ней стоит, через introspection у сервера авторизации: такой токен отзывается мгновенно, но требует сетевого запроса.
- Нестабильный тест (flaky test)
Тест, который на одном и том же коде то проходит, то падает. Обычные причины — время, общее состояние, параллельность, внешние сервисы.
- Неуправляемый ресурс (unmanaged resource)
Ресурс вне управляемой кучи, о котором GC ничего не знает: дескриптор файла или окна, сокет, нативная память. Его нужно освобождать явно — через
DisposeилиSafeHandle.- Нефункциональные требования
Требования не к тому, что система делает, а к тому, как: нагрузка, задержка, доступность, согласованность, безопасность, срок хранения данных. Именно они определяют архитектуру.
- Неявное преобразование типов (implicit conversion)
Приведение типов, которое SQL Server делает сам при сравнении значений разных типов; в плане оно видно как
CONVERT_IMPLICIT. Если преобразуется колонка, а не параметр, seek по её индексу обычно невозможен.- Нормализация
Проектирование таблиц так, чтобы каждый факт хранился в одном месте. Ступени нормализации называют нормальными формами: 1НФ, 2НФ, 3НФ, BCNF.
- Область внедрения (injection scope)
Время жизни провайдера в NestJS:
DEFAULT— один экземпляр на приложение,REQUEST— на каждый запрос,TRANSIENT— свой экземпляр каждому потребителю. ОбластьREQUESTпереходит на всех, кто зависит от такого провайдера.- Обнаружение изменений (change detection)
Механизм, который сравнивает значения выражений в шаблонах с прошлыми и обновляет изменившиеся части DOM. Запускается по сигналу zone.js или по уведомлениям сигналов и событий.
- Обработчик авторизации (authorization handler)
Реализация
IAuthorizationHandler, обычно наследникAuthorizationHandler<TRequirement>: проверяет requirement и вызываетcontext.Succeedилиcontext.Fail. Регистрируется в DI; у одного requirement может быть несколько handlers.- Обработчик интерполированных строк (interpolated string handler)
Механизм C# 10: выражение
$"..."компилируется в вызовыAppendLiteralиAppendFormatted<T>специального типа, напримерDefaultInterpolatedStringHandler. Аргументы не упаковываются, буфер берётся из пула.- Образ контейнера (container image)
Неизменяемый шаблон, из которого запускают контейнеры: файлы приложения, рантайм, системные библиотеки и команда запуска. Состоит из слоёв и хранится в реестре под именем с тегом.
- Обратное давление (backpressure)
Механизм, при котором переполненный потребитель замедляет производителя, а не копит работу в памяти. В каналах его даёт ограниченный канал с режимом Wait.
- Обратный прокси (reverse proxy)
Сервер перед приложением, который принимает запросы из сети и пересылает их приложению. Обычно расшифровывает TLS, балансирует нагрузку и позволяет нескольким приложениям делить порты 80 и 443.
- Объект Git (blob, tree, commit, tag)
Единица хранения в базе
.git/objects, адресуемая хешем своего содержимого: blob — содержимое файла, tree — каталог, commit — снимок с метаданными, tag — аннотированный тег. Объекты неизменяемы.- Объект-значение (value object)
Объект без собственной идентичности, который определяется значениями полей:
Money,Address,DateRange. Неизменяемый и сравнивается по значению; в C# его удобно делатьrecord.- Обязательный член (required member)
Свойство или поле с модификатором
required(C# 11): его нужно задать в инициализаторе объекта, иначе ошибка компиляции. Помогает с NRT, когда объект создаётся без конструктора с параметрами.- Ограничение маршрута (route constraint)
Условие на параметр маршрута:
{id:int},{name:alpha},{slug:regex(...)}. Если значение не подходит, маршрут не совпадает. Нужно, чтобы различать маршруты, а не чтобы проверять ввод.- Ограничение параметра типа (generic constraint)
Требование к параметру типа в предложении
where T : ...: ссылочный или значимый тип, наличие конструктора, базовый класс, интерфейс. Даёт компилятору право вызывать соответствующие члены уT.- Ограничение частоты запросов (rate limiting)
Защита сервиса, которая отклоняет запросы сверх лимита, обычно с кодом 429. В ASP.NET Core с .NET 7 есть middleware с алгоритмами fixed window, sliding window, token bucket и concurrency.
- Ограниченное делегирование (KCD)
Kerberos Constrained Delegation: учётке фронтенда разрешено получать билеты от имени пользователя только к перечисленным SPN (атрибут
msDS-AllowedToDelegateTo). Работает через расширение S4U2Proxy.- Ограниченный контекст (bounded context)
Граница, внутри которой у модели и её терминов одно значение. «Товар» на складе и в каталоге — разные модели в разных контекстах; контекст — естественный кандидат в модуль или сервис.
- Одиночка (Singleton)
Порождающий паттерн: у класса ровно один экземпляр и глобальная точка доступа к нему. В .NET «один экземпляр» обычно задают регистрацией
AddSingletonв DI, а не статическим свойством.- Оконная функция
Функция с
OVER (...), которая считает значение по набору строк, связанных с текущей, и, в отличие отGROUP BY, не сворачивает строки. Примеры —ROW_NUMBER,LAG,SUM() OVER.- Окружение (hosting environment)
Имя среды выполнения —
Development,Staging,Productionили своё. Задаётся переменнойASPNETCORE_ENVIRONMENTилиDOTNET_ENVIRONMENT, по умолчаниюProduction, и определяет файлappsettings.{Environment}.jsonи поведение приложения.- Оператор ?? (nullish coalescing)
a ?? bвозвращаетb, только еслиaравноnullилиundefined. В отличие от||не заменяет0,''иfalse.- Оператор подавления null (null-forgiving operator)
Постфиксный
!, напримерx!.Length: говорит компилятору, что выражение неnull, и подавляет предупреждение. В рантайме ничего не проверяет.- Оператор APPLY (CROSS APPLY, OUTER APPLY)
Оператор T-SQL, который вычисляет табличное выражение справа для каждой строки слева, и это выражение может ссылаться на её колонки. CROSS APPLY отбрасывает строки с пустым результатом, OUTER APPLY сохраняет их с
NULL; в PostgreSQL аналог —LATERAL.- Операторы высшего порядка (switchMap, mergeMap, concatMap, exhaustMap)
Операторы RxJS, которые превращают каждое значение во внутренний поток, например HTTP-запрос, и решают, что делать с ним, если прошлый ещё не завершён: отменить, выполнить параллельно, поставить в очередь или проигнорировать новое.
- Оптимизатор запросов (query optimizer)
Компонент СУБД, который по тексту запроса, статистике и индексам выбирает план выполнения с наименьшей оценочной стоимостью. Запрос описывает, что нужно получить, а оптимизатор решает, как это сделать.
- Оптимистическая блокировка (optimistic concurrency)
Подход к параллельным правкам без удержания блокировок: при сохранении проверяется, что строка не изменилась с момента чтения, а при конфликте операция отклоняется. Противоположность — пессимистическая блокировка строки на время работы.
- Оркестрация (orchestration)
Способ координации саги, при котором оркестратор хранит её состояние, рассылает команды участникам и запускает компенсации при сбое.
- Основная теорема о рекуррентных соотношениях (master theorem)
Готовый ответ для рекуррентных соотношений вида T(n) = a·T(n/b) + f(n), которые описывают алгоритмы «разделяй и властвуй». Например, сортировка слиянием T(n) = 2T(n/2) + O(n) даёт O(n log n).
- Основной и фоновый поток (foreground/background thread)
Процесс не завершится, пока работает хотя бы один основной (foreground) поток, а фоновые потоки останавливаются вместе с ним. Потоки пула фоновые, new Thread по умолчанию основной.
- Отзыв токена
Признание токена недействительным до истечения срока. Самодостаточный JWT API проверяет локально, поэтому для отзыва нужен список отозванных
jtiили интроспекция.- Отложенное выполнение (deferred execution)
Запрос LINQ выполняется не при объявлении, а при переборе результата, и выполняется заново при каждом переборе. Так работают методы, возвращающие
IEnumerable<T>:Where,Select,OrderBy.- Отображённый тип (mapped type)
Тип вида
{ [K in keyof T]: ... }, который перебирает ключи и строит из них новый объектный тип. Умеет добавлять и сниматьreadonlyи?и переименовывать ключи черезas.- Отчёт о доставке (delivery receipt, DLR)
Асинхронное уведомление от SMS-центра о финальном статусе сообщения: доставлено, истёк срок, не доставлено. В SMPP приходит операцией deliver_sm; формат текста зависит от SMSC.
- Оценка кардинальности (cardinality estimation)
Прогноз оптимизатора, сколько строк вернёт каждый оператор плана. Строится по статистике; от неё зависят выбор соединений, порядок операций и объём выделенной памяти.
- Оценка на салфетке (back-of-the-envelope)
Быстрый расчёт порядка величин по допущениям: запросы в секунду, объём данных, трафик, память под кеш. Нужна точность до порядка, а не до процента.
- Очередь задач (task queue, macrotask)
Очередь, из которой event loop берёт по одной задаче: колбэки
setTimeout, события пользователя, сообщения сети. Между задачами выполняются все микрозадачи.- Очередь недоставленных сообщений (dead letter queue, DLQ)
Отдельная очередь или топик для сообщений, которые не удалось обработать после всех попыток. Не даёт «ядовитому» сообщению блокировать поток и сохраняет его для разбора.
- Очередь сообщений UI-потока (message loop)
Цикл, в котором UI-поток по очереди обрабатывает сообщения: ввод, перерисовку, делегаты из
SynchronizationContext.Post. Пока UI-поток занят, очередь стоит и интерфейс не отвечает.- Очередь финализации (finalization queue)
Внутренний список CLR с объектами, у которых есть финализатор. Недостижимые объекты из него переходят в очередь f-reachable, их финализаторы выполняет поток финализации, а память освобождается при следующей сборке.
- Очистка эффекта (cleanup)
Функция, которую возвращает setup эффекта. React вызывает её перед повторным запуском эффекта и при размонтировании, чтобы отписаться, остановить таймер или закрыть соединение.
- Пакетирование SaveChanges (batching)
Отправка нескольких команд
INSERT,UPDATE,DELETEза один сетевой round trip. На SQL Server EF Core по умолчанию кладёт в пакет до 42 команд; предел задаётMaxBatchSize.- Пакетный режим (batch mode)
Режим выполнения, в котором оператор обрабатывает пачку строк за раз, а не по одной. Основной режим для columnstore; с SQL Server 2019 на уровне совместимости 150 доступен и для обычных таблиц.
- Параллельная эксплуатация (parallel run)
Старая и новая версии системы работают одновременно на одних данных. Результаты сравнивают, а старая версия остаётся путём отката, пока новая не докажет эквивалентность.
- Параметризованный тест
Один тестовый метод, который запускается на нескольких наборах входных данных. В xUnit это
[Theory]с[InlineData]или[MemberData], в NUnit —[TestCase], в MSTest —[DataRow].- Параметрический полиморфизм
Один и тот же код работает с любым типом, переданным как параметр. В C# это generics:
List<T>,Max<T>(T a, T b).- Партиционирование таблицы (секционирование)
Хранение одной логической таблицы секциями по диапазонам значений колонки, например по месяцам. Границы задаёт функция секционирования, размещение по файловым группам — схема секционирования.
- Партиция (partition)
Часть топика Kafka — отдельный упорядоченный лог на одном из брокеров. Порядок записей гарантирован только внутри партиции, а в группе потребителей одну партицию читает один потребитель.
- Паттерн проектирования (design pattern)
Именованное типовое решение часто встречающейся задачи проектирования: роли классов, связи между ними и последствия. Это не готовый код, а схема, которую реализуют под свою задачу.
- Передача по ссылке на объект (call by sharing)
Способ передачи аргументов в Python: параметр функции становится ещё одним именем того же объекта. Изменения объекта видны вызывающему, а перепривязка параметра — нет.
- Переключение секций (partition switching)
ALTER TABLE ... SWITCH: перенос секции в другую таблицу или из неё сменой метаданных, без копирования строк. Основа архивации «скользящим окном» и быстрой загрузки.- Перекрёстное соединение (CROSS JOIN)
Декартово произведение: каждая строка одной таблицы соединяется с каждой строкой другой, без условия. Используют для сеток вроде «магазин × день».
- Переполнение счётчика транзакций (XID wraparound)
Номера транзакций в PostgreSQL 32-битные и сравниваются по кругу, поэтому через ~2 млрд транзакций старые строки показались бы «из будущего». VACUUM заранее замораживает их; если не успевает, база перестаёт принимать пишущие транзакции.
- Пересмотр доступа (access review)
Регулярная проверка выданных прав: руководитель или владелец ресурса подтверждает, что права ещё нужны, или отзывает их. Другие названия — recertification, attestation.
- Переход (transition)
Обновление, помеченное несрочным через
startTransitionилиuseTransition. React может прервать его ради ввода и пока показывает прежний UI.- Перечислитель (enumerator)
Объект с методом
MoveNext()и свойствомCurrent, через которыйforeachперебирает коллекцию. Его возвращаетGetEnumerator()уIEnumerable<T>.- Перцентиль (p50, p95, p99)
Значение, ниже которого лежит заданная доля измерений: p99 = 200 мс значит, что 99% запросов быстрее 200 мс. В метриках перцентили считают приближённо по бакетам гистограммы.
- Пессимистическая конкуренция (pessimistic concurrency)
Управление параллельным доступом через блокировки: данные блокируют до изменения, и конкуренты ждут. Выгодна при частых конфликтах на коротких транзакциях.
- Пирамида тестов (test pyramid)
Модель Майка Кона: много быстрых модульных тестов, меньше интеграционных и совсем немного сквозных. Чем выше уровень, тем тест медленнее, дороже и хрупче.
- Пирамидальная сортировка (heapsort)
Сортировка, которая строит кучу из массива и раз за разом извлекает из неё крайний элемент. O(n log n) в худшем случае и O(1) дополнительной памяти, но нестабильная.
- План выполнения (execution plan)
Дерево операторов, которыми SQL Server выполняет запрос: доступ к таблицам, соединения, сортировки. Оценочный план — результат компиляции, фактический добавляет реальное число строк и выполнений.
- Планировщик задач (TaskScheduler)
Объект, который решает, где выполнять задачи. Стандартный планировщик — пул потоков, а нестандартный планировщик
awaitзахватывает так же, как контекст синхронизации.- Плотность страниц (page density)
Насколько заполнены страницы индекса —
avg_page_space_used_in_percent. Полупустые страницы требуют больше чтений и памяти буферного пула для тех же данных.- Поведенческий паттерн (behavioral pattern)
Паттерн, который распределяет обязанности между объектами и описывает их взаимодействие. В GoF их одиннадцать, среди них Strategy, Observer, Command, Iterator, Template Method.
- Поверхностная копия (shallow copy)
Новый контейнер с теми же вложенными объектами:
copy.copy,list(a),a[:]. Глубокая копия (copy.deepcopy) рекурсивно копирует и вложенные объекты.- Повторный вход (reentrancy)
Ситуация, когда обработчик вызывается снова, пока предыдущий вызов ещё не завершился. В VCL возникает при
Application.ProcessMessagesвнутри обработчика события.- Под (Pod)
Минимальная единица запуска в Kubernetes: один или несколько контейнеров с общим IP и томами. Поды эфемерны — их создают и удаляют контроллеры вроде Deployment.
- Подмена алгоритма (algorithm confusion)
Атака, при которой атакующий меняет
algв заголовке: наnoneили с RS256 на HS256, подписывая токен открытым ключом как HMAC-секретом. Защита — фиксированный набор алгоритмов, привязанный к ключу.- Поднятие (hoisting)
Объявления обрабатываются до выполнения кода области. Функции-объявления доступны целиком,
var— со значениемundefined, аlet,constиclassдо строки объявления находятся во временной мёртвой зоне.- Подсказки Query Store (Query Store hints)
Подсказки вроде
RECOMPILEилиMAXDOP, которые прикрепляются к запросу в Query Store черезsys.sp_query_store_set_hints, не меняя его текст. Доступны с SQL Server 2022.- Подсчёт ссылок (reference counting)
Основной механизм управления памятью CPython: у каждого объекта есть счётчик ссылок, и объект освобождается сразу, как только он падает до нуля. Циклы ссылок так не освобождаются.
- Подсчёт ссылок в Delphi (reference counting)
Модель времени жизни, в которой у значения есть счётчик ссылок: компилятор увеличивает его при присваивании и уменьшает, когда ссылка исчезает, а при нуле память освобождается. В Delphi так живут строки, динамические массивы, интерфейсы и анонимные методы.
- Подъём состояния (lifting state up)
Перенос state в ближайшего общего родителя компонентов, которым он нужен. Родитель передаёт детям значение и функцию изменения через props.
- Поиск в глубину (DFS, depth-first search)
Обход графа, который идёт по одной ветви до конца и возвращается назад, через рекурсию или явный стек. O(V + E); основа для поиска циклов, компонент связности и топологической сортировки.
- Поиск в ширину (BFS, breadth-first search)
Обход графа слоями через очередь: сначала все соседи, потом соседи соседей. Находит кратчайший путь по числу рёбер в невзвешенном графе за O(V + E).
- Поиск представлений (view discovery)
Процесс, которым MVC находит файл представления по имени. По умолчанию сначала
Views/{Controller}/{View}.cshtml, затемViews/Shared/{View}.cshtml.- Поколение GC (generation)
Логическая часть управляемой кучи по возрасту объектов: 0 — новые, 1 — пережившие одну сборку, 2 — долгоживущие. Молодые поколения собираются часто и быстро, сборка поколения 2 — полная.
- Покрывающий индекс (covering index)
Индекс, в котором есть все колонки, нужные запросу, — в ключе или среди включённых. Запрос читает только его и не обращается к таблице.
- Покрытие кода (code coverage)
Доля строк или ветвей кода, которые выполнились во время тестов. Показывает непроверенный код, но не доказывает, что выполненный код проверен. В .NET его считают coverlet и Microsoft Code Coverage.
- Полиморфизм (polymorphism)
Способность одного кода работать с объектами разных типов. В ООП обычно имеют в виду полиморфизм подтипов: вызов виртуального метода выбирает реализацию по реальному типу объекта.
- Политика авторизации (authorization policy)
Именованный набор требований (requirements) в ASP.NET Core. Регистрируется через
AddAuthorizationBuilder().AddPolicy, применяется атрибутом[Authorize(Policy = "...")]илиRequireAuthorizationи выполнена, когда выполнены все её требования.- Политика одного источника (same-origin policy)
Правило браузера: скрипт может читать ответы только своего источника — той же схемы, хоста и порта. Отправлять запросы на чужие источники он может, читать ответы — нет.
- Политика по умолчанию (default policy)
Политика, которую ASP.NET Core применяет к
[Authorize]иRequireAuthorization()без имени политики. По умолчанию требует только аутентифицированного пользователя, меняется черезSetDefaultPolicy.- Полусоединение (semi join)
Соединение, которое возвращает строки левой таблицы, у которых есть хотя бы одна пара справа, не размножая их и не добавляя колонок. В SQL его выражают через
EXISTSилиIN.- Получатель (receiver)
Значение, «на котором» вызывается член расширения: параметр
thisу классического метода или параметр блокаextension(...)в C# 14.- Порождающий паттерн (creational pattern)
Паттерн, который отделяет код, использующий объект, от решения, какой объект создать и как. В GoF их пять: Abstract Factory, Builder, Factory Method, Prototype, Singleton.
- Порты и адаптеры (гексагональная архитектура)
Стиль Алистера Кокберна: приложение общается с внешним миром только через порты — интерфейсы, которые оно само объявляет. Адаптер реализует порт под конкретную технологию: контроллер, репозиторий на EF Core, SMTP-клиент.
- Порядок разрешения методов (MRO)
Порядок классов, в котором Python ищет атрибут при наследовании; доступен как
Cls.__mro__. Строится C3-линеаризацией, по нему же работаетsuper().- Посетитель (visitor)
Поведенческий паттерн GoF: операции над иерархией выносятся в отдельный класс-посетитель с методом на каждый тип, а элементы вызывают нужный метод через
Accept. Добавлять операции легко, новые типы — трудно.- Последовательность (sequence)
Объект базы, который выдаёт возрастающие числа через
nextval. Работает вне транзакций: откат не возвращает выданные значения, поэтому в ключах бывают пропуски. На последовательностях построены identity иserial.- Постоянные поля (persistent fields)
Объекты
TField, созданные в Fields Editor и сохранённые в .dfm. Дают типизированный доступ и позволяют добавить вычисляемые и lookup-поля, но должны совпадать с колонками запроса по имени и типу.- Потерянное обновление (lost update)
Аномалия, при которой две транзакции читают одно значение, изменяют его и записывают, и запись последней затирает изменение первой. Типична для шаблона «прочитал в приложении — записал новое значение».
- Поток данных (stream)
Объект Node.js для обработки данных порциями по мере поступления: Readable — источник, Writable — приёмник, Duplex — и то и другое, Transform — преобразование по дороге. Соединяют потоки через
pipeline.- Потоковая загрузка компонентов (streaming)
Механизм VCL, который сохраняет published-свойства компонентов в .dfm и восстанавливает их:
TReaderсоздаёт объекты по именам классов и присваивает свойства через RTTI.- Поэтапная выкладка (rolling deployment)
Стратегия, при которой экземпляры за балансировщиком обновляются по одному или небольшими группами. Лишние серверы не нужны, но на время выкладки старая и новая версии работают одновременно.
- Правила защиты ветки (branch protection)
Настройки репозитория, которые запрещают слияние в ветку вроде
main, пока не пройдены обязательные проверки конвейера и не получено одобрение ревьюеров. В GitHub — protected branches и rulesets.- Правила отображения типов (MapRules)
Коллекция FormatOptions.MapRules в FireDAC: каждое правило заменяет тип данных, который вернул драйвер, на тип, удобный приложению. Ими подгоняют типы полей под старую библиотеку при миграции.
- Правила claims (claim rules)
Правила ADFS на собственном языке: условие, затем
=>и действиеissueилиadd. Определяют, какие claims попадут в токен и откуда взять их значения, например из атрибутов AD.- Правило сортировки (collation)
Правила сравнения и сортировки строк для языка. В PostgreSQL обычные collation детерминированные и различают регистр; поиск без учёта регистра даёт недетерминированная ICU-collation, тип
citextилиlower().- Правило трёх (rule of three)
Эвристика рефакторинга: два похожих фрагмента терпят, на третьем выносят общее. Приписывается Дону Робертсу, популяризирована Мартином Фаулером в книге «Рефакторинг».
- Префиксные суммы (prefix sums)
Массив, где элемент i — сумма первых i элементов исходного. После подготовки за O(n) сумма любого отрезка считается за O(1) как разность двух префиксов.
- Приведение типов (type coercion)
Автоматическое преобразование значения к другому типу, которое JavaScript делает сам: в
==, арифметике,ifи шаблонных строках. Например,'5' * 2даёт10.- Привязка данных (data binding)
Связь шаблона с классом компонента: интерполяция
{{ }}, привязка свойства[prop], события(event)и двусторонняя[(prop)]. Angular сам обновляет DOM при изменении значения.- Привязка к потоку (thread affinity)
Свойство примитива, который должен освободить тот же поток, что его захватил. Она есть у Monitor, Lock, Mutex и ReaderWriterLockSlim, поэтому их нельзя держать через await.
- Привязка конфигурации (configuration binding)
Заполнение свойств объекта значениями из секции конфигурации: строки приводятся к типам свойств. По умолчанию работает через рефлексию, с .NET 8 есть генератор привязки для AOT.
- Привязка модели (model binding)
Заполнение параметров action или обработчика значениями из запроса: маршрута, строки запроса, заголовков, формы или тела. Источник задают атрибуты
[From...]или правила вывода.- Примитив (primitive)
Значение JavaScript, которое не является объектом и не имеет методов:
string,number,bigint,boolean,undefined,null,symbol. Примитивы неизменяемы и сравниваются по значению.- Примитивная одержимость (primitive obsession)
Запах кода: понятия предметной области — email, деньги, идентификаторы — хранятся в
string,decimalиint. Проверки размазываются по коду; лечится рефакторингом Replace Primitive with Object.- Принцип единственной ответственности (SRP)
Буква S в SOLID: у модуля одна причина для изменения. В формулировке Мартина из «Clean Architecture» — модуль отвечает перед одним актором, то есть перед одной группой людей, которые просят изменений.
- Принцип инверсии зависимостей (DIP)
Буква D в SOLID: модули верхнего уровня не зависят от модулей нижнего уровня, оба зависят от абстракций. Внедрение зависимостей — практический способ его соблюдать.
- Принцип наименьших привилегий (least privilege)
Пользователь или процесс получает только те права, которые нужны для его задачи, и только на нужное время. В NIST SP 800-53 это контроль AC-6.
- Принцип открытости/закрытости (OCP)
Буква O в SOLID: модуль открыт для расширения и закрыт для изменения. Сформулирован Бертраном Мейером в 1988 году; Мартин достигает его через абстракции и полиморфизм.
- Принцип подстановки Лисков (LSP)
Принцип SOLID: объект подтипа должен подходить везде, где ожидается базовый тип, без изменения правильности программы. Классический контрпример — квадрат, унаследованный от прямоугольника.
- Принцип разделения интерфейсов (ISP)
Буква I в SOLID: клиент не должен зависеть от методов, которыми не пользуется. Широкий интерфейс делят на несколько узких по нуждам клиентов.
- Приоритет типов данных (data type precedence)
Правило, по которому SQL Server выбирает общий тип для сравнения: тип с меньшим приоритетом приводится к большему.
nvarcharстаршеvarchar,intстарше строковых типов.- Приоритет шаблона маршрута (route precedence)
Правило выбора среди нескольких подходящих маршрутов: побеждает более конкретный шаблон. Литерал сильнее параметра, параметр с ограничением сильнее параметра без него, catch-all слабее всех.
- Проблема выражения (expression problem)
Термин Филипа Вадлера (1998): трудно сделать так, чтобы без правки старого кода можно было добавлять и новые варианты данных, и новые операции. ООП облегчает первое, функции с pattern matching — второе.
- Проблема N+1
Антипаттерн доступа к данным: один запрос загружает список из N элементов, а затем для каждого выполняется ещё один запрос за связанными данными. Типичная причина — ленивая загрузка в цикле.
- Провайдер базы данных EF Core
NuGet-пакет, который учит EF Core работать с конкретной СУБД: переводит запросы в её диалект SQL, сопоставляет типы и генерирует миграции. Например,
Microsoft.EntityFrameworkCore.SqlServerиNpgsql.EntityFrameworkCore.PostgreSQL.- Провайдер запросов (query provider)
Реализация
IQueryProvider, которая строит и выполняет запросыIQueryable<T>: переводит дерево выражений в язык источника данных. Пример — провайдер EF Core, который генерирует SQL.- Провайдер конфигурации (configuration provider)
Компонент, который загружает пары «ключ — значение» из одного источника: JSON-файла, переменных окружения, командной строки, хранилища секретов. При совпадении ключей побеждает провайдер, добавленный последним.
- Провайдер логирования (logging provider)
Реализация
ILoggerProvider, которая доставляет записи в конкретное место: консоль, Debug, EventSource, файл или внешнюю систему. Один логгер пишет во все подключённые провайдеры.- Провайдер NestJS (provider)
Всё, что DI-контейнер NestJS умеет создать и внедрить: сервис, репозиторий, фабрика, значение. Обычно это класс с
@Injectable(), зарегистрированный вprovidersмодуля.- Проверка scope (ValidateScopes)
Опция
ServiceProviderOptions, при которой контейнер запрещает разрешать scoped-сервисы из корневого провайдера и внедрять их в singleton. По умолчанию включена в окружении Development.- Проверщик типов (type checker)
Инструмент статического анализа, который проверяет аннотации типов без запуска кода: mypy, pyright. Сам интерпретатор аннотации не проверяет.
- Провижининг (provisioning)
Автоматическое создание учётных записей и выдача прав в целевых системах — AD, SaaS, внутренних приложениях — и обратный процесс, отзыв. Стандартный протокол для этого — SCIM (RFC 7643, RFC 7644).
- Продолжение (continuation)
Код, который выполняется после завершения задачи. Для async-метода это оставшаяся часть метода после
await.- Проекция (projection)
Выбор из источника только нужных полей, например
Selectв DTO в LINQ-запросе. EF Core тогда читает из базы лишь эти столбцы и не отслеживает сущности.- Производитель — потребитель (producer-consumer)
Схема, где одни потоки кладут работу в общую очередь, а другие забирают и обрабатывают. Очередь развязывает темп производства и обработки.
- Промис (Promise)
Объект с результатом асинхронной операции, который будет выполнен (fulfilled) значением или отклонён (rejected) ошибкой. Колбэки
then,catchиfinallyвыполняются как микрозадачи.- Пространства имён Linux (namespaces)
Механизм ядра Linux, который даёт процессу собственное представление о ресурсах: списке процессов, сети, точках монтирования, hostname. Основа изоляции контейнеров.
- Протокол (typing.Protocol)
Описание интерфейса для структурной типизации (PEP 544, Python 3.8): класс совместим с протоколом, если у него есть нужные методы, без явного наследования. Проверяется mypy и pyright.
- Профили Compose (profiles)
Метки сервисов в Compose: сервис с профилем запускается, только если профиль включён через
--profileилиCOMPOSE_PROFILES. Сервисы без профиля запускаются всегда.- Публикация образа средствами SDK (PublishContainer)
Сборка образа командой
dotnet publish /t:PublishContainerбез Dockerfile и Docker-демона. SDK сам выбирает базовый образ, пользователя и порт; настройки — свойстваContainer*в проекте.- Публичный клиент
Клиент, который не может хранить секрет: SPA, мобильное или десктопное приложение. Его код доступен пользователю, поэтому PKCE для него обязателен.
- Пул контекстов (DbContext pooling)
Переиспользование экземпляров
DbContext: при освобождении контекст сбрасывается и возвращается в пул. ВключаетсяAddDbContextPoolилиPooledDbContextFactory; с пулом соединений ADO.NET не связан.- Пул потоков (thread pool)
Набор фоновых потоков, которые CLR создаёт по мере нужды и переиспользует для коротких задач. Сюда попадают Task.Run, продолжения async-методов и колбэки таймеров.
- Пул потоков FastAPI
Пул, в котором FastAPI выполняет эндпоинты и зависимости, объявленные через обычный
def. Работает через AnyIO и по умолчанию ограничен 40 одновременными вызовами на процесс.- Пул потоков libuv (UV_THREADPOOL_SIZE)
Общий на процесс пул потоков, где libuv выполняет операции без неблокирующего API ОС: файлы,
dns.lookup, часть crypto и асинхронный zlib. По умолчанию 4 потока, максимум 1024, размер задаёт переменная окруженияUV_THREADPOOL_SIZE.- Пул приложений IIS (application pool)
Группа сайтов IIS, которую обслуживают рабочие процессы
w3wp.exeс общими настройками: учётная запись, разрядность, рециклинг. Для in-process ASP.NET Core нужен свой пул на каждое приложение.- Пул процессов (ProcessPoolExecutor)
Исполнитель из
concurrent.futures, который запускает функции в отдельных процессах. У каждого процесса свой интерпретатор и свой GIL, а аргументы и результаты передаются через pickle.- Равенство по значению (value equality)
Два экземпляра равны, если у них один тип и равные значения полей, даже если это разные объекты. Так по умолчанию сравниваются структуры и records, а классы — по ссылке.
- Разброс срока жизни (TTL jitter)
Случайная добавка к сроку жизни записи кеша, чтобы ключи, загруженные одновременно, не истекали в один момент и не вызывали лавину промахов.
- Разбухание таблицы (bloat)
Место в таблице или индексе, занятое мёртвыми версиями и пустотами после них. Запросы читают лишние страницы; обычный VACUUM место переиспользует, но ОС не возвращает.
- Разделение кода (code splitting)
Разбиение бандла на части, которые загружаются по требованию через динамический
import(): по маршрутам или по редко используемым функциям. Уменьшает стартовый объём JS.- Разделение обязанностей (separation of duties, SoD)
Правило, по которому критичную операцию не выполняет целиком один человек: кто создаёт платёж, тот его не утверждает. В RBAC — запрет конфликтных ролей у одного пользователя (статический) или в одной сессии (динамический).
- Разделение страницы (page split)
Вставка в заполненную страницу индекса: SQL Server выделяет новую страницу и переносит в неё часть строк. Это лишняя запись в журнал, фрагментация и полупустые страницы.
- Разделение структуры (structural sharing)
Приём неизменяемых структур данных: новая версия переиспользует неизменённые части старой.
ImmutableList<T>.Addсоздаёт O(log n) новых узлов дерева, а остальные узлы общие.- Размеченное объединение (discriminated union)
Union объектных типов с общим полем-меткой литерального типа, например
kindилиstatus. Проверка метки сужает значение до одного варианта.- Размотка стека (stack unwinding)
Вторая фаза обработки исключения: рантайм снимает кадры стека от места выброса до найденного обработчика и по пути выполняет блоки
finally.- Рамка окна (ROWS, RANGE)
Часть
OVER, которая задаёт, какие строки относительно текущей входят в расчёт.ROWSсчитает физические строки,RANGE— значения ключа сортировки; приORDER BYбез рамки действуетRANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.- Распределённая блокировка
Блокировка, общая для нескольких процессов или узлов, обычно в Redis или базе данных. Требует таймаута, потому что держатель может упасть, не сняв её.
- Распределённая система контроля версий (DVCS)
Система контроля версий, в которой у каждого участника полная копия репозитория со всей историей. Коммиты создаются локально, а с сервером и другими копиями обмениваются отдельными командами. Примеры — Git и Mercurial; SVN, наоборот, централизованная.
- Распределённая транзакция (distributed transaction)
Транзакция над несколькими ресурсами (базами, соединениями), которую координатор фиксирует двухфазным коммитом. В Windows это MSDTC; в .NET 7+ поддерживается только на Windows и включается явно.
- Распределённая трассировка (distributed tracing)
Запись пути одного запроса через все сервисы в виде дерева спанов с общим trace id. Показывает, где тратится время и где произошла ошибка.
- Распределённый кеш (IDistributedCache)
Кеш во внешнем хранилище (Redis, SQL Server, Postgres), общий для всех экземпляров приложения. Хранит массивы байт, поэтому сериализация лежит на приложении.
- Распределённый монолит (distributed monolith)
Система из формально отдельных сервисов, которые нельзя выпускать независимо: они делят базу, вызывают друг друга синхронными цепочками и меняются вместе. Сочетает минусы монолита и микросервисов.
- Расширенный RTTI и атрибуты
Информация о типах во время выполнения из модуля
System.Rtti: поля, методы и свойства класса, а не толькоpublished. Хранит атрибуты вроде[Test], по которым работают сериализаторы, ORM и DUnitX. Появился в Delphi 2010.- Реализация по умолчанию в интерфейсе (default interface method)
Член интерфейса с телом (C# 8). Используется, если тип не дал свою реализацию; вызывается только через ссылку типа интерфейса. Требует рантайма .NET Core 3.0+.
- Ребалансировка (rebalance)
Перераспределение партиций между участниками группы потребителей, когда участник приходит, уходит или перестаёт отвечать. Записи, обработанные, но не закоммиченные до ребалансировки, приходят повторно.
- Ревизия Alembic
Файл миграции с идентификатором
revision, ссылкой на родителяdown_revisionи функциямиupgrade()иdowngrade(). Ревизии образуют граф версий схемы.- Регрессионное тестирование
Повторная проверка уже работавшей функциональности после изменений. При миграции им убеждаются, что новая версия ведёт себя так же, как старая.
- Реентерабельная блокировка (reentrant lock)
Блокировка, в которую поток-владелец может войти повторно, не дожидаясь сам себя; выйти нужно столько же раз. Monitor и Lock реентерабельны, SemaphoreSlim — нет.
- Реестр образов (container registry)
Сервис хранения и раздачи образов: Docker Hub,
mcr.microsoft.com, Azure Container Registry, GitHub Container Registry. Образ адресуют по тегу (изменяемый) или по digest (неизменяемый).- Режим блокировки (lock mode)
Тип блокировки, который определяет, с какими другими блокировками она совместима. Основные режимы SQL Server — S (чтение), U (чтение перед изменением), X (изменение) и намеренные IS, IX, SIX.
- Рекурсивный CTE
CTE, который ссылается сам на себя: якорная часть даёт начальные строки, а рекурсивная через
UNION ALLповторяется, пока возвращает строки. Им обходят иерархии; в SQL Server глубину ограничиваетMAXRECURSION, по умолчанию 100.- Рекурсия (recursion)
Приём, при котором функция вызывает саму себя для меньшей подзадачи. Нужны базовый случай без рекурсии и шаг, который к нему приближает; каждый вызов занимает кадр стека.
- Реплика для чтения (readable secondary)
Вторичная реплика группы доступности Always On, к которой разрешены read-only подключения. Данные отстают от первичной на время доставки и применения журнала, запросы идут под snapshot isolation.
- Рециклинг пула (app pool recycling)
Плановый или вынужденный перезапуск рабочего процесса IIS: по расписанию, по лимиту памяти, при изменении конфигурации. По умолчанию новый процесс стартует до остановки старого (overlapped recycle).
- Ровно один раз (exactly-once)
Гарантия, при которой каждое сообщение обрабатывается ровно один раз. В Kafka достигается идемпотентным producer и транзакциями, но только для записей внутри Kafka; для внешних систем её заменяют at-least-once и дедупликацией.
- Родительский контрол (Parent)
Оконный контрол (
TWinControl), внутри которого отображается контрол. Отвечает за положение и отрисовку дочерних контролов и тоже освобождает их вместе с собой.- Ролевой интерфейс (role interface)
Интерфейс, который описывает одну роль объекта для конкретного клиента, а не все его публичные методы. Противоположность — заголовочный интерфейс (header interface), копирующий класс целиком.
- Ротация ключей подписи
Плановая замена ключа, которым издатель подписывает токены. Новый ключ публикуют в JWKS заранее, а старый держат, пока не истекут подписанные им токены, — иначе проверяющие с кешем отвергнут токены.
- Ротация refresh-токенов
Сервер авторизации выдаёт новый refresh-токен при каждом обновлении, а старый делает недействительным. Повторное предъявление старого — признак кражи, и сервер отзывает всю цепочку.
- Сага (saga)
Способ выполнить бизнес-операцию через несколько сервисов цепочкой локальных транзакций. Если шаг не удался, выполненные шаги отменяются компенсирующими действиями.
- Сборка (assembly)
Файл
.dllили.exeс IL-кодом, метаданными и манифестом. Единица развёртывания, версионирования и загрузки кода в .NET.- Сборщик мусора (garbage collector, GC)
Часть CLR, которая выделяет память в управляемой куче и автоматически освобождает память объектов, недостижимых от корней. В .NET это трассирующий сборщик с поколениями и уплотнением.
- Сверка (reconciliation)
Периодическое сравнение данных двух систем: количество, суммы и номера документов за период. Находит то, что потерялось или задвоилось, несмотря на квитанции и повторы.
- Свойство Delphi (property)
Член класса, который выглядит как поле, но читается и пишется через спецификаторы
readиwrite: напрямую из поля или через метод. Безwriteсвойство доступно только для чтения.- Связанность по времени (temporal coupling)
Зависимость, при которой системы должны работать одновременно, чтобы взаимодействие удалось. Синхронный вызов связывает по времени, обмен через очередь или файлы — нет.
- Связанный источник отмены (linked token source)
CancellationTokenSource, созданный черезCreateLinkedTokenSource: он отменяется вместе с любым из родительских токенов. Его обязательно освобождают, иначе подписка на родителя остаётся.- Связность (cohesion)
Мера того, насколько члены модуля или класса работают на одну задачу. Высокая связность — данные и методы, которые с ними работают, вместе; низкая — классы вроде
Utils.- Связный список (linked list)
Цепочка узлов, где каждый узел хранит элемент и ссылки на соседей. Вставка и удаление по известному узлу — O(1), но доступа по индексу нет. В .NET это двусвязный
LinkedList<T>.- Связывание имени (name binding)
Присваивание в Python привязывает имя к объекту, а не кладёт значение в ячейку.
b = aдаёт второе имя тому же объекту, копии не создаётся.- Сглаживание нагрузки очередью (queue-based load leveling)
Паттерн, при котором запросы кладут в очередь, а обработчики разбирают её с постоянной скоростью. Пик превращается в рост очереди и задержку, а не в перегрузку сервиса.
- Семантика acquire/release
Порядок для пары операций: после чтения с acquire последующие обращения не выполняются раньше него, а до записи с release предыдущие обращения не задерживаются после неё. Так работают Volatile.Read и Volatile.Write.
- Семантический HTML
Разметка элементами по смыслу:
button,nav,main,label, заголовки — вместоdivиspan. Даёт роль, поведение клавиатуры и структуру для скринридеров без дополнительного кода.- Семантическое версионирование (SemVer)
Схема версий
MAJOR.MINOR.PATCH: major растёт при ломающих изменениях, minor — при новых обратно совместимых возможностях, patch — при исправлениях. Суффикс через дефис помечает предварительную версию, через плюс — метаданные сборки.- Сервер авторизации (authorization server)
Сервис, который аутентифицирует пользователя и выдаёт токены: Keycloak, Microsoft Entra ID, ADFS, Duende IdentityServer. В терминах OIDC — OpenID Provider.
- Серверное состояние (server state)
Копия данных, владелец которых — сервер. Она устаревает без ведома клиента, поэтому её кешируют, перезапрашивают и инвалидируют, а не хранят как обычный state.
- Серверные компоненты (React Server Components, RSC)
Компоненты, которые выполняются только на сервере или при сборке. Могут быть
asyncи читать данные напрямую, их код не попадает в браузер, но state и обработчиков событий у них нет.- Серверный рендеринг (SSR)
Формирование HTML страницы на сервере на каждый запрос. Пользователь сразу видит содержимое, а JS затем делает страницу интерактивной.
- Сервисный билет (service ticket)
Билет Kerberos к конкретной службе, который KDC выдаёт по TGT. Зашифрован ключом учётки, на которой зарегистрирован SPN службы, поэтому служба проверяет его сама, без обращения к KDC.
- Сигнал (signal)
Обёртка над значением, которая сообщает потребителям о его изменении:
signal()для записываемого значения,computed()для производного,effect()для побочных действий. Стабильны с Angular 17.- Сигнальные входы и выходы (input, output, model)
Функции
input(),output()иmodel(), которые заменяют декораторы@Input()и@Output(). Вход — сигнал только для чтения,model()— двусторонняя привязка. Стабильны с Angular 19.- Симптомный алерт
Алерт на то, что видит пользователь: ошибки, задержка, недоступность. Противоположность причинному алерту на внутренний показатель вроде загрузки CPU.
- Синхронные реплики (in-sync replicas, ISR)
Реплики партиции, которые не отстают от лидера. С
acks=allзапись подтверждается, когда её получили все ISR, аmin.insync.replicasзадаёт, сколько их должно быть минимум.- Скалярная пользовательская функция (scalar UDF)
Функция T-SQL, которая возвращает одно значение. До SQL Server 2019 вызывается на каждую строку и запрещает параллельный план; с 2019 на уровне совместимости 150 подходящие функции встраиваются в запрос.
- Сквозная функциональность (cross-cutting concern)
Логика, нужная многим частям приложения независимо от бизнес-задачи: логирование, авторизация, кеширование, обработка ошибок. Её выносят в middleware, фильтры или декораторы.
- Скользящее истечение (sliding expiration)
Запись удаляется, если к ней не обращались заданный интервал; каждое чтение продлевает срок. Без абсолютного истечения часто читаемая запись не устареет никогда.
- Скользящее окно (sliding window)
Приём для задач о подотрезках: окно [left, right] расширяется вправо и сжимается слева, когда нарушено условие. Каждый индекс сдвигается не больше одного раза, поэтому O(n).
- Скринридер (screen reader)
Программа, которая озвучивает интерфейс или выводит его на брайлевский дисплей: NVDA, JAWS, VoiceOver, TalkBack. Читает дерево доступности, а не пиксели.
- Скрытие метода (method hiding)
Объявление в наследнике члена с тем же именем, что у базового класса, без
override; модификаторnewделает это явным. Какой метод вызовется, решает статический тип переменной.- Слабая ссылка [weak]
Атрибут интерфейсной ссылки, который не увеличивает счётчик ссылок. Когда объект уничтожается, рантайм обнуляет все такие ссылки; за это платят учётом слабых ссылок. На Win32 и Win64 доступен с Delphi 10.1 Berlin.
- Слоёная архитектура (layered, n-tier)
Код делится на горизонтальные слои: представление, бизнес-логика, доступ к данным. Каждый слой обращается только к нижнему, поэтому бизнес-логика зависит от слоя данных.
- Сложность по памяти (space complexity)
Оценка того, сколько дополнительной памяти требует алгоритм с ростом входа n, без учёта самого входа. Проход с
HashSet<T>— O(n) памяти, двойной цикл без коллекций — O(1).- Слой образа (image layer)
Набор изменений файловой системы, который даёт одна инструкция Dockerfile (
RUN,COPY,ADD). Слои только для чтения, адресуются хешем и кешируются: неизменённые слои не пересобираются.- Случайная сложность (accidental complexity)
Сложность, которую вносит решение, а не задача: лишние слои, абстракции, инструменты. Противопоставлена существенной сложности в эссе Фреда Брукса «No Silver Bullet» (1986).
- Смещение (offset)
Номер записи внутри партиции Kafka. Группа потребителей коммитит offset следующей непрочитанной записи во внутренний топик
__consumer_offsetsи после перезапуска продолжает с него.- Снапшот (snapshot) в event sourcing
Сохранённое состояние агрегата на определённой версии потока. Агрегат загружают из снапшота и дочитывают только более поздние события, а не весь поток.
- Снапшот модели (model snapshot)
Файл
<Context>ModelSnapshot.csс описанием модели после последней миграции. С ним EF сравнивает текущую модель, чтобы сгенерировать следующую миграцию; в командной работе он источник конфликтов.- Снимок кучи (heap snapshot)
Файл
.heapsnapshotсо всеми объектами кучи V8 и ссылками между ними. Два снимка сравнивают в Chrome DevTools, чтобы найти растущие объекты и то, что их удерживает.- Событие (event)
Член класса на основе делегата, который снаружи разрешает только подписку
+=и отписку-=. Вызвать событие может только объявивший его тип.- Согласование (reconciliation) в React
Алгоритм, которым React сравнивает новое дерево элементов с прошлым и решает, какие узлы DOM обновить, создать или удалить. Элементы списка сопоставляются по
key.- Согласованность в конечном счёте (eventual consistency)
Модель, в которой данные разных узлов или сервисов могут какое-то время расходиться, но сходятся, когда все изменения доставлены. Цена отказа от распределённых транзакций.
- Соль (salt)
Случайное значение, уникальное для каждого пароля и хранящееся рядом с хешем. Одинаковые пароли дают разные хеши, а заранее посчитанные таблицы становятся бесполезны.
- Сопоставление с образцом (pattern matching)
Проверка значения по шаблону — типу, свойствам, диапазону, списку — с одновременным извлечением данных в переменные. Работает в
is,switchиswitch-выражениях.- Сортировка слиянием (merge sort)
Сортировка, которая делит массив пополам, сортирует половины и сливает их. Всегда O(n log n) и стабильна, но требует O(n) дополнительной памяти.
- Состояние гонки (race condition)
Ошибка, при которой результат программы зависит от того, в каком порядке потоки обращаются к общим данным. Классический пример — потерянное увеличение при count++ из двух потоков.
- Состояние компонента (state)
Данные, которые React хранит для экземпляра компонента между рендерами. Меняются только через функцию из
useState, и каждое изменение запускает новый рендер.- Состояние набора данных (State)
Значение свойства
State—dsBrowse,dsEdit,dsInsertи другие, — которое определяет, что можно делать с текущей записью. МетодыEdit,Insert,PostиCancelпереключают состояния.- Состояние сущности (EntityState)
Метка, по которой EF Core решает, что делать с сущностью при
SaveChanges:Added— вставить,Modified— обновить,Deleted— удалить,UnchangedиDetached— ничего.- Спан (span)
Одна операция внутри трейса: входящий запрос, SQL-запрос или HTTP-вызов. У спана есть имя, начало, длительность, атрибуты и ссылка на родительский спан. В .NET спан — это
Activity.- Спекулятивная общность (speculative generality)
Запах кода из каталога Фаулера: абстракции, параметры и хуки «на будущее», которыми никто не пользуется. Лечится удалением лишнего.
- Специфичность селектора (specificity)
Вес селектора в каскаде — тройка «id, классы и атрибуты и псевдоклассы, теги и псевдоэлементы». При равном происхождении и слое побеждает правило с большей специфичностью.
- Списковый шаблон (list pattern)
Шаблон вида
[1, .., var last](C# 11), который сопоставляет элементы массива, списка илиSpan<T>по позициям;..означает любое число элементов.- Список смежности (adjacency list)
Способ хранить граф: для каждой вершины — список её соседей, в C# обычно
Dictionary<T, List<T>>. Занимает O(V + E) памяти и подходит для разреженных графов.- Срок хранения (retention)
Политика, по которой брокер удаляет старые данные лога: по времени (
retention.ms, по умолчанию 7 дней), по размеру или уплотнением по ключу. Чтение данные не удаляет.- Ссылка (ref) и HEAD
Ссылка — имя, указывающее на коммит: ветка, тег или ветка удалённого отслеживания. HEAD — особая ссылка на текущую ветку или, в состоянии detached HEAD, прямо на коммит.
- Ссылочное равенство (reference equality)
Две ссылки указывают на один и тот же объект. Проверяется
object.ReferenceEquals; так же по умолчанию работают==иEqualsу классов.- Ссылочный тип (reference type)
Тип, переменная которого содержит ссылку на объект в управляемой куче; при присваивании копируется ссылка. В C# это
class,interface,string, массивы и делегаты.- Стаб (stub)
Дублёр, который возвращает заранее заданные ответы и так управляет входными данными тестируемого кода. Тест по стабу ничего не проверяет.
- Стабильная сортировка (stable sort)
Сортировка, которая сохраняет исходный порядок элементов с равными ключами.
Enumerable.OrderByстабилен, аArray.SortиList<T>.Sort— нет.- Стандартные claims (iss, sub, aud, exp)
Зарегистрированные поля полезной нагрузки JWT:
iss— издатель,sub— субъект,aud— для кого токен,expиnbf— границы времени жизни,iat— время выпуска,jti— идентификатор токена. Проверять нужно подпись вместе сiss,audиexp, иначе чужой токен пройдёт.- Статистика (statistics)
Объект с распределением значений колонок: гистограмма по первой колонке и плотность по префиксам. По ней оптимизатор оценивает, сколько строк вернёт условие.
- Статическая лямбда (static lambda)
Лямбда с модификатором
static(C# 9), которой запрещено захватывать локальные переменные иthis. Гарантирует, что не появится замыкание и делегат можно кешировать.- Статический абстрактный член интерфейса (static abstract member)
Статический метод, свойство или оператор, который интерфейс требует от реализующего типа (C# 11). Вызывается через параметр типа, например
T.Zero; на этом построена generic math.- Стек вызовов (call stack)
Память потока, куда каждый вызов метода кладёт свой кадр с параметрами, локальными переменными и адресом возврата. Освобождается автоматически при выходе из метода; размер ограничен, а переполнение завершает процесс.
- Стек вызовов JavaScript (call stack)
Стек кадров выполняемых функций в единственном потоке JavaScript. Пока он не пуст, event loop не берёт новых задач; переполнение выбрасывает
RangeError.- Степень параллелизма (degree of parallelism)
Максимальное число операций, которые выполняются одновременно. В
Parallel.ForEachAsyncеё задают черезParallelOptions.MaxDegreeOfParallelism.- Стирание типов (type erasure)
Компилятор TypeScript удаляет аннотации типов при выводе JavaScript. В рантайме типов нет: их нельзя проверить, получить рефлексией или использовать как значение.
- Сторонние cookie (third-party cookies)
Cookie другого сайта, загруженного внутри страницы, например в iframe. Safari их блокирует, Firefox изолирует по сайту верхнего уровня, в Chrome их может отключить пользователь.
- Стратегия (Strategy)
Поведенческий паттерн: семейство взаимозаменяемых алгоритмов за общим интерфейсом, нужный передаётся снаружи. В C# стратегией часто служит делегат или
IComparer<T>.- Стрелочная функция (arrow function)
Краткая запись функции
(x) => x * 2. Не имеет своихthis,argumentsиsuper— берёт их из внешней области — и не может быть вызвана черезnew.- Стрельба дробью (shotgun surgery)
Запах кода: одно логическое изменение требует мелких правок во многих классах. Лечится сбором связанной логики в один модуль, например рефакторингами Move Function и Combine Functions into Class.
- Стриминг HTML (streaming SSR)
Серверный рендеринг, при котором HTML отправляется частями: сначала оболочка с fallback, затем готовые фрагменты в том же ответе. Медленные данные не задерживают всю страницу.
- Строгий режим TypeScript (strict)
Флаг
tsconfig.json, который включает семейство строгих проверок:strictNullChecks,noImplicitAny,strictFunctionTypesи другие. С TypeScript 6.0 включён по умолчанию.- Строгое равенство (===)
Сравнение без приведения типов: значения разных типов не равны, объекты равны только при совпадении ссылки. Единственная странность —
NaN === NaNдаётfalse.- Строитель (Builder)
Порождающий паттерн: сложный объект собирается пошаговыми вызовами отдельного объекта-сборщика, а итоговый метод
Buildпроверяет данные и возвращает результат.- Структурная типизация (structural typing)
Совместимость типов определяется набором членов, а не именем или объявленным наследованием. Так работает TypeScript; C# и Java используют номинальную типизацию.
- Структурное логирование (structured logging)
Запись логов как событий со свойствами, а не как готовых строк. По свойствам можно искать, фильтровать и строить агрегаты в Elastic, Seq или другом хранилище.
- Структурный паттерн (structural pattern)
Паттерн, который описывает, как собирать классы и объекты в более крупные структуры. В GoF их семь: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
- Сужение типа (narrowing)
Уточнение типа переменной компилятором по проверкам в коде: после
typeof x === 'string',instanceof,inили сравнения с литералом в ветке известен более узкий тип.- Суррогатный ключ
Искусственный идентификатор строки без смысла в предметной области: число из
IDENTITYилиSEQUENCE, GUID. Не меняется, поэтому удобен для внешних ключей.- Схема «звезда» (star schema)
Модель хранилища: в центре таблица фактов с мерами и ключами (продажи), вокруг — денормализованные таблицы измерений (дата, магазин, товар). Запрос — один уровень соединений и агрегат.
- Схема аутентификации
Именованная регистрация обработчика аутентификации в ASP.NET Core:
Cookies,OpenIdConnect,Bearer. Схема определяет, как аутентифицировать запрос, выполнить challenge, вход и выход.- Схема Prisma (schema.prisma)
Файл на языке схем Prisma с источником данных, генераторами и моделями. Из него Prisma Migrate строит SQL-миграции, а генератор — типизированный клиент.
- Таблица виртуальных методов (vtable)
Структура типа в рантайме со слотами адресов его виртуальных методов. Виртуальный вызов берёт адрес из слота таблицы реального типа объекта.
- Таблица виртуальных методов Delphi (VMT)
Структура класса со слотами адресов всех его виртуальных методов, включая унаследованные. Каждый объект начинается с указателя на VMT своего класса, и вызов
virtual-метода берёт адрес из нужного слота.- Таблица истории миграций
Служебная таблица
__EFMigrationsHistoryв базе со списком применённых миграций и версией EF. По нейdatabase update, bundle и идемпотентный скрипт определяют, что ещё не применено.- Таблица-куча (heap)
Таблица, строки которой хранятся без упорядочивания по ключу. В PostgreSQL все таблицы — кучи, а индексы, включая первичный ключ, ссылаются на физический адрес версии строки (
ctid).- Табличный параметр (table-valued parameter, TVP)
Параметр пользовательского табличного типа (
CREATE TYPE ... AS TABLE), через который клиент передаёт набор строк одним вызовом. В процедуре объявляетсяREADONLY, статистики по его колонкам нет.- Табуляция (tabulation)
ДП снизу вверх: таблицу ответов заполняют циклом от базовых случаев к целевому, без рекурсии. Позволяет хранить только последние строки таблицы и экономить память.
- Таймаут запроса (request timeout)
Middleware ASP.NET Core (.NET 8+), которое по истечении заданного времени отменяет токен
HttpContext.RequestAborted. Если приложение не обработало отмену, клиент получает 504.- Теги кеша
Метки, которыми помечают записи кеша, чтобы сбросить всю группу одним вызовом:
EvictByTagAsyncв output cache,RemoveByTagAsyncвHybridCache.- Теорема CAP
Утверждение Brewer, доказанное Gilbert и Lynch в 2002 году: при сетевом разделении распределённая система не может одновременно сохранить линеаризуемость (C) и ответ каждого работающего узла (A).
- Терминальный middleware
Middleware, который сам формирует ответ и не вызывает следующий компонент, например
app.Run. Всё, что зарегистрировано после него в той же ветке, не выполняется.- Терминация TLS (TLS termination)
Расшифровка HTTPS на прокси или балансировщике, после которой запрос идёт к приложению уже по HTTP. Сертификат нужен только в точке терминации.
- Тест архитектуры (architecture test)
Автоматический тест, который проверяет правила зависимостей в коде: например, что домен не ссылается на EF Core, а один модуль не обращается к внутренностям другого. В .NET их пишут на NetArchTest или ArchUnitNET.
- Тестовый модуль NestJS (Test.createTestingModule)
API пакета
@nestjs/testing, который собирает модуль приложения для теста и позволяет подменить провайдеры черезoverrideProvider. Из него создают и полноценное приложение для e2e-тестов.- Тип never
Тип без значений: результат функции, которая не возвращается, и остаток после исчерпывающего сужения. Присваивание в
neverв веткеdefaultпроверяет, чтоswitchобработал все варианты.- Типизированный хаб (Hub<T>)
Хаб, у которого методы клиента описаны интерфейсом. Вместо
SendAsync("Name", ...)вызывается метод интерфейса, и опечатку в имени ловит компилятор.- Токен внедрения (injection token)
Ключ, по которому контейнер NestJS находит провайдер, когда типа класса недостаточно: строка,
Symbolили абстрактный класс. Регистрируется как{ provide: TOKEN, useClass: Impl }, внедряется через@Inject(TOKEN).- Токен конкурентности (concurrency token)
Свойство, исходное значение которого EF Core добавляет в
WHEREприUPDATEиDELETE. Если строку успели изменить, затронуто ноль строк, и EF бросаетDbUpdateConcurrencyException. На SQL Server обычноrowversion, в PostgreSQL —xmin.- Токен отмены (CancellationToken)
Структура, через которую операция узнаёт о запросе отмены. Сам токен отменить нельзя — только проверить
IsCancellationRequestedили подписаться черезRegister.- Токен, привязанный к отправителю (sender-constrained)
Токен, которым может воспользоваться только владелец определённого ключа: через сертификат mTLS (RFC 8705) или подпись DPoP (RFC 9449). Украденный без ключа токен бесполезен.
- Только именованный параметр (keyword-only)
Параметр после
*в сигнатуре, который можно передать только по имени. Параметры до/(с Python 3.8) — наоборот, только позиционные.- Том (volume)
Хранилище данных вне записываемого слоя контейнера, которым управляет Docker. Переживает удаление контейнера; в отличие от bind mount не привязан к папке хоста.
- Топологическая сортировка (topological sort)
Упорядочивание вершин ориентированного графа без циклов так, чтобы каждое ребро шло от более ранней вершины к более поздней. Алгоритм Кана делает это за O(V + E) и заодно находит циклы.
- Точка невозврата (pivot transaction)
Шаг саги, после которого компенсации больше не выполняются: оставшиеся шаги только повторяют до успеха, поэтому они должны быть идемпотентными.
- Точка-точка (point-to-point)
Модель обмена сообщениями, в которой каждое сообщение очереди получает ровно один из конкурирующих получателей. Так распределяют работу между экземплярами сервиса.
- Транзакция
Группа операций с базой, которая выполняется как одно целое: либо фиксируется полностью (
COMMIT), либо полностью отменяется (ROLLBACK).- Транзитивная зависимость
Пакет, который попал в проект не напрямую, а как зависимость другого пакета. NuGet выбирает для неё одну версию на весь проект.
- Трансформация claims (IClaimsTransformation)
Интерфейс ASP.NET Core: его
TransformAsyncвызывается после успешной аутентификации и может дополнить principal данными приложения. Срабатывает на каждом запросе, иногда несколько раз, поэтому должен быть идемпотентным.- Трассировка стека (stack trace)
Список вызовов от места выброса исключения до места перехвата, сохранённый в
Exception.StackTrace.throw;его сохраняет,throw ex;начинает заново.- Требование авторизации (authorization requirement)
Класс с маркерным интерфейсом
IAuthorizationRequirement: описывает правило и его параметры, например нужное право или минимальный возраст. Саму проверку выполняют handlers.- Трекер изменений (change tracker)
Часть
DbContext, которая хранит отслеживаемые сущности, их состояния и исходные значения. По разнице между исходными и текущими значениямиSaveChangesстроитINSERT,UPDATEиDELETE.- Трёхзначная логика
В SQL условие бывает TRUE, FALSE или UNKNOWN. Любое сравнение с
NULLдаёт UNKNOWN, аWHERE,ONиHAVINGпропускают только TRUE — отсюда ловушкиNOT INи<>.- Удалённый репозиторий (remote)
Именованная ссылка на другую копию репозитория, обычно на сервере:
originсоздаётся приgit clone. С ним обмениваются коммитами командамиfetch,pullиpush.- Уплотнение кучи (compaction)
Фаза сборки, в которой GC сдвигает выжившие объекты вплотную друг к другу и обновляет все ссылки на них. Убирает фрагментацию, но стоит дороже, чем просто внести мёртвые участки в список свободных блоков (sweep).
- Уплотнение лога (log compaction)
Политика хранения топика Kafka (
cleanup.policy=compact), при которой для каждого ключа остаётся последняя запись. Запись с ключом и пустым значением (tombstone) удаляет ключ.- Управляемая идентичность (managed identity)
Учётная запись, которую облачная платформа выдаёт самому приложению. С ней приложение обращается к хранилищу секретов и другим сервисам без пароля в конфигурации.
- Управляемая куча (managed heap)
Область памяти, где CLR размещает объекты ссылочных типов. Память в ней выделяет и освобождает сборщик мусора.
- Управляемый тип Delphi (managed type)
Тип, временем жизни которого управляет компилятор: длинные строки, динамические массивы, интерфейсы, варианты, а также записи с полями таких типов. Компилятор сам инициализирует их, считает ссылки и освобождает через неявный
try..finally.- Уровень изоляции (isolation level)
Настройка транзакции, которая определяет, какие изменения параллельных транзакций она видит и какие аномалии допустимы. Стандарт SQL задаёт четыре уровня: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
- Ускоренное восстановление базы данных (ADR)
Механизм SQL Server 2019+, который хранит версии строк в самой базе. Откат и восстановление после сбоя становятся почти мгновенными, а журнал усекается даже при долгих транзакциях.
- Условная компиляция
Директивы {$IFDEF}, {$IF} и {$ENDIF}, которые включают или исключают участки кода при сборке. Символ UNICODE позволяет держать один исходный код для старой и новой Delphi.
- Условный оператор if в выражениях
Тернарный оператор Delphi 13:
X := if A > B then A else B;. Работает внутри любого выражения, а его тип — общий тип обеих ветвей.- Условный тип (conditional type)
Тип вида
T extends U ? X : Y, который выбирает результат по совместимости типов. Сinferизвлекает часть типа; над union по умолчанию распределяется по вариантам.- Устаревшее замыкание (stale closure)
Функция, которая захватила props или state старого рендера и продолжает работать с ними. Типично для эффектов и таймеров с неполным массивом зависимостей.
- Утечка памяти (memory leak)
Рост потребления памяти из-за объектов, которые больше не нужны, но остаются достижимыми, или из-за неосвобождённых неуправляемых ресурсов. В .NET это обычно забытые подписки на события, статические коллекции и кеши без ограничений.
- Утиная типизация (duck typing)
Объект подходит, если у него есть нужные методы и атрибуты, независимо от его типа: «если крякает как утка — это утка». Основной стиль Python-кода.
- Фабрика регистрации (implementation factory)
Делегат
Func<IServiceProvider, T>, который передают вAddSingleton,AddScopedилиAddTransientвместо типа реализации. Контейнер вызывает его, чтобы создать сервис, и освобождает возвращённый объект как созданный им самим.- Фабричный метод (Factory Method)
Порождающий паттерн: базовый класс объявляет метод создания объекта, а подкласс решает, какой конкретный класс вернуть.
- Файл формы (.dfm)
Ресурс с описанием компонентов формы и значений их published-свойств. Подключается к модулю директивой
{$R *.dfm}и читается при создании формы; бывает текстовым и бинарным.- Файловый обмен (file transfer)
Стиль интеграции, при котором одна система выгружает данные в файл, а другая забирает и загружает его — через общую папку, SFTP или AS2. Прост и подходит для больших пакетов, но данные устаревают до следующей выгрузки.
- Фантомная зависимость (phantom dependency)
Пакет, который код импортирует, хотя его нет в собственном
package.json: он доступен только потому, что npm поднял чужую транзитивную зависимость в плоскийnode_modules. Ломается при обновлении того пакета, который её притащил.- Фантомное чтение (phantom read)
Аномалия, при которой повторный запрос с тем же условием возвращает новые или пропавшие строки: другая транзакция вставила или удалила подходящие записи.
- Фасад (Facade)
Структурный паттерн: простой единый интерфейс к сложной подсистеме из нескольких объектов. Клиент вызывает фасад и не знает о частях подсистемы.
- Фейк (fake)
Упрощённая, но рабочая реализация зависимости: репозиторий на словаре, почта в список,
FakeTimeProvider. Ведёт себя как настоящая, но не годится для продакшена.- Фикстура pytest (fixture)
Функция с декоратором
@pytest.fixture, которая готовит данные или ресурс для теста. Тест получает её результат параметром с тем же именем, а код послеyieldвыполняется как teardown.- Фильтр исключений (exception filter)
Условие
when (...)у блокаcatch(C# 6). Выполняется до размотки стека; если оно ложно, исключение идёт дальше, как будто этогоcatchнет.- Фильтр эндпоинта (endpoint filter)
Аналог фильтра MVC для Minimal API (.NET 7+): код до и после обработчика с доступом к его аргументам через
EndpointFilterInvocationContext. Подключается черезAddEndpointFilter.- Фильтр MVC
Код, который MVC вызывает вокруг action на определённом этапе: authorization, resource, action, exception или result. В отличие от middleware, видит контекст action — аргументы,
ModelStateи результат.- Фильтрованный индекс (filtered index)
Некластерный индекс с условием
WHERE, который хранит только подходящие строки. Он меньше и дешевле полного индекса, но используется, только если запрос гарантированно попадает в фильтр.- Финализатор (finalizer)
Метод
~ClassName(), который GC вызывает перед освобождением памяти недостижимого объекта. Вызывается недетерминированно, служит страховкой для неуправляемых ресурсов.- Фоновая сборка (background GC)
Сборка поколения 2 на выделенном потоке параллельно с работой приложения; эфемерные сборки в это время идут как обычно. Включена по умолчанию.
- Форсирование плана (plan forcing)
Закрепление конкретного плана из Query Store за запросом процедурой
sp_query_store_force_plan. Сервер компилирует запрос с этим планом, пока форсирование не снимут или план не станет невозможным.- Фрагментация индекса (index fragmentation)
Расхождение логического порядка страниц индекса с физическим из-за расщеплений страниц. Мешает большим последовательным чтениям; на SSD обычно важнее плотность страниц.
- Фрейм (TFrame)
Контейнер с компонентами и кодом, который проектируют отдельно и вставляют в несколько форм. Изменения фрейма видны во всех местах использования, кроме свойств, переопределённых на форме.
- Функции ранжирования
ROW_NUMBER,RANK,DENSE_RANKиNTILE— оконные функции, которые нумеруют строки внутри секции. Они различаются обработкой равных значений.- Функциональная зависимость
Связь
X → Y: значение набора колонок X однозначно определяет значение Y. На функциональных зависимостях строятся определения нормальных форм.- Хаб SignalR (hub)
Класс-наследник
Hub, через который клиенты вызывают методы сервера, а сервер — методы клиентов. Экземпляр создаётся на каждый вызов метода.- Характеризующий тест (characterization test)
Тест, который фиксирует фактическое поведение существующего кода, а не требуемое. Термин Майкла Фэзерса; такие тесты страхуют рефакторинг и перенос legacy.
- Хвостовая задержка (tail latency)
Время ответа самых медленных запросов, обычно перцентили p95, p99 и p99.9. Под нагрузкой первыми растут именно они, а среднее значение это скрывает.
- Хвостовой вызов (tail call)
Вызов, который стоит последним действием функции, поэтому её кадр стека можно переиспользовать. Компилятор C# такую оптимизацию не гарантирует, поэтому глубокую рекурсию в C# переписывают циклом.
- Хеш-таблица (hash table)
Структура данных, которая по хеш-коду ключа вычисляет место элемента в массиве и находит его в среднем за O(1). В .NET на ней построены
Dictionary<TKey, TValue>иHashSet<T>.- Хеширование паролей
Хранение пароля в виде результата медленной функции (PBKDF2, bcrypt, scrypt, Argon2) с солью. Медленность специальная: перебор утёкшей базы становится дорогим.
- Хешируемый объект (hashable)
Объект, у которого хеш не меняется за время жизни и который сравнивается через
__eq__. Только такие объекты могут быть ключамиdictи элементамиset.- Хореография (choreography)
Способ координации саги без центра: каждый сервис реагирует на события других и публикует свои. Прост для коротких цепочек, но процесс целиком нигде не виден.
- Хранилище версий (version store)
Место, где SQL Server хранит прежние версии строк для RCSI, SNAPSHOT, триггеров и онлайн-перестроения индексов. Без ADR — в tempdb, с ADR — в persistent version store самой базы.
- Хранилище секретов (secret store)
Внешний сервис для паролей, ключей и сертификатов с контролем доступа, аудитом и ротацией: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault. Приложение читает секреты при старте через провайдер конфигурации.
- Хранилище событий (event store)
База для event sourcing: только дописывает события в потоки, хранит номер версии потока и отклоняет запись, если ожидаемая версия не совпала. Примеры — KurrentDB (бывшая EventStoreDB), Marten поверх PostgreSQL.
- Хранимая процедура
Именованный набор инструкций T-SQL на сервере с параметрами. Может менять данные, управлять транзакциями и возвращать несколько наборов строк; план кешируется при первом выполнении.
- Хрупкий базовый класс (fragile base class)
Проблема наследования реализации: безобидное на вид изменение базового класса ломает наследников, потому что они зависят от его внутреннего устройства, например от того, какие методы вызывают друг друга.
- Худший случай (worst case)
Оценка сложности на самом неудачном входе данного размера. Даёт гарантию для любого ввода: quicksort в среднем O(n log n), но в худшем случае O(n²).
- Хук preStop
Действие, которое kubelet выполняет перед отправкой SIGTERM контейнеру: команда, HTTP-запрос или пауза
sleep. Время хука входит вterminationGracePeriodSeconds.- Хуки жизненного цикла NestJS (lifecycle hooks)
Методы провайдеров и модулей, которые NestJS вызывает при старте (
onModuleInit,onApplicationBootstrap) и остановке (onModuleDestroy,beforeApplicationShutdown,onApplicationShutdown). Хуки остановки по сигналу работают только послеenableShutdownHooks().- Хуки React (hooks)
Функции с именем на
use(useState,useEffect,useContext), которые подключают к компоненту состояние и возможности React. Вызываются только на верхнем уровне компонента или своего хука.- Хэш-код (GetHashCode)
Число, по которому хэш-таблицы (
Dictionary,HashSet) выбирают корзину. Равные поEqualsобъекты обязаны иметь равные хэш-коды.- Цепочка обязанностей (Chain of Responsibility)
Поведенческий паттерн: запрос проходит по цепочке обработчиков, и каждый решает, обработать его, передать дальше или остановить. Пример в .NET — конвейер middleware ASP.NET Core.
- Цепочка поставок ПО (software supply chain)
Всё, из чего собирается приложение: пакеты, их зависимости, образы контейнеров, CI/CD. Уязвимый или подменённый пакет даёт атакующему код внутри вашего процесса.
- Цепочка сертификатов (chain of trust)
Сертификат сайта подписан промежуточным центром сертификации, тот — корневым, которому клиент доверяет заранее. Сервер отправляет свой и промежуточные сертификаты, клиент проверяет подписи до корня.
- Цикл событий (event loop)
Механизм среды выполнения JavaScript: когда стек вызовов пуст, он выполняет все микрозадачи, а затем берёт следующую задачу из очереди. Благодаря ему один поток обслуживает таймеры, события и ввод-вывод.
- Цикл событий asyncio (event loop)
Диспетчер asyncio в одном потоке: выполняет готовые задачи до их следующего
await, а затем спрашивает ОС, какой ввод-вывод завершился. Запускается черезasyncio.run().- Циклический сборщик мусора (cyclic GC)
Модуль
gcв CPython: дополняет подсчёт ссылок и находит группы объектов, которые ссылаются друг на друга, но недостижимы. Работает по поколениям.- Частичный индекс (partial index)
Индекс только по строкам, удовлетворяющим условию
WHEREв его определении. Меньше полного и используется запросами с совместимым условием; аналог фильтрованного индекса SQL Server.- Четыре золотых сигнала
Метрики из Google SRE Book для сервиса, видимого пользователям: задержка, трафик, ошибки и насыщение. Если можно мерить только четыре вещи, мерить нужно их.
- Чистая архитектура (clean architecture)
Стиль, в котором доменное ядро находится в центре, а все зависимости в исходном коде направлены к нему. Инфраструктура и UI подключаются снаружи через интерфейсы, объявленные в ядре. Близкие варианты — гексагональная и onion-архитектура.
- Чистая функция (pure function)
Функция, результат которой зависит только от аргументов и которая не имеет побочных эффектов: не меняет поля, не пишет в файлы и базу. Её легко тестировать и вызывать параллельно.
- Шаблон маршрута (route template)
Строка вида
/orders/{id:int}, которая описывает, какие URL подходят endpoint'у. Содержит литералы, параметры в фигурных скобках, ограничения, значения по умолчанию и catch-all.- Шаблон сообщения (message template)
Текст лога с именованными плейсхолдерами, например
Order {OrderId} created. Значения сохраняются как отдельные свойства, а сам шаблон служит ключом группировки одинаковых событий.- Шаблонный метод (Template Method)
Поведенческий паттерн: базовый класс задаёт скелет алгоритма в одном методе, а отдельные шаги оставляет подклассам через виртуальные или абстрактные методы.
- Шардирование (sharding)
Горизонтальное разделение данных по нескольким базам на разных серверах по ключу шардирования, например по магазину. Масштабирует запись, но усложняет запросы и транзакции между шардами.
- Шов (seam)
Термин Майкла Фэзерса: место, где можно изменить поведение программы, не редактируя код в этом месте, — виртуальный метод, параметр-интерфейс, конфигурация. Через швы legacy-код покрывают тестами.
- Шторм повторов (retry storm)
Лавина запросов, когда повторы на нескольких уровнях перемножаются или все клиенты повторяют одновременно. Добивает и без того перегруженный сервис.
- Экспоненциальная задержка (exponential backoff)
Пауза между повторами, которая растёт в разы с каждой попыткой: 1, 2, 4, 8 секунд. Даёт перегруженному сервису время восстановиться.
- Эскалация блокировок (lock escalation)
Замена множества мелких блокировок одной блокировкой таблицы или секции. SQL Server пытается её выполнить, когда одна инструкция держит 5000 и больше блокировок на одном объекте.
- Эффект (useEffect)
Код, который React выполняет после отрисовки, чтобы синхронизировать компонент с внешней системой: подпиской, таймером, соединением, сторонним виджетом.
- Явная типизация JWT
Указание вида токена в заголовке
typ, напримерat+jwtдля access-токена. Не даёт выдать id_token или другой JWT того же издателя за access-токен (RFC 8725, раздел 3.11).- ABAC (доступ на основе атрибутов)
Attribute-based access control: решение принимает правило над атрибутами субъекта, объекта, операции и окружения — отдел, гриф, время, сеть. Модель описана в NIST SP 800-162.
- Access-токен (токен доступа)
Токен, с которым клиент вызывает API. Адресован ресурсному серверу и ограничен scopes, аудиторией и коротким сроком жизни.
- ACID
Четыре свойства транзакции: атомарность (всё или ничего), согласованность (соблюдены ограничения), изоляция (параллельные транзакции не видят промежуточных состояний) и долговечность (зафиксированное переживёт сбой).
- Action (действие) в React 19
Асинхронная функция, запущенная внутри перехода, например переданная в
<form action>. React отслеживает её ожидание и ошибки и поддерживает оптимистичные обновления.- Action (метод действия)
Публичный метод контроллера, который обрабатывает запрос по маршруту. Возвращает
IActionResult, например представление, редирект или JSON.- ActivatorUtilities
Вспомогательный класс, который создаёт объект незарегистрированного типа, беря параметры конструктора из
IServiceProvider. Созданным объектом владеет вызывающий код, а не контейнер.- Active Directory (AD)
Служба каталогов Microsoft: хранит учётные записи пользователей и компьютеров, группы и политики домена. Контроллеры домена проверяют пароли и выдают билеты Kerberos.
- Activity
Тип .NET для одного шага распределённого трейса (спана): имя, время, теги,
TraceIdиSpanId. Текущий спан доступен черезActivity.Current, создаются спаны черезActivitySource.- Ad hoc полиморфизм
Разное поведение для разных типов через отдельные реализации с одним именем: перегрузку методов и операторов. Нужную версию компилятор выбирает по статическим типам аргументов.
- ADFS (Active Directory Federation Services)
Роль Windows Server — служба выдачи токенов: проверяет пользователя в AD и выдаёт приложениям подписанные токены по WS-Federation, SAML 2.0 или OpenID Connect. Microsoft рекомендует переходить с неё на Microsoft Entra ID.
- ADO (dbGo)
Компоненты Delphi
TADOConnection,TADOQuery,TADOStoredProcповерх COM-библиотеки Microsoft ActiveX Data Objects. К SQL Server обращаются через OLE DB-провайдер.- ADO.NET
Базовый API доступа к данным в .NET:
DbConnection,DbCommand,DbDataReader, параметры и транзакции. На нём построены провайдеры вродеMicrosoft.Data.SqlClientи Npgsql, а поверх — EF Core и Dapper.- AggregateException
Исключение-контейнер для нескольких ошибок. В него оборачивают исключения задачи
.Wait()и.Result, аawaitвыбрасывает исходное исключение без обёртки.- Alembic
Инструмент миграций схемы для SQLAlchemy от тех же авторов. Хранит миграции Python-файлами, а применённую версию — в таблице
alembic_version.- Anti-corruption layer (предохранительный слой)
Слой-переводчик между своей моделью и внешней или legacy-системой. Он преобразует чужие модели, коды и ошибки, чтобы они не расползались по вашему коду.
- Antiforgery-токен
Пара связанных токенов: один в cookie, другой в скрытом поле формы или заголовке. Сервер сверяет их, и запрос с чужого сайта, не знающего значение поля, отклоняется.
- Apache Kafka
Брокер на основе распределённого журнала: сообщения пишутся в партиции топика и хранятся заданное время, а потребители читают их по смещению и могут перечитать заново. Порядок гарантируется внутри партиции, а не топика целиком.
- API (программный интерфейс)
Договор, по которому одна программа вызывает другую: набор операций, их параметры, ответы и ошибки. Контракт важнее реализации — несовместимое изменение ломает всех потребителей сразу, поэтому его версионируют.
- API Gateway (шлюз API)
Единая точка входа перед набором сервисов: маршрутизирует запросы, проверяет аутентификацию, ограничивает частоту и агрегирует ответы. В .NET шлюз часто строят на YARP.
- APM (application performance monitoring)
Мониторинг производительности приложений: сбор трейсов, метрик и ошибок с привязкой к запросам. Примеры — Elastic APM, Application Insights, Datadog.
- App Router
Маршрутизатор Next.js на основе папки
app/: папки задают сегменты URL,page.tsx— страницу,layout.tsx— общий каркас. Построен на React Server Components.- AppDomain (домен приложения)
Изолированная область внутри процесса .NET Framework для загрузки и выгрузки кода. В современном .NET дополнительные домены создавать нельзя; для изоляции используют процессы, для плагинов —
AssemblyLoadContext.- Application builder
Сборщик Angular CLI на esbuild с dev-сервером на Vite, по умолчанию в новых проектах с v17. Заменяет сборщики на Webpack, которые в v22 объявлены deprecated.
- ARC в Delphi (Automatic Reference Counting)
Модель, в которой объекты, как и строки, освобождались по счётчику ссылок. Её использовали мобильные компиляторы Delphi и, с 10.2 Tokyo, компилятор Linux; в 10.4 Sydney для объектов её убрали на всех платформах.
- Arrange-Act-Assert (AAA)
Схема теста из трёх шагов: подготовить объекты и данные, выполнить проверяемое действие, проверить результат. Делает тест читаемым и отделяет действие от проверок.
- Array DML
Выполнение одной параметризованной команды с массивами значений параметров: СУБД выполняет её для каждой строки массива, а клиент обращается к серверу один раз. В FireDAC —
Params.ArraySizeиExecute.- ArrayPool<T>
Пул переиспользуемых массивов:
Rentвыдаёт массив не меньше запрошенной длины,Returnвозвращает его в пул. Снижает аллокации буферов; послеReturnмассив использовать нельзя.- AS2 (Applicability Statement 2)
Протокол передачи EDI-документов по HTTP с подписью и шифрованием S/MIME и подписанной квитанцией о доставке MDN. Описан в RFC 4130.
- ASGI
Asynchronous Server Gateway Interface — стандарт связи асинхронного веб-сервера с приложением Python. Приложение — корутина, которую сервер вызывает на каждое соединение.
- ASP.NET Core Module (ANCM)
Нативный модуль IIS, который запускает приложение ASP.NET Core внутри рабочего процесса
w3wp.exe(in-process) или отдельным процессом с Kestrel (out-of-process). Ставится вместе с .NET Hosting Bundle.- Aspire (ранее .NET Aspire)
Платформа Microsoft для локальной оркестрации и наблюдаемости распределённых приложений. Топологию описывают кодом в AppHost; Aspire запускает сервисы, прокидывает строки подключения и даёт дашборд.
- AssemblyLoadContext
Контекст загрузки сборок в .NET: в одном контексте — одна версия сборки с данным именем. Отдельные контексты позволяют загружать разные версии и выгружать плагины.
- Assertion rewriting
Переписывание инструкций
assertпри импорте тестовых модулей. Благодаря ему pytest при падении показывает значения обеих сторон сравнения без специальных методов проверки.- async pipe
Пайп шаблона, который подписывается на Observable или Promise, отдаёт последнее значение и отписывается при уничтожении компонента. Заодно вызывает
markForCheck(), поэтому работает с OnPush.- async void
Асинхронный метод, который возвращает
voidвместоTask. Его нельзя дождаться, а необработанное исключение уходит вSynchronizationContextили в пул потоков и может завершить процесс.- async/await
Пара ключевых слов C#:
asyncпомечает метод, который компилятор превращает в машину состояний, аawaitприостанавливает его до готовности результата и возвращает управление вызывающему. Поток при ожидании не блокируется — продолжение выполнится, когда операция завершится.- AsyncLocalStorage
Класс Node.js из модуля
node:async_hooks, который хранит данные, доступные во всей цепочке асинхронных вызовов одного запроса. АналогAsyncLocal<T>в .NET; в NestJS через него передают пользователя и id запроса без request scope.- Audience (аудитория токена)
Claim
aud: для какого получателя выпущен токен. API обязан отклонять токены с чужой аудиторией, иначе токен одного сервиса подойдёт к другому.- Authorization code flow
Поток OAuth, в котором браузер получает одноразовый код, а клиент меняет его на токены прямым запросом к
/token. Основной поток для входа пользователя.- auto_explain
Модуль PostgreSQL, который автоматически пишет в лог планы запросов дольше заданного порога (
auto_explain.log_min_duration). Позволяет увидеть план медленного запроса в проде без ручного запуска.- Autofac
Популярный сторонний DI-контейнер для .NET. Подключается к ASP.NET Core через
UseServiceProviderFactoryи добавляет модули, декораторы, внедрение через свойства и scope с тегами.- AutoFixture
Библиотека, которая генерирует тестовые данные: создаёт объекты с заполненными свойствами, чтобы тест задавал только значимые для него значения. Расширения подставляют дублёров NSubstitute или Moq и передают данные в параметры теста.
- Autogenerate (Alembic)
Режим
alembic revision --autogenerate, который сравниваетMetaDataмоделей со схемой базы и пишет черновик миграции. Не видит переименований и ограничений без имени.- Awaiter
Объект, который возвращает
GetAwaiter()и через который работаетawait. ПредоставляетIsCompleted,OnCompletedиGetResult.- Azure SignalR Service
Управляемый сервис Azure, который принимает клиентские соединения SignalR вместо вашего сервера и пересылает сообщения. Снимает необходимость в sticky sessions и backplane.
- B-дерево (B+-tree)
Сбалансированное дерево страниц, в котором SQL Server хранит обычные (rowstore) индексы: корень, промежуточные уровни и листья. Путь от корня до любого листа одинаковой длины, поэтому поиск по ключу стоит несколько чтений страниц даже в огромной таблице.
- Backends for Frontends (BFF)
Паттерн Сэма Ньюмена: отдельный бэкенд под каждый тип клиента — веб, мобильное приложение — который агрегирует вызовы сервисов и форматирует ответы под этот клиент. Им владеет команда клиента.
- Backfill (дозаполнение)
Заполнение новой колонки или таблицы историческими данными после её добавления. На больших таблицах выполняется пакетами, чтобы транзакции оставались короткими.
- BackgroundService
Базовый класс для долгоживущей фоновой работы в хосте .NET: логику пишут в
ExecuteAsync, а регистрируют черезAddHostedService, то есть как singleton.- Backplane (общая шина) SignalR
Канал, через который серверы SignalR пересылают друг другу сообщения для клиентов, подключённых к другим серверам. Стандартная реализация — Redis pub/sub.
- base64url
Вариант base64 для URL и заголовков: символы
-и_вместо+и/, без=в конце. Это кодирование, а не шифрование: строку декодирует любой.- Bearer-токен
Токен доступа, обычно JWT, который клиент отправляет в заголовке
Authorization: Bearer .... Браузер не прикладывает его сам, поэтому CSRF к нему неприменим.- BenchmarkDotNet
Библиотека для микробенчмарков .NET: прогрев, статистика, сравнение рантаймов. Атрибут
[MemoryDiagnoser]показывает аллокации на операцию,[DisassemblyDiagnoser]— машинный код от JIT.- BFF (Backend for Frontend)
Серверная часть SPA на том же сайте: выполняет OIDC-вход как конфиденциальный клиент, хранит токены у себя и проксирует вызовы API, а браузеру выдаёт только HttpOnly-cookie.
- Binding redirect
Настройка в
app.configприложения .NET Framework, которая перенаправляет запросы к одним версиям сборки на другую. В современном .NET не используется.- Blameless postmortem
Разбор инцидента без поиска виноватых: хронология, влияние, причины и действия с владельцами. Ищут, почему система и процессы позволили ошибке случиться.
- Blazor
Модель ASP.NET Core, в которой интерфейс пишется на C# компонентами Razor. Blazor Server держит состояние на сервере и гоняет события по SignalR, Blazor WebAssembly выполняет код в браузере, а с .NET 8 режим отрисовки выбирается для каждого компонента.
- BlockingCollection
Синхронная потокобезопасная очередь с ограничением ёмкости: Add и Take блокируют поток, когда очередь полна или пуста. Внутри по умолчанию ConcurrentQueue.
- Blue-green deployment
Стратегия с двумя полными копиями среды: новая версия разворачивается рядом со старой без трафика, проходит проверки, и балансировщик переключается на неё. Старая копия остаётся для мгновенного отката.
- Boxing (упаковка)
Копирование значения значимого типа в новый объект в куче, чтобы работать с ним как с
objectили интерфейсом. Обратная операция — unboxing.- BRIN-индекс
Индекс диапазонов блоков (Block Range Index): хранит минимум и максимум для каждой группы соседних страниц таблицы. Очень маленький, но полезен, только если значения коррелируют с физическим порядком строк, как время в журнале.
- Bulkhead (переборка)
Изоляция ресурсов по зависимостям: ограничение числа одновременных вызовов одной зависимости, чтобы её зависание не забрало все потоки и соединения. В Polly v8 — ограничитель конкурентности.
- Burn rate (скорость расхода бюджета)
Во сколько раз сервис тратит error budget быстрее допустимого: доля ошибок, делённая на 1 − SLO. При burn rate 1 бюджет закончится ровно к концу окна SLO.
- C-расширение (extension module)
Модуль, написанный на C, C++ или Rust с использованием C API Python и загружаемый как обычный модуль. Работает без интерпретатора байт-кода и может отпускать GIL — так устроены NumPy и многие ML-библиотеки.
- Cache stampede (лавина промахов)
Ситуация, когда популярная запись пропала из кеша и множество запросов одновременно пересчитывают её из источника. Источник получает пиковую нагрузку и может не выдержать.
- Cache-aside (ленивая загрузка)
Паттерн, при котором приложение само читает кеш, на промахе загружает данные из источника и кладёт их в кеш, а при изменении данных удаляет ключ.
- Cache-Control
HTTP-заголовок с директивами кеширования:
public,private,max-age,no-cache,no-store. В запросе его задаёт клиент, в ответе — сервер.- CancelledError
Исключение, которое
task.cancel()бросает внутрь корутины в точкеawait. НаследуетBaseException; после очистки его нужно пробросить дальше, иначе отмена не сработает.- Captive dependency (захваченная зависимость)
Ошибка конфигурации, при которой долгоживущий сервис держит зависимость с более коротким временем жизни, например singleton держит scoped-сервис. Зависимость начинает жить столько же, сколько её владелец.
- Card table
Битовая карта участков памяти старших поколений, в которые записывали ссылки. Её заполняет write barrier при записи ссылки в поле, а GC при сборке молодых поколений просматривает только помеченные участки.
- Cartesian explosion (декартов взрыв)
Рост числа строк результата, когда один запрос соединяет несколько коллекций одного уровня: строки каждой коллекции умножаются друг на друга. Заказ с 10 строками и 10 платежами даёт 100 строк.
- CDN (content delivery network)
Сеть серверов в точках присутствия по всему миру, которая кеширует и отдаёт статику и кешируемые ответы рядом с пользователем. Снимает нагрузку с источника и сокращает задержку.
- Central Package Management (CPM)
Управление версиями NuGet-пакетов всего репозитория в одном файле
Directory.Packages.props. С transitive pinning задаёт версии и транзитивным зависимостям.- Challenge (запрос аутентификации)
Действие схемы аутентификации, когда анонимному пользователю нужен вход: cookie-схема редиректит на страницу входа, OIDC — к провайдеру, JWT bearer отвечает 401.
- Change data capture (CDC)
Захват изменений из журнала транзакций базы и передача их потребителям как поток событий «до и после». В SQL Server это встроенный механизм с таблицами изменений (нужен SQL Server Agent), в PostgreSQL — логическое декодирование; Debezium превращает такой поток в события Kafka.
- Change token (IChangeToken)
Объект-сигнал «данные изменились». Файловые провайдеры конфигурации срабатывают через него при перезагрузке файла, а
IOptionsMonitor<T>по нему сбрасывает кеш настроек.- Change tracking (отслеживание изменений)
Механизм SQL Server, который синхронно с каждой DML-операцией запоминает ключи изменённых строк и номер версии. Отвечает на вопрос «что изменилось после версии N», но старые значения не хранит.
- Cherry-pick
Команда
git cherry-pick, которая применяет изменения одного коммита поверх текущей ветки и создаёт новый коммит с тем же содержимым правки. С ключом-xв сообщение добавляется ссылка на исходный коммит.- Chiseled-образ (Ubuntu Chiseled)
Distroless-вариант образов .NET на Ubuntu: только пакеты, нужные рантайму, без shell и пакетного менеджера, с non-root пользователем по умолчанию. Без ICU и tzdata, если не взять вариант
-extra.- Circuit breaker (автоматический выключатель)
Стратегия, которая после доли ошибок перестаёт вызывать зависимость и сразу отклоняет вызовы, а через паузу пропускает пробный. Три состояния — closed, open, half-open.
- Claim (утверждение о субъекте)
Пара «тип — значение» о пользователе или сервисе, выданная доверенным издателем: имя, email, отдел, роль. Описывает, кто субъект, а не что ему можно; в .NET это класс
Claim.- ClaimsIdentity
Набор claims, полученных одним способом аутентификации. Хранит
AuthenticationType(без него identity не считается аутентифицированной), а такжеNameClaimTypeиRoleClaimType.- ClaimsPrincipal
Пользователь в .NET: одна или несколько
ClaimsIdentity. В ASP.NET Core этоHttpContext.User; методыIsInRole,HasClaimиFindFirstищут по claims всех его identity.- Client credentials
Поток OAuth 2.0, в котором приложение получает токен от своего имени по
client_idи секрету или сертификату, без пользователя. Применяется для вызовов между сервисами и фоновых задач.- CLR (Common Language Runtime)
Среда выполнения .NET: загружает сборки, компилирует IL в машинный код, управляет памятью, исключениями и потоками. Реализация в современном .NET называется CoreCLR.
- CLS (Cumulative Layout Shift)
Мера неожиданных сдвигов вёрстки: самая большая серия сдвигов за время жизни страницы. Хорошо — до 0,1.
- cluster
Модуль Node.js, который запускает несколько процессов-копий приложения на одном порту: главный процесс принимает соединения и раздаёт их рабочим. Память у процессов не общая.
- Code smell («запах кода»)
Признак проблемы в поддерживаемости кода, который не ломает его прямо сейчас: слишком длинный метод, дублирование, сложное условие. SonarQube относит такие замечания к сопровождаемости (maintainability).
- Collation в SQL Server (параметры сортировки)
Правила сравнения и сортировки строк: кодовая страница, учёт регистра и диакритики. Windows-collation (
Cyrillic_General_CI_AS) сравниваетvarcharиnvarcharпо одним правилам, SQL-collation (SQL_Latin1_General_CP1_CI_AS) — по разным.- Collection expression
Синтаксис создания коллекций в квадратных скобках из C# 12:
int[] a = [1, 2, 3];,[..first, ..second]. Работает для массивов,Span<T>, списков и других коллекций.- Columnstore-индекс
Индекс, который хранит данные по колонкам в сжатых сегментах по группам до 1 048 576 строк. Ускоряет агрегаты по большим таблицам за счёт сжатия, пропуска сегментов и пакетного режима.
- CommonJS
Исходная система модулей Node.js: импорт через
require(), экспорт черезmodule.exports. Модуль загружается и выполняется синхронно при первом вызовеrequire, результат кешируется.- Compare-and-swap (CAS)
Атомарная операция «записать новое значение, только если текущее равно ожидаемому». В .NET это Interlocked.CompareExchange; на ней строят lock-free алгоритмы.
- Composition root (корень композиции)
Единственное место приложения, где собирается граф объектов: регистрации сервисов и выбор реализаций. В ASP.NET Core это
Program.csи методы расширенияAdd..., которые он вызывает.- ConfigureAwait(false)
Настройка
await, при которой продолжение не возвращается в захваченныйSynchronizationContextилиTaskScheduler. Её используют в библиотеках общего назначения.- ConfigureAwaitOptions
Флаги для
Task.ConfigureAwaitв .NET 8+:ContinueOnCapturedContext,SuppressThrowingиForceYielding.- conftest.py
Файл, фикстуры и хуки из которого pytest автоматически делает доступными всем тестам этого каталога и вложенных, без импорта.
- Confused deputy («запутанный заместитель»)
Ситуация, когда сервис с широкими правами выполняет запрос клиента своими правами и не проверяет права самого клиента. Клиент получает через сервис доступ, которого у него нет.
- Connascence (сонаследие)
Мера связи Мейлира Пейдж-Джонса: два элемента связаны, если изменение одного требует изменения другого. Виды упорядочены по силе — от имени и типа до порядка, значения, алгоритма и времени.
- Content-Security-Policy (CSP)
Заголовок ответа со списком разрешённых источников скриптов, стилей и других ресурсов. Браузер блокирует остальное, поэтому внедрённый скрипт не выполнится, даже если кодирование где-то пропустили.
- Context (контекст React)
Механизм передачи значения всему поддереву без props. При смене значения перерисовываются все компоненты, которые его читают.
- Cookie аутентификации
Cookie, в которой ASP.NET Core хранит зашифрованный через Data Protection билет пользователя: claims и срок действия. Браузер прикладывает её к каждому запросу, сервер сессию не хранит.
- Core Web Vitals
Три метрики Google для пользовательского опыта: LCP (скорость загрузки), INP (отклик) и CLS (стабильность вёрстки). Оцениваются по 75-му перцентилю реальных визитов.
- CoreWCF
Порт серверной части WCF на современный .NET, проект .NET Foundation с поддержкой Microsoft. Нужен для переноса существующих SOAP-сервисов; для новых Microsoft советует gRPC.
- CORS (Cross-Origin Resource Sharing)
Механизм, которым сервер заголовками
Access-Control-Allow-*разрешает браузеру отдать ответ скрипту с другого источника. Ослабляет same-origin policy и не защищает сам сервер.- CPU-bound операция
Операция, которая упирается в вычисления процессора. Ускорить её можно только параллелизмом, а из UI-потока её выносят через
Task.Run.- CQRS (Command Query Responsibility Segregation)
Разделение модели записи (команды меняют состояние) и модели чтения (запросы возвращают данные). Модели могут жить в одной базе или в разных.
- Cron-выражение
Строка расписания из полей «минуты, часы, день месяца, месяц, день недели»:
0 2 * * *— каждый день в 02:00. В Quartz первым полем идут секунды.- CSRF (межсайтовая подделка запроса)
Атака, при которой чужой сайт заставляет браузер отправить запрос на ваш сайт от имени вошедшего пользователя. Работает, потому что браузер сам прикладывает cookie.
- CSS Grid
Модуль раскладки CSS для двух осей: контейнер с
display: gridзадаёт строки и колонки, а дети занимают ячейки и области сетки.- CSSOM (CSS Object Model)
Дерево правил, которое браузер строит из всех стилей страницы. Вместе с DOM оно нужно, чтобы построить дерево отрисовки, поэтому CSS блокирует первый показ страницы.
- CTE (обобщённое табличное выражение)
Именованный подзапрос, объявленный через
WITHперед инструкцией и видимый только в ней. В SQL Server результат CTE не сохраняется: каждое обращение выполняет определение заново.- CTS (Common Type System)
Общая система типов .NET: единые для всех языков платформы правила объявления и использования типов. Благодаря ей C#, F# и VB.NET используют типы друг друга.
- CUPID
Свойства «приятного» кода, предложенные Дэном Нортом как альтернатива SOLID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. Это свойства, к которым код приближается, а не правила, которые он соблюдает.
- Custom managed record
Запись с операторами
Initialize,Finalizeи, при необходимости,Assign, которые компилятор вызывает автоматически при создании, уничтожении и копировании. Позволяет писать RAII-обёртки. Появилась в Delphi 10.4 Sydney.- Dapper
Micro-ORM от авторов Stack Overflow: методы расширения над
IDbConnection(Query,Execute), которые выполняют ваш SQL с параметрами и раскладывают столбцы по свойствам объектов. Не отслеживает изменения и не генерирует SQL.- Data Protection (защита данных ASP.NET Core)
Подсистема шифрования и подписи данных, на которой держатся cookie аутентификации и antiforgery-токены. В ферме серверов ей нужно общее хранилище ключей.
- Data-aware контрол
Визуальный компонент (
TDBGrid,TDBEdit,TDBLookupComboBox), который черезTDataSourceпоказывает и редактирует поля текущей записи набора данных.- Data-oriented design
Подход, в котором структуру данных проектируют под то, как процессор их читает: плотные массивы значений вместо графа объектов, последовательный доступ к памяти. Применяют на горячих участках.
- DataAnnotations
Атрибуты из
System.ComponentModel.DataAnnotationsдля декларативных правил проверки:[Required],[Range],[StringLength],[EmailAddress]и другие.- DATAS (dynamic adaptation to application sizes)
Режим Server GC, который меняет число куч и бюджет поколения 0 так, чтобы размер кучи соответствовал объёму живых данных. Появился в .NET 8, включён по умолчанию с .NET 9.
- DbContext
Главный класс EF Core: сессия работы с базой, которая выполняет запросы, отслеживает изменения сущностей и сохраняет их через
SaveChanges. Рассчитан на одну единицу работы и не потокобезопасен.- dbExpress
Библиотека лёгких драйверов Delphi с однонаправленными наборами без буферизации и редактирования. Embarcadero объявила её устаревшей и рекомендует переходить на FireDAC.
- DDD (Domain-Driven Design)
Предметно-ориентированное проектирование — подход Эрика Эванса (2003), в котором код строят вокруг модели бизнеса и языка его экспертов. Делится на стратегический (границы контекстов) и тактический (агрегаты, value objects, события) уровни.
- Debezium
Open source платформа CDC на основе Kafka Connect: читает журнал транзакций базы и публикует изменения строк в Kafka. Outbox Event Router превращает строки outbox в события.
- DelegatingHandler
Базовый класс обработчика сообщений
HttpClient, который передаёт запрос следующему обработчику черезbase.SendAsync. Из таких обработчиков собирают цепочку: логирование, повторы, заголовки.- Delta store
Обычное B-дерево внутри columnstore-индекса, куда попадают мелкие вставки. Когда в группе набирается 1 048 576 строк, фоновый процесс tuple mover сжимает её в колоночный формат.
- Depends (зависимости FastAPI)
Механизм FastAPI, который вызывает функцию-зависимость перед эндпоинтом и передаёт её результат параметром. Результат кешируется в пределах запроса, а зависимость с
yieldвыполняет код очистки после ответа.- Developer Exception Page
Страница с подробностями необработанного исключения: стек, заголовки, query, cookies. Включается автоматически в окружении Development и не должна работать в продакшене.
- Device code flow (device authorization grant)
Поток OAuth для устройств без браузера или клавиатуры (RFC 8628): устройство показывает код и адрес, пользователь входит на другом устройстве, а исходное опрашивает
/token.- DI-контейнер (контейнер служб)
Объект, который по зарегистрированным правилам создаёт сервисы, передаёт им зависимости и управляет их временем жизни. В .NET регистрации собирают в
IServiceCollection, а контейнер — этоIServiceProvider.- Diagnostic port
Канал, через который диагностические инструменты общаются с рантаймом .NET: именованный канал на Windows или Unix-сокет в каталоге временных файлов на Linux. В контейнере к нему нужен общий доступ с sidecar.
- diagnostics_channel
Модуль Node.js для публикации диагностических событий по именованным каналам. Библиотеки и встроенные модули сообщают о запросах, а APM и OpenTelemetry подписываются без подмены кода.
- Dictionary (словарь)
Хеш-таблица .NET: по ключу — значение, в среднем O(1) на поиск и вставку. Ключу нужны согласованные
GetHashCodeиEquals, а менять ключ после вставки нельзя — объект потеряется в своей корзине. Для параллельного доступа естьConcurrentDictionary.- Discovery-документ (метаданные провайдера)
JSON по адресу
/.well-known/openid-configurationс адресами endpoints,jwks_uri, поддерживаемыми потоками и алгоритмами. Клиент настраивается по нему автоматически.- Discovery-документ OpenID Connect
JSON по адресу
/.well-known/openid-configurationу сервера авторизации: issuer, адреса эндпоинтов иjwks_uri. По немуAddJwtBearerсам находит ключи для проверки подписи.- Disposable transient
Transient-сервис, реализующий
IDisposableилиIAsyncDisposable. Контейнер хранит ссылку на каждый такой экземпляр до конца scope, поэтому при разрешении из корня они копятся до остановки приложения.- Dispose pattern
Стандартная схема освобождения ресурсов:
Dispose()вызываетDispose(true)иGC.SuppressFinalize, финализатор вызываетDispose(false), аprotected virtual void Dispose(bool)освобождает управляемые ресурсы только приtrue.- DML-триггер
Процедура, которую SQL Server вызывает сам при
INSERT,UPDATEилиDELETE. Срабатывает один раз на инструкцию, а изменённые строки доступны в псевдотаблицахinsertedиdeleted.- Docker
Инструмент, который собирает приложение в образ и запускает его контейнером — процессом с собственной файловой системой, сетью и лимитами ресурсов. Образ одинаков на машине разработчика и в продакшене, поэтому «у меня работает» перестаёт быть аргументом.
- Docker Compose
Инструмент, который по файлу
compose.yamlсоздаёт и запускает набор связанных контейнеров с общей сетью, томами и порядком старта. Работает в пределах одного хоста.- DOM (Document Object Model)
Дерево объектов, в которое браузер разбирает HTML-страницу; через него скрипты читают и меняют содержимое. Каждое изменение может вызвать пересчёт стилей и раскладки, поэтому правки группируют и измеряют отдельно от записи.
- dotnet-counters
CLI-инструмент для наблюдения за метриками работающего .NET-процесса в реальном времени: размер кучи, число сборок, паузы GC, пул потоков, исключения.
- dotnet-dump
CLI-инструмент для снятия и анализа полного дампа памяти .NET-процесса. Команда
analyzeоткрывает дамп с командами SOS:dumpheap,gcroot,finalizequeue.- dotnet-gcdump
CLI-инструмент, который снимает граф объектов управляемой кучи живого процесса через EventPipe. Для этого вызывает полную сборку; файл
.gcdumpоткрывают в Visual Studio или PerfView.- dotnet-monitor
Инструмент для продакшена, обычно sidecar-контейнер: по HTTP API снимает дампы, трейсы, логи и метрики .NET-процессов, а по правилам-триггерам собирает их сам и выгружает в хранилище.
- dotnet-trace
CLI-инструмент для записи трейса событий работающего .NET-процесса через EventPipe: сэмплы стеков, события GC, JIT, исключений. Результат открывают в PerfView, Visual Studio или speedscope.
- Double hop
Проблема второго прыжка: приложение, получившее пользователя по Kerberos, не может от его имени пройти аутентификацию на следующем сервере, потому что у него есть только билет к себе. Решается делегированием Kerberos.
- DPoP (Demonstrating Proof of Possession)
Механизм (RFC 9449), который привязывает токен к ключу клиента: каждый запрос сопровождается подписанным доказательством владения ключом. Украденный без ключа токен бесполезен.
- DRY (Don't Repeat Yourself)
Принцип из книги «The Pragmatic Programmer» (1999): каждое знание должно иметь единственное, однозначное, авторитетное представление в системе. Касается знаний и правил, а не одинаковых строк кода.
- DTO (Data Transfer Object)
Простой объект только с данными для передачи между слоями или по сети, без бизнес-логики. В API это модели запросов и ответов, отделённые от сущностей базы данных.
- Dunder-метод (special method)
Метод с именем в двойных подчёркиваниях, который вызывает сам язык:
__init__,__eq__,__len__,__iter__. Через них класс поддерживает операторы и встроенные функции.- Dynamic PGO
Оптимизация по профилю во время работы: JIT собирает статистику горячих путей и типов и использует её при перекомпиляции метода. Включена по умолчанию с .NET 8.
- EAV (entity–attribute–value)
Схема, в которой атрибуты хранятся строками вида «сущность, имя атрибута, значение» вместо отдельных колонок. Гибкая, но неудобная для запросов и без типизации; JSONB часто заменяет её.
- EDI (electronic data interchange)
Электронный обмен стандартными документами между компаниями — заказами, уведомлениями об отгрузке, счетами — в машиночитаемом формате, обычно через EDI-провайдера.
- ELK (Elasticsearch, Logstash, Kibana)
Стек для сбора, хранения и поиска логов: Logstash или Beats доставляют события, Elasticsearch индексирует их, Kibana даёт поиск и дашборды. Открытый форк Elasticsearch — OpenSearch.
- Endpoint
Единица обработки запроса в ASP.NET Core: делегат
RequestDelegateплюс коллекция метаданных. Endpoint'ы — это обработчикиMapGet, action контроллеров, Razor Pages, хабы SignalR.- Endpoint routing (маршрутизация по endpoint'ам)
Основная система маршрутизации ASP.NET Core с версии 3.0:
UseRoutingвыбирает endpoint по URL и методу, аUseEndpointsвыполняет его. Middleware между ними видят выбранный endpoint и его метаданные.- Engine (SQLAlchemy)
Точка подключения SQLAlchemy к базе: знает диалект и драйвер, держит пул соединений. Создаётся один раз на процесс через
create_engine.- Enricher в Serilog
Компонент, который добавляет свойства к каждому событию: имя машины, id потока, данные из
LogContext. Подключается черезEnrich.With...илиEnrich.FromLogContext().- EqualityContract
Синтезированное свойство
record class, которое возвращает runtime-тип записи. СгенерированныйEqualsсравнивает его первым, поэтому записи разных типов одной иерархии не равны даже при одинаковых данных.- Error budget (бюджет ошибок)
Допустимая доля неудач за окно SLO: 100% − SLO. При SLO 99,9% за 30 дней — около 43 минут полного простоя. Пока бюджет есть, команда тратит его на изменения.
- ES-модули (ESM)
Стандартная система модулей JavaScript:
importиexport. Граф импортов строится до выполнения кода, загрузка асинхронная, поддерживается top-levelawait. В Node.js включается расширением.mjsили полем"type": "module"вpackage.json.- Escape analysis (escape-анализ)
Анализ JIT, который определяет, может ли объект пережить метод, где он создан. Если не может, JIT вправе разместить его на стеке; в .NET 9–10 так размещаются «коробки», маленькие массивы и делегаты.
- ETag
Заголовок ответа с версией представления ресурса. Клиент передаёт его в
If-None-Matchдля кеширования или вIf-Matchдля оптимистичной блокировки, получая 412, если ресурс изменился.- ETL (extract, transform, load)
Процесс переноса данных: извлечь из источников, преобразовать к формату цели и загрузить. В экосистеме SQL Server классический инструмент — SSIS, облачный — Azure Data Factory.
- Event sourcing
Хранение состояния как последовательности событий, а не как текущего снимка. Текущее состояние получают, проигрывая события по порядку.
- EventEmitter
Базовый класс Node.js для объектов с событиями:
onподписывает слушателя,emitсинхронно вызывает всех слушателей. Событие'error'без слушателя выбрасывается как исключение.- EventPipe
Встроенный в рантайм .NET механизм трассировки, одинаковый на всех ОС. Через него работают dotnet-counters, dotnet-trace и dotnet-monitor без внешнего профилировщика.
- Exception filter (фильтр исключений) в NestJS
Класс с декоратором
@Catch()и методомcatch, который превращает исключение в HTTP-ответ. Встроенный глобальный фильтр обрабатываетHttpException, а неизвестные ошибки превращает в 500.- ExecuteUpdate и ExecuteDelete
Методы EF Core 7+, которые выполняют
UPDATEилиDELETEпо LINQ-фильтру одной командой, без загрузки сущностей и без трекера изменений. Возвращают число затронутых строк.- Expand/contract (parallel change)
Приём изменения схемы без простоя: сначала совместимо расширить схему, затем перевести на неё приложение и данные, и только потом удалить старое.
- EXPLAIN ANALYZE
Команда PostgreSQL, которая выполняет запрос и выводит план с фактическими временем, числом строк и проходов на каждом узле. С опцией
BUFFERS(с версии 18 — по умолчанию) показывает и чтения страниц.- Extension members
Расширения C# 14, которые объявляются блоком
extension. Кроме методов позволяют добавлять к существующим типам свойства, статические члены и операторы.- Failover (переключение на резерв)
Автоматический перевод нагрузки с отказавшего компонента или провайдера на резервный. Решение обычно принимают по доле ошибок, таймаутам или проверкам здоровья.
- Fallback policy (резервная политика)
Политика для эндпоинтов без метаданных авторизации. По умолчанию её нет, и такие эндпоинты открыты;
SetFallbackPolicyсRequireAuthenticatedUserзакрывает всё, что не помечено явно.- Fast-forward (перемотка вперёд)
Вид слияния, когда целевая ветка не содержит новых коммитов и Git просто сдвигает её указатель на вершину вливаемой ветки. Коммит слияния не создаётся.
- FastAPI
Веб-фреймворк Python для HTTP API поверх Starlette и Pydantic. Параметры, тело и ответ описываются аннотациями типов, а валидация и документация OpenAPI строятся по ним автоматически.
- FastMM
Менеджер памяти Delphi для Win32 и Win64, встроенный по умолчанию с Delphi 2006. Умеет сообщать об утечках при выходе (
ReportMemoryLeaksOnShutdown), а полная версия в режиме отладки ловит обращения к освобождённой памяти.- Feature toggle (флаг функциональности)
Переключатель в конфигурации, который включает или выключает ветку кода без нового развёртывания: для части пользователей, по проценту или полностью. В .NET есть библиотека
Microsoft.FeatureManagement.- File-based app
Приложение из одного
.cs-файла без проекта, запускается командойdotnet run app.cs(с .NET 10). Пакеты и настройки подключаются директивами#:packageи#:property.- Fire-and-forget («запустил и забыл»)
Запуск асинхронной операции без ожидания её результата. Без явной обработки исключения из такой операции теряются или роняют процесс.
- FireDAC
Универсальная библиотека доступа к данным RAD Studio с компонентами
TFDConnection,TFDQuery,TFDStoredProc. Даёт управление выборкой, Array DML, макросы, пул соединений и трассировку.- Flexbox
Модуль раскладки CSS для одной оси: дети контейнера с
display: flexвыстраиваются в строку или колонку и делят свободное место поflex-growиflex-shrink.- Fluent API
Конфигурация модели EF Core кодом в
OnModelCreatingили в классахIEntityTypeConfiguration<T>:HasKey,HasMaxLength,HasOne().WithMany(). Имеет приоритет над атрибутами и соглашениями.- FluentAssertions
Библиотека проверок в стиле
result.Should().Be(5). До версии 7 включительно — Apache 2.0, с версии 8 (2025) — лицензия Xceed, платная для коммерческого использования.- Forward secrecy (прямая секретность)
Свойство, при котором сеансовые ключи выводятся из одноразового обмена Диффи — Хеллмана. Украденный позже закрытый ключ сертификата не расшифрует записанный ранее трафик.
- Forwarded headers (X-Forwarded-*)
Заголовки
X-Forwarded-For,X-Forwarded-ProtoиX-Forwarded-Host, в которых прокси передаёт исходные IP клиента, схему и хост. В ASP.NET Core их применяетUseForwardedHeaders, доверяя только известным прокси.- Free-threaded сборка (free threading)
Сборка CPython без GIL (PEP 703,
python3.13tи новее): потоки выполняют Python-код параллельно. Экспериментальная в 3.13, официально поддерживается с 3.14, но не по умолчанию.- Frozen-коллекция
FrozenDictionary<TKey, TValue>иFrozenSet<T>из .NET 8: неизменяемые коллекции, которые долго строятся, зато очень быстро ищут. Подходят для справочников, созданных один раз при старте.- GC.Collect
Ручной запуск сборки мусора. В коде приложения почти всегда вреден: выжившие объекты продвигаются в старшие поколения, а самонастройка порогов сбивается. Уместен в тестах, бенчмарках и диагностике — обычно вместе с
GC.WaitForPendingFinalizers.- Generic Host (универсальный хост)
Объект
IHost, который владеет конфигурацией, логированием, DI-контейнером и hosted services и управляет запуском и остановкой приложения. На нём построены ASP.NET Core и Worker Service.- Generics в Delphi
Обобщённые типы и методы с параметрами типа:
TList<T>,TDictionary<TKey, TValue>. Появились в Delphi 2009; компилятор создаёт код для каждого набора аргументов типа и проверяет ограничения вродеclassилиconstructor.- GIL (Global Interpreter Lock)
Глобальная блокировка интерпретатора CPython: в каждый момент байт-код выполняет только один поток. Отпускается на блокирующем вводе-выводе и в C-расширениях.
- GIN-индекс
Обратный индекс (Generalized Inverted Index): для каждого элемента — слова, элемента массива, ключа JSONB — хранит список строк, где он встречается. Быстро отвечает на «содержит», но дорог на запись.
- GiST-индекс
Обобщённое дерево поиска (Generalized Search Tree) — каркас для индексов по геометрии, диапазонам и полнотекстовым данным. Поддерживает пересечение, вложение и поиск ближайших соседей.
- git bisect
Команда для бинарного поиска коммита, который внёс ошибку: вы отмечаете хорошую и плохую версии, а Git на каждом шаге делит диапазон пополам.
git bisect runпроверяет коммиты скриптом или тестом автоматически.- git filter-repo
Инструмент для переписывания всей истории репозитория: удаляет файлы, заменяет строки, меняет пути. Документация Git рекомендует его вместо
git filter-branchс его многочисленными подводными камнями, в том числе для удаления секретов.- Git Flow
Модель ветвления Винсента Дриссена (2010): долгоживущие
mainиdevelop, веткиfeature/*,release/*иhotfix/*. Рассчитана на версионируемые продукты; для continuous delivery автор советует модель проще.- Git LFS (Large File Storage)
Расширение Git для больших бинарных файлов: в репозитории хранится маленький текстовый указатель, а содержимое — на отдельном LFS-сервере и скачивается только для нужных версий.
- git push --force-with-lease
Принудительная отправка, которая перезаписывает ветку на сервере, только если та указывает на тот же коммит, что ваша ветка удалённого отслеживания. Защищает от затирания чужих коммитов после rebase.
- GitHub Flow
Простая модель ветвления: короткая ветка от
main, pull request с ревью и проверками, слияние вmainи удаление ветки.mainвсегда готов к выкладке.- global.json
Файл в репозитории, который фиксирует версию .NET SDK для сборки и правило её подбора (
rollForward).- gMSA (group Managed Service Account)
Доменная учётка службы, пароль которой AD генерирует и меняет сам. Её используют пулы IIS, службы Windows и Windows-контейнеры; длинный случайный пароль защищает от Kerberoasting.
- Google Zanzibar
Глобальная система авторизации Google, описанная в статье на USENIX ATC 2019. Хранит отношения кортежами «объект#отношение@пользователь», обслуживает Drive, YouTube, Cloud и другие сервисы и стала образцом для OpenFGA и SpiceDB.
- GROUPING SETS, ROLLUP и CUBE
Расширения
GROUP BY, которые в одном запросе считают агрегаты по нескольким наборам колонок: например, по магазину, по региону и общий итог. ФункцияGROUPING()отличает строку итога от обычной группы.- Groups overage
Поведение Microsoft Entra ID, когда у пользователя больше групп, чем помещается в токен (200 для JWT, 150 для SAML): claim
groupsне выдаётся, вместо него приходит ссылка на Microsoft Graph.- gRPC
Фреймворк удалённого вызова процедур поверх HTTP/2. Контракт описывается в файле
.proto, по нему генерируются сервер и клиент, сообщения кодируются в Protobuf. Поддерживает потоковую передачу в обе стороны и дедлайны.- gRPC-Web
Вариант протокола gRPC, который работает из браузера по HTTP/1.1 и HTTP/2. Поддерживает только unary-вызовы и потоки от сервера; в ASP.NET Core включается пакетом
Grpc.AspNetCore.Web.- Guard (страж) в NestJS
Класс с методом
canActivate, который решает, пропускать ли запрос к обработчику. ВидитExecutionContextи метаданные маршрута, поэтому в нём делают аутентификацию и проверку ролей;falseдаёт ответ 403.- GUID интерфейса
16-байтный идентификатор в объявлении интерфейса:
['{...}']. Нужен дляQueryInterface, оператораasи функцииSupports; без него компилятор выдаёт ошибку E2232. В редакторе генерируется сочетанием Ctrl+Shift+G.- Hangfire
Библиотека фоновых задач для .NET: сериализует вызовы методов в хранилище (SQL Server, Redis), выполняет их на серверах Hangfire, повторяет при ошибках и показывает в веб-дашборде.
- Hash Match
Соединение или агрегация через хеш-таблицу: меньший вход загружается в память, больший проверяется по ней. Подходит для больших несортированных входов, но требует выделения памяти.
- HATEOAS
Принцип REST, по которому ответ содержит ссылки на связанные ресурсы и доступные действия, и клиент переходит по ним, а не собирает URL сам.
- Health check (проверка здоровья)
HTTP-эндпоинт, который сообщает состояние экземпляра приложения: Healthy, Degraded или Unhealthy. По нему балансировщик и оркестратор решают, слать ли трафик и перезапускать ли процесс.
- Health check publisher
Реализация
IHealthCheckPublisher, которую фоновый сервис ASP.NET Core периодически вызывает с отчётом о проверках. Используется, чтобы отправлять статус в лог, метрики или систему мониторинга без внешнего опроса.- Healthcheck контейнера
Команда, которую Docker периодически выполняет внутри контейнера, чтобы определить его состояние: starting, healthy или unhealthy. В Compose по нему работает
condition: service_healthy.- Hill climbing (алгоритм инъекции потоков)
Эвристика пула потоков .NET: она меняет число рабочих потоков и оставляет то, при котором пропускная способность выше. Работает постепенно, поэтому резкую нехватку потоков не компенсирует.
- Hosted service (IHostedService)
Служба, жизнью которой управляет хост .NET:
StartAsyncвызывается при запуске приложения,StopAsync— при остановке. Регистрируется черезAddHostedServiceкак singleton; на этом же механизме работает веб-сервер.- HOT-обновление (heap-only tuple)
Обновление, при котором новая версия строки ложится на ту же страницу и не создаёт записей в индексах. Возможно, если не изменилась ни одна индексированная колонка и на странице есть место.
- HSTS (HTTP Strict Transport Security)
Заголовок
Strict-Transport-Security, после которого браузер обращается к сайту только по HTTPS в течениеmax-age. Сpreloadдомен попадает в список, встроенный в браузеры.- HTTP
Протокол «запрос — ответ» поверх TCP, на котором работает веб: клиент шлёт метод, путь и заголовки, сервер отвечает кодом состояния и телом. Состояния между запросами протокол не хранит, поэтому сессию переносят в куки, токены или заголовки.
- HTTP-интерцептор
Функция в цепочке
HttpClient, которая видит каждый запрос и ответ: добавляет заголовки и токен, логирует, обрабатывает ошибки. С Angular 15 — функциональные интерцепторы черезwithInterceptors.- HTTP.sys
Драйвер режима ядра Windows, который принимает HTTP-запросы для IIS и других серверов. В ASP.NET Core есть одноимённый сервер — альтернатива Kestrel только для Windows, с общим портом и Windows-аутентификацией.
- HttpClient
Класс .NET для исходящих HTTP-запросов. Создавать его на каждый запрос нельзя — сокеты копятся в
TIME_WAIT; держать один статический экземпляр тоже плохо — он не замечает смену DNS. Штатный способ —IHttpClientFactory.- HybridCache
API кеширования из .NET 9: L1 в памяти процесса плюс L2 в
IDistributedCache, защита от stampede, сериализация и инвалидация по тегам. Реализация — пакетMicrosoft.Extensions.Caching.Hybrid.- I/O-bound операция
Операция, время которой уходит на ожидание ввода-вывода — сети, диска, базы данных, — а не на работу процессора. Её выполняют асинхронно через
await, не занимая поток.- IActionResult (результат действия)
Объект, который action возвращает вместо готового ответа. Фреймворк выполняет его после action:
ViewResultрендерит представление,RedirectResultотправляет редирект.- IAsyncDisposable
Интерфейс с методом
DisposeAsync, который возвращаетValueTask, для асинхронной очистки, например со сбросом буфера или закрытием соединения. Используется черезawait using(C# 8, .NET Core 3.0).- IConfiguration
Интерфейс доступа к конфигурации приложения: плоский набор строковых пар «ключ — значение» с иерархическими ключами через двоеточие, например
Payments:TimeoutSeconds.- ID-токен
JWT, который OpenID Connect выдаёт клиенту после входа: кто пользователь (
sub), кто выпустил токен (iss), для какого клиента (aud) и когда. В API его не отправляют.- Identity map
Словарь сессии «первичный ключ → объект»: одна строка базы представлена в сессии одним объектом, а повторный
session.getпо тому же ключу не идёт в базу.- Identity resolution
Гарантия, что одна строка базы представлена в контексте одним объектом. Отслеживающие запросы EF Core возвращают уже загруженный экземпляр;
AsNoTrackingсоздаёт новый объект на каждое вхождение строки.- Identity-столбец (GENERATED AS IDENTITY)
Столбец, значения которого база генерирует сама из привязанной к нему последовательности. В PostgreSQL объявляется как
GENERATED ALWAYS AS IDENTITYилиGENERATED BY DEFAULT AS IDENTITY(с версии 10) и заменяет устаревшийserial; аналогIDENTITY(1,1)в SQL Server.- IDisposable
Интерфейс с единственным методом
Disposeдля детерминированного освобождения ресурсов: файлов, сокетов, соединений, неуправляемой памяти. Вызывается явно или черезusing.- IDOR (небезопасная прямая ссылка на объект)
Insecure Direct Object Reference — доступ к чужому объекту подменой идентификатора в запросе, например
/orders/43вместо/orders/42, когда сервер не проверяет владельца.- IExceptionHandler
Интерфейс (.NET 8+) для обработки известных исключений в одном месте. Реализации регистрируются через
AddExceptionHandler<T>()и вызываются middlewareUseExceptionHandlerпо очереди, пока одна не вернётtrue.- IHostApplicationLifetime
Сервис с событиями жизненного цикла приложения —
ApplicationStarted,ApplicationStopping,ApplicationStopped— и методомStopApplication()для остановки из кода.- IHostedLifecycleService
Расширение
IHostedServiceиз .NET 8 с методамиStartingAsync,StartedAsync,StoppingAsyncиStoppedAsync, которые выполняются до и после запуска и остановки служб.- IHostLifetime
Компонент, который решает, когда хост стартует и когда начинает остановку.
ConsoleLifetimeреагирует на Ctrl+C и SIGTERM,WindowsServiceLifetime— на команды службы Windows.- IHttpClientFactory
Фабрика
HttpClientв .NET: переиспользует обработчики соединений, следит за их временем жизни и позволяет настроить именованных и типизированных клиентов с цепочкой обработчиков, например resilience.- IHubContext
Сервис для отправки сообщений клиентам хаба извне хаба: из контроллера, endpoint или фоновой задачи. Даёт
ClientsиGroups, но не знает вызывающего клиента.- IInterface
Базовый интерфейс Delphi, от которого наследуются все остальные; на Windows совпадает с COM-интерфейсом
IUnknown. ОбъявляетQueryInterfaceдля запроса других интерфейсов и_AddRefи_Releaseдля подсчёта ссылок.- IIS (Internet Information Services)
Веб-сервер Windows. ASP.NET Core работает за ним через модуль ANCM: IIS принимает запрос и передаёт его Kestrel внутри того же процесса (in-process) или отдельному процессу приложения (out-of-process).
- IL (промежуточный язык, CIL)
Платформенно-независимый стековый байт-код, в который компилируются C#, F# и VB.NET. Перед выполнением JIT или AOT-компилятор переводит его в машинный код.
- IMemoryOwner<T>
Интерфейс владельца буфера
Memory<T>: тот, кто держит ссылку на него, вызываетDisposeили передаёт владение дальше. Его выдаёт, например,MemoryPool<T>.Shared.Rent().- IMiddleware
Интерфейс middleware с методом
InvokeAsync(HttpContext, RequestDelegate). Такой middleware регистрируется в DI и создаётся на каждый запрос, поэтому принимает scoped-зависимости в конструкторе.- IMiddlewareFactory
Фабрика, через которую
UseMiddlewareполучает экземплярыIMiddlewareна каждый запрос. Стандартная реализация берёт их из DI-scope запроса; свою подключают для стороннего контейнера.- In-process хостинг
Модель хостинга в IIS, при которой приложение работает внутри
w3wp.exe, а запросы принимаетIISHttpServerвместо Kestrel. Модель по умолчанию с ASP.NET Core 3.0.- Inbox (идемпотентный потребитель)
Шаблон дедупликации на стороне получателя: id обработанного сообщения сохраняется в таблицу той же транзакцией, что и изменения, и повтор с тем же id пропускается.
- Index Seek и Index Scan
Два способа прочитать индекс. Seek спускается по B-дереву к нужному диапазону ключей и читает только его, scan читает индекс или таблицу целиком.
- Inline-переменная (inline variable)
Переменная, объявленная прямо среди операторов:
var I := 0;. Видна до конца своего блокаbegin..end, а тип может выводиться из инициализатора. Появилась в Delphi 10.3 Rio.- INP (Interaction to Next Paint)
Задержка от клика, касания или нажатия клавиши до следующего кадра, худшая за визит. Хорошо — до 200 мс. В марте 2024 года заменила FID в Core Web Vitals.
- Interceptor (перехватчик) в NestJS
Класс с методом
intercept, который выполняет код до и после обработчика и работает с его результатом как с RxJSObservable. Применяется для логирования, замера времени, кеша и преобразования ответа.- Interlocked
Статический класс атомарных операций над переменными: Increment, Add, Exchange, CompareExchange и других. Каждая операция — ещё и полный барьер памяти.
- IOptionsMonitor<T>
Singleton-доступ к актуальным настройкам:
CurrentValueотдаёт текущее значение,OnChangeподписывает на изменения конфигурации. Подходит для singleton-сервисов.- IOptionsSnapshot<T>
Scoped-доступ к настройкам: объект создаётся заново в каждом scope, то есть на каждый запрос, и видит перезагруженную конфигурацию. Поддерживает именованные опции.
- IServiceScopeFactory
Singleton-сервис, который создаёт новые scopes. Через него singleton и фоновые задачи получают scoped-сервисы:
CreateScope()или, с .NET 6,CreateAsyncScope().- IUserIdProvider
Интерфейс, который определяет id пользователя соединения для
Clients.User. По умолчанию берёт claimClaimTypes.NameIdentifier.- IValueTaskSource
Интерфейс переиспользуемого объекта асинхронной операции, на котором
ValueTaskработает без аллокаций. Используется в высокопроизводительных API, например вSocket.- JIT-компилятор (just-in-time)
Часть CLR, которая переводит IL метода в машинный код при первом вызове с учётом конкретного процессора. В .NET это RyuJIT.
- Jitter (случайный разброс задержки)
Случайная добавка к паузе между повторами. Без неё клиенты, упавшие одновременно, повторяют тоже одновременно и бьют восстановившийся сервис синхронной волной.
- JSON
Текстовый формат обмена данными из объектов, массивов, строк, чисел,
true,falseиnull. Своей схемы у него нет, поэтому контракт описывают отдельно — OpenAPI или JSON Schema, — а в .NET разбирают черезSystem.Text.Json.- jsonb
Тип PostgreSQL для JSON в разобранном двоичном виде: без дублей ключей и исходного порядка, зато с операторами поиска (
@>,?,@?) и поддержкой GIN-индексов. Типjson, наоборот, хранит исходный текст.- jsonpath (SQL/JSON path)
Язык путей из стандарта SQL/JSON для выбора и фильтрации значений внутри JSON, например
$.items[*] ? (@.price > 10). В PostgreSQL его понимают операторы@?,@@и функцииjsonb_path_query,JSON_VALUE,JSON_EXISTS.- JSX
Расширение синтаксиса JavaScript для описания разметки внутри кода:
<h1>{title}</h1>. Компилятор превращает его в вызовы, создающие React-элементы.- JWE (JSON Web Encryption)
Формат зашифрованных данных (RFC 7516). В компактной форме — пять частей: заголовок, зашифрованный ключ, вектор инициализации, шифротекст и тег. Скрывает payload от всех, кроме владельца ключа.
- JWKS (JSON Web Key Set)
Набор открытых ключей издателя в формате JSON (RFC 7517). Каждый ключ помечен
kid, по которому проверяющий выбирает ключ для подписи конкретного токена.- JWS (JSON Web Signature)
Формат подписанных данных (RFC 7515). В компактной форме — три части в base64url: заголовок, payload и подпись. Защищает целостность и подлинность, но не скрывает содержимое.
- JWT (JSON Web Token)
Компактный токен из JSON-заголовка, JSON-набора claims и подписи, закодированных в base64url и разделённых точками. Стандарт — RFC 7519; чаще всего используется как access-токен для API.
- KDC (Key Distribution Center)
Центр выдачи билетов Kerberos. В Active Directory работает на каждом контроллере домена: проверяет пароль пользователя, выдаёт TGT и сервисные билеты.
- Kerberos
Сетевой протокол аутентификации по билетам (RFC 4120). Пароль проверяет KDC один раз, дальше клиент предъявляет службам билеты, зашифрованные их ключами. Основной протокол входа в домене Active Directory.
- Kestrel
Кроссплатформенный веб-сервер, встроенный в ASP.NET Core. Работает внутри процесса приложения, принимает HTTP/1.1, HTTP/2 и HTTP/3 и передаёт запросы в конвейер middleware.
- Key Lookup
Оператор плана, который для каждой строки, найденной в некластерном индексе, ищет недостающие колонки в кластерном индексе. Для кучи его аналог — RID Lookup. Дёшев для десятков строк и дорог для тысяч.
- Keyed services (сервисы с ключом)
Регистрации с ключом, появившиеся в .NET 8:
AddKeyedSingleton,AddKeyedScoped,AddKeyedTransient. Нужную реализацию получают атрибутом[FromKeyedServices(key)]или методомGetRequiredKeyedService.- Keyset-пагинация (cursor pagination)
Постраничная выборка по последнему ключу предыдущей страницы:
WHERE id > @after ORDER BY id. Работает по индексу за одинаковое время на любой странице, но не позволяет прыгнуть на страницу по номеру.- Keytab
Файл с долговременными ключами Kerberos учётной записи службы. На Linux по нему GSSAPI расшифровывает билеты без пароля; путь задаёт переменная
KRB5_KTNAME. Перевыпускается при смене пароля учётки.- KISS (Keep It Simple, Stupid)
Принцип инженерной простоты: из работающих решений выбирать самое простое. Фразу приписывают Келли Джонсону, инженеру Lockheed.
- KRaft
Встроенный в Kafka протокол консенсуса на основе Raft, через который контроллеры хранят метаданные кластера. С Kafka 4.0 — единственный режим, ZooKeeper больше не используется.
- Kubernetes (K8s)
Оркестратор контейнеров: держит заданное число реплик, перезапускает упавшие поды, раздаёт конфигурацию и секреты, балансирует трафик через службы. Под он считает заменяемым и может остановить его в любой момент, поэтому состояние выносят наружу.
- LARGEADDRESSAWARE
Флаг в заголовке EXE, который разрешает процессу использовать адреса выше 2 ГБ. 32-битный процесс с этим флагом на 64-битной Windows получает до 4 ГБ адресного пространства.
- launchSettings.json
Файл профилей запуска для локальной разработки: окружение, адреса, переменные. Используется Visual Studio и
dotnet run, при публикации не разворачивается.- Layout (макет)
Общий каркас страниц: шапка, меню, подвал, подключение стилей и скриптов. Представление вставляется в него через
@RenderBody(), а именованные куски — через секции.- Layout thrashing
Чередование записи стилей и чтения геометрии (
offsetHeight,getBoundingClientRect), при котором браузер синхронно пересчитывает layout на каждом чтении.- LCP (Largest Contentful Paint)
Время от начала навигации до отрисовки самого крупного изображения или текстового блока в области просмотра. Хорошо — до 2,5 секунды.
- LDAP
Протокол доступа к каталогам, в том числе к Active Directory: поиск пользователей, групп и атрибутов. В .NET кроссплатформенный клиент —
System.DirectoryServices.Protocols.- libuv
Кроссплатформенная библиотека асинхронного ввода-вывода на C, на которой построен Node.js. Даёт event loop, неблокирующие сокеты через epoll, kqueue и IOCP, таймеры и пул потоков для файлов и DNS.
- Lifespan
Асинхронный контекстный менеджер приложения FastAPI: код до
yieldвыполняется при старте процесса, после — при остановке. Заменяет устаревшие события startup и shutdown.- LINQ (Language Integrated Query)
Набор методов и синтаксис запросов C# для фильтрации, проекции, сортировки и группировки данных. LINQ to Objects работает с
IEnumerable<T>в памяти, провайдеры вроде EF Core — сIQueryable<T>.- Liveness-проба (liveness probe)
Периодическая проверка Kubernetes, жив ли процесс. После нескольких неудач подряд kubelet перезапускает контейнер, поэтому внешние зависимости в ней не проверяют.
- Lock-файл зависимостей
Файл с точными версиями и хешами всех пакетов графа, включая транзитивные. В Python это
uv.lock,poetry.lock, закреплённыйrequirements.txtили стандартныйpylock.toml(PEP 751).- Lock-файл пакетов (packages.lock.json)
Файл с полным графом зависимостей проекта и точными версиями, включая транзитивные. С
dotnet restore --locked-moderestore берёт ровно эти версии или падает, если граф изменился.- Lock-free (без блокировок)
Алгоритм, который обходится без блокировок и строится на атомарных операциях вроде CompareExchange. Хотя бы один поток всегда продвигается, даже если другие приостановлены.
- LOH (large object heap)
Куча для объектов размером от 85 000 байт, обычно больших массивов. Собирается только вместе с поколением 2 и по умолчанию не уплотняется, поэтому склонна к фрагментации.
- Long Polling (длинный опрос)
Приём сообщений через HTTP-запрос, который сервер держит открытым до появления данных. После ответа клиент сразу отправляет следующий запрос.
- Lookup-поле
Поле, значение которого берётся из другого набора по ключу: значения
KeyFieldsищутся вLookupKeyFieldsнабораLookupDataSet, а показываетсяLookupResultField.- LTS (Long Term Support)
Релиз .NET с поддержкой три года. Это чётные версии: .NET 8, .NET 10.
- LTS Node.js
Линия Node.js с долгой поддержкой: Active LTS, затем Maintenance, всего около 30 месяцев. До Node 26 LTS становились чётные версии; с Node 27 одна мажорная версия в год, и каждая становится LTS.
- Memory<T>
Обычная структура-«окно» на непрерывную память (массив, строку или
MemoryManager<T>), которую можно хранить в полях и передавать черезawait. К данным обращаются через свойство.Span.- MERGE
Инструкция, которая сопоставляет источник с целевой таблицей и за один проход выполняет
UPDATE,INSERTилиDELETEпо веткамWHEN. Требует уникального источника иHOLDLOCKпри параллельных upsert.- Merge Join (соединение слиянием)
Соединение двух входов, отсортированных по ключу соединения, за один проход по обоим. Очень дёшево, если порядок даёт индекс; если нет, плану нужен дорогой Sort.
- Merge-ревизия
Ревизия Alembic с двумя родителями в
down_revision, которая сводит две ветки миграций в одну head. Создаётся командойalembic merge heads.- Microsoft Entra ID
Облачная служба удостоверений Microsoft, бывший Azure Active Directory. Выдаёт токены по OIDC, OAuth 2.0, SAML и WS-Federation; синхронизируется с локальным AD через Entra Connect.
- Middleware (промежуточное ПО)
Компонент конвейера запросов ASP.NET Core. Получает
HttpContext, выполняет свою работу и передаёт запрос следующему компоненту или формирует ответ сам.- Middleware в NestJS
Функция или класс с
NestMiddleware, который вызывается до guards и обработчика с объектамиreq,resиnext, как middleware Express. Не знает, какой обработчик выполнится; подключается в методеconfigureмодуля.- Middleware по соглашению (convention-based)
Класс без интерфейса с конструктором от
RequestDelegateи методомInvokeилиInvokeAsync. Создаётся один раз при сборке конвейера и живёт всё время работы приложения.- Migration bundle
Исполняемый файл с миграциями проекта, который собирают в CI командой
dotnet ef migrations bundle(EF Core 6+). Применяет недостающие миграции без SDK и исходного кода.- Minimal API
Способ описать HTTP-эндпоинты делегатами прямо в
Program.csчерезMapGet,MapPostи другие методы, без классов-контроллеров. Появился в .NET 6, поддерживает Native AOT.- Misfire (пропущенный запуск)
Срабатывание триггера Quartz, которое не произошло вовремя, например пока планировщик был выключен. Misfire-политика решает, выполнить его сразу, один раз или пропустить.
- ModelState
Словарь
ModelStateDictionaryс результатами привязки и валидации в MVC.ModelState.IsValidпоказывает, есть ли ошибки, а сами ошибки сгруппированы по полям.- Monitor
Класс .NET для взаимного исключения на любом объекте ссылочного типа. Оператор lock для обычного объекта компилируется в Monitor.Enter и Monitor.Exit в try/finally.
- monkeypatch
Встроенная фикстура pytest для временной подмены атрибутов, элементов словарей и переменных окружения. После теста всё возвращается как было.
- mTLS (взаимный TLS)
TLS, в котором сертификат предъявляют обе стороны, а не только сервер. Шифрует трафик между сервисами и доказывает, какой именно сервис звонит.
- Multi-targeting
Сборка одного проекта под несколько TFM через свойство
TargetFrameworks. В NuGet-пакет попадает отдельная сборка для каждой цели.- Multicast-делегат (multicast delegate)
Делегат со списком из нескольких методов, которые вызываются по порядку. Получается через
+=илиDelegate.Combine; возвращает результат последнего метода.- Mutex
Примитив взаимного исключения на основе объекта ядра ОС. Медленнее lock, но именованный Mutex виден другим процессам.
- MVC (Model-View-Controller)
Архитектурный шаблон, который делит UI-приложение на модель (данные и логика), представление (отображение) и контроллер (обработка запроса). В ASP.NET Core MVC контроллер выбирает представление и передаёт ему модель.
- MVCC (многоверсионное управление параллельным доступом)
Способ изоляции транзакций, при котором база хранит несколько версий строки, и каждая транзакция видит версию, актуальную для её снимка. Читатели не блокируют писателей и наоборот. В PostgreSQL старые версии лежат в самой таблице, в SQL Server с RCSI — в отдельном хранилище версий.
- Naming convention (SQLAlchemy)
Шаблоны имён индексов и ограничений в
MetaData(naming_convention=...). С ними каждое ограничение получает предсказуемое имя, и Alembic может его изменить или удалить.- Native AOT
Публикация приложения в один нативный исполняемый файл без JIT и без установленного .NET. Быстрый старт и меньше памяти, но нет динамической загрузки сборок и
Reflection.Emit, обязателен trimming.- NativeInt
Целый тип Delphi, размер которого равен размеру указателя: 4 байта в Win32 и 8 байт в Win64. В нём хранят указатели и ссылки на объекты, приведённые к числу.
- Negotiate (согласование) в SignalR
Первый запрос клиента
POST {hub}/negotiate. Сервер возвращает id и токен соединения и список доступных транспортов, а Azure SignalR Service — редирект на свой адрес.- Negotiate (SPNEGO)
Механизм, который выбирает протокол аутентификации: сначала Kerberos, при неудаче NTLM. В HTTP — схема
WWW-Authenticate: Negotiate(RFC 4559), в ASP.NET Core — обработчикAddNegotiate().- Nested Loops (вложенные циклы)
Соединение, при котором для каждой строки внешнего входа ищутся совпадения во внутреннем. Эффективно, когда внешний вход мал, а у внутреннего есть индекс по ключу соединения.
- ng update
Команда Angular CLI, которая обновляет пакеты на следующую мажорную версию и запускает автоматические миграции кода. Перескакивать через версии нельзя: обновляются по одной.
- NgRx SignalStore
Стор из пакета
@ngrx/signals, построенный на сигналах: состояние, вычисляемые значения и методы собираются функциямиwithState,withComputed,withMethods. Легче классического NgRx Store по объёму кода.- NgRx Store
Реализация Redux для Angular: глобальное состояние меняется только через actions и reducers, читается через selectors, побочные эффекты живут в effects. Даёт трассировку в Redux DevTools ценой шаблонного кода.
- NOLOCK
Табличный хинт SQL Server, равный READ UNCOMMITTED: чтение без разделяемых блокировок. Даёт грязные данные, пропуски и повторы строк и не снимает блокировок схемы и конфликтов писателей.
- Non-root контейнер
Контейнер, процесс которого работает не от root. Образы .NET с версии 8 содержат пользователя
app(UID в переменнойAPP_UID); включается инструкциейUSER $APP_UID, в chiseled — по умолчанию.- NonGC heap (frozen heap)
Область памяти в .NET 8+ для объектов, которые живут всё время работы процесса, например строковых литералов. GC их не собирает и не перемещает, а
GC.GetGenerationдля них может вернутьint.MaxValue.- NTLM
Протокол аутентификации Windows по схеме «вызов — ответ»: клиент доказывает знание хеша пароля, а сервер проверяет ответ через контроллер домена. Не проверяет сервер и не поддерживает делегирование; с 2024 года объявлен deprecated.
- NuGet
Менеджер пакетов .NET. Пакет
.nupkgсодержит сборки под разные TFM и список зависимостей;dotnet restoreскачивает пакеты и выбирает их версии.- NuGet Audit
Проверка пакетов на известные уязвимости при каждом restore (.NET 8 SDK+). Выдаёт предупреждения NU1901–NU1904 по уровню опасности; для
net10.0по умолчанию проверяет и транзитивные пакеты.- NuGet-фид (package source)
Сервер или папка, откуда NuGet скачивает пакеты. Приватный фид компании (Azure Artifacts, GitHub Packages, BaGetter, Nexus) хранит внутренние пакеты и часто проксирует nuget.org.
- Nullable reference types (NRT)
Возможность C# 8+: ссылочный тип без
?считается не допускающимnull, с?— допускающим. Компилятор предупреждает о возможныхNullReferenceException, а в рантайме ничего не проверяется.- Nullable-контекст (nullable context)
Настройка, которая включает аннотации
?и предупреждения оnull:enable,warnings,annotationsилиdisable. Задаётся элементом<Nullable>в проекте и директивами#nullableв коде.- OAuth 2.0
Протокол делегирования доступа (RFC 6749): пользователь разрешает приложению обращаться к API от своего имени, а приложение получает access-токен вместо пароля.
- Observable (RxJS)
Ленивый поток значений во времени: начинает работу при подписке, может выдать много значений, ошибку или завершение и отменяется отпиской. В Angular его возвращают
HttpClient, роутер и формы.- OLAP (online analytical processing)
Аналитическая нагрузка: агрегаты по миллионам строк и срезы по времени, магазинам, товарам. Данные обычно лежат в отдельном хранилище со схемой «звезда» или в кубах.
- OLTP (online transaction processing)
Нагрузка из множества коротких транзакций: продажа, заказ, оплата. Схема нормализована, запросы читают и пишут немного строк по ключу.
- OnPush
Стратегия обнаружения изменений, при которой компонент проверяется только при новом входе по ссылке, событии внутри,
markForCheck()или изменении прочитанного сигнала. С Angular 22 — стратегия по умолчанию.- OpenAPI
Стандарт машиночитаемого описания HTTP API в JSON или YAML: пути, параметры, тела, ответы и схемы. Раньше назывался Swagger; по документу строят документацию, клиентов и тесты.
- OpenID Connect (OIDC)
Слой аутентификации поверх OAuth 2.0: scope
openid, ID-токен, endpoint UserInfo и discovery-документ. Позволяет приложению узнать, кто вошёл.- OpenTelemetry
Открытый стандарт и набор SDK для сбора трёх сигналов телеметрии — трейсов, метрик и логов — и их отправки в любой совместимый бэкенд. В .NET опирается на
Activity,MeterиILogger.- OperationCanceledException
Исключение, которым операция сообщает об отмене. Async-метод, завершившийся им, получает статус
Canceled;TaskCanceledException— его наследник.- Options pattern
Привязка секции конфигурации к типизированному классу настроек, который сервисы получают через DI как
IOptions<T>,IOptionsSnapshot<T>илиIOptionsMonitor<T>. Поддерживает валидацию.- ORM (объектно-реляционное отображение)
Библиотека, которая сопоставляет классы приложения с таблицами базы: генерирует SQL по операциям с объектами и превращает строки результата в объекты. В .NET это EF Core, NHibernate; Dapper называют micro-ORM.
- OSR (on-stack replacement)
Замена кода метода прямо во время его выполнения: долгий цикл в неоптимизированном коде переключается на оптимизированную версию. Включён по умолчанию с .NET 7 на x64 и Arm64.
- OTLP (OpenTelemetry Protocol)
Протокол передачи трейсов, метрик и логов OpenTelemetry по gRPC или HTTP. Его принимают коллектор OpenTelemetry и большинство систем наблюдаемости, включая Elastic.
- Out-of-process хостинг
Модель хостинга в IIS, при которой ANCM запускает приложение отдельным процессом с Kestrel и пересылает ему запросы по HTTP через loopback.
- Output caching
Middleware ASP.NET Core (.NET 7+), которое хранит готовые ответы на сервере по политикам сервера, игнорируя заголовки клиента. Поддерживает теги, блокировку на промахе и Redis.
- OWASP Top 10
Рейтинг десяти главных категорий рисков веб-приложений от сообщества OWASP. Обновляется раз в несколько лет; текущая редакция — 2025 года.
- PAC (Privilege Attribute Certificate)
Структура внутри билета Kerberos в Active Directory со списком SID пользователя и всех его групп. Из неё сервер строит Windows-токен без запроса к каталогу.
- PACELC
Расширение CAP от Daniel Abadi (2010–2012): при разделении (P) система выбирает между доступностью (A) и согласованностью (C), иначе (E) — между задержкой (L) и согласованностью (C).
- Package Source Mapping
Настройка
nuget.config, которая для каждого шаблона имени пакета задаёт, из какого фида его можно брать. Защищает от подмены внутренних пакетов одноимёнными с nuget.org (dependency confusion).- package-lock.json
Lock-файл npm с точными версиями и контрольными суммами всего дерева зависимостей, включая транзитивные.
npm ciставит строго по нему и падает, если он расходится сpackage.json.- PAR (Pushed Authorization Requests)
Расширение OAuth (RFC 9126): клиент отправляет параметры авторизации прямым POST и получает
request_uri, а браузер переходит на/authorizeтолько с ним. Параметры не видны и не подменяются в браузере.- Parallel Programming Library (PPL)
Модуль
System.Threading: задачиTTaskиITask, задачи с результатомIFuture<T>и параллельные циклыTParallel.For, которые выполняются на пуле потоков.- Parameter sniffing (прослушивание параметров)
Поведение оптимизатора: план компилируется под значения параметров первого вызова и переиспользуется для остальных. Полезно при равномерных данных и вредно при перекошенных.
- Partial Prerendering (PPR)
Режим рендеринга Next.js: статическая и кешированная часть страницы собирается заранее в статическую оболочку, а динамические части под
Suspenseстримятся в том же ответе.- Partial view (частичное представление)
Файл
.cshtmlс повторяющимся куском разметки, который вставляют в другие представления через<partial>. Своей логики не имеет и получает данные от родителя.- PDP и PEP (точки принятия и применения решений)
Policy decision point вычисляет решение «разрешить или запретить», policy enforcement point перехватывает запрос и применяет это решение. Разделение описано в NIST SP 800-162; внешним PDP служат, например, OPA и OpenFGA.
- PerfView
Бесплатный профилировщик Microsoft поверх ETW: собирает трассы по CPU, аллокациям, сборкам мусора и исключениям и разбирает их офлайн. Освоить тяжело, но он показывает то, чего не видно по счётчикам и логам.
- pg_stat_statements
Расширение PostgreSQL, которое копит статистику выполнения по нормализованным запросам: вызовы, суммарное и среднее время, строки, чтения блоков. Ближайший аналог Query Store, но без хранения планов.
- PgBouncer
Лёгкий внешний пул соединений для PostgreSQL. В режиме
transactionотдаёт клиенту серверное соединение только на время транзакции, поэтому тысячи клиентских соединений обслуживает небольшое число серверных процессов.- pickle
Встроенный формат сериализации объектов Python в байты. Через него
multiprocessingпередаёт данные между процессами, поэтому лямбды и локальные функции туда не передать.- Pipe в NestJS
Класс с методом
transform, который проверяет или преобразует аргумент обработчика до его вызова. Встроенные —ValidationPipe,ParseIntPipe; ошибка в pipe даёт ответ 400.- PKCE (Proof Key for Code Exchange)
Расширение OAuth (RFC 7636): клиент отправляет хэш случайной строки в запросе авторизации, а саму строку — при обмене кода. Перехваченный код без неё бесполезен.
- POH (pinned object heap)
Куча для объектов, которые нельзя перемещать (.NET 5+). Массив создаётся в ней через
GC.AllocateArrayсpinned: true; собирается вместе с поколением 2 и никогда не уплотняется.- Preflight-запрос
Предварительный запрос
OPTIONS, который браузер шлёт перед «непростым» межсайтовым запросом: с методом вродеPUT, теломapplication/jsonили своими заголовками. Без разрешения сервера основной запрос не уходит.- Primary constructor (первичный конструктор)
- Prisma Client
Типизированный клиент базы, который
prisma generateсоздаёт по схеме: методыfindMany,create,updateдля каждой модели. Изменений не отслеживает — каждый вызов сразу выполняет запрос.- Prisma Migrate
Инструмент миграций Prisma:
prisma migrate devсоздаёт SQL-миграции по изменениям схемы,prisma migrate deployприменяет готовые миграции в CI и проде. История хранится в таблице_prisma_migrations.- ProblemDetails
Стандартный JSON-формат ошибки HTTP API по RFC 9457 (ранее RFC 7807) с полями
type,title,status,detailиinstance. В ASP.NET Core включается черезAddProblemDetails().- Prometheus
Система мониторинга и база временных рядов. Сама забирает метрики с HTTP-эндпоинтов сервисов (pull), хранит их и проверяет правила алертов; графики обычно строят в Grafana.
- Prop drilling
Передача props через несколько уровней компонентов, которым они не нужны, только чтобы довести значение до глубокого потомка. Лечится Context или композицией через
children.- Props (свойства компонента)
Входные параметры React-компонента, которые передаёт родитель. Компонент их только читает; чтобы что-то изменить наверху, он вызывает колбэк из props.
- Protocol Buffers (Protobuf)
Бинарный формат сериализации от Google: схема описывается в
.proto, а каждое поле кодируется номером и типом. Сообщения компактнее JSON, но без схемы их не прочитать.- PSP optimization (Parameter Sensitive Plan)
Механизм SQL Server 2022 на уровне совместимости 160: для запроса с перекошенными данными сервер держит несколько вариантов плана и выбирает их по диапазону кардинальности текущего значения параметра. Работает с предикатами-равенствами.
- Pub/sub (публикация и подписка)
Схема обмена сообщениями: отправитель публикует сообщение в тему или канал, не зная получателей, и его получает каждый подписчик. Хранятся ли сообщения, зависит от системы: Redis pub/sub доставляет только тем, кто подписан сейчас, а Kafka и подписки Service Bus хранят их до прочтения.
- Pull request (PR, merge request)
Запрос на слияние ветки в другую ветку на платформе вроде GitHub, GitLab или Azure DevOps. Вокруг него идут ревью, обсуждение и проверки CI; в GitLab он называется merge request.
- Pydantic
Библиотека валидации и сериализации данных по аннотациям типов. Модель наследуется от
BaseModel; в версии 2 ядро pydantic-core написано на Rust.- pydantic-settings
Пакет с классом
BaseSettings: поля настроек заполняются из переменных окружения,.envи файлов секретов, а типы проверяет Pydantic при создании объекта.- pyproject.toml
Стандартный файл описания Python-проекта: метаданные и зависимости в таблице
[project](PEP 621), система сборки и настройки инструментов в таблицах[tool.*]. Аналог.csproj.- Quality gate
Набор порогов, которые результат анализа должен пройти, чтобы считаться годным: например, нет новых замечаний и покрытие нового кода от 80%. В SonarQube статус gate может останавливать конвейер и слияние PR.
- Quartz.NET
Планировщик заданий для .NET: задание (
IJob) запускается по триггерам — интервалу, cron или календарю. СAdoJobStoreхранит расписание в базе и работает кластером.- Query Store
Встроенное в базу хранилище истории запросов, их планов и статистики выполнения. Появился в SQL Server 2016, для новых баз включён по умолчанию с SQL Server 2022; помогает найти регрессию и закрепить план.
- Razor
Синтаксис шаблонов, который встраивает C# в HTML через символ
@. Файлы.cshtmlкомпилируются в C#-классы при сборке, а выводимые значения автоматически кодируются.- Razor Pages
Модель серверного UI, где страница
.cshtmlс директивой@pageсама отвечает на маршрут, а обработчикиOnGetиOnPostлежат рядом в классеPageModel. Построена на инфраструктуре MVC.- RBAC (ролевая модель доступа)
Role-based access control: права собирают в роли, а пользователям назначают роли. Модель NIST закреплена стандартом ANSI INCITS 359 и, кроме базового уровня, описывает иерархии ролей и разделение обязанностей.
- RBAR (row by agonizing row)
Ироничное название построчной обработки: курсоры, циклы
WHILEи вызовы из приложения на каждую строку. Термин ввёл Джефф Моден.- RBCD (resource-based constrained delegation)
Ограниченное делегирование, которое настраивает владелец целевой службы: на её учётке перечислены учётки, которым можно делегировать к ней. Появилось в Windows Server 2012, работает между доменами.
- RCSI (read committed snapshot isolation)
Реализация READ COMMITTED в SQL Server на версиях строк: каждый оператор читает данные, зафиксированные к его началу, без разделяемых блокировок. Включается опцией базы
READ_COMMITTED_SNAPSHOT, в Azure SQL Database включена по умолчанию.- React Compiler
Инструмент сборки, который анализирует компоненты и автоматически мемоизирует значения, JSX и колбэки. Стабильная версия 1.0 вышла в октябре 2025.
- Read-your-writes
Сессионная гарантия: пользователь всегда видит собственные записи, даже если другие клиенты пока читают старую версию с отстающей реплики.
- ReaderWriterLockSlim
Блокировка, которая пускает многих читателей одновременно или одного писателя. Привязана к потоку и по умолчанию не поддерживает рекурсию.
- Readiness-проба (readiness probe)
Периодическая проверка Kubernetes, готов ли контейнер принимать трафик. При провале под убирают из EndpointSlice сервиса, но не перезапускают.
- ReadyToRun (R2R)
Форма AOT-компиляции, при которой в сборку кроме IL добавляется готовый машинный код. Ускоряет старт; JIT остаётся и перекомпилирует горячие методы.
- ReBAC (доступ на основе отношений)
Relationship-based access control: права выводятся из графа отношений между пользователями и объектами — «владелец», «участник группы», «папка содержит документ». Так устроены Google Zanzibar, OpenFGA и SpiceDB.
- Rebase (перебазирование)
Перенос коммитов ветки на новую базу: Git заново применяет каждый коммит поверх другой ветки и создаёт его копию с новым хешем. Делает историю линейной, но переписывает её.
- Record (запись)
Модификатор
recordдля класса (C# 9) или структуры (C# 10): компилятор генерирует равенство по значению,ToString,Deconstructдля позиционных параметров и поддержкуwith.- Redis
Хранилище «ключ — значение» в оперативной памяти с необязательным сохранением на диск. Типовые роли — распределённый кеш, счётчики, очереди и блокировки; в ASP.NET Core подключается как
IDistributedCacheили напрямую через StackExchange.Redis.- Ref safety (безопасность ссылок)
Правила компилятора C#, которые не дают ссылке (
ref,Span<T>, любомуref struct) пережить данные, на которые она указывает. Например, нельзя вернуть span наstackalloc-буфер; модификаторscopedсужает время жизни.- ref struct
Структура, которая может жить только на стеке: её нельзя упаковать, сохранить в поле класса или захватить в лямбду. Пример —
Span<T>.- Reference-токен
Непрозрачный токен-идентификатор: сами данные хранятся у сервера авторизации, а API получает их интроспекцией. Отзывается сразу и ничего не раскрывает, но требует сетевого вызова.
- Reflog (журнал ссылок)
Локальный журнал, в котором Git записывает каждое перемещение HEAD и веток. Через него находят коммиты после
reset --hardили удаления ветки; записи по умолчанию живут 90 дней, недостижимые — 30.- Reflow (пересчёт раскладки)
Повторный расчёт размеров и положения элементов (layout) после изменения геометрии или DOM. Дороже repaint, который только перерисовывает пиксели.
- Refresh-токен
Долгоживущий токен, который клиент меняет у сервера авторизации на новый access-токен без повторного входа пользователя. В API его не отправляют.
- reintroduce
Директива метода, которая явно скрывает виртуальный метод предка с тем же именем и подавляет предупреждение W1010. Аналог модификатора
newв C#.- Relying party trust
Запись в ADFS о приложении, которому ADFS выдаёт токены: идентификатор, адрес возврата, протокол, правила claims и политика доступа.
- RequestDelegate
Делегат
Task RequestDelegate(HttpContext context)— сигнатура звена конвейера и endpoint'а. Весь собранный конвейер — тоже одинRequestDelegate.- Requests и limits
Ресурсы контейнера в Kubernetes. Requests — резерв, по которому планировщик выбирает узел; limits — потолок: за превышение памяти процесс убивают (OOMKilled), за превышение CPU — троттлят.
- Respawn
Библиотека Джимми Богарда, которая быстро очищает тестовую базу между тестами: удаляет данные из таблиц в порядке внешних ключей и не трогает схему.
- Response caching (кеширование ответов по HTTP)
Кеширование HTTP-ответов по стандартным заголовкам: браузер, прокси и CDN хранят ответ по
Cache-Control. В ASP.NET Core есть атрибут[ResponseCache]и одноимённый middleware.- REST
Архитектурный стиль API, где URL обозначает ресурс, а действие над ним выражает стандартный HTTP-метод. Результат сообщает статус-код, а состояние клиента между запросами сервер не хранит.
- Roll-forward
Правило выбора версии рантайма при запуске приложения. По умолчанию берётся последний установленный патч своей версии, но не новая major-версия; поведение меняет настройка
RollForward.- Roslyn
Компилятор C# и Visual Basic с открытым кодом и API для анализа кода. Превращает исходники в IL и метаданные; на нём работают анализаторы и source generators.
- Row-level security (RLS)
Механизм СУБД, который фильтрует строки таблицы по политике для текущего пользователя или контекста сессии:
CREATE POLICYв PostgreSQL,CREATE SECURITY POLICYв SQL Server.- rowversion
Тип данных SQL Server: 8 байт из счётчика базы, которые автоматически меняются при каждом изменении строки. Используется для оптимистической проверки «строку никто не менял». Синоним
timestampустарел.- RPS (requests per second)
Число запросов в секунду — основная мера нагрузки на сервис. Считают среднее и пик: пик обычно в несколько раз выше среднего.
- Ruff
Линтер и форматтер Python от Astral, написанный на Rust.
ruff checkзаменяет flake8, isort и pyupgrade,ruff format— Black.- RUM (real user monitoring)
Сбор метрик производительности в браузерах реальных пользователей и отправка их в аналитику. Даёт полевые данные в отличие от лабораторных замеров Lighthouse.
- Runbook
Инструкция для дежурного по конкретному алерту: что проверить, какие действия безопасны, кого звать. Ссылку на него кладут прямо в алерт.
- SafeHandle
Абстрактная обёртка над дескриптором ОС с критическим финализатором. Гарантирует однократное освобождение дескриптора и не даёт закрыть его во время P/Invoke-вызова.
- SameSite (атрибут cookie)
Атрибут cookie, который ограничивает её отправку в межсайтовых запросах:
Strict— никогда,Lax— только при навигации верхнего уровня,None— всегда (только сSecure).- SAML 2.0
XML-стандарт обмена утверждениями об аутентификации между поставщиком удостоверений и приложением. Распространён в корпоративных продуктах и SaaS; встроенного обработчика в ASP.NET Core нет.
- SARGable-условие
Условие, которое оптимизатор может превратить в диапазон поиска по индексу (от search argument). Колонка стоит в нём без функций, вычислений и преобразований типа.
- Scope (область доступа)
Строка в запросе токена, которая ограничивает, что клиент может делать от имени пользователя:
openid,orders.read,offline_access. Это права клиента, а не пользователя.- Scope (область DI)
Область, внутри которой scoped-сервисы существуют в одном экземпляре и в конце которой контейнер освобождает созданные в ней объекты. В ASP.NET Core scope создаётся на каждый HTTP-запрос.
- Scope логирования (log scope)
Блок, открытый через
ILogger.BeginScope, свойства которого добавляются ко всем записям внутри него. Хранится вAsyncLocal, поэтому переживаетawait.- Scrutor
Библиотека расширений для встроенного контейнера .NET: сканирование сборок с регистрацией по соглашениям (
Scan) и декораторы (Decorate).- search_path
Параметр PostgreSQL со списком схем, в которых ищутся объекты, указанные без схемы. По умолчанию это схема с именем пользователя и
public; ближайший аналог в SQL Server — схема по умолчанию у пользователя, обычноdbo.- Self-contained-публикация
Публикация, при которой рантайм .NET кладётся вместе с приложением. Не требует установленного .NET, но собирается под конкретную ОС и архитектуру.
- SemaphoreSlim
Лёгкий семафор внутри одного процесса: пускает одновременно не больше N участников. Умеет ждать асинхронно через WaitAsync и не имеет владельца.
- Server Action (серверное действие)
Асинхронная функция с директивой
'use server', которую клиент вызывает POST-запросом для изменения данных, например через<form action>. Это публичный эндпоинт, авторизацию проверяют внутри.- Server GC
Режим GC с отдельной кучей и выделенным потоком сборки на каждый логический процессор. Даёт большую пропускную способность ценой памяти; по умолчанию используется в ASP.NET Core.
- Server-Sent Events (SSE)
Стандарт браузера для потока текстовых событий от сервера к клиенту по обычному HTTP (
EventSource). В обратную сторону SignalR отправляет данные отдельными POST.- Service Locator (локатор служб)
Паттерн, при котором класс сам запрашивает зависимости у глобального реестра, например через
IServiceProvider.GetService. При DI его считают антипаттерном: зависимости не видны в конструкторе, а ошибки переезжают в рантайм.- Service mesh
Инфраструктурный слой для вызовов между сервисами: прокси рядом с каждым сервисом (sidecar) добавляет mTLS, повторы, балансировку и телеметрию без изменения кода. Примеры — Istio, Linkerd.
- Session (SQLAlchemy)
Объект ORM SQLAlchemy для работы с объектами в рамках одной единицы работы: загружает их, отслеживает изменения и сохраняет через flush и
commit(). АналогDbContext, не потокобезопасна.- SET XACT_ABORT
Настройка сеанса: при
ONлюбая ошибка выполнения откатывает всю транзакцию. По умолчаниюOFF, и часть ошибок откатывает только одну инструкцию, а таймаут клиента оставляет транзакцию открытой.- Set-based подход (работа с множествами)
Стиль, при котором набор строк обрабатывают одной инструкцией (
UPDATE ... JOIN,INSERT ... SELECT,MERGE), а не циклом по строкам. Оптимизатор выбирает план для всего набора, а накладные расходы платятся один раз.- ShutdownTimeout
Время, которое Generic Host ждёт остановки служб и сервера (
HostOptions.ShutdownTimeout). С .NET 6 по умолчанию 30 секунд, раньше было 5.- SID (Security Identifier)
Постоянный идентификатор учётной записи или группы в Windows, например
S-1-5-21-...-1105. Не меняется при переименовании, поэтому проверять права надёжнее по SID, чем по имени.- SignalR
Библиотека ASP.NET Core для обмена сообщениями в реальном времени. Держит постоянное соединение и позволяет серверу и клиенту вызывать методы друг друга.
- SIGTERM
Сигнал Unix с просьбой завершить процесс. Его шлют
docker stop, Kubernetes и systemd; если процесс не завершился за отведённое время, следует SIGKILL.- Silent renew (тихое обновление)
Получение нового токена без участия пользователя: запрос
/authorizeсprompt=noneв скрытом iframe использует сессию провайдера. Ломается, если браузер блокирует сторонние cookie.- Sink в Serilog
Приёмник событий Serilog — место, куда они записываются: консоль, файл, Seq, Elasticsearch, OTLP. Каждый sink — отдельный NuGet-пакет.
- SLI (service level indicator)
Измеряемый показатель качества сервиса, обычно доля хороших событий среди всех: успешных запросов, запросов быстрее порога.
- SLO (service level objective)
Целевое значение показателя качества сервиса, например «99,9% запросов успешны» или «p99 меньше 300 мс». SLA — договорное обязательство перед клиентом, обычно мягче внутреннего SLO.
- SMPP (Short Message Peer-to-Peer)
Протокол поверх TCP для обмена SMS между приложением (ESME) и SMS-центром оператора или агрегатора. Сообщения отправляют операцией submit_sm, статусы получают через deliver_sm.
- SOAP
Протокол обмена XML-сообщениями (конвертами) с контрактом в WSDL. Используется в WCF и корпоративных системах; набор стандартов WS-* добавляет безопасность, надёжную доставку и транзакции.
- SOLID
Пять принципов объектного проектирования, собранных Робертом Мартином: единственная ответственность, открытость/закрытость, подстановка Лисков, разделение интерфейсов и инверсия зависимостей. Аббревиатуру предложил Майкл Фэзерс.
- Source Link
Технология, которая записывает в PDB и пакет адрес репозитория и коммит. Отладчик по ней скачивает исходник точной версии библиотеки. С .NET 8 встроена в SDK для GitHub, Azure Repos, GitLab и Bitbucket.
- SPA (одностраничное приложение)
Приложение, в котором браузер один раз загружает оболочку, а дальше меняет содержимое и адрес без полной перезагрузки. Цена — объём JavaScript, своя маршрутизация и состояние на клиенте, а также отдельная работа над доступностью и индексацией.
- Span<T>
ref structиз ссылки на непрерывный участок памяти и длины. Указывает на массив, строку,stackalloc-буфер или неуправляемую память, срезы не копируют данные. Живёт только на стеке.- Split query (разделённый запрос)
Режим EF Core 5+, в котором
Includeколлекций выполняется отдельными SQL-запросами вместо одного сJOIN. ВключаетсяAsSplitQuery(); убирает декартов взрыв ценой лишних round trip и без общей согласованности.- SPN (Service Principal Name)
Имя службы для Kerberos вида
HTTP/portal.contoso.com, привязанное к одной учётной записи AD. По нему KDC выбирает ключ, которым шифрует билет; дубликат или SPN не на той учётке ломают вход.- SQL-инъекция
Уязвимость, при которой данные пользователя вклеиваются в текст SQL и меняют сам запрос. Защита — передавать значения параметрами, а не склеивать строки.
- SQLAlchemy Core
Нижний уровень SQLAlchemy: таблицы, выражения SQL (
select,insert), соединения и транзакции без объектов и отслеживания изменений. ORM построен поверх него.- Squash merge
Способ слить pull request, при котором все коммиты ветки объединяются в один коммит в целевой ветке. История
mainполучается короткой, но промежуточные коммиты в неё не попадают.- SSRF (подделка запроса со стороны сервера)
Server-Side Request Forgery — атакующий заставляет сервер сделать HTTP-запрос по своему адресу, например во внутреннюю сеть или к сервису метаданных облака. В OWASP Top 10:2025 входит в категорию контроля доступа.
- Staging-таблица (промежуточная таблица)
Таблица, куда загрузка сначала кладёт сырые данные из источника. Оттуда их проверяют и переносят в целевые таблицы set-based запросом, а при повторе staging просто очищают.
- Standalone-компонент
Компонент, который сам перечисляет свои зависимости в
importsи не объявляется в NgModule. Появился в Angular 14, стабилен с v15, по умолчанию с v19.- Starlette
Лёгкий ASGI-фреймворк: маршрутизация, middleware, запросы и ответы, WebSocket. FastAPI наследует от него класс приложения и добавляет зависимости, валидацию и OpenAPI.
- Startup-проба (startup probe)
Проверка Kubernetes, которая ждёт окончания запуска контейнера. Пока она не прошла, liveness и readiness не выполняются; при провале контейнер перезапускается.
- Stateful reconnect (переподключение с состоянием)
Режим SignalR (.NET 8+), при котором сервер и клиент буферизуют неподтверждённые сообщения и после короткого обрыва восстанавливают то же соединение без потерь.
- Stateless-сервис
Сервис, который не хранит состояние между запросами в своей памяти: сессии, корзины и файлы лежат во внешнем хранилище. Любой экземпляр может обработать любой запрос.
- Sticky sessions (привязка сессии)
Настройка балансировщика, при которой все запросы клиента идут на один и тот же сервер, обычно по cookie или IP. Также называется session affinity.
- Strangler fig («фикус-душитель»)
Паттерн постепенной замены системы: новый код встаёт рядом со старым и забирает функции по одной, пока старую систему не станет можно отключить. Название дал Мартин Фаулер.
- StrictMode
Режим проверок React в разработке: компоненты рендерятся дважды, а эффекты проходят лишний цикл setup → cleanup → setup. Так находятся нечистый рендер и эффекты без очистки.
- StringBuilder
Изменяемый буфер для построения строки по частям. Дописывает символы без промежуточных строк и создаёт итоговую
stringвToString().- STS (Standard Term Support)
Релиз .NET с поддержкой 24 месяца (начиная с .NET 9, раньше было 18). Это нечётные версии: .NET 9, .NET 11.
- Suspense
Компонент React, который показывает fallback, пока дочерние компоненты ждут данные или код. На сервере его границы задают части, которые стримятся отдельно.
- switch-выражение (switch expression)
Выражение
x switch { шаблон => результат, ... }(C# 8), которое возвращает значение первой подошедшей ветки. Если не подошла ни одна, бросаетSwitchExpressionException.- Sync block
Внутренняя структура CLR, куда переезжает состояние Monitor, когда блокировка на объекте становится конкурентной. Владельцев и ждущих можно увидеть командой syncblk в дампе.
- Sync-over-async
Синхронное ожидание асинхронной операции через .Result, .Wait() или GetAwaiter().GetResult(). Блокирует поток на всё время операции и чаще всего вызывает голодание пула.
- Synchronizer token pattern
Схема защиты от CSRF: сервер выдаёт клиенту непредсказуемый токен, связанный с пользователем, и принимает изменяющий запрос, только если токен вернулся вместе с ним.
- System.Threading.Lock
Выделенный тип блокировки, появившийся в .NET 9. Если выражение в lock имеет этот тип, C# 13 и новее генерируют вызов EnterScope вместо Monitor.
- Tag helper
Класс, который на сервере обрабатывает HTML-элемент в Razor-разметке, например
<a asp-action="...">или<input asp-for="...">. Подключается директивой@addTagHelper.- takeUntilDestroyed
Оператор из
@angular/core/rxjs-interop, который завершает подписку при уничтожении компонента или сервиса. В injection context берётDestroyRefсам, вне его — принимает параметром. Стабилен с v19.- TanStack Query (React Query)
Библиотека для серверного состояния: загружает данные, кеширует их по ключу запроса, перезапрашивает устаревшие и инвалидирует после мутаций.
- Task.WhenAll
Метод, который возвращает задачу, завершающуюся после всех переданных задач. Если какие-то из них упали, она содержит все их исключения.
- TaskGroup
Асинхронный контекстный менеджер Python 3.11+, который ждёт все запущенные в нём задачи. Если одна падает, остальные отменяются, а ошибки собираются в
ExceptionGroup.- TBytes
Динамический массив байтов (array of Byte) в Delphi. С переходом на Unicode двоичные данные хранят в TBytes, а не в строке, потому что строка теперь двухбайтовая и перекодируется.
- TDataSet
Абстрактный базовый класс наборов данных в Delphi: курсор по строкам, поля, состояния, события и навигация. От него наследуются наборы ADO, FireDAC, dbExpress и
TClientDataSet.- Tell, Don't Ask
Принцип: не вытаскивать данные объекта, чтобы принять решение за него, а попросить объект выполнить действие. Так поведение остаётся рядом с данными.
- TEncoding
Класс RTL Delphi для преобразования текста в байты и обратно в заданной кодировке: UTF-8, UTF-16, ANSI или конкретная кодовая страница. Умеет распознавать и записывать BOM.
- Test double (дублёр)
Общее название объекта, который в тесте заменяет настоящую зависимость. Виды по Джерарду Мезаросу — dummy, stub, spy, mock и fake.
- Testcontainers
Библиотека, которая из кода теста запускает Docker-контейнеры — SQL Server, PostgreSQL, Redis, брокеры — и удаляет их после прогона. Тесты работают с настоящей инфраструктурой той же версии, что в проде.
- TFM (target framework moniker)
Короткое имя целевой платформы в проекте и NuGet-пакете:
net48,netstandard2.0,net10.0,net10.0-windows.- TGT (Ticket Granting Ticket)
«Билет на получение билетов» Kerberos: его выдаёт KDC после проверки пароля, и по нему клиент получает сервисные билеты без повторного ввода пароля. Зашифрован ключом учётки
krbtgt, по умолчанию живёт 10 часов.- this в JavaScript
Ключевое слово, значение которого задаётся способом вызова функции:
new,call/apply/bind, вызов через объект или обычный вызов. У стрелочных функций своегоthisнет.- THTTPClient
HTTP-клиент из модуля System.Net.HttpClient без визуальных компонентов. Использует системный стек HTTP платформы и подходит для вызова REST-сервисов из Delphi-клиента.
- Tiered compilation (многоуровневая компиляция)
Режим JIT, при котором метод сначала компилируется быстро и без оптимизаций, а после 30 вызовов перекомпилируется с оптимизациями в фоне. Включён по умолчанию с .NET Core 3.0.
- TimeProvider
Абстракция системного времени в .NET 8+: текущее время, часовой пояс и таймеры. В тестах её заменяют на
FakeTimeProviderиз пакетаMicrosoft.Extensions.TimeProvider.Testingи сдвигают время вручную.- timestamptz (timestamp with time zone)
Тип PostgreSQL для момента времени. При вводе значение переводится в UTC, при выводе — в часовой пояс сессии; исходное смещение не сохраняется, в отличие от
datetimeoffsetв SQL Server.- TInterfacedObject
Базовый класс RTL с потокобезопасной реализацией
IInterface: считает интерфейсные ссылки и уничтожает объект, когда счётчик доходит до нуля. Наследников держат только через интерфейсные переменные и не освобождают черезFree.- TLS (Transport Layer Security)
Протокол поверх TCP, который шифрует трафик, защищает его от подмены и подтверждает подлинность сервера сертификатом. HTTPS — это HTTP поверх TLS; актуальные версии — 1.2 и 1.3.
- TOAST
Механизм хранения больших значений в PostgreSQL: если строка шире ~2 КБ, крупные поля сжимаются и выносятся в отдельную служебную таблицу. Изменение такого значения переписывает его целиком.
- Token bucket (корзина токенов)
Алгоритм ограничения скорости: корзина пополняется токенами с постоянной скоростью, каждая операция забирает токен. Допускает короткие всплески до размера корзины, а в среднем держит заданную скорость.
- Token exchange (обмен токенов)
Grant OAuth 2.0 из RFC 8693: сервис отдаёт серверу авторизации входящий токен и получает новый для другого
audience. Пользователь остаётся вsub, вызывающий сервис попадает вact.- Trace ID (идентификатор трассировки)
Идентификатор W3C Trace Context, общий для всех операций одного запроса в распределённой системе. ASP.NET Core берёт его из
Activity.Currentи добавляет в ProblemDetails какtraceId.- Transactional outbox
Шаблон, в котором событие сохраняется в таблицу outbox той же локальной транзакцией, что и бизнес-данные, а отдельный процесс (relay) потом публикует его в брокер. Даёт доставку at-least-once без распределённой транзакции.
- TransactionScope
Класс System.Transactions, который создаёт ambient-транзакцию: соединения, открытые внутри блока, входят в неё сами. По умолчанию уровень SERIALIZABLE и таймаут 1 минута.
- Trimming (обрезка)
Удаление неиспользуемого кода приложения и библиотек при публикации. Уменьшает размер, но может сломать код, который находит типы через рефлексию; опасные места показывают trim-анализаторы.
- Trunk-based development (разработка в основной ветке)
Модель, при которой все разработчики часто вливают небольшие изменения в одну ветку (trunk, обычно
main) и не держат других долгоживущих веток разработки. Незаконченное прячут за feature flags.- Truthy и falsy
Как значение ведёт себя в логическом контексте (
if,&&,||). Falsy —false,0,-0,0n,'',null,undefinedиNaN; всё остальное, включая[]и'0', — truthy.- TryAdd и TryAddEnumerable
Методы регистрации из
Microsoft.Extensions.DependencyInjection.Extensions.TryAdd*добавляет сервис, только если он ещё не зарегистрирован,TryAddEnumerable— если нет такой же пары «сервис и реализация».- TThread
Класс Delphi для фонового потока: код пишется в
Execute, остановку запрашиваетTerminate, а код в главный поток передаютSynchronizeиQueue.- Type guard (защитник типа)
Функция с типом результата
value is T: если она вернулаtrue, компилятор сужает тип аргумента доT. Корректность проверки внутри — на совести автора.- Type stripping (стирание типов)
Встроенный в Node.js запуск файлов
.ts: аннотации типов заменяются пробелами, код не транспилируется и типы не проверяются. Включён по умолчанию с Node 22.18 и 23.6, стабилен с 24.12 и 25.2;enumиnamespaceс кодом не поддерживаются.- TypedResults
Фабрика результатов Minimal API (.NET 7+), которая возвращает конкретные типы вроде
Ok<T>иNotFound. Тип ответа виден в сигнатуре и автоматически попадает в метаданные эндпоинта и OpenAPI.- Unboxing (распаковка)
Извлечение значения значимого типа из упакованного объекта: проверка типа и копирование. Распаковать можно только в исходный тип или в
Nullableот него, иначе —InvalidCastException.- uncaughtException
Событие процесса Node.js для исключения, которое дошло до event loop необработанным. По умолчанию Node печатает стек и завершается с кодом 1; продолжать работу после него небезопасно.
- UnicodeString
Строковый тип Delphi с подсчётом ссылок, в котором текст хранится в UTF-16. С Delphi 2009 тип string — это UnicodeString, а Char — двухбайтовый WideChar.
- Upsert (INSERT ... ON CONFLICT)
Операция «вставить, а если такая строка уже есть — обновить». В PostgreSQL это
INSERT ... ON CONFLICT DO UPDATE, атомарный при параллельных вставках благодаря уникальному индексу; в SQL Server обычноMERGEс подсказкойHOLDLOCK.- URL (адрес ресурса)
Строка вида
https://host:port/path?query#fragment: схема, хост, путь, строка запроса и фрагмент. Сервер маршрутизирует запрос по пути и строке запроса, а фрагмент после#в запрос не попадает и остаётся только в браузере.- useEffectEvent
Хук React 19.2 для логики, которая читает свежие props и state, но не должна перезапускать эффект. Функцию из него вызывают только внутри эффектов и не указывают в зависимостях.
- User Secrets (Secret Manager)
Хранилище секретов для разработки: нешифрованный
secrets.jsonв профиле пользователя, вне каталога проекта.WebApplication.CreateBuilderподключает его только в окруженииDevelopment.- using-объявление (using declaration)
Форма
using var x = ...;без фигурных скобок (C# 8):Disposeвызывается в конце области видимости, где объявлена переменная. Несколько объявлений освобождаются в обратном порядке.- UTF-16
Кодировка Unicode, в которой символ занимает 2 байта, а символы вне базовой плоскости (например эмодзи) — 4 байта, суррогатную пару. Ею пользуются Windows API, строки Delphi и .NET.
- Utility types
Встроенные generic-типы TypeScript, которые строят новый тип из существующего:
Partial,Required,Readonly,Pick,Omit,Record,ReturnType,Awaitedи другие.- UUIDv7
Версия UUID из RFC 9562: первые 48 бит — время в миллисекундах от Unix-эпохи, остальное — версия и случайные биты, поэтому значения растут со временем. В .NET 9+ создаётся через
Guid.CreateVersion7().- uv
Менеджер пакетов и проектов Python от Astral, написанный на Rust. Создаёт окружения, разрешает и закрепляет зависимости, ставит версии Python и запускает утилиты — заменяет pip, venv, pip-tools и pipx.
- Uvicorn
ASGI-сервер для Python: принимает HTTP-соединения и вызывает приложение в своём цикле событий. Флаг
--workersзапускает несколько процессов.- V8
JavaScript-движок от Google, общий для Chrome и Node.js. Компилирует и выполняет JavaScript, управляет кучей и сборкой мусора; ввод-вывод в нём нет, его даёт libuv.
- VACUUM
Команда обслуживания PostgreSQL: убирает мёртвые версии строк, обновляет карту видимости и замораживает старые строки, защищая от переполнения счётчика транзакций. Обычно её запускает фоновый процесс autovacuum.
- ValidateOnBuild
Опция
ServiceProviderOptions, при которой контейнер ещё приBuild()проверяет, что каждый зарегистрированный сервис можно создать. Открытые generic-регистрации не проверяет; по умолчанию включена в Development.- ValidateOnStart
Метод
OptionsBuilder<T>(.NET 6+), который запускает валидацию настроек при старте хоста. Без него ошибка проявится только при первом обращении к настройкам.- ValueTask
Структура, которая представляет результат асинхронной операции без обязательной аллокации
Task. Её можно ожидать только один раз.- View component (компонент представления)
Класс-наследник
ViewComponentсо своим представлением, который сам загружает данные и рендерит блок страницы: корзину, меню. Вызывается из представления, а не по HTTP.- ViewModel (модель представления)
Класс, созданный под конкретную страницу: только поля, которые она показывает или принимает. Отделяет представление от сущностей базы и защищает от overposting.
- volatile
Модификатор поля C#: все обращения к полю становятся volatile-чтениями и volatile-записями с порядком acquire/release. Атомарности составных операций он не даёт.
- W3C Trace Context
Стандарт заголовков
traceparentиtracestateдля передачи контекста трейса между сервисами. В .NET это формат идентификаторовActivityпо умолчанию.- WAI-ARIA
Спецификация W3C с атрибутами
roleиaria-*, которые дополняют дерево доступности там, где HTML не хватает семантики. Меняет только то, что слышит скринридер, но не поведение элемента.- WCAG (Web Content Accessibility Guidelines)
Стандарт W3C с проверяемыми критериями доступности уровней A, AA и AAA. Актуальная версия — WCAG 2.2 (октябрь 2023); законы обычно требуют уровень AA.
- WebApplicationFactory
Класс из пакета
Microsoft.AspNetCore.Mvc.Testing, который запускает приложение ASP.NET Core в памяти наTestServerи выдаётHttpClientдля запросов к нему. Позволяет подменить сервисы и настройки.- WebSocket
Протокол постоянного двустороннего соединения поверх одного TCP-соединения. Начинается с HTTP-запроса на Upgrade и ответа
101 Switching Protocols.- Window Spool
Оператор плана SQL Server в row mode, который хранит строки рамки окна. Для
ROWSс рамкой меньше 10 000 строк он работает в памяти, дляRANGE— с рабочей таблицей в tempdb, что заметно медленнее.- Windows-аутентификация
Вход в веб-приложение под доменной учётной записью Windows без ввода пароля: браузер и сервер обмениваются токенами Kerberos или NTLM в HTTP-заголовках. В IIS и ASP.NET Core её также называют Negotiate-аутентификацией.
- WireMock.Net
Эмулятор HTTP-сервисов для .NET: поднимает настоящий HTTP-сервер с заготовленными ответами, задержками и ошибками. Применяется в интеграционных тестах внешних API.
- Work stealing (кража работы)
Приём планировщика: свободный поток забирает работу из локальной очереди другого потока. Так пул потоков балансирует нагрузку без общей точки конкуренции.
- work_mem
Параметр PostgreSQL: сколько памяти может занять одна операция сортировки или хеширования, прежде чем уйти на диск. Выделяется на каждую такую операцию в каждом соединении, поэтому большие значения задают точечно.
- Worker Service
Шаблон .NET (
dotnet new worker) для долгоживущего фонового процесса без HTTP: Generic Host и класс-наследникBackgroundService. Запускается как консоль, контейнер, служба Windows или systemd.- worker_threads
Модуль Node.js для потоков внутри процесса. У каждого воркера свой изолят V8, куча и event loop; данные передают через
postMessageилиSharedArrayBuffer. Нужен для CPU-работы, а не для ввода-вывода.- Workstation GC
Режим GC с одной кучей, в котором сборка идёт на потоке, вызвавшем её. По умолчанию используется в консольных и десктопных приложениях.
- WOW64
Подсистема 64-битной Windows, которая запускает 32-битные программы. Она перенаправляет их системные вызовы, папки и реестр, но 32-битный и 64-битный код в одном процессе не смешиваются.
- Write skew (асимметрия записи)
Аномалия снимков: две транзакции читают одни данные, проверяют условие и меняют разные строки, и вместе нарушают это условие. SNAPSHOT её не ловит, ловит SERIALIZABLE.
- Write-through (сквозная запись)
Паттерн, при котором запись идёт одновременно в кеш и в источник, и кеш всегда содержит последнюю записанную версию. Цена — более медленная запись.
- WS-Federation
Протокол федеративного входа через браузер: приложение перенаправляет пользователя на STS, тот возвращает формой POST подписанный токен, обычно SAML-assertion. В ASP.NET Core — пакет
Microsoft.AspNetCore.Authentication.WsFederation.- XSS (межсайтовый скриптинг)
Атака, при которой в страницу попадает чужой JavaScript, например из пользовательских данных. Скрипт выполняется в браузере жертвы с правами вашего сайта.
- xUnit.net
Популярный тестовый фреймворк .NET:
[Fact]и[Theory], новый экземпляр класса на каждый тест, общие ресурсы через fixture. Текущая линейка — v3, пакетxunit.v3.- YAGNI (You Aren't Gonna Need It)
Правило экстремального программирования: не реализовывать функциональность, пока она не нужна. Не запрещает рефакторинг и тесты, которые упрощают будущие изменения.
- YARP (Yet Another Reverse Proxy)
Библиотека Microsoft для построения обратного прокси на ASP.NET Core (пакет
Yarp.ReverseProxy). Используется для шлюзов API и для поэтапного переноса ASP.NET-приложений на ASP.NET Core.- Zod
Библиотека схем для TypeScript: проверяет данные в рантайме и выводит из схемы статический тип через
z.infer. Применяется на границах — ответы API, формы, конфигурация.- zone.js
Библиотека, которая подменяет асинхронные API браузера (
setTimeout,Promise, события, XHR) и сообщает Angular о завершении задач. Так фреймворк узнавал, когда запускать проверку изменений; с v21 новые приложения обходятся без неё.- Zoneless
Режим Angular без zone.js: проверка изменений запускается только по явным уведомлениям — сигналам, событиям в шаблоне,
markForCheck(). Стабилен с v20.2, по умолчанию в новых приложениях с v21.- Zustand
Небольшая библиотека глобального состояния для React: стор создаётся функцией
createи используется как хук без провайдера. Компонент подписывается селектором и перерисовывается только при смене выбранной части.