Constructor parameters declared right in the type declaration: class Service(ILogger log). Available for class and struct since C# 12; the parameters are in scope in the whole type body but do not become properties.
Glossary
Terms used in the answers. In the text they have a dotted underline and open on tap.
- .editorconfig
A settings file in the repository shared by the IDE and the build: indentation, code style and analyzer rule severities (
dotnet_diagnostic.CA2016.severity = error). It applies to its folder and the folders below.- .NET Core (modern .NET)
The cross-platform, open-source .NET implementation, first released in 2016. Since version 5 it is simply called .NET and ships every November.
- .NET Framework
The original Windows-only .NET implementation, shipped as part of the OS. The last version is 4.8.1; it is supported as long as Windows is, but gets no new features.
- .NET Hosting Bundle
An installer for Windows servers with IIS: it installs the .NET runtime, ASP.NET Core and the ASP.NET Core Module. Without it IIS can't run ASP.NET Core apps.
- .NET memory model
The rules for which reorderings of reads and writes the compiler, JIT and CPU may perform, and what other threads observe. It is described in the Memory-model.md spec in the dotnet/runtime repository.
- .NET SDK
The development kit: compiler, MSBuild, templates and the
dotnetcommand withbuild,testandpublish. The runtime alone only runs a built app, and the SDK version for a repository is pinned inglobal.json.- .NET Standard
A formal specification of APIs available across several .NET implementations. The last version is 2.1;
netstandard2.0is the last one .NET Framework supports.- @defer block (deferrable views)
A template block whose code is loaded as a separate chunk on a trigger: entering the viewport, browser idle time, user interaction. The
@placeholderand@loadingblocks show a stand-in. Introduced in Angular 17.- ABAC (attribute-based access control)
A model where a rule over attributes of the subject, object, operation and environment — department, classification, time, network — makes the decision. Described in NIST SP 800-162.
- Absolute expiration
The entry is removed from the cache at a set moment or a set time after it was added, no matter how often it is read.
- Abstract class
A class marked
abstract: you cannot create an instance of it, only inherit from it. It can contain fields, constructors, ready-made methods and abstract members without a body that a derived class must implement.- Abstract Factory
A creational pattern: an interface with methods for creating a whole family of matching objects without naming their concrete classes. An example in .NET is
DbProviderFactory.- Abstraction
An OOP principle: only the contract that matters to the client is visible — what the object can do, not how it does it. In C# abstractions are defined by interfaces and abstract classes.
- Accelerated database recovery (ADR)
A SQL Server 2019+ feature that keeps row versions inside the database itself. Rollback and crash recovery become almost instant, and the log can be truncated even during long transactions.
- Access review
A regular check of granted permissions: a manager or resource owner confirms that the access is still needed or revokes it. Also called recertification or attestation.
- Access token
The token a client uses to call an API. It is addressed to the resource server and limited by scopes, audience and a short lifetime.
- Accessibility tree
A structure the browser builds from the DOM for assistive technologies: every node has a role, an accessible name, a description and a state.
- Accidental complexity
Complexity introduced by the solution rather than the problem: extra layers, abstractions, tools. Contrasted with essential complexity in Fred Brooks's essay "No Silver Bullet" (1986).
- ACID
The four properties of a transaction: atomicity (all or nothing), consistency (constraints hold), isolation (concurrent transactions don't see intermediate states) and durability (committed data survives a crash).
- Acquire/release semantics
Ordering for a pair of operations: after an acquire read, later accesses do not run before it, and before a release write, earlier accesses are not delayed past it. Volatile.Read and Volatile.Write work this way.
- Action (action method)
A public controller method that handles a request for a route. It returns an
IActionResult, such as a view, a redirect or JSON.- Action (React 19)
An async function run inside a transition, for example one passed to
<form action>. React tracks its pending state and errors and supports optimistic updates.- ActivatorUtilities
A helper class that creates an object of an unregistered type, taking constructor arguments from an
IServiceProvider. The calling code, not the container, owns the created object.- Active Directory (AD)
Microsoft's directory service: it stores user and computer accounts, groups and domain policies. Domain controllers verify passwords and issue Kerberos tickets.
- Activity
The .NET type for one step (span) of a distributed trace: name, timing, tags,
TraceIdandSpanId. The current span is available asActivity.Current; spans are created throughActivitySource.- Ad hoc polymorphism
Different behavior for different types through separate implementations sharing one name: method and operator overloading. The compiler picks the version by the static argument types.
- Adapter
A structural pattern: a wrapper implements the interface the client expects and translates calls into the API of another object with an incompatible interface.
- ADFS (Active Directory Federation Services)
A Windows Server role acting as a security token service: it verifies users against AD and issues applications signed tokens over WS-Federation, SAML 2.0 or OpenID Connect. Microsoft recommends moving from it to Microsoft Entra ID.
- Adjacency list
A way to store a graph: for each vertex, a list of its neighbours — in C# usually a
Dictionary<T, List<T>>. It takes O(V + E) memory and suits sparse graphs.- ADO (dbGo)
Delphi's
TADOConnection,TADOQueryandTADOStoredProccomponents on top of the Microsoft ActiveX Data Objects COM library. They reach SQL Server through an OLE DB provider.- ADO.NET
The base data access API in .NET:
DbConnection,DbCommand,DbDataReader, parameters and transactions. Providers such asMicrosoft.Data.SqlClientand Npgsql are built on it, and EF Core and Dapper sit on top.- Aggregate
A cluster of related objects changed as a single unit through its root. An aggregate is a consistency boundary: its invariants hold after every transaction.
- Aggregate function
A function that collapses a set of rows into one value:
COUNT,SUM,AVG,MIN,MAX. All of them exceptCOUNT(*)skipNULL.- AggregateException
A container exception for several errors.
.Wait()and.Resultwrap a task's exceptions in it, whileawaitrethrows the original exception unwrapped.- Alembic
The schema migration tool for SQLAlchemy from the same authors. It stores migrations as Python files and the applied version in the
alembic_versiontable.- Alembic revision
A migration file with a
revisionidentifier, adown_revisionlink to its parent andupgrade()anddowngrade()functions. Revisions form a graph of schema versions.- Algorithm confusion
An attack where the attacker changes
algin the header: tonone, or from RS256 to HS256, signing the token with the public key as an HMAC secret. The defense is a fixed set of algorithms bound to the key.- Aligned index
An index partitioned the same way as its table: the same partition function, or one with the same boundaries and column. Partition switching works only with aligned indexes.
- Always On availability group
SQL Server's high-availability feature: the primary replica ships the log to secondaries, and on failure one of them becomes the primary. In Enterprise the secondaries can be opened for reads.
- Amortized complexity
The average cost of an operation over a long series of calls.
List<T>.Addsometimes copies the whole array in O(n) but costs O(1) on average, because capacity grows by doubling.- Anemic domain model
A model where entities are just data with properties and all logic and checks live in services. Fowler calls it an anti-pattern; it is unrelated to choosing a layered or clean architecture.
- Angular component
A TypeScript class with the
@Componentdecorator, an HTML template and styles. The basic building block of the UI: an app is a tree of components nested through their templates.- Angular directive
A class with the
@Directivedecorator that adds behavior to an existing element, for example by changing its classes or attributes. A component is a directive with its own template.- Anonymous method
A nameless procedure or function that can be assigned to a
reference to procedurevariable or passed as a parameter. It is a closure: it captures outer variables (not values) and extends their lifetime. Introduced in Delphi 2009.- Anti join (anti semi join)
A join that returns rows of the left table that have no match on the right. In SQL it is written with
NOT EXISTS;NOT INgives the same result only when the subquery has noNULL.- Anti-corruption layer
A translation layer between your model and an external or legacy system. It converts foreign models, codes and errors so they don't spread through your code.
- Anti-pattern
A frequently repeated solution that seems reasonable but does more harm than good, and for which a better replacement is known.
- Antiforgery token
A pair of linked tokens: one in a cookie, the other in a hidden form field or a header. The server compares them, and a request from another site that doesn't know the field value is rejected.
- Apache Kafka
A broker built on a distributed log: messages go into topic partitions and are kept for a retention period, while consumers read by offset and can replay. Ordering is guaranteed within a partition, not across the topic.
- API (application programming interface)
The contract one program calls another through: a set of operations with their parameters, responses and errors. The contract matters more than the implementation — a breaking change breaks every consumer at once, which is why APIs are versioned.
- API gateway
A single entry point in front of a set of services: it routes requests, checks authentication, rate-limits and aggregates responses. In .NET gateways are often built on YARP.
- API versioning
Supporting several versions of a contract at once so breaking changes do not affect existing clients. The version is passed in the path, a query parameter, a header or the media type.
- APM (application performance monitoring)
Monitoring application performance by collecting traces, metrics and errors tied to requests. Examples are Elastic APM, Application Insights and Datadog.
- App pool recycling
A scheduled or forced restart of an IIS worker process: on a schedule, on a memory limit, or on a configuration change. By default the new process starts before the old one stops (overlapped recycle).
- App Router
The Next.js router based on the
app/folder: folders define URL segments,page.tsxa page,layout.tsxa shared shell. It is built on React Server Components.- AppDomain (application domain)
An isolated area inside a .NET Framework process for loading and unloading code. Modern .NET cannot create extra domains; use processes for isolation and
AssemblyLoadContextfor plugins.- Application builder
The Angular CLI builder based on esbuild, with a Vite dev server; the default for new projects since v17. It replaces the Webpack builders, which were deprecated in v22.
- APPLY operator (CROSS APPLY, OUTER APPLY)
A T-SQL operator that evaluates the table expression on the right for each row on the left, and that expression may reference the row's columns. CROSS APPLY drops rows with an empty result, OUTER APPLY keeps them with
NULL; the PostgreSQL counterpart isLATERAL.- ARC in Delphi (Automatic Reference Counting)
A model in which objects, like strings, were freed by reference counting. Delphi's mobile compilers used it, as did the Linux compiler from 10.2 Tokyo; 10.4 Sydney removed it for objects on all platforms.
- Architecture test
An automated test that checks dependency rules in code: for example, that the domain does not reference EF Core and one module does not reach into another's internals. In .NET they are written with NetArchTest or ArchUnitNET.
- Arrange-Act-Assert (AAA)
A three-step test layout: set up objects and data, perform the action under test, check the result. It keeps the test readable and separates the action from the checks.
- Array DML
Executing one parameterized command with arrays of parameter values: the DBMS runs it for each row of the array while the client talks to the server once. In FireDAC —
Params.ArraySizeandExecute.- ArrayPool<T>
A pool of reusable arrays:
Renthands out an array at least as long as requested, andReturngives it back. It reduces buffer allocations; afterReturnthe array must not be used.- Arrow function
A short function syntax,
(x) => x * 2. It has nothis,argumentsorsuperof its own — it takes them from the enclosing scope — and cannot be called withnew.- AS2 (Applicability Statement 2)
A protocol for sending EDI documents over HTTP with S/MIME signing and encryption and a signed delivery receipt (MDN). Defined in RFC 4130.
- ASGI
Asynchronous Server Gateway Interface — the standard that connects an async web server to a Python application. The application is a coroutine the server calls for each connection.
- ASP.NET Core Module (ANCM)
A native IIS module that runs an ASP.NET Core app inside the
w3wp.exeworker process (in-process) or as a separate process with Kestrel (out-of-process). It is installed with the .NET Hosting Bundle.- Aspire (formerly .NET Aspire)
A Microsoft platform for local orchestration and observability of distributed apps. The topology is described in code in an AppHost; Aspire starts the services, wires connection strings and adds a dashboard.
- Assembly
A
.dllor.exefile with IL code, metadata and a manifest. The unit of deployment, versioning and code loading in .NET.- AssemblyLoadContext
An assembly loading context in .NET: one context holds one version of an assembly with a given name. Separate contexts let you load different versions and unload plugins.
- Assertion rewriting
Rewriting of
assertstatements when test modules are imported. Thanks to it, pytest shows the values of both sides of a failed comparison without special assertion methods.- Asymptotic complexity (Big O)
An estimate of how an operation's time or memory grows with the number of items n. O(1) does not depend on n, O(log n) grows very slowly, O(n) grows in proportion to n.
- async pipe
A template pipe that subscribes to an Observable or Promise, returns the latest value and unsubscribes when the component is destroyed. It also calls
markForCheck(), so it works with OnPush.- Async stream
An
IAsyncEnumerable<T>sequence whose items arrive asynchronously. It is produced by anasyncmethod withyield returnand consumed withawait foreach; introduced in C# 8.- async void
An asynchronous method that returns
voidinstead ofTask. It cannot be awaited, and an unhandled exception goes to theSynchronizationContextor the thread pool and can terminate the process.- async/await
A pair of C# keywords:
asyncmarks a method the compiler rewrites into a state machine, andawaitsuspends it until the result is ready, returning control to the caller. The thread is not blocked while waiting — the continuation runs once the operation completes.- Asynchronous request-reply
A pattern for long-running operations over HTTP: the server immediately returns 202 Accepted with a status URL, and the client polls it or gets notified when the result is ready.
- asyncio event loop
The single-threaded asyncio scheduler: it runs ready tasks until their next
await, then asks the OS which I/O has completed. Started withasyncio.run().- asyncio Task
A wrapper that schedules a coroutine on the event loop and runs it independently of the caller. Created with
asyncio.create_task(); the loop keeps only weak references to tasks.- AsyncLocalStorage
A Node.js class from
node:async_hooksthat stores data available throughout the chain of asynchronous calls of one request. The counterpart ofAsyncLocal<T>in .NET; NestJS apps use it to pass the user and request id without request scope.- At-least-once
A delivery or execution guarantee under which work is never lost but may run again after a failure. The handler has to be idempotent.
- At-most-once
A delivery guarantee where a message is never processed twice but may be lost. You get it by acknowledging a message before processing it.
- Atomic operation
An operation that happens all at once: other threads see either the state before it or after it, never in between. In .NET, reads and writes of aligned values up to pointer size and Interlocked methods are atomic.
- Audience
The
audclaim: which recipient the token was issued for. An API must reject tokens with a different audience, otherwise a token for one service would work against another.- Authentication
Establishing who is making the request: by password, certificate, Windows account or token. In ASP.NET Core the result is a
ClaimsPrincipalinHttpContext.User.- Authentication cookie
A cookie in which ASP.NET Core stores the user's ticket, encrypted with Data Protection: claims and expiry. The browser attaches it to every request; the server keeps no session.
- Authentication scheme
A named registration of an authentication handler in ASP.NET Core:
Cookies,OpenIdConnect,Bearer. The scheme defines how to authenticate a request, issue a challenge, sign in and sign out.- Authorization
Deciding what an already identified user may do: which endpoint to call, which document to open. Refusing a signed-in user is 403, refusing an anonymous one is 401.
- Authorization code flow
The OAuth flow in which the browser receives a one-time code and the client exchanges it for tokens in a direct request to
/token. The main flow for user sign-in.- Authorization handler
An
IAuthorizationHandlerimplementation, usually derived fromAuthorizationHandler<TRequirement>, that checks a requirement and callscontext.Succeedorcontext.Fail. Registered in DI; one requirement can have several handlers.- Authorization policy
A named set of requirements in ASP.NET Core. It is registered with
AddAuthorizationBuilder().AddPolicy, applied with[Authorize(Policy = "...")]orRequireAuthorization, and succeeds when all its requirements succeed.- Authorization requirement
A class with the
IAuthorizationRequirementmarker interface that describes a rule and its parameters, such as a required permission or a minimum age. Handlers do the actual check.- Authorization server
The service that authenticates the user and issues tokens: Keycloak, Microsoft Entra ID, ADFS, Duende IdentityServer. In OIDC terms it is the OpenID Provider.
- auto_explain
A PostgreSQL module that automatically logs the plans of queries running longer than a threshold (
auto_explain.log_min_duration). It lets you see the plan of a slow production query without running it by hand.- Autocommit
A mode in which every statement is its own transaction and is committed right after it runs. The default mode in SQL Server, SqlClient and PostgreSQL.
- Autofac
A popular third-party DI container for .NET. It plugs into ASP.NET Core through
UseServiceProviderFactoryand adds modules, decorators, property injection and tagged scopes.- AutoFixture
A library that generates test data: it creates objects with populated properties so the test sets only the values that matter to it. Extensions supply NSubstitute or Moq doubles and pass data into test parameters.
- Autogenerate (Alembic)
The
alembic revision --autogeneratemode, which compares the models'MetaDatawith the database schema and writes a draft migration. It does not detect renames or unnamed constraints.- Awaiter
The object returned by
GetAwaiter()thatawaitworks through. It exposesIsCompleted,OnCompletedandGetResult.- Azure SignalR Service
A managed Azure service that accepts SignalR client connections instead of your server and relays messages. It removes the need for sticky sessions and a backplane.
- B-tree (B+ tree)
A balanced tree of pages in which SQL Server stores regular (rowstore) indexes: root, intermediate levels and leaves. Every leaf is the same distance from the root, so a key lookup costs a few page reads even in a huge table.
- Back-of-the-envelope estimate
A quick order-of-magnitude calculation from assumptions: requests per second, data volume, traffic, cache memory. The goal is the right order of magnitude, not a precise percentage.
- Backends for Frontends (BFF)
Sam Newman's pattern: a separate backend for each client type — web, mobile app — that aggregates service calls and shapes responses for that client. It is owned by the client's team.
- Backfill
Filling a new column or table with historical data after it has been added. On large tables it runs in batches so that transactions stay short.
- Background GC
A generation 2 collection on a dedicated thread that runs concurrently with the app; ephemeral GCs still happen as usual in the meantime. On by default.
- BackgroundService
A base class for long-running background work in a .NET host: the logic goes into
ExecuteAsync, and it is registered withAddHostedService, that is, as a singleton.- Backpressure
A mechanism where an overloaded consumer slows the producer down instead of piling work up in memory. With channels, a bounded channel in Wait mode provides it.
- base64url
A base64 variant for URLs and headers:
-and_instead of+and/, with no=padding. It is encoding, not encryption: anyone can decode the string.- Batch mode
An execution mode in which an operator processes a batch of rows at a time instead of one row. The native mode for columnstore; since SQL Server 2019 at compatibility level 150 it is also available for regular tables.
- Bearer token
An access token, usually a JWT, that the client sends in the
Authorization: Bearer ...header. The browser doesn't attach it by itself, so CSRF doesn't apply to it.- Behavioral pattern
A pattern that distributes responsibilities between objects and describes how they interact. GoF lists eleven, including Strategy, Observer, Command, Iterator and Template Method.
- BenchmarkDotNet
A .NET microbenchmarking library: warmup, statistics, comparison across runtimes.
[MemoryDiagnoser]shows allocations per operation, and[DisassemblyDiagnoser]shows the machine code produced by the JIT.- BFF (Backend for Frontend)
The SPA's server side on the same site: it signs in via OIDC as a confidential client, keeps the tokens and proxies API calls, giving the browser only an HttpOnly cookie.
- Big Ball of Mud
A system with no discernible architecture that grew out of expedient decisions. Described by Brian Foote and Joseph Yoder in 1997.
- Binary heap
A tree stored in an array where every parent is no larger than its children, so the minimum is at the root. Insert and extract-min are O(log n). In .NET,
PriorityQueue<TElement, TPriority>is built on a heap.- Binary search
Searching a sorted array by halving the range: compare with the middle and discard the half where the element can't be. Runs in O(log n); in .NET —
Array.BinarySearchandList<T>.BinarySearch.- Binary search tree
A tree in which every node's left subtree holds smaller keys and its right subtree larger ones. Lookup, insert and delete cost O(height): O(log n) for a balanced tree and O(n) for a degenerate one.
- Binding redirect
A setting in a .NET Framework app's
app.configthat redirects requests for some versions of an assembly to another version. Not used in modern .NET.- Blameless postmortem
An incident review without looking for someone to blame: timeline, impact, causes and action items with owners. It asks why the system and processes allowed the mistake to happen.
- Blazor
The ASP.NET Core model where the UI is written in C# as Razor components. Blazor Server keeps state on the server and ships events over SignalR, Blazor WebAssembly runs the code in the browser, and since .NET 8 the render mode is chosen per component.
- Bloat
Space in a table or index occupied by dead versions and the gaps they leave. Queries read extra pages; plain VACUUM reuses the space but does not return it to the OS.
- BlockingCollection
A synchronous thread-safe queue with an optional capacity: Add and Take block the thread when the queue is full or empty. It wraps a ConcurrentQueue by default.
- Blue-green deployment
A strategy with two full copies of the environment: the new version is deployed next to the old one with no traffic, passes checks, and the load balancer switches to it. The old copy stays for an instant rollback.
- Bounded context
A boundary inside which a model and its terms have one meaning. A "product" in the warehouse and in the catalog are different models in different contexts; a context is a natural candidate for a module or a service.
- Box model
The way CSS treats every element as a rectangle of content, padding, border and margin. What
widthincludes is set bybox-sizing.- Boxing
Copying a value-type value into a new heap object so it can be treated as
objector an interface. The reverse operation is unboxing.- Branch
A movable pointer to a commit. A new commit automatically moves the current branch to it, so creating a branch means writing one hash, not copying files.
- Branch protection
Repository settings that block merging into a branch such as
mainuntil the required pipeline checks pass and reviewers approve. In GitHub these are protected branches and rulesets.- Breadth-first search (BFS)
Graph traversal level by level using a queue: first all neighbours, then neighbours of neighbours. Finds the shortest path by edge count in an unweighted graph in O(V + E).
- Breaking change
A contract change after which an existing client stops working: removing or renaming a field, changing a type, a new required parameter, a different meaning of a status code.
- BRIN index
A Block Range Index: stores the minimum and maximum for each group of adjacent table pages. Very small, but useful only when values correlate with the physical row order, like timestamps in a log.
- Broken access control
A user reads or changes what they shouldn't: someone else's orders, admin functions. The first category of the OWASP Top 10 in both the 2021 and 2025 editions.
- Build artifact
The pipeline output that gets stored and deployed: an archive of
dotnet publishoutput, a NuGet package or a container image. It is built once and promoted through environments without rebuilding.- Builder
A creational pattern: a complex object is assembled through step-by-step calls on a separate builder object, and a final
Buildmethod validates the data and returns the result.- Built-in control flow (@if, @for, @switch)
Angular 17+ template syntax for conditions and loops that replaces the
*ngIf,*ngForandngSwitchdirectives.@forrequirestrackand has an@emptyblock; the old directives are deprecated since v20.- Bulkhead
Isolating resources per dependency: capping concurrent calls to one dependency so that if it hangs it cannot take all threads and connections. In Polly v8 this is a concurrency limiter.
- Burn rate
How many times faster than allowed a service consumes its error budget: the error rate divided by 1 − SLO. At a burn rate of 1 the budget runs out exactly at the end of the SLO window.
- C extension (extension module)
A module written in C, C++ or Rust against the Python C API and loaded like a regular module. It runs outside the bytecode interpreter and can release the GIL — this is how NumPy and many ML libraries work.
- Cache invalidation
Removing cache entries or marking them stale when the underlying data changes: by lifetime, by key, by tag or by event.
- Cache stampede
A situation where a popular entry disappears from the cache and many requests recompute it from the source at the same time. The source gets a load spike and may fall over.
- Cache tags
Labels attached to cache entries so a whole group can be cleared with one call:
EvictByTagAsyncin output cache,RemoveByTagAsyncinHybridCache.- Cache-aside
A pattern in which the app itself reads the cache, loads data from the source on a miss and stores it in the cache, and deletes the key when the data changes.
- Cache-Control
An HTTP header with caching directives:
public,private,max-age,no-cache,no-store. The client sets it on requests, the server on responses.- Cached updates
A mode in which record changes accumulate in a client-side log and are sent to the database in one
ApplyUpdatescall instead of on everyPost.- Call stack
A thread's memory where every method call pushes its frame with parameters, local variables and the return address. It is freed automatically when the method returns; its size is limited, and an overflow terminates the process.
- Call stack (JavaScript)
The stack of frames of running functions on JavaScript's single thread. While it is not empty, the event loop takes no new tasks; overflowing it throws
RangeError.- Canary release
A strategy where the new version first gets a small share of traffic or users. Its errors and latency are compared with the old version, and the share is increased in steps or rolled back.
- Cancellation token (CancellationToken)
A struct through which an operation learns about a cancellation request. The token itself cannot cancel anything — it can only be checked via
IsCancellationRequestedor observed viaRegister.- Cancellation token source (CancellationTokenSource)
An object that hands out tokens and cancels them with
Cancelor on a timeout viaCancelAfter. It implementsIDisposableand is disposed after use.- CancelledError
The exception
task.cancel()throws into a coroutine at anawait. It derives fromBaseException; after cleanup it must be re-raised, otherwise cancellation does not work.- Canonical data model
A shared message format that every system translates its data into. Instead of a mapping for every pair of systems, you need one mapping per system.
- CAP theorem
Brewer's conjecture, proved by Gilbert and Lynch in 2002: during a network partition a distributed system cannot keep both linearizability (C) and a response from every non-failing node (A).
- Captive dependency
A configuration error where a long-lived service holds a dependency with a shorter lifetime, for example a singleton holding a scoped service. The dependency then lives as long as its owner.
- Card table
A bitmap of memory ranges in older generations that had references stored into them. The write barrier fills it on every reference store, and a young-generation GC scans only the marked ranges.
- Cardinality estimation
The optimizer's prediction of how many rows each plan operator returns. It is based on statistics and drives join choice, operation order and the memory grant size.
- Cartesian explosion
The blow-up in result rows when one query joins several sibling collections: the rows of each collection multiply with each other. An order with 10 lines and 10 payments yields 100 rows.
- Cascading failure
A failure that spreads through a system: one component's failure overloads or disables others. An example is a readiness probe on a shared database that pulls every instance out of the load balancer at once when the database fails.
- CDN (content delivery network)
A network of servers in points of presence worldwide that caches and serves static assets and cacheable responses close to the user. It offloads the origin and cuts latency.
- Central Package Management (CPM)
Managing NuGet package versions for a whole repository in a single
Directory.Packages.propsfile. With transitive pinning it also sets versions of transitive dependencies.- Certificate chain (chain of trust)
The site's certificate is signed by an intermediate certificate authority, which is signed by a root the client already trusts. The server sends its own and the intermediate certificates, and the client verifies the signatures up to the root.
- Chain of Responsibility
A behavioral pattern: a request travels along a chain of handlers, and each one decides whether to handle it, pass it on, or stop. An example in .NET is the ASP.NET Core middleware pipeline.
- Challenge
What an authentication scheme does when an anonymous user needs to sign in: the cookie scheme redirects to a login page, OIDC to the provider, JWT bearer returns 401.
- Change data capture (CDC)
Capturing changes from a database's transaction log and delivering them to consumers as a stream of before-and-after events. In SQL Server it is a built-in feature with change tables (it needs SQL Server Agent), in PostgreSQL it is logical decoding; Debezium turns such a stream into Kafka events.
- Change detection
The mechanism that compares template expressions with their previous values and updates the parts of the DOM that changed. It is triggered by zone.js or by notifications from signals and events.
- Change token (IChangeToken)
A signal object meaning "the data has changed". File configuration providers fire it when a file is reloaded, and
IOptionsMonitor<T>uses it to clear its options cache.- Change tracker
The part of
DbContextthat holds tracked entities, their states and original values. From the difference between original and current values,SaveChangesbuildsINSERT,UPDATEandDELETEstatements.- Change tracking
A SQL Server feature that, synchronously with every DML operation, records the keys of changed rows and a version number. It answers "what changed since version N" but does not keep old values.
- Channels (System.Threading.Channels)
Async producer-consumer queues: writing and reading wait through await and do not block threads. Channels can be bounded or unbounded.
- Characterization test
A test that pins down the actual behavior of existing code rather than the required one. The term is Michael Feathers's; such tests protect refactoring and legacy migration.
- Cherry-pick
The
git cherry-pickcommand, which applies the changes of one commit on top of the current branch and creates a new commit with the same change. With-xa reference to the original commit is added to the message.- Chiseled image (Ubuntu Chiseled)
A distroless flavor of the .NET images on Ubuntu: only the packages the runtime needs, no shell or package manager, non-root user by default. No ICU or tzdata unless you take the
-extravariant.- Choreography
A way to coordinate a saga without a central controller: each service reacts to other services' events and publishes its own. Simple for short chains, but nobody sees the whole process.
- CI/CD pipeline
A sequence of steps, described as code, that the CI system runs for every change: restore, build, tests, analysis, publish and deploy. In GitHub Actions it is a YAML workflow, in Jenkins a
Jenkinsfile.- Circuit breaker
A strategy that stops calling a dependency after a failure ratio is reached and rejects calls immediately, then lets a probe through after a pause. Three states — closed, open, half-open.
- Claim
A type-value statement about a user or service issued by a trusted issuer: name, email, department, role. It describes who the subject is, not what it may do; in .NET it is the
Claimclass.- Claim rules
ADFS rules in their own language: a condition, then
=>and anissueoraddaction. They decide which claims go into the token and where their values come from, for example AD attributes.- Claims transformation (IClaimsTransformation)
An ASP.NET Core interface whose
TransformAsyncruns after successful authentication and can add app data to the principal. It runs on every request, sometimes several times, so it must be idempotent.- ClaimsIdentity
A set of claims obtained through one authentication method. It holds
AuthenticationType(without it the identity is not considered authenticated), plusNameClaimTypeandRoleClaimType.- ClaimsPrincipal
The user in .NET: one or more
ClaimsIdentityobjects. In ASP.NET Core it isHttpContext.User;IsInRole,HasClaimandFindFirstsearch the claims of all its identities.- Class member visibility in Delphi
The
private,protected,publicandpublishedsections. In Delphiprivateandprotectedare visible to the whole unit, sostrict privateandstrict protectedexist for class-only access, whilepublishedalso generates RTTI.- Clean architecture
A style where the domain core sits in the center and every source-code dependency points toward it. Infrastructure and UI plug in from outside through interfaces declared in the core. Hexagonal and onion architecture are close variants.
- Client Component
A component from a module marked with
'use client'. It renders to HTML on the server and in the browser, its JS goes into the bundle, so it can use state, effects and events.- Client credentials
An OAuth 2.0 flow where an application gets a token on its own behalf with a
client_idand a secret or certificate, with no user involved. Used for service-to-service calls and background jobs.- Client evaluation
Running part of an EF Core query in the application's memory instead of the database. Since EF Core 3.0 it is allowed only in the final
Selectprojection; elsewhere an untranslatable expression throws.- Clock skew
A time tolerance applied to
expandnbfin case the issuer's and the API's clocks drift apart.TokenValidationParameters.ClockSkewdefaults to 5 minutes.- Closure
A lambda or local function together with the variables it captures from the enclosing scope. The compiler moves captured variables into fields of a generated class, and they live as long as the delegate does.
- Closure
A nested function together with the enclosing function's variables it uses. The variables live in cells (
__closure__) for as long as the function lives;nonlocallets you rebind them.- Closure (JavaScript)
A function together with a reference to the lexical environment it was created in. Captured variables live as long as the function and are seen by reference, not as a copy of the value.
- CLR (Common Language Runtime)
The .NET runtime: it loads assemblies, compiles IL to machine code and manages memory, exceptions and threads. The modern .NET implementation is called CoreCLR.
- CLS (Cumulative Layout Shift)
A measure of unexpected layout shifts: the largest burst of shifts during the page's lifetime. Good is 0.1 or less.
- cluster
The Node.js module that starts several copies of the app as processes on one port: the primary process accepts connections and hands them to workers. Processes do not share memory.
- Clustered index
An index whose leaf level holds the table rows themselves, sorted by the key. A table has only one;
PRIMARY KEYcreates it by default.- Clustering key
The columns of the clustered index. The key is copied into every nonclustered index as the row pointer, so it should be narrow, unique and static.
- Code coverage
The share of code lines or branches executed during tests. It reveals untested code but does not prove the executed code is verified. In .NET it is measured by coverlet and Microsoft Code Coverage.
- Code page
A table that maps bytes to characters in a single-byte encoding. For Cyrillic on Windows it is usually 1251; characters missing from the table are lost on conversion.
- Code smell
A sign of a maintainability problem that doesn't break the code right now: an overly long method, duplication, a convoluted condition. SonarQube classifies such issues under maintainability.
- Code splitting
Splitting a bundle into chunks that load on demand via dynamic
import(): by route or by rarely used features. Reduces the amount of JS loaded at startup.- Cohesion
A measure of how much the members of a module or class serve one task. High cohesion means data and the methods that work on it live together; low cohesion means classes like
Utils.- Collation
Rules for comparing and sorting strings for a language. In PostgreSQL regular collations are deterministic and case-sensitive; case-insensitive matching comes from a nondeterministic ICU collation, the
citexttype, orlower().- Collation in SQL Server
Rules for comparing and sorting strings: code page, case and accent sensitivity. A Windows collation (
Cyrillic_General_CI_AS) comparesvarcharandnvarcharby the same rules, a SQL collation (SQL_Latin1_General_CP1_CI_AS) by different ones.- Collection expression
The C# 12 square-bracket syntax for creating collections:
int[] a = [1, 2, 3];,[..first, ..second]. Works for arrays,Span<T>, lists and other collections.- Columnstore index
An index that stores data by column in compressed segments, in rowgroups of up to 1,048,576 rows. It speeds up aggregates over large tables through compression, segment elimination and batch mode.
- Command
A behavioral pattern: a request is packaged as an object with its data, so it can be passed around, queued, logged or undone.
- Command injection
User data ends up in a shell command line and appends a command of its own, such as
& del *. The defense is to start the process without a shell and pass arguments as a list.- Commit
A recorded snapshot of all project files together with the author, date, message and a link to the parent commit. It is identified by a hash and never changes once created.
- CommonJS
The original Node.js module system: import with
require(), export withmodule.exports. A module is loaded and run synchronously on the firstrequirecall, and the result is cached.- Compare-and-swap (CAS)
An atomic operation that writes a new value only if the current value equals the expected one. In .NET it is Interlocked.CompareExchange, and lock-free algorithms are built on it.
- Compensating transaction
An operation that undoes the business effect of an already committed step, such as a refund after a charge. It's not a rollback but a new action, and its result is visible.
- Compiled query
A LINQ query turned into a delegate ahead of time with
EF.CompileQueryorEF.CompileAsyncQuery. When it's invoked, EF doesn't build or compare the expression tree, which saves time on hot paths.- Component owner (Owner)
The component passed to the
TComponent.Create(AOwner)constructor. The owner keeps a list of its components and frees them in its destructor, which is why a form's buttons are freed together with the form.- Component owner (Owner)
The component passed to the
Create(AOwner)constructor. It keeps a list of its components inComponentsand frees them when it is destroyed.- Component state
Data React keeps for a component instance between renders. It changes only through the setter from
useState, and every change triggers a new render.- Component streaming
The VCL mechanism that saves components' published properties to a .dfm and restores them:
TReadercreates objects by class name and assigns properties via RTTI.- Compose profiles
Service labels in Compose: a service with a profile starts only when the profile is enabled via
--profileorCOMPOSE_PROFILES. Services without a profile always start.- Compositing
Assembling a frame from ready layers on a separate compositor thread. Changes to a layer's
transformandopacityskip layout and paint.- Composition
An object holds another object in a field and uses it through its public contract — a "has-a" relationship instead of "is-a". The GoF advice is to favor composition over class inheritance.
- Composition root
The single place in an app where the object graph is composed: service registrations and the choice of implementations. In ASP.NET Core it is
Program.csand theAdd...extension methods it calls.- Comprehension
An expression that builds a list, dict or set from an iterable with an optional filter:
[x * x for x in items if x > 0]. The counterpart of LINQSelectandWhere.- Computed column
A column whose value is defined by an expression over other columns. A deterministic computed column can be indexed, and the optimizer uses that index for queries with the same expression.
- Concurrency
Several operations are in progress at the same time but do not necessarily execute at the same instant. Parallelism is the special case where they run simultaneously on different cores.
- Concurrency token
A property whose original value EF Core adds to the
WHEREofUPDATEandDELETE. If the row was changed in the meantime, zero rows are affected and EF throwsDbUpdateConcurrencyException. On SQL Server it's usuallyrowversion, in PostgreSQLxmin.- Concurrent collections
Thread-safe collections from System.Collections.Concurrent: ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag and BlockingCollection.
- Conditional compilation
The {$IFDEF}, {$IF} and {$ENDIF} directives that include or exclude code at build time. The UNICODE symbol lets one codebase build in both old and new Delphi.
- Conditional if operator
Delphi 13's ternary operator:
X := if A > B then A else B;. It works inside any expression, and its type is the common type of both branches.- Conditional type
A type of the form
T extends U ? X : Ythat picks a result based on type compatibility. Withinferit extracts part of a type; over a union it distributes across the members by default.- Confidential client
A client that keeps a secret or key on a server and authenticates to the authorization server: a server-side web app, a BFF, a service.
- Configuration binding
Filling an object's properties with values from a configuration section, converting strings to the property types. It uses reflection by default; since .NET 8 there is a binding source generator for AOT.
- Configuration provider
A component that loads key-value pairs from one source: a JSON file, environment variables, the command line, a secret store. When keys collide, the provider added last wins.
- ConfigureAwait(false)
An
awaitsetting under which the continuation does not return to the capturedSynchronizationContextorTaskScheduler. It is used in general-purpose libraries.- ConfigureAwaitOptions
Flags for
Task.ConfigureAwaitin .NET 8+:ContinueOnCapturedContext,SuppressThrowingandForceYielding.- conftest.py
A file whose fixtures and hooks pytest automatically makes available to every test in that directory and its subdirectories, without imports.
- Confused deputy
A service with broad rights runs a client's request using its own rights without checking the client's. The client gains access through the service that it does not have itself.
- Connascence
Meilir Page-Jones's measure of dependency: two elements are connascent if changing one requires changing the other. Its forms are ranked by strength — from name and type to position, meaning, algorithm and timing.
- Constrained delegation (KCD)
Kerberos Constrained Delegation: the front end's account may obtain tickets on the user's behalf only to listed SPNs (the
msDS-AllowedToDelegateToattribute). Works through the S4U2Proxy extension.- Constructor injection
A form of DI where dependencies arrive as constructor parameters. All of the class's dependencies are visible in its signature, and the object cannot exist without them.
- Consumer group
A set of Kafka consumers sharing a
group.idthat read a topic together. Partitions are split among the members, and the read position belongs to the group.- Container healthcheck
A command Docker periodically runs inside a container to determine its state: starting, healthy or unhealthy. In Compose,
condition: service_healthyrelies on it.- Container image
An immutable template that containers are started from: app files, runtime, system libraries and the start command. It consists of layers and is stored in a registry under a name and tag.
- Container query
An
@containercondition that checks the size of the nearest ancestor withcontainer-typerather than the viewport. Lets a component adapt to wherever it is placed.- Container registry
A service that stores and serves images: Docker Hub,
mcr.microsoft.com, Azure Container Registry, GitHub Container Registry. An image is referenced by tag (mutable) or by digest (immutable).- Content-Security-Policy (CSP)
A response header listing the allowed sources of scripts, styles and other resources. The browser blocks everything else, so an injected script won't run even if encoding was missed somewhere.
- Context (React)
A way to pass a value to a whole subtree without props. When the value changes, every component that reads it re-renders.
- Context manager
An object with
__enter__and__exit__methods for thewithstatement.__exit__is called on any exit from the block, including an exception — the counterpart ofusingin C#.- Continuation
Code that runs after a task completes. For an async method, it is the rest of the method after
await.- Continuous delivery (CD)
The continuation of CI: every verified build is packaged and deployed to test environments automatically, so it can go to production at any time — after a manual approval.
- Continuous deployment
A form of CD with no manual step: every change that passes all pipeline checks goes to production automatically. It requires reliable automated tests, monitoring and fast rollback.
- Continuous integration (CI)
A practice where developers merge changes into a shared branch often, and every change is built and tested automatically. Integration problems show up within minutes, not on release day.
- Contract (design by contract)
Describing a method's behavior through preconditions (what is true before the call), postconditions (what is guaranteed after) and invariants (what is always true). Bertrand Meyer's approach; LSP rests on it.
- Contract test
A test that checks that an API provider and its consumer honor a shared agreement about requests and responses. In the consumer-driven approach the consumer writes the contract; the tool is Pact (PactNet).
- Contravariance
Using a generic type with a more general argument where a more derived one is expected:
Action<object>instead ofAction<string>. Declared within Ton interfaces and delegates.- Control groups (cgroups)
A Linux kernel mechanism that limits and accounts for the resources of a group of processes: CPU, memory, I/O. Container limits are set through cgroups, and .NET reads them at startup.
- Controlled component
A form field whose value is driven by state:
valuecomes from state andonChangeupdates it. React, not the DOM, is the source of truth.- Controller (API controller)
A class deriving from
ControllerBasewhose public methods (actions) handle HTTP requests. Routes come from attributes, and a request goes through the MVC pipeline: filters, model binding, validation and response formatting.- Convention-based middleware
A class with no interface, a constructor taking
RequestDelegateand anInvokeorInvokeAsyncmethod. It is created once when the pipeline is built and lives for the whole app lifetime.- Conway's law
Melvin Conway's observation (1968): organizations design systems whose structure copies the organization's own communication structure. That is why service boundaries usually match team boundaries.
- Cooperative cancellation
The .NET cancellation model: the initiator only requests cancellation, and the operation checks the token itself and decides how to stop. There is no forced abort.
- Core Web Vitals
Google's three user-experience metrics: LCP (loading), INP (responsiveness) and CLS (visual stability). Assessed at the 75th percentile of real visits.
- CoreWCF
A port of WCF's server side to modern .NET, a .NET Foundation project with Microsoft support. It is meant for migrating existing SOAP services; for new ones Microsoft recommends gRPC.
- Coroutine
A function declared with
async def, and the object its call returns. Its code runs only when the coroutine is awaited or wrapped in a task, and it can suspend at everyawait.- CORS (Cross-Origin Resource Sharing)
The mechanism by which a server uses
Access-Control-Allow-*headers to let the browser hand a response to a script from another origin. It relaxes the same-origin policy and does not protect the server itself.- Coupling
A measure of how much modules or classes depend on each other: how much a change in one forces a change in another. The aim is loose coupling: depend on a narrow contract, not on internals.
- Covariance
Using a generic type with a more derived argument where a more general one is expected:
IEnumerable<string>instead ofIEnumerable<object>. Declared without Ton interfaces and delegates.- Covering index
An index that contains every column a query needs, either in the key or as included columns. The query reads only that index and never touches the table.
- CPU-bound operation
An operation limited by processor computation. Only parallelism makes it faster, and it is moved off the UI thread with
Task.Run.- CQRS (Command Query Responsibility Segregation)
Separating the write model (commands change state) from the read model (queries return data). The models can live in one database or in different ones.
- Creational pattern
A pattern that separates the code using an object from the decision about which object to create and how. GoF lists five: Abstract Factory, Builder, Factory Method, Prototype, Singleton.
- Critical rendering path
The browser's steps from receiving HTML to the first frame: DOM, CSSOM, render tree, layout, paint, composite. Its length is set by render-blocking CSS and scripts.
- Critical section
A piece of code that works with shared data and therefore must be run by at most one thread at a time. In C# it is usually guarded with the lock statement.
- Cron expression
A schedule string made of fields for minutes, hours, day of month, month and day of week:
0 2 * * *means every day at 02:00. In Quartz the first field is seconds.- Cross join (CROSS JOIN)
A Cartesian product: every row of one table is combined with every row of the other, with no condition. Used for grids such as "store × day".
- Cross-cutting concern
Logic that many parts of an application need regardless of the business task: logging, authorization, caching, error handling. It is moved into middleware, filters or decorators.
- CSRF (cross-site request forgery)
An attack where another site makes the browser send a request to your site on behalf of a signed-in user. It works because the browser attaches cookies by itself.
- CSS Grid
A two-dimensional CSS layout module: a
display: gridcontainer defines rows and columns, and its children occupy cells and areas of the grid.- CSSOM (CSS Object Model)
The tree of rules the browser builds from all the page's styles. Together with the DOM it is needed to build the render tree, which is why CSS blocks the first render.
- CTE (common table expression)
A named subquery declared with
WITHbefore a statement and visible only within it. In SQL Server a CTE's result is not stored: every reference re-executes the definition.- CTS (Common Type System)
The .NET common type system: rules for declaring and using types shared by all languages on the platform. It lets C#, F# and VB.NET use each other's types.
- CUPID
Properties of "joyful" code proposed by Dan North as an alternative to SOLID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. They are properties code moves toward, not rules it complies with.
- Cursor
A T-SQL object that walks a query result one row at a time (
DECLARE CURSOR,FETCH NEXT). It is needed for actions that cannot be expressed as one statement; when you need one, declare itLOCAL FAST_FORWARD.- Custom managed record
A record with
Initialize,Finalizeand optionallyAssignoperators that the compiler calls automatically on creation, destruction and copy. It enables RAII-style wrappers. Introduced in Delphi 10.4 Sydney.- Cycle collector (cyclic GC)
CPython's
gcmodule: it complements reference counting and finds groups of objects that reference each other but are unreachable. It works by generations.- Dapper
A micro-ORM from the Stack Overflow team: extension methods on
IDbConnection(Query,Execute) that run your SQL with parameters and map columns onto object properties. It doesn't track changes or generate SQL.- Data binding
The link between a template and its component class: interpolation
{{ }}, property binding[prop], event binding(event)and two-way binding[(prop)]. Angular updates the DOM when a value changes.- Data class (dataclass)
A class decorated with
@dataclass, for which Python generates__init__,__repr__and__eq__from the annotated fields.frozen=Trueandslots=Truemake it immutable and compact.- Data mart
A separate database or schema for the reports of one area: sales, warehouse, finance. ETL fills it, and its structure is built for aggregates rather than writes.
- Data Protection (ASP.NET Core)
The encryption and signing subsystem behind authentication cookies and antiforgery tokens. In a server farm it needs a shared key store.
- Data type mapping rules (MapRules)
The FormatOptions.MapRules collection in FireDAC: each rule replaces the data type returned by the driver with one the application prefers. Used to match field types to the old library during a migration.
- Data type precedence
The rule SQL Server uses to pick a common type for a comparison: the lower-precedence type is converted to the higher one.
nvarcharoutranksvarchar, andintoutranks string types.- Data-aware control
A visual component (
TDBGrid,TDBEdit,TDBLookupComboBox) that displays and edits the fields of a dataset's current record through aTDataSource.- Data-oriented design
An approach that shapes data around how the CPU reads it: dense arrays of values instead of an object graph, sequential memory access. Used on hot paths.
- DataAnnotations
Attributes from
System.ComponentModel.DataAnnotationsfor declarative validation rules:[Required],[Range],[StringLength],[EmailAddress]and others.- DATAS (dynamic adaptation to application sizes)
A Server GC mode that adjusts the number of heaps and the generation 0 budget so the heap size matches the amount of live data. Introduced in .NET 8, on by default since .NET 9.
- Dataset state (State)
The value of the
Stateproperty —dsBrowse,dsEdit,dsInsertand others — that defines what can be done with the current record.Edit,Insert,PostandCancelswitch states.- DbContext
The central EF Core class: a session with the database that runs queries, tracks entity changes and saves them with
SaveChanges. It's designed for a single unit of work and isn't thread-safe.- DbContext pooling
Reusing
DbContextinstances: on disposal a context is reset and returned to the pool. Enabled withAddDbContextPoolorPooledDbContextFactory; unrelated to the ADO.NET connection pool.- dbExpress
A Delphi library of lightweight drivers with unidirectional datasets that neither buffer nor edit rows. Embarcadero has deprecated it and recommends migrating to FireDAC.
- DDD (Domain-Driven Design)
Eric Evans's approach (2003) where code is built around a model of the business and the language of its experts. It has a strategic level (context boundaries) and a tactical level (aggregates, value objects, events).
- Dead letter queue (DLQ)
A separate queue or topic for messages that couldn't be processed after all attempts. It keeps a poison message from blocking the stream and preserves it for investigation.
- Dead tuple
A row version deleted or replaced by a committed transaction that no active transaction can see anymore. It takes up space in the table and indexes until VACUUM removes it.
- Deadlock
A situation where threads wait for each other forever: each holds a resource the other needs. The typical cause is taking the same locks in different orders.
- Deadlock graph
An XML report of a deadlock: participants, resources held and awaited, lock modes, query text and the victim. In SQL Server the
system_healthExtended Events session records it by default (thexml_deadlock_reportevent).- Debezium
An open source CDC platform built on Kafka Connect: it reads the database transaction log and publishes row changes to Kafka. The Outbox Event Router turns outbox rows into events.
- Decorator
A pattern where an object wraps another object with the same interface and adds behaviour before or after the call: caching, logging, retries. The built-in .NET container does not support decorators.
- Decorator
A function that takes a function or class and returns a replacement.
@dabovedef fequalsf = d(f); wrappers are built withfunctools.wraps.- Decorator metadata (emitDecoratorMetadata)
Type information TypeScript stores for decorated classes when
emitDecoratorMetadatais on, such asdesign:paramtypes— the constructor parameter types. NestJS reads it throughreflect-metadatato work out what to inject.- Default interface method
An interface member with a body (C# 8). It is used when the type does not provide its own implementation and can be called only through a reference of the interface type. Requires the .NET Core 3.0+ runtime.
- Default policy
The policy ASP.NET Core applies to
[Authorize]andRequireAuthorization()without a policy name. Out of the box it only requires an authenticated user; change it withSetDefaultPolicy.- Defensive copy
A hidden copy of a struct the compiler makes when calling its method through a
readonlyfield or aninparameter, so the method cannot change the original. Does not happen with areadonly struct.- Deferred execution
A LINQ query runs not when it is declared but when its result is enumerated, and it runs again on every enumeration. Methods that return
IEnumerable<T>work this way:Where,Select,OrderBy.- Degree of parallelism
The maximum number of operations running at the same time. In
Parallel.ForEachAsyncit is set viaParallelOptions.MaxDegreeOfParallelism.- Delegate
A type whose instance references a method and, for an instance method, the target object. Built-in delegates are
Func<...>andAction<...>.- DelegatingHandler
The base class for
HttpClientmessage handlers that pass the request to the next handler viabase.SendAsync. Such handlers are chained together for logging, retries and headers.- Delegation
A composition technique: an object forwards a call to its component, sometimes adding behavior before or after. Not to be confused with C# delegates, which are types that reference methods.
- Delivery receipt (DLR)
An asynchronous notification from the SMS centre about a message's final status: delivered, expired, undeliverable. In SMPP it arrives as a deliver_sm operation; the text format is SMSC-specific.
- Delphi managed type
A type whose lifetime the compiler manages: long strings, dynamic arrays, interfaces, variants and records with fields of such types. The compiler initializes them, maintains their reference counts and frees them through an implicit
try..finally.- Delphi property
A class member that looks like a field but is read and written through
readandwritespecifiers, either directly from a field or through a method. Withoutwritethe property is read-only.- Delphi unit
A
.pasfile, the compilation unit of Delphi. Theinterfacesection declares what other units can see,implementationholds the code, and the optionalinitializationandfinalizationsections run at program start-up and shutdown.- Delphi virtual method table (VMT)
A per-class structure with slots holding the addresses of all its virtual methods, inherited ones included. Every object starts with a pointer to its class's VMT, and a
virtualcall takes the address from the right slot.- Delta store
A regular B-tree inside a columnstore index that receives small inserts. When a rowgroup reaches 1,048,576 rows, the background tuple mover compresses it into columnar format.
- Denormalization
Deliberate duplication of data for faster reads: a total in a document header, a copied name, a reporting table. It needs a mechanism that keeps the copies consistent.
- Dependency array
The second argument of
useEffect,useMemoanduseCallback. React compares its items withObject.isand re-runs the effect or recomputes the value only if something changed.- Dependency injection (DI)
A technique where an object receives its dependencies from outside, usually through its constructor, instead of creating them itself. In ASP.NET Core the built-in container creates and passes the dependencies.
- Dependency inversion principle (DIP)
The D in SOLID: high-level modules do not depend on low-level modules; both depend on abstractions. Dependency injection is the practical way to follow it.
- Dependency lock file
A file with exact versions and hashes of every package in the graph, transitive ones included. In Python it is
uv.lock,poetry.lock, a pinnedrequirements.txtor the standardpylock.toml(PEP 751).- Depends (FastAPI dependencies)
The FastAPI mechanism that calls a dependency function before the endpoint and passes its result as a parameter. The result is cached per request, and a dependency with
yieldruns cleanup code after the response.- Depth-first search (DFS)
Graph traversal that follows one branch to the end and then backtracks, using recursion or an explicit stack. O(V + E); the basis for cycle detection, connected components and topological sort.
- Design pattern
A named, typical solution to a recurring design problem: class roles, the relationships between them, and the consequences. It is not ready-made code but a scheme you implement for your own problem.
- Developer Exception Page
A page with details of an unhandled exception: stack trace, headers, query, cookies. It is enabled automatically in the Development environment and must never run in production.
- Device code flow (device authorization grant)
An OAuth flow for devices without a browser or keyboard (RFC 8628): the device shows a code and a URL, the user signs in on another device, and the original one polls
/token.- Devirtualization
A JIT optimization that replaces a virtual or interface call with a direct one when the exact type is known, for example for a
sealedclass. The method can then be inlined.- DI container (service container)
An object that creates services from registered rules, passes them their dependencies and manages their lifetimes. In .NET registrations go into
IServiceCollection, and the container isIServiceProvider.- Diagnostic port
The channel diagnostic tools use to talk to the .NET runtime: a named pipe on Windows or a Unix socket in the temp directory on Linux. In a container, a sidecar needs shared access to it.
- diagnostics_channel
The Node.js module for publishing diagnostic events on named channels. Libraries and built-in modules report requests, and APM tools and OpenTelemetry subscribe without patching code.
- Dictionary
The .NET hash table: a value per key, O(1) on average for lookup and insert. A key needs consistent
GetHashCodeandEquals, and must not change after insertion or the entry is lost in its bucket. For concurrent access there isConcurrentDictionary.- Dirty read
An anomaly in which a transaction reads another transaction's changes that are not yet committed and may be rolled back. Possible only under READ UNCOMMITTED, including via
NOLOCK.- Discovery document (provider metadata)
JSON at
/.well-known/openid-configurationwith endpoint URLs,jwks_uri, and supported flows and algorithms. Clients configure themselves from it automatically.- Discriminated union
A union of object types with a shared tag field of a literal type, such as
kindorstatus. Checking the tag narrows the value to one variant.- Display class
A hidden class the compiler generates for a capturing lambda: captured variables become its fields and the lambda becomes its method. Creating an instance is a heap allocation.
- Disposable transient
A transient service that implements
IDisposableorIAsyncDisposable. The container keeps a reference to each such instance until the end of the scope, so when resolved from the root they pile up until the app stops.- Dispose pattern
The standard resource-release scheme:
Dispose()callsDispose(true)andGC.SuppressFinalize, the finalizer callsDispose(false), andprotected virtual void Dispose(bool)releases managed resources only when giventrue.- Distributed cache (IDistributedCache)
A cache in external storage (Redis, SQL Server, Postgres) shared by all app instances. It stores byte arrays, so serialization is up to the app.
- Distributed lock
A lock shared by several processes or nodes, usually in Redis or a database. It needs a timeout, because the holder may crash without releasing it.
- Distributed monolith
A system of formally separate services that cannot be released independently: they share a database, call each other in synchronous chains and change together. It combines the downsides of a monolith and of microservices.
- Distributed tracing
Recording the path of one request through all services as a tree of spans sharing a trace id. It shows where the time goes and where an error happened.
- Distributed transaction
A transaction across several resources (databases, connections) that a coordinator commits with two-phase commit. On Windows that is MSDTC; in .NET 7+ it is supported only on Windows and must be enabled explicitly.
- Distributed version control system (DVCS)
A version control system where every participant has a full copy of the repository with all its history. Commits are made locally and exchanged with the server and other copies by separate commands. Examples are Git and Mercurial; SVN, by contrast, is centralized.
- DML trigger
A procedure that SQL Server runs on its own on
INSERT,UPDATEorDELETE. It fires once per statement, and the changed rows are available in theinsertedanddeletedpseudo-tables.- Docker
The tool that builds an application into an image and runs it as a container — a process with its own filesystem, network and resource limits. The image is the same on a developer machine and in production, so "works on my machine" stops being an argument.
- Docker Compose
A tool that creates and starts a set of related containers from a
compose.yamlfile, with a shared network, volumes and startup order. It works within a single host.- DOM (Document Object Model)
The object tree a browser parses an HTML page into; scripts read and change the page through it. Every change can trigger style and layout recalculation, so writes are batched and kept apart from reads.
- Domain event
An object describing a business-relevant fact in the past tense:
OrderSubmitted. Other parts of the system react to it without coupling to its source directly.- dotnet-counters
A CLI tool for watching metrics of a running .NET process in real time: heap size, GC counts, GC pauses, thread pool, exceptions.
- dotnet-dump
A CLI tool for collecting and analyzing a full memory dump of a .NET process. The
analyzecommand opens the dump with SOS commands:dumpheap,gcroot,finalizequeue.- dotnet-gcdump
A CLI tool that captures the managed heap's object graph from a live process via EventPipe. It triggers a full GC to do so;
.gcdumpfiles open in Visual Studio or PerfView.- dotnet-monitor
A production tool, usually run as a sidecar container: it captures dumps, traces, logs and metrics of .NET processes through an HTTP API, and collects them on its own via trigger rules and uploads them to storage.
- dotnet-trace
A CLI tool that records an event trace of a running .NET process over EventPipe: stack samples, GC, JIT and exception events. The result opens in PerfView, Visual Studio or speedscope.
- Double hop
The second-hop problem: an app that received the user through Kerberos can't authenticate as that user to the next server, because it only has a ticket to itself. Solved with Kerberos delegation.
- DPoP (Demonstrating Proof of Possession)
A mechanism (RFC 9449) that binds a token to the client's key: every request carries a signed proof of possession of that key. A token stolen without the key is useless.
- DRY (Don't Repeat Yourself)
A principle from "The Pragmatic Programmer" (1999): every piece of knowledge must have a single, unambiguous, authoritative representation within a system. It is about knowledge and rules, not identical lines of code.
- DTO (Data Transfer Object)
A plain data-only object for passing data between layers or over the network, with no business logic. In an API these are request and response models kept separate from database entities.
- Dual write
Writing one change to two systems without a shared transaction, such as a database and a broker. A failure between the writes makes them diverge: the event is lost or describes a change that was rolled back.
- Duck typing
An object fits if it has the required methods and attributes, regardless of its type: "if it quacks like a duck, it is a duck". The default style of Python code.
- Dunder method (special method)
A method whose name is wrapped in double underscores and that the language itself calls:
__init__,__eq__,__len__,__iter__. Through them a class supports operators and built-in functions.- Dynamic batching
An inference-server technique: requests that arrive at almost the same time are grouped into one batch and go through the model in a single call. It raises GPU utilization at the cost of a little latency.
- Dynamic method
An overridable method called through the DMT, a table that holds only the methods declared or overridden in the class itself. Semantically the same as
virtual, but it saves memory at the cost of slower calls.- Dynamic PGO
Profile-guided optimization at run time: the JIT collects statistics on hot paths and types and uses them when recompiling a method. On by default since .NET 8.
- Dynamic programming
A method for problems made of overlapping subproblems: each subproblem's answer is computed once and reused. It turns an exponential search into a polynomial algorithm.
- Dynamic proxy
A stand-in type generated at run time that intercepts method calls. Castle DynamicProxy, Moq mocks, EF Core lazy loading and
DispatchProxyall work this way.- Eager loading
Loading related data in the same query as the main data: in EF Core,
IncludeandThenInclude, which becomeJOINs or, with split query, separate queries.- EAV (entity–attribute–value)
A schema in which attributes are stored as "entity, attribute name, value" rows instead of separate columns. Flexible, but awkward to query and untyped; JSONB often replaces it.
- EDI (electronic data interchange)
Electronic exchange of standard business documents between companies — orders, dispatch advices, invoices — in a machine-readable format, usually through an EDI provider.
- EF Core database provider
A NuGet package that teaches EF Core to work with a specific database: it translates queries into that database's SQL dialect, maps types and generates migrations. For example,
Microsoft.EntityFrameworkCore.SqlServerandNpgsql.EntityFrameworkCore.PostgreSQL.- EF Core migration
A class with
UpandDownmethods that moves the database schema from one model version to the next. Created withdotnet ef migrations addfrom the difference between the model and the snapshot.- EF Core model
Metadata about entities: properties, keys, relationships, table names and column types. EF builds it once per context type from conventions, attributes and the Fluent API, and uses it to generate SQL and migrations.
- Effect (useEffect)
Code React runs after painting to synchronize a component with an external system: a subscription, a timer, a connection, a third-party widget.
- Effect cleanup
The function an effect's setup returns. React calls it before re-running the effect and on unmount to unsubscribe, stop a timer or close a connection.
- ELK (Elasticsearch, Logstash, Kibana)
A stack for collecting, storing and searching logs: Logstash or Beats ship events, Elasticsearch indexes them, Kibana provides search and dashboards. OpenSearch is the open-source fork of Elasticsearch.
- Encapsulation
An OOP principle: an object's data and the rules for changing it live in one class, and the state changes only through its methods. That way the class protects its own invariants.
- Endpoint
The unit of request handling in ASP.NET Core: a
RequestDelegateplus a metadata collection.MapGethandlers, controller actions, Razor Pages and SignalR hubs are all endpoints.- Endpoint filter
The Minimal API counterpart of an MVC filter (.NET 7+): code before and after the handler with access to its arguments through
EndpointFilterInvocationContext. Added withAddEndpointFilter.- Endpoint metadata
Arbitrary objects attached to an endpoint:
[Authorize]attributes, CORS policies, your own markers viaWithMetadata. Middleware afterUseRoutingreads them throughcontext.GetEndpoint().- Endpoint routing
ASP.NET Core's main routing system since 3.0:
UseRoutingselects an endpoint by URL and method, andUseEndpointsexecutes it. Middleware between them sees the selected endpoint and its metadata.- Engine (SQLAlchemy)
SQLAlchemy's entry point to a database: it knows the dialect and driver and holds the connection pool. Created once per process with
create_engine.- Enterprise service bus (ESB)
A central integration platform with adapters, routing and message transformation between systems, for example BizTalk Server. It reduces point-to-point links but becomes a central dependency.
- Entity state (EntityState)
The marker EF Core uses to decide what to do with an entity on
SaveChanges:Added— insert,Modified— update,Deleted— delete,UnchangedandDetached— nothing.- Enumerator
An object with a
MoveNext()method and aCurrentproperty thatforeachuses to walk a collection. It is returned byGetEnumerator()onIEnumerable<T>.- Equality comparer (IEqualityComparer)
An object with
EqualsandGetHashCodemethods that defines key equality forDictionary,HashSetand LINQ. The default isEqualityComparer<T>.Default.- EqualityContract
A synthesized
record classproperty that returns the record's runtime type. The generatedEqualscompares it first, so records of different types in one hierarchy are never equal, even with the same data.- Error budget
The allowed share of failures over the SLO window: 100% − SLO. With a 99.9% SLO over 30 days that is about 43 minutes of full downtime. While budget remains, the team spends it on change.
- ES modules (ESM)
The standard JavaScript module system:
importandexport. The import graph is built before any code runs, loading is asynchronous, and top-levelawaitis supported. In Node.js it is enabled by the.mjsextension or"type": "module"inpackage.json.- Escape analysis
A JIT analysis that determines whether an object can outlive the method that created it. If it cannot, the JIT may allocate it on the stack; in .NET 9–10 this applies to boxes, small arrays and delegates.
- ETag
A response header carrying the version of a resource representation. The client sends it back in
If-None-Matchfor caching or inIf-Matchfor optimistic concurrency, getting 412 if the resource has changed.- ETL (extract, transform, load)
The process of moving data: extract it from sources, transform it to the target format and load it. In the SQL Server world the classic tool is SSIS, the cloud one is Azure Data Factory.
- European Accessibility Act (EAA)
EU Directive 2019/882, which since 28 June 2025 requires a range of products and services to be accessible: online shops, banking, transport, e-books. Its technical basis is EN 301 549.
- Event
A delegate-based class member that lets outside code only subscribe with
+=and unsubscribe with-=. Only the declaring type can raise it.- Event log (commit log)
An ordered journal where records are only appended and are not deleted when read. Each reader keeps its own position and can replay history within the retention period. Kafka topics work this way.
- Event loop
The mechanism of a JavaScript runtime that, whenever the call stack is empty, runs all microtasks and then takes the next task from the queue. It lets a single thread serve timers, events and I/O.
- Event loop delay
How much later than scheduled the event loop gets to run a callback. Growing delay means the main thread is busy with synchronous work; it is measured with
perf_hooks.monitorEventLoopDelay().- Event sourcing
Storing state as a sequence of events rather than as a current snapshot. The current state is obtained by replaying the events in order.
- Event store
A database for event sourcing: it only appends events to streams, tracks each stream's version and rejects a write if the expected version does not match. Examples are KurrentDB (formerly EventStoreDB) and Marten on top of PostgreSQL.
- EventEmitter
The Node.js base class for objects with events:
onsubscribes a listener,emitcalls all listeners synchronously. An'error'event with no listener is thrown as an exception.- EventPipe
The tracing mechanism built into the .NET runtime, the same on every OS. dotnet-counters, dotnet-trace and dotnet-monitor work through it without an external profiler.
- Eventual consistency
A model where data on different nodes or services may diverge for a while but converges once all changes are delivered. It's the price of giving up distributed transactions.
- Exactly-once
A guarantee that each message is processed exactly one time. Kafka achieves it with the idempotent producer and transactions, but only for records inside Kafka; for external systems it's replaced by at-least-once plus deduplication.
- Exception filter
A
when (...)condition on acatchblock (C# 6). It runs before the stack is unwound; if it is false, the exception keeps propagating as if thiscatchdid not exist.- Exception filter in NestJS
A class with the
@Catch()decorator and acatchmethod that turns an exception into an HTTP response. The built-in global filter handlesHttpExceptionand turns unknown errors into a 500.- ExecuteUpdate and ExecuteDelete
EF Core 7+ methods that run an
UPDATEorDELETEfrom a LINQ filter as a single command, without loading entities and without the change tracker. They return the number of affected rows.- Execution context (ExecutionContext)
Ambient data of a thread, such as
AsyncLocal<T>values, that flows acrossawait,Task.Runand other asynchronous hops. It always flows, regardless ofConfigureAwait.- Execution plan
The tree of operators SQL Server uses to run a query: table access, joins, sorts. The estimated plan is the compilation result; the actual plan adds real row and execution counts.
- Exhaustiveness
A property of a
switchexpression: its arms cover every possible input value. If they do not, the compiler issues warning CS8509.- Expand/contract (parallel change)
A zero-downtime schema change technique: first expand the schema compatibly, then move the application and data to it, and only then remove the old parts.
- EXPLAIN ANALYZE
A PostgreSQL command that runs the query and prints the plan with actual time, row counts and loops at every node. With the
BUFFERSoption (on by default since version 18) it also shows page reads.- Explicit JWT typing
Stating the kind of token in the
typheader, for exampleat+jwtfor an access token. It stops an id_token or another JWT from the same issuer from passing as an access token (RFC 8725, section 3.11).- Exponential backoff
A pause between retries that multiplies with each attempt: 1, 2, 4, 8 seconds. It gives an overloaded service time to recover.
- Expression index
An index on the result of an expression or function, such as
lower(email). It is used only when the query contains the same expression; in SQL Server this requires a computed column.- Expression problem
Philip Wadler's term (1998): it is hard to make both new data variants and new operations addable without editing existing code. OOP makes the first easy, functions with pattern matching the second.
- Expression tree
Code represented as
System.Linq.Expressionsobjects. A lambda assigned toExpression<Func<...>>becomes a tree that a provider can inspect and translate, for example into SQL.- Extended RTTI and attributes
Run-time type information from the
System.Rttiunit covering a class's fields, methods and properties, not justpublishedones. It stores attributes such as[Test]that serializers, ORMs and DUnitX rely on. Introduced in Delphi 2010.- Extension members
C# 14 extensions declared in an
extensionblock. Besides methods, they can add properties, static members and operators to existing types.- Extension method
A static method of a static class with
thisbefore its first parameter (C# 3). It is called like an instance method; the compiler turns the call into a regular static call.- Facade
A structural pattern: a simple unified interface to a complex subsystem made of several objects. The client calls the facade and doesn't know about the parts of the subsystem.
- Factory Method
A creational pattern: the base class declares a method that creates an object, and a subclass decides which concrete class to return.
- Failover
Automatically moving load from a failed component or provider to a standby one. The decision is usually based on error rate, timeouts or health checks.
- Fake
A simplified but working implementation of a dependency: a repository over a dictionary, email sent to a list,
FakeTimeProvider. It behaves like the real thing but is not fit for production.- Fallback policy
The policy for endpoints with no authorization metadata. By default there is none, so such endpoints are open;
SetFallbackPolicywithRequireAuthenticatedUserlocks down everything not marked explicitly.- Fast-forward
A merge where the target branch has no new commits, so Git simply moves its pointer to the tip of the branch being merged. No merge commit is created.
- FastAPI
A Python web framework for HTTP APIs built on Starlette and Pydantic. Parameters, bodies and responses are described with type hints, and validation and OpenAPI docs are generated from them.
- FastAPI thread pool
The pool where FastAPI runs endpoints and dependencies declared with plain
def. It is provided by AnyIO and limited to 40 concurrent calls per process by default.- FastMM
Delphi's memory manager for Win32 and Win64, built in by default since Delphi 2006. It can report leaks on exit (
ReportMemoryLeaksOnShutdown), and the full version in debug mode catches access to freed memory.- Feature envy
A code smell from Fowler's catalog: a method uses another class's data more than its own. It usually belongs in that class.
- Feature freeze
A period when no new functionality is added to a product, only bug fixes. During a migration it avoids porting every new feature into two versions.
- Feature toggle (feature flag)
A configuration switch that turns a code path on or off without a new deployment: for some users, by percentage or entirely. .NET has the
Microsoft.FeatureManagementlibrary.- File transfer
An integration style where one system exports data to a file and another picks it up and loads it — via a shared folder, SFTP or AS2. Simple and good for large batches, but the data is stale until the next export.
- File-based app
An app made of a single
.csfile with no project, run withdotnet run app.cs(since .NET 10). Packages and settings come from#:packageand#:propertydirectives.- Filtered index
A nonclustered index with a
WHEREclause that stores only the matching rows. It is smaller and cheaper than a full index but is used only when the query is guaranteed to fall inside the filter.- Finalization queue
An internal CLR list of objects that have a finalizer. Unreachable objects move from it to the f-reachable queue, the finalizer thread runs their finalizers, and the memory is freed at the next GC.
- Finalizer
A
~ClassName()method the GC calls before reclaiming the memory of an unreachable object. It runs non-deterministically and serves as a safety net for unmanaged resources.- Fine-grained locking
A technique where a structure is protected not by one lock but by several, each guarding its own part of the data. Threads working with different parts do not get in each other's way.
- Fire-and-forget
Starting an asynchronous operation without waiting for its result. Without explicit handling, its exceptions are lost or crash the process.
- FireDAC
RAD Studio's universal data access library with
TFDConnection,TFDQueryandTFDStoredProccomponents. It provides fetch control, Array DML, macros, connection pooling and tracing.- FireDAC macro (substitution variable)
Substitution into the SQL text before it is sent to the server:
&Nameor!Name. Used where a parameter does not work, such as a table name; user input never goes into a macro.- Flaky test
A test that sometimes passes and sometimes fails on the same code. Typical causes are time, shared state, parallelism and external services.
- Flexbox
A one-dimensional CSS layout module: the children of a
display: flexcontainer line up in a row or column and share free space byflex-growandflex-shrink.- Fluent API
Configuring the EF Core model in code, in
OnModelCreatingor inIEntityTypeConfiguration<T>classes:HasKey,HasMaxLength,HasOne().WithMany(). It takes precedence over attributes and conventions.- FluentAssertions
An assertion library in the
result.Should().Be(5)style. Up to and including version 7 it is Apache 2.0; from version 8 (2025) it uses the Xceed license, paid for commercial use.- Foreground and background threads
A process does not exit while at least one foreground thread is running, while background threads stop together with it. Pool threads are background threads; new Thread is foreground by default.
- Form file (.dfm)
A resource describing a form's components and the values of their published properties. It is linked to the unit by the
{$R *.dfm}directive and read when the form is created; it can be text or binary.- Forward secrecy
The property that session keys come from a one-time Diffie-Hellman exchange. A certificate private key stolen later cannot decrypt traffic recorded earlier.
- Forwarded headers (X-Forwarded-*)
The
X-Forwarded-For,X-Forwarded-ProtoandX-Forwarded-Hostheaders in which a proxy passes the original client IP, scheme and host. In ASP.NET Core they are applied byUseForwardedHeaders, which trusts only known proxies.- Four golden signals
The metrics from the Google SRE Book for a user-facing service: latency, traffic, errors and saturation. If you can measure only four things, measure these.
- Fragile base class
A problem of implementation inheritance: a seemingly harmless change to a base class breaks subclasses, because they depend on its internals, such as which methods call each other.
- Frame (TFrame)
A container with components and code that is designed separately and embedded in several forms. Changes to the frame show up everywhere it is used, except properties overridden on a form.
- Free-threaded build (free threading)
A CPython build without the GIL (PEP 703,
python3.13tand later): threads run Python code in parallel. Experimental in 3.13, officially supported since 3.14, but not the default.- Frozen collection
FrozenDictionary<TKey, TValue>andFrozenSet<T>from .NET 8: immutable collections that are slow to build but very fast to look up. A good fit for lookup tables created once at startup.- Functional dependency
A relationship
X → Y: the value of column set X uniquely determines the value of Y. Normal forms are defined in terms of functional dependencies.- Gang of Four (GoF)
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, authors of the book "Design Patterns" (1994), which describes 23 classic patterns in three groups.
- Garbage collector (GC)
The part of the CLR that allocates memory on the managed heap and automatically frees memory of objects unreachable from roots. In .NET it is a generational, compacting tracing collector.
- GC generation
A logical part of the managed heap by object age: 0 is new objects, 1 is objects that survived one GC, 2 is long-lived ones. Young generations are collected often and fast; a generation 2 GC is a full GC.
- GC root
A reference the GC starts traversing the object graph from: a thread local or register, a static field, a GC handle, a finalization queue entry. Anything unreachable from roots is garbage.
- GC.Collect
A manual garbage collection. In application code it almost always hurts: survivors are promoted to older generations and the self-tuned budgets are thrown off. It belongs in tests, benchmarks and diagnostics, usually next to
GC.WaitForPendingFinalizers.- Generator
A function with
yield: calling it returns an iterator that runs the body in steps, up to the nextyield. Values are produced lazily, one at a time.- Generic constraint
A requirement on a type parameter in a
where T : ...clause: reference or value type, a constructor, a base class, an interface. It lets the compiler call the corresponding members onT.- Generic Host
The
IHostobject that owns configuration, logging, the DI container and hosted services, and manages app startup and shutdown. ASP.NET Core and Worker Service are built on it.- Generics in Delphi
Generic types and methods with type parameters:
TList<T>,TDictionary<TKey, TValue>. Introduced in Delphi 2009; the compiler generates code for each set of type arguments and checks constraints such asclassorconstructor.- GIL (Global Interpreter Lock)
CPython's global interpreter lock: only one thread executes bytecode at any moment. It is released on blocking I/O and inside C extensions.
- GIN index
A Generalized Inverted Index: for each element — a word, an array element, a JSONB key — it stores the list of rows where it occurs. Fast at answering "contains", but expensive to write.
- GiST index
A Generalized Search Tree — a framework for indexes on geometry, ranges and full-text data. Supports overlap, containment and nearest-neighbor search.
- git bisect
A command for binary-searching the commit that introduced a bug: you mark a good and a bad version, and Git halves the range at each step.
git bisect runchecks commits automatically with a script or test.- git filter-repo
A tool for rewriting a repository's entire history: it removes files, replaces strings and changes paths. The Git docs recommend it over the pitfall-ridden
git filter-branch, including for removing secrets.- Git Flow
Vincent Driessen's branching model (2010): long-lived
mainanddevelop, plusfeature/*,release/*andhotfix/*branches. Designed for versioned products; for continuous delivery the author recommends a simpler model.- Git LFS (Large File Storage)
A Git extension for large binary files: the repository stores a small text pointer, while the content lives on a separate LFS server and is downloaded only for the versions you need.
- Git object (blob, tree, commit, tag)
The unit of storage in
.git/objects, addressed by the hash of its contents: blob — file contents, tree — a directory, commit — a snapshot with metadata, tag — an annotated tag. Objects are immutable.- git push --force-with-lease
A forced push that overwrites the server branch only if it still points to the same commit as your remote-tracking branch. It protects against wiping out other people's commits after a rebase.
- GitHub Flow
A simple branching model: a short branch off
main, a pull request with review and checks, a merge intomainand deleting the branch.mainis always deployable.- global.json
A repository file that pins the .NET SDK version used for builds and the rule for matching it (
rollForward).- gMSA (group Managed Service Account)
A domain service account whose password AD generates and rotates itself. Used by IIS app pools, Windows services and Windows containers; the long random password protects against Kerberoasting.
- God object
An anti-pattern: a single class knows and does too much — validation, calculations, data access, integrations. It changes in every task and drags dozens of dependencies along.
- Google Zanzibar
Google's global authorization system, described in a USENIX ATC 2019 paper. It stores relationships as "object#relation@user" tuples, serves Drive, YouTube, Cloud and other services, and became the model for OpenFGA and SpiceDB.
- Graceful shutdown
A shutdown in which the app stops accepting new work, finishes what it started and releases resources instead of being cut off mid-operation. Its duration is bounded by
HostOptions.ShutdownTimeout.- Graph
A set of vertices and the edges between them: cities and roads, jobs and dependencies, users and connections. Edges can be directed and weighted; .NET has no built-in graph type.
- GROUPING SETS, ROLLUP and CUBE
GROUP BYextensions that compute aggregates over several column sets in one query: for example, per store, per region and a grand total. TheGROUPING()function tells a total row apart from a regular group.- Groups overage
Microsoft Entra ID behavior when a user has more groups than fit in a token (200 for JWT, 150 for SAML): the
groupsclaim is omitted, and a link to Microsoft Graph is sent instead.- gRPC
A remote procedure call framework over HTTP/2. The contract is described in a
.protofile, server and client code is generated from it, and messages are encoded with Protobuf. Supports streaming in both directions and deadlines.- gRPC-Web
A variant of the gRPC protocol that works from browsers over HTTP/1.1 and HTTP/2. Supports only unary calls and server streaming; in ASP.NET Core it is enabled with the
Grpc.AspNetCore.Webpackage.- Guard in NestJS
A class with a
canActivatemethod that decides whether a request reaches the handler. It sees theExecutionContextand route metadata, so authentication and role checks live there;falseresults in a 403.- Hangfire
A background job library for .NET: it serializes method calls into storage (SQL Server, Redis), executes them on Hangfire servers, retries on failure and shows everything in a web dashboard.
- Hash code (GetHashCode)
A number hash tables (
Dictionary,HashSet) use to pick a bucket. Objects that are equal byEqualsmust have equal hash codes.- Hash collision
When different keys produce the same hash code or land in the same bucket of a hash table. Collisions are unavoidable and are resolved by comparing with
Equals, but too many of them degrade lookup to O(n).- Hash Match
A join or aggregation through a hash table: the smaller input is loaded into memory and the larger one is probed against it. Suits large unsorted inputs but requires a memory grant.
- Hash table
A data structure that uses a key's hash code to compute an item's slot in an array and finds it in O(1) on average. In .NET,
Dictionary<TKey, TValue>andHashSet<T>are built on it.- Hashable object
An object whose hash never changes during its lifetime and that compares via
__eq__. Only such objects can bedictkeys andsetelements.- HATEOAS
A REST principle where a response contains links to related resources and available actions, and the client follows them instead of building URLs itself.
- Health check
An HTTP endpoint that reports an app instance's state: Healthy, Degraded or Unhealthy. The load balancer and orchestrator use it to decide whether to send traffic and whether to restart the process.
- Health check publisher
An
IHealthCheckPublisherimplementation that an ASP.NET Core background service calls periodically with the health report. Used to push status to logs, metrics or a monitoring system without external polling.- Heap
A table without a clustered index. Rows are stored in no particular order, and nonclustered indexes point to them by physical address, the RID — file, page, slot.
- Heap compaction
A GC phase that slides surviving objects next to each other and updates every reference to them. It removes fragmentation but costs more than just putting dead space on a free list (sweeping).
- Heap hard limit (GCHeapHardLimit)
The maximum amount of memory the GC heap may take. In a container with a memory limit it defaults to the larger of 20 MB and 75% of the limit; set it with
GCHeapHardLimitorGCHeapHardLimitPercent.- Heap snapshot
A
.heapsnapshotfile with every object in the V8 heap and the references between them. Two snapshots are compared in Chrome DevTools to find growing objects and what retains them.- Heap table
A table whose rows are stored without ordering by a key. In PostgreSQL every table is a heap, and indexes, the primary key included, point to the physical address of a row version (
ctid).- Heapsort
A sort that builds a heap from the array and repeatedly extracts its top element. O(n log n) in the worst case with O(1) extra memory, but unstable.
- Hierarchical injectors
How DI works in Angular: element injectors mirror the component tree, and above them sit the route, root and platform injectors. A provider is looked up bottom-up, and where it is declared decides who shares the instance.
- Higher-order mapping operators (switchMap, mergeMap, concatMap, exhaustMap)
RxJS operators that map each value to an inner stream, such as an HTTP request, and decide what to do if the previous one hasn't finished: cancel it, run in parallel, queue, or ignore the new one.
- Hill climbing (thread injection algorithm)
A .NET thread pool heuristic that varies the number of worker threads and keeps the count with higher throughput. It works gradually, so it does not make up for a sudden shortage of threads.
- Hoisting
Declarations are processed before the code of a scope runs. Function declarations are available in full,
varwith the valueundefined, whilelet,constandclassstay in the temporal dead zone until their declaration line.- Horizontal scaling (scale out)
Increasing throughput by adding service instances rather than making one server bigger (vertical scaling, scale up). It requires instances that keep no local state.
- Hosted service (IHostedService)
A service whose lifetime the .NET host manages:
StartAsyncis called when the app starts andStopAsyncwhen it stops. It is registered withAddHostedServiceas a singleton; the web server runs on the same mechanism.- Hosting environment
The name of the runtime environment —
Development,Staging,Productionor a custom one. Set byASPNETCORE_ENVIRONMENTorDOTNET_ENVIRONMENT,Productionby default; it selectsappsettings.{Environment}.jsonand the app's behavior.- Hot path
Code that runs very often and noticeably affects performance. Only there are micro-optimizations like
ValueTaskjustified.- HOT update (heap-only tuple)
An update in which the new row version goes on the same page and creates no index entries. It is possible when no indexed column changed and the page has free space.
- HSTS (HTTP Strict Transport Security)
The
Strict-Transport-Securityheader, after which the browser talks to the site only over HTTPS formax-age. Withpreloadthe domain can join a list built into browsers.- HTTP
The request-response protocol over TCP that the web runs on: the client sends a method, path and headers, the server answers with a status code and a body. It keeps no state between requests, so sessions live in cookies, tokens or headers.
- HTTP interceptor
A function in the
HttpClientchain that sees every request and response: it adds headers and tokens, logs and handles errors. Since Angular 15 interceptors can be functions registered withwithInterceptors.- HTTP.sys
A Windows kernel-mode driver that accepts HTTP requests for IIS and other servers. ASP.NET Core has a server of the same name — a Windows-only alternative to Kestrel with port sharing and Windows authentication.
- HttpClient
The .NET class for outgoing HTTP requests. Creating one per request piles up sockets in
TIME_WAIT; a single static instance never notices a DNS change. The supported way isIHttpClientFactory.- HybridCache
A caching API from .NET 9: L1 in process memory plus L2 in
IDistributedCache, stampede protection, serialization and tag-based invalidation. The implementation ships in theMicrosoft.Extensions.Caching.Hybridpackage.- Hydration
Bringing the app to life in the browser on top of HTML rendered on the server (SSR): Angular reuses the existing DOM instead of building it again. Stable since v17; incremental hydration since v20.
- Hydration
Attaching React to HTML that came from the server: React builds the component tree and wires event handlers to the existing markup. The first client render must match the server HTML.
- I/O-bound operation
An operation whose time is spent waiting for input/output — network, disk, database — rather than on CPU work. It is run asynchronously with
awaitwithout occupying a thread.- IActionResult (action result)
The object an action returns instead of a finished response. The framework executes it after the action:
ViewResultrenders a view,RedirectResultsends a redirect.- IAsyncDisposable
An interface with a
DisposeAsyncmethod returningValueTask, for asynchronous cleanup such as flushing a buffer or closing a connection. Used throughawait using(C# 8, .NET Core 3.0).- IConfiguration
The interface for reading app configuration: a flat set of string key-value pairs with colon-separated hierarchical keys such as
Payments:TimeoutSeconds.- ID token
A JWT that OpenID Connect issues to the client after sign-in: who the user is (
sub), who issued the token (iss), which client it is for (aud) and when. It is never sent to APIs.- Idempotency
The property of an operation where running it again gives the same result as running it once. It is needed wherever retries are possible: background jobs, messages, HTTP retries.
- Idempotency key
A unique key the client sends with a request, usually in the
Idempotency-Keyheader. The server stores the result of the first run and returns it for a retry with the same key without running the operation again.- Idempotent producer
A Kafka producer mode (
enable.idempotence=true) where the broker drops resends based on the producer id and sequence number. It removes duplicates from retries and preserves order; it's off by default inConfluent.Kafka.- Identity column (GENERATED AS IDENTITY)
A column whose values the database generates from a sequence attached to it. In PostgreSQL it is declared as
GENERATED ALWAYS AS IDENTITYorGENERATED BY DEFAULT AS IDENTITY(since version 10) and replaces the legacyserial; the equivalent ofIDENTITY(1,1)in SQL Server.- Identity map
The session's "primary key → object" dictionary: one database row is represented in the session by one object, and a repeated
session.getfor the same key does not hit the database.- Identity resolution
The guarantee that one database row is represented by one object in the context. EF Core tracking queries return the instance that's already loaded;
AsNoTrackingcreates a new object for every occurrence of a row.- IDisposable
An interface with a single
Disposemethod for deterministic release of resources: files, sockets, connections, unmanaged memory. Called explicitly or throughusing.- IDOR (insecure direct object reference)
Accessing someone else's object by changing an identifier in the request, for example
/orders/43instead of/orders/42, when the server doesn't check the owner.- IExceptionHandler
An interface (.NET 8+) for handling known exceptions in one place. Implementations are registered with
AddExceptionHandler<T>()and called in order by theUseExceptionHandlermiddleware until one returnstrue.- IHostApplicationLifetime
A service exposing the app's lifecycle events —
ApplicationStarted,ApplicationStopping,ApplicationStopped— and aStopApplication()method for stopping from code.- IHostedLifecycleService
An extension of
IHostedServicefrom .NET 8 withStartingAsync,StartedAsync,StoppingAsyncandStoppedAsync, which run before and after services start and stop.- IHostLifetime
The component that decides when the host starts and when it begins shutting down.
ConsoleLifetimereacts to Ctrl+C and SIGTERM,WindowsServiceLifetimeto Windows service commands.- IHttpClientFactory
The
HttpClientfactory in .NET: it reuses connection handlers, manages their lifetime and lets you configure named and typed clients with a handler chain, for example resilience.- IHubContext
A service for sending messages to a hub's clients from outside the hub: a controller, an endpoint or a background job. It provides
ClientsandGroupsbut has no notion of a caller.- IInterface
The base Delphi interface that all others inherit from; on Windows it is the same as the COM interface
IUnknown. It declaresQueryInterfaceto ask for other interfaces, and_AddRefand_Releasefor reference counting.- IIS (Internet Information Services)
The Windows web server. ASP.NET Core runs behind it through the ANCM module: IIS takes the request and hands it to Kestrel inside the same process (in-process) or to a separate app process (out-of-process).
- IIS application pool
A group of IIS sites served by
w3wp.exeworker processes with shared settings: identity, bitness, recycling. In-process ASP.NET Core needs a separate pool for each app.- IL (intermediate language, CIL)
The platform-independent, stack-based bytecode that C#, F# and VB.NET compile to. Before execution the JIT or an AOT compiler turns it into machine code.
- Image layer
A set of file system changes produced by one Dockerfile instruction (
RUN,COPY,ADD). Layers are read-only, addressed by hash and cached: unchanged layers are not rebuilt.- IMemoryOwner<T>
The owner interface for a
Memory<T>buffer: whoever holds the reference callsDisposeor hands ownership on. It is returned, for example, byMemoryPool<T>.Shared.Rent().- IMiddleware
A middleware interface with an
InvokeAsync(HttpContext, RequestDelegate)method. Such middleware is registered in DI and created per request, so it can take scoped dependencies in its constructor.- IMiddlewareFactory
The factory
UseMiddlewareuses to getIMiddlewareinstances per request. The default implementation resolves them from the request's DI scope; a custom one plugs in a third-party container.- Immutable collection
A collection from
System.Collections.Immutablethat cannot change after creation:AddandRemovereturn a new instance. It is safe to share across threads without locks.- Immutable type
A type whose instance state cannot change after creation: "modifying" methods return a new instance. Examples:
string,DateTime,readonly record struct.- Impersonation
Running code as another Windows user. In ASP.NET Core it's
WindowsIdentity.RunImpersonatedandRunImpersonatedAsync, Windows only.- Implementation factory
A
Func<IServiceProvider, T>delegate passed toAddSingleton,AddScopedorAddTransientinstead of an implementation type. The container calls it to create the service and disposes of the returned object as if it had created it itself.- Implicit conversion
A type conversion SQL Server performs on its own when comparing values of different types; the plan shows it as
CONVERT_IMPLICIT. If the column is converted rather than the parameter, an index seek on that column is usually impossible.- In-memory cache (IMemoryCache)
A cache inside the app process: it stores objects by reference, without serialization. Every app instance has its own, and it is lost on restart.
- In-process COM server
A COM object in a DLL that is loaded into the client's process. Its bitness must therefore match the client's, unlike an out-of-process server in an EXE.
- In-process hosting
An IIS hosting model in which the app runs inside
w3wp.exeand requests are accepted byIISHttpServerinstead of Kestrel. The default model since ASP.NET Core 3.0.- In-sync replicas (ISR)
Partition replicas that are caught up with the leader. With
acks=alla write is acknowledged once all ISR have it, andmin.insync.replicassets the minimum number required.- Inbound claims mapping (MapInboundClaims)
Renaming short token claims to long WS-Federation claim types:
subbecomesClaimTypes.NameIdentifier. On by default inJwtBearerOptions; turned off withMapInboundClaims = false.- Inbox (idempotent consumer)
A receiver-side deduplication pattern: the id of a processed message is stored in a table in the same transaction as the changes, and a repeat with the same id is skipped.
- Included columns (INCLUDE)
Non-key columns of a nonclustered index stored only at the leaf level. They are not sorted or used for seeking, but they cover a query without widening the key.
- Index (staging area)
The area between the working tree and the repository:
git addputs changes there, and they go into the next commit. It lets you commit only part of your edits.- Index fragmentation
A mismatch between the logical and physical order of index pages caused by page splits. It hurts large sequential reads; on SSDs page density usually matters more.
- Index Seek and Index Scan
The two ways to read an index. A seek walks down the B-tree to the required key range and reads only that; a scan reads the whole index or table.
- Indexed view
A view with a unique clustered index: SQL Server stores its result and updates it in the same transaction as the base tables. It speeds up aggregates at the cost of more expensive writes.
- Inheritance
A mechanism where a new class gets the members of a base class and can extend or override them. In C# a class has one base class and any number of interfaces.
- Injection scope
A provider's lifetime in NestJS:
DEFAULT— one instance per application,REQUEST— one per request,TRANSIENT— a dedicated instance for each consumer. TheREQUESTscope spreads to everything that depends on such a provider.- Injection token
A key the NestJS container uses to find a provider when a class type isn't enough: a string, a
Symbolor an abstract class. Registered as{ provide: TOKEN, useClass: Impl }and injected with@Inject(TOKEN).- Inline table-valued function (inline TVF)
A function of the form
RETURNS TABLE AS RETURN (SELECT ...). The optimizer substitutes its text into the query like a parameterized view and builds a single plan.- Inline variable
A variable declared among the statements:
var I := 0;. It is visible to the end of itsbegin..endblock, and its type can be inferred from the initializer. Introduced in Delphi 10.3 Rio.- Inner join (INNER JOIN)
A join that returns only the pairs of rows from two tables that satisfy the condition in
ON. Rows without a match do not appear in the result.- INP (Interaction to Next Paint)
The delay from a click, tap or key press to the next frame, worst of the visit. Good is 200 ms or less. It replaced FID as a Core Web Vital in March 2024.
- Insecure deserialization
The deserializer creates types named in the data itself, and the attacker picks a type whose constructor or setter runs code they want. Classic examples are
BinaryFormatterandTypeNameHandlingin Newtonsoft.Json.- Integration test
A test that checks several parts of the system together, for example the HTTP pipeline, DI and a real database. Slower than a unit test, but it catches bugs at the seams.
- Intent lock
A lock at an upper level of the hierarchy (page, table) that signals S or X locks below it. It lets the engine quickly tell whether the whole table can be locked without checking every row.
- Interactive rebase
git rebase -i: a rebase in which you edit the list of commits — reorder, combine (squash,fixup), reword or drop them. Used to tidy your own branch before a pull request.- Interceptor in NestJS
A class with an
interceptmethod that runs code before and after the handler and works with its result as an RxJSObservable. Used for logging, timing, caching and reshaping responses.- Interface GUID
A 16-byte identifier in an interface declaration:
['{...}']. It is required forQueryInterface, theasoperator and theSupportsfunction; without it the compiler reports error E2232. The editor generates one with Ctrl+Shift+G.- Interface Segregation Principle (ISP)
The I in SOLID: a client should not depend on methods it does not use. A wide interface is split into several narrow ones shaped by client needs.
- Interlocked
A static class of atomic operations on variables: Increment, Add, Exchange, CompareExchange and more. Every operation is also a full memory barrier.
- Interning
Keeping one object per value: CPython caches integers from −5 to 256 and interns some strings, and
sys.interndoes it explicitly. It is an implementation detail; do not rely onisfor values.- Interpolated string handler
A C# 10 mechanism: a
$"..."expression compiles intoAppendLiteralandAppendFormatted<T>calls on a special type such asDefaultInterpolatedStringHandler. Arguments are not boxed, and the buffer comes from a pool.- Introsort (introspective sort)
The hybrid sort behind
Array.Sort: a quicksort that switches to insertion sort on small partitions and to heapsort when partitioning gets too deep. O(n log n) in the worst case, unstable.- Invariance
A generic type accepts only the exact argument it was declared with:
List<string>cannot be used asList<object>. All classes and structs, and interfaces withoutin/out, behave this way.- Inversion of control (IoC)
A principle where control over program flow or object creation is handed to a framework: your code does not call the library, the framework calls your code. DI is a special case of IoC.
- IOptionsMonitor<T>
Singleton access to up-to-date settings:
CurrentValuereturns the current value, andOnChangesubscribes to configuration changes. Suitable for singleton services.- IOptionsSnapshot<T>
Scoped access to settings: the object is recreated in every scope, that is, on every request, and sees reloaded configuration. Supports named options.
- IServiceScopeFactory
A singleton service that creates new scopes. Singletons and background services use it to get scoped services:
CreateScope()or, since .NET 6,CreateAsyncScope().- Isolation level
A transaction setting that defines which changes of concurrent transactions it sees and which anomalies are allowed. The SQL standard defines four levels: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
- Iterator
A method with
yield returnthat returns the items of a sequence one at a time. The compiler turns it into a class implementingIEnumerable<T>andIEnumerator<T>.- IUserIdProvider
An interface that determines a connection's user id for
Clients.User. By default it reads theClaimTypes.NameIdentifierclaim.- IValueTaskSource
The interface of a reusable asynchronous operation object that lets
ValueTaskwork without allocations. Used in high-performance APIs such asSocket.- JIT compiler (just-in-time)
The part of the CLR that translates a method's IL into machine code on its first call, for the specific CPU. In .NET it is RyuJIT.
- Jitter
A random addition to the pause between retries. Without it, clients that failed together also retry together and hit the recovering service in a synchronized wave.
- JSON
A text data format built from objects, arrays, strings, numbers,
true,falseandnull. It carries no schema of its own, so the contract is described separately — OpenAPI or JSON Schema — and parsed in .NET withSystem.Text.Json.- jsonb
The PostgreSQL type for JSON in parsed binary form: no duplicate keys and no original order, but with search operators (
@>,?,@?) and GIN index support. Thejsontype, by contrast, stores the original text.- jsonpath (SQL/JSON path)
The path language from the SQL/JSON standard for selecting and filtering values inside JSON, such as
$.items[*] ? (@.price > 10). In PostgreSQL it is understood by the@?and@@operators and by functions such asjsonb_path_query,JSON_VALUEandJSON_EXISTS.- JSX
A JavaScript syntax extension for writing markup inside code:
<h1>{title}</h1>. The compiler turns it into calls that create React elements.- Just-in-time access
Permissions that last a limited time: granted with an end date or activated on request for a few hours. Example: Microsoft Entra Privileged Identity Management.
- JWE (JSON Web Encryption)
A format for encrypted data (RFC 7516). In compact form it has five parts: header, encrypted key, initialization vector, ciphertext and tag. It hides the payload from everyone but the key holder.
- JWKS (JSON Web Key Set)
The issuer's set of public keys in JSON (RFC 7517). Each key carries a
kid, which the validator uses to pick the key for a particular token's signature.- JWS (JSON Web Signature)
A format for signed data (RFC 7515). In compact form it is three base64url parts: header, payload and signature. It protects integrity and authenticity but does not hide the content.
- JWT (JSON Web Token)
A compact token made of a JSON header, a JSON set of claims and a signature, each base64url-encoded and joined by dots. Defined in RFC 7519; most often used as an access token for APIs.
- KDC (Key Distribution Center)
The Kerberos ticket-issuing service. In Active Directory it runs on every domain controller: it checks the user's password and issues TGTs and service tickets.
- Kerberos
A ticket-based network authentication protocol (RFC 4120). The KDC checks the password once, and then the client presents services with tickets encrypted with their keys. The primary sign-in protocol in an Active Directory domain.
- Kestrel
The cross-platform web server built into ASP.NET Core. It runs inside the app process, speaks HTTP/1.1, HTTP/2 and HTTP/3, and feeds requests into the middleware pipeline.
- Key Lookup
A plan operator that, for every row found in a nonclustered index, seeks into the clustered index for the missing columns. Its heap counterpart is the RID Lookup. Cheap for dozens of rows, expensive for thousands.
- Key-range lock
A lock on a range of index keys between existing rows. SERIALIZABLE or the
HOLDLOCKhint takes it so that no row can be inserted into a range that was read, which prevents phantoms.- Keyed services
Registrations with a key, added in .NET 8:
AddKeyedSingleton,AddKeyedScoped,AddKeyedTransient. You get a specific implementation with the[FromKeyedServices(key)]attribute orGetRequiredKeyedService.- Keyset pagination (cursor pagination)
Paging by the last key of the previous page:
WHERE id > @after ORDER BY id. It uses an index and takes the same time on any page, but cannot jump to a page by number.- Keytab
A file with the long-term Kerberos keys of a service account. On Linux, GSSAPI uses it to decrypt tickets without a password; the
KRB5_KTNAMEvariable sets its path. It must be reissued when the account password changes.- Keyword-only parameter
A parameter after
*in a signature that can only be passed by name. Parameters before/(since Python 3.8) are the opposite: positional-only.- KISS (Keep It Simple, Stupid)
An engineering simplicity principle: among working solutions, pick the simplest. The phrase is attributed to Kelly Johnson, an engineer at Lockheed.
- KRaft
Kafka's built-in Raft-based consensus protocol that controllers use to store cluster metadata. Since Kafka 4.0 it's the only mode; ZooKeeper is no longer used.
- Kubernetes (K8s)
A container orchestrator: it keeps the requested number of replicas, restarts failed pods, hands out configuration and secrets, and balances traffic through services. A pod is disposable and may be stopped at any moment, so state is kept outside it.
- LARGEADDRESSAWARE
A flag in the EXE header that lets a process use addresses above 2 GB. A 32-bit process with this flag gets up to 4 GB of address space on 64-bit Windows.
- launchSettings.json
A file with launch profiles for local development: environment, URLs, variables. Used by Visual Studio and
dotnet run, and not deployed when the app is published.- Law of Demeter
The rule "talk only to your immediate friends": a method calls methods of its own object, its parameters, objects it creates and its fields, but does not walk chains like
a.B.C.D().- Layered architecture (n-tier)
Code is split into horizontal layers: presentation, business logic, data access. Each layer calls only the one below it, so business logic depends on the data layer.
- Layout
The common page shell: header, menu, footer, styles and scripts. A view is inserted into it with
@RenderBody(), and named fragments through sections.- Layout thrashing
Interleaving style writes with geometry reads (
offsetHeight,getBoundingClientRect), which forces the browser to recompute layout synchronously on every read.- Lazy initialization
Creating an object on first access instead of up front. .NET provides
Lazy<T>for this: by default it is thread-safe and caches an exception thrown by its factory.- Lazy loading
Loading a navigation property with a separate query the first time it's accessed. In EF Core it's enabled with the
Microsoft.EntityFrameworkCore.Proxiespackage andUseLazyLoadingProxies(), and it easily leads to N+1.- Lazy-loaded route
A route whose code is split into a separate chunk and loaded on first navigation, via
loadComponentorloadChildrenwith a dynamicimport(). It shrinks the initial bundle.- LCP (Largest Contentful Paint)
The time from the start of navigation until the largest image or text block in the viewport is rendered. Good is 2.5 seconds or less.
- LDAP
A protocol for accessing directories, including Active Directory: searching users, groups and attributes. In .NET the cross-platform client is
System.DirectoryServices.Protocols.- Lexical scope
The rule that a variable's visibility is determined by where it is declared in the code, not where it is called from. JavaScript has global, module, function and block scopes.
- libuv
The cross-platform asynchronous I/O library in C that Node.js is built on. It provides the event loop, non-blocking sockets via epoll, kqueue and IOCP, timers, and a thread pool for files and DNS.
- libuv thread pool (UV_THREADPOOL_SIZE)
A process-wide thread pool where libuv runs operations that have no non-blocking OS API: files,
dns.lookup, some crypto and async zlib. 4 threads by default, at most 1024, sized with theUV_THREADPOOL_SIZEenvironment variable.- Lifespan
An async context manager of a FastAPI application: code before
yieldruns when the process starts, code after it runs on shutdown. It replaces the deprecated startup and shutdown events.- Lifting state up
Moving state into the closest common parent of the components that need it. The parent passes the value and a setter down via props.
- Linearizability
The strongest consistency guarantee for a single object: the system behaves like one copy, and every read after a completed write sees it. This is the C in the CAP theorem.
- Linked list
A chain of nodes where each node holds an item and references to its neighbours. Inserting or removing at a known node is O(1), but there is no indexed access. In .NET it is the doubly linked
LinkedList<T>.- Linked token source
A
CancellationTokenSourcecreated withCreateLinkedTokenSource: it is canceled together with any of its parent tokens. It must be disposed, or its registration on the parent stays behind.- LINQ (Language Integrated Query)
A set of methods and C# query syntax for filtering, projecting, sorting and grouping data. LINQ to Objects works with in-memory
IEnumerable<T>, while providers such as EF Core work withIQueryable<T>.- Linux namespaces
A Linux kernel mechanism that gives a process its own view of resources: the process list, network, mount points, hostname. The foundation of container isolation.
- Liskov substitution principle (LSP)
A SOLID principle: an object of a subtype must work anywhere the base type is expected without breaking the program's correctness. The classic counterexample is a square derived from a rectangle.
- List pattern
A pattern such as
[1, .., var last](C# 11) that matches elements of an array, list orSpan<T>by position;..stands for any number of elements.- Liveness probe
A periodic Kubernetes check of whether the process is alive. After several consecutive failures the kubelet restarts the container, so it should not check external dependencies.
- Load balancer
A component that spreads incoming traffic across service instances and takes unhealthy ones out of rotation. L4 works with TCP/UDP connections, L7 with HTTP requests.
- Load testing
Testing a service under a fixed or growing request rate to find its throughput limit, latency growth and the point of degradation. Tools include k6, NBomber, JMeter and bombardier.
- Load watermark
The saved boundary of the last load: the highest
rowversionor modified date. The next run reads only the rows past that boundary — this is how an incremental load works.- Lock escalation
Replacing many fine-grained locks with a single table or partition lock. SQL Server attempts it when one statement holds 5,000 or more locks on a single object.
- Lock mode
The type of a lock, which defines what other locks it is compatible with. The main SQL Server modes are S (read), U (read before modifying), X (modify) and the intent modes IS, IX, SIX.
- Lock-free
An algorithm that uses no locks and is built on atomic operations such as CompareExchange. At least one thread always makes progress, even if others are suspended.
- Log category
The string a logger is created with; for
ILogger<T>it is the full name of typeT. Log levels in configuration are set by category prefix.- Log compaction
A Kafka topic retention policy (
cleanup.policy=compact) that keeps the latest record for each key. A record with a key and an empty value (a tombstone) deletes the key.- Log scope
A block opened with
ILogger.BeginScopewhose properties are added to every entry inside it. It is stored in anAsyncLocal, so it survivesawait.- Logging provider
An
ILoggerProviderimplementation that delivers entries to a specific destination: the console, Debug, EventSource, a file or an external system. One logger writes to all registered providers.- Logical query processing order
The order in which SQL binds the parts of a
SELECT:FROM,WHERE,GROUP BY,HAVING,SELECT,ORDER BY. It defines which names are visible at each step; the physical execution order is chosen by the optimizer.- LOH (large object heap)
The heap for objects of 85,000 bytes or more, usually large arrays. It is collected only with generation 2 and isn't compacted by default, so it tends to fragment.
- Long Polling
Receiving messages through an HTTP request that the server holds open until data appears. After the response the client immediately sends the next request.
- Lookup field
A field whose value comes from another dataset by key: the
KeyFieldsvalues are looked up in theLookupKeyFieldsofLookupDataSet, andLookupResultFieldis displayed.- Lost update
An anomaly in which two transactions read the same value, change it and write it back, and the last write overwrites the first one's change. Typical of the "read in the app, write the new value" pattern.
- LTS (Long Term Support)
A .NET release supported for three years. These are the even versions: .NET 8, .NET 10.
- Managed heap
The memory area where the CLR allocates reference-type objects. Memory there is allocated and reclaimed by the garbage collector.
- Managed identity
An identity that the cloud platform issues to the app itself. With it, the app accesses the secret store and other services without a password in its configuration.
- Mapped type
A type of the form
{ [K in keyof T]: ... }that iterates over keys and builds a new object type from them. It can add or removereadonlyand?and rename keys withas.- Master theorem
A ready-made solution for recurrences of the form T(n) = a·T(n/b) + f(n), which describe divide-and-conquer algorithms. For example, merge sort's T(n) = 2T(n/2) + O(n) gives O(n log n).
- Media query
An
@mediacondition under which styles apply: viewport width, orientation, device type, dark mode. The basis of responsive design.- Memoization
Caching a function's results by its arguments: a repeated call with the same arguments takes the answer from a dictionary or an array. It is top-down DP — recursion plus a cache.
- Memory barrier
An instruction that stops the compiler and the CPU from moving memory accesses across it. In .NET, Interlocked and Thread.MemoryBarrier provide a full barrier.
- Memory grant
Memory a query reserves before it starts for sorts and hash tables, based on the row estimate. An overestimate makes other queries wait for memory; an underestimate leads to a spill to tempdb.
- Memory leak
Growing memory use caused by objects that are no longer needed but stay reachable, or by unreleased unmanaged resources. In .NET it is usually forgotten event subscriptions, static collections and unbounded caches.
- Memory<T>
A regular struct that is a "window" onto contiguous memory (an array, a string or a
MemoryManager<T>) and can be stored in fields and passed acrossawait. The data is accessed through the.Spanproperty.- MERGE
A statement that matches a source against a target table and, in one pass, runs
UPDATE,INSERTorDELETEperWHENbranch. It needs a unique source andHOLDLOCKfor concurrent upserts.- Merge Join
A join of two inputs sorted on the join key in a single pass over both. Very cheap when an index provides the order; otherwise the plan needs an expensive Sort.
- Merge revision
An Alembic revision with two parents in
down_revisionthat joins two migration branches into a single head. Created withalembic merge heads.- Merge sort
A sort that splits the array in half, sorts the halves and merges them. Always O(n log n) and stable, but needs O(n) extra memory.
- Message broker
An intermediary server that accepts messages from senders, stores them and delivers them to receivers. The sender does not need the receiver to be available at send time. Examples are RabbitMQ, Apache Kafka and Azure Service Bus.
- Message deduplication
Dropping redelivered messages by their id or business key. Usually a table of processed ids with a unique key, filled in the same transaction as the data change.
- Message template
Log text with named placeholders, such as
Order {OrderId} created. Values are stored as separate properties, and the template itself serves as the key for grouping identical events.- Method hiding
Declaring a member in a derived class with the same name as in the base class, without
override; thenewmodifier makes it explicit. Which method runs is decided by the variable's static type.- Method resolution order (MRO)
The order of classes in which Python looks up an attribute under inheritance, available as
Cls.__mro__. It is built by C3 linearization, andsuper()follows it.- Metric cardinality
The number of unique combinations of a metric's label values, that is, the number of time series. A label with a user id or a full URL produces millions of series and overloads storage.
- Metric instrument
A
System.Diagnostics.Metricsobject that code records measurements through:Counter<T>,UpDownCounter<T>,Histogram<T>,Gauge<T>and their observable variants. Created from aMeter.- Microservices
An architecture style where the system consists of small services. Each owns its data, is released independently and talks to the others over the network.
- Microsoft Entra ID
Microsoft's cloud identity service, formerly Azure Active Directory. It issues tokens over OIDC, OAuth 2.0, SAML and WS-Federation and syncs with on-premises AD through Entra Connect.
- Microtask
A short callback that runs right after the current task, before the next task and before rendering: promise reactions, continuations after
await,queueMicrotask. The microtask queue is drained completely.- Middleware
A component of the ASP.NET Core request pipeline. It receives an
HttpContext, does its work and either passes the request to the next component or produces the response itself.- Middleware in NestJS
A function or a class implementing
NestMiddlewarethat runs before guards and the handler withreq,resandnext, like Express middleware. It doesn't know which handler will run and is wired up in a module'sconfiguremethod.- Migration bundle
An executable containing a project's migrations, built in CI with
dotnet ef migrations bundle(EF Core 6+). It applies missing migrations without the SDK or source code.- Migrations history table
The
__EFMigrationsHistorysystem table in the database listing applied migrations and the EF version.database update, bundles and idempotent scripts use it to find what hasn't been applied.- Minimal API
A way to define HTTP endpoints as delegates directly in
Program.cswithMapGet,MapPostand similar methods, without controller classes. Introduced in .NET 6, supports Native AOT.- Misfire
A Quartz trigger fire that did not happen on time, for example while the scheduler was down. The misfire policy decides whether to run it immediately, once, or skip it.
- Mock (mock object)
A test double the test uses to verify interactions: whether a call happened, how many times and with which arguments. In .NET they are created with NSubstitute and Moq.
- Modal form
A window that blocks the application's other windows until it is closed. In the VCL it is opened with
ShowModal, which returnsModalResult.- Model binding
Filling action or handler parameters with values from the request: route, query string, headers, form or body. The source is set by
[From...]attributes or inference rules.- Model snapshot
The
<Context>ModelSnapshot.csfile describing the model after the latest migration. EF compares the current model with it to generate the next migration; in a team it's a source of conflicts.- ModelState
The
ModelStateDictionarywith binding and validation results in MVC.ModelState.IsValidtells whether there are errors, and the errors themselves are grouped by field.- Modular monolith
A single deployable application whose code is split into modules by business capability. A module exposes only a public contract to others and owns its data.
- Monitor
The .NET class for mutual exclusion on any reference-type object. The lock statement on an ordinary object compiles to Monitor.Enter and Monitor.Exit in try/finally.
- monkeypatch
A built-in pytest fixture for temporarily replacing attributes, dictionary items and environment variables. Everything is restored after the test.
- mTLS (mutual TLS)
TLS where both sides present a certificate, not just the server. It encrypts traffic between services and proves exactly which service is calling.
- Multi-stage build
A Dockerfile with several
FROMinstructions: some stages build, and only the result is copied into the last one viaCOPY --from. Build tools do not end up in the final image.- Multi-statement table-valued function (MSTVF)
A function that fills a table variable with several statements and returns it. The optimizer cannot see inside it and estimates the result at a fixed 100 rows (one row before SQL Server 2014).
- Multi-targeting
Building one project for several TFMs via the
TargetFrameworksproperty. The NuGet package gets a separate assembly for each target.- Multicast delegate
A delegate with an invocation list of several methods that run in order. Created with
+=orDelegate.Combine; it returns the last method's result.- Mutable object
An object whose state can be changed in place:
list,dict,set. Immutable ones (int,str,tuple,frozenset) produce a new object on every "edit". Mutability is defined by the type.- Mutation testing
A way to assess test quality: a tool makes small changes to the code (mutants) and checks whether the tests fail. A surviving mutant is untested behavior. In .NET the tool is Stryker.NET.
- Mutex
A mutual exclusion primitive backed by an OS kernel object. It is slower than lock, but a named Mutex is visible to other processes.
- MVC (Model-View-Controller)
An architectural pattern that splits a UI app into a model (data and logic), a view (display) and a controller (request handling). In ASP.NET Core MVC the controller picks a view and passes it a model.
- MVC filter
Code that MVC runs around an action at a specific stage: authorization, resource, action, exception or result. Unlike middleware, it sees the action context — arguments,
ModelStateand the result.- MVCC (multi-version concurrency control)
A transaction isolation approach in which the database keeps several versions of a row and each transaction sees the version that is current for its snapshot. Readers don't block writers and vice versa. In PostgreSQL old versions live in the table itself; in SQL Server with RCSI, in a separate version store.
- N+1 problem
A data access anti-pattern: one query loads a list of N items, then one more query per item fetches related data. The typical cause is lazy loading inside a loop.
- Name binding
Assignment in Python binds a name to an object rather than putting a value into a slot.
b = agives the same object a second name; no copy is made.- Named options
Several instances of one settings class under different names, for example for two payment gateways. Read through
Get(name)onIOptionsSnapshot<T>orIOptionsMonitor<T>.- Naming convention (SQLAlchemy)
Name templates for indexes and constraints in
MetaData(naming_convention=...). With them every constraint gets a predictable name, so Alembic can alter or drop it.- Narrowing
The compiler refining a variable's type from checks in the code: after
typeof x === 'string',instanceof,inor a comparison with a literal, a narrower type is known inside the branch.- Native AOT
Publishing an app as a single native executable with no JIT and no installed .NET. Fast startup and less memory, but no dynamic assembly loading or
Reflection.Emit, and trimming is mandatory.- NativeInt
A Delphi integer type whose size equals the pointer size: 4 bytes on Win32 and 8 bytes on Win64. It holds pointers and object references cast to a number.
- Natural key
A key made of domain attributes: a product code, a tax ID, an ISO currency code. Meaningful to people, but it can change and is often long.
- Negotiate (SignalR)
The client's first request,
POST {hub}/negotiate. The server returns the connection id and token plus the available transports; Azure SignalR Service returns a redirect to its own URL.- Negotiate (SPNEGO)
A mechanism that selects the authentication protocol: Kerberos first, NTLM if that fails. In HTTP it's the
WWW-Authenticate: Negotiatescheme (RFC 4559); in ASP.NET Core, theAddNegotiate()handler.- Nested groups
AD groups that are members of other groups. A member of a nested group gets the outer group's rights; the Windows token and the
tokenGroupsattribute already contain this transitive membership, whilememberOfholds only direct membership.- Nested Loops
A join that looks up matches in the inner input for every row of the outer input. Efficient when the outer input is small and the inner input has an index on the join key.
- NestJS lifecycle hooks
Methods on providers and modules that NestJS calls at startup (
onModuleInit,onApplicationBootstrap) and shutdown (onModuleDestroy,beforeApplicationShutdown,onApplicationShutdown). Signal-triggered shutdown hooks only run afterenableShutdownHooks().- NestJS module (@Module)
A class decorated with
@Module()that groups the controllers and providers of one area, imports other modules and decides throughexportswhat they may use. An application is a tree of modules rooted atAppModule.- NestJS provider
Anything the NestJS DI container can create and inject: a service, repository, factory or value. Usually a class with
@Injectable()registered in a module'sproviders.- NestJS testing module (Test.createTestingModule)
The
@nestjs/testingAPI that builds an application module for a test and lets you replace providers withoverrideProvider. A full application for e2e tests is created from it as well.- ng update
The Angular CLI command that upgrades packages to the next major version and runs automatic code migrations. You can't skip versions: upgrades go one at a time.
- NgRx SignalStore
A store from the
@ngrx/signalspackage built on signals: state, computed values and methods are composed withwithState,withComputedandwithMethods. Much less code than the classic NgRx Store.- NgRx Store
Redux for Angular: global state changes only through actions and reducers, is read through selectors, and side effects live in effects. It gives tracing in Redux DevTools at the cost of boilerplate.
- Node.js inspector (--inspect)
The built-in debugging and profiling protocol that Chrome DevTools and VS Code attach to. Enabled with the
--inspectflag; by default it listens on127.0.0.1:9229.- Node.js LTS
A Node.js release line with long-term support: Active LTS, then Maintenance, about 30 months in total. Up to Node 26, even-numbered versions became LTS; from Node 27 there is one major release a year, and each becomes LTS.
- NOLOCK
A SQL Server table hint equivalent to READ UNCOMMITTED: reading without shared locks. It gives dirty data, missed and duplicated rows, and doesn't avoid schema locks or writer conflicts.
- Non-functional requirements
Requirements about how the system works rather than what it does: load, latency, availability, consistency, security, data retention. They are what drives the architecture.
- Non-repeatable read
An anomaly in which reading the same row again within a transaction returns a different value, because another transaction changed and committed it.
- Non-root container
A container whose process does not run as root. Since .NET 8 the images include an
appuser (its UID is inAPP_UID); you switch to it withUSER $APP_UID, chiseled images do it by default.- Nonclustered index
A structure separate from the table: the index key plus a row pointer — the clustering key or a RID. Columns missing from the index are fetched from the table.
- NonGC heap (frozen heap)
A memory area in .NET 8+ for objects that live for the whole process lifetime, such as string literals. The GC neither collects nor moves them, and
GC.GetGenerationcan returnint.MaxValuefor them.- Normalization
Designing tables so that every fact is stored in one place. The steps of normalization are called normal forms: 1NF, 2NF, 3NF, BCNF.
- NTLM
A challenge-response Windows authentication protocol: the client proves knowledge of the password hash, and the server verifies the answer through a domain controller. It doesn't authenticate the server or support delegation, and it has been deprecated since 2024.
- NuGet
The .NET package manager. A
.nupkgpackage holds assemblies for different TFMs and a list of dependencies;dotnet restoredownloads packages and picks their versions.- NuGet Audit
A check of packages against known vulnerabilities on every restore (.NET 8 SDK+). It reports warnings NU1901–NU1904 by severity; for
net10.0it checks transitive packages by default.- NuGet feed (package source)
A server or folder NuGet downloads packages from. A company's private feed (Azure Artifacts, GitHub Packages, BaGetter, Nexus) hosts internal packages and often proxies nuget.org.
- Null-forgiving operator
The postfix
!, as inx!.Length: it tells the compiler the expression is notnulland suppresses the warning. Nothing is checked at run time.- Null-state analysis
The compiler's static analysis that tracks, for every expression, whether it is not-null or maybe-null, taking into account checks, assignments and attributes such as
[NotNullWhen].- Nullable context
The setting that turns on
?annotations and null warnings:enable,warnings,annotationsordisable. It is set with the<Nullable>element in the project and with#nullabledirectives in code.- Nullable reference types (NRT)
A C# 8+ feature: a reference type without
?is treated as non-nullable, and with?as nullable. The compiler warns about possibleNullReferenceExceptions; nothing is checked at run time.- Nullish coalescing (??)
a ?? breturnsbonly ifaisnullorundefined. Unlike||, it does not replace0,''orfalse.- OAuth 2.0
A delegated access protocol (RFC 6749): the user lets an app call an API on their behalf, and the app gets an access token instead of the password.
- Observability
The property of a system that lets you infer its internal state from the data it emits: metrics, traces and logs. Unlike monitoring, it also answers questions nobody thought of in advance.
- Observable (RxJS)
A lazy stream of values over time: it starts working on subscription, can emit many values, an error or completion, and is cancelled by unsubscribing. In Angular,
HttpClient, the router and forms return Observables.- Observer
A behavioral pattern: a publisher notifies all its subscribers about a change. In .NET this means events (
event) and theIObservable<T>andIObserver<T>interfaces.- Offset
The number of a record within a Kafka partition. A consumer group commits the offset of the next unread record to the internal
__consumer_offsetstopic and resumes from it after a restart.- OLAP (online analytical processing)
An analytical workload: aggregates over millions of rows sliced by time, store and product. The data usually lives in a separate warehouse with a star schema or in cubes.
- OLTP (online transaction processing)
A workload of many short transactions: a sale, an order, a payment. The schema is normalized, and queries read and write a few rows by key.
- OnPush
A change detection strategy where a component is checked only on a new input by reference, an event inside it,
markForCheck()or a change in a signal it reads. The default strategy since Angular 22.- Opaque token (reference token)
A random string with no data inside. The API learns what stands behind it through introspection at the authorization server: such a token can be revoked instantly but needs a network call.
- Open/Closed Principle (OCP)
The O in SOLID: a module is open for extension and closed for modification. Formulated by Bertrand Meyer in 1988; Martin achieves it through abstractions and polymorphism.
- OpenAPI
A standard for machine-readable HTTP API descriptions in JSON or YAML: paths, parameters, bodies, responses and schemas. Formerly called Swagger; documentation, clients and tests are built from it.
- OpenID Connect (OIDC)
An authentication layer on top of OAuth 2.0: the
openidscope, the ID token, the UserInfo endpoint and the discovery document. It lets an app learn who signed in.- OpenID Connect discovery document
JSON at
/.well-known/openid-configurationon the authorization server: the issuer, endpoint addresses andjwks_uri.AddJwtBeareruses it to find the signature validation keys on its own.- OpenTelemetry
An open standard and set of SDKs for collecting three telemetry signals — traces, metrics and logs — and sending them to any compatible backend. In .NET it builds on
Activity,MeterandILogger.- OperationCanceledException
The exception an operation uses to report cancellation. An async method that ends with it gets the
Canceledstatus;TaskCanceledExceptionderives from it.- Optimistic concurrency
An approach to concurrent edits without holding locks: on save, the system checks that the row hasn't changed since it was read, and rejects the operation on conflict. The opposite is pessimistic locking of the row for the duration of the work.
- Options pattern
Binding a configuration section to a typed settings class that services receive through DI as
IOptions<T>,IOptionsSnapshot<T>orIOptionsMonitor<T>. Supports validation.- Orchestration
A way to coordinate a saga where an orchestrator stores its state, sends commands to the participants and triggers compensations on failure.
- ORM (object-relational mapping)
A library that maps application classes to database tables: it generates SQL from operations on objects and turns result rows into objects. In .NET that's EF Core or NHibernate; Dapper is called a micro-ORM.
- OSR (on-stack replacement)
Replacing a method's code while it is running: a long loop in unoptimized code switches to an optimized version. On by default since .NET 7 on x64 and Arm64.
- OTLP (OpenTelemetry Protocol)
The OpenTelemetry protocol for sending traces, metrics and logs over gRPC or HTTP. The OpenTelemetry Collector and most observability systems, including Elastic, accept it.
- Out-of-process hosting
An IIS hosting model in which ANCM starts the app as a separate process with Kestrel and forwards requests to it over HTTP via loopback.
- Outer join (LEFT, RIGHT, FULL JOIN)
A join that keeps rows of one or both tables even without a match and fills the other side's columns with
NULL. LEFT preserves the left table, RIGHT the right one, FULL both.- Output caching
ASP.NET Core middleware (.NET 7+) that stores ready responses on the server by server-side policies and ignores client headers. It supports tags, locking on a miss and Redis.
- OWASP Top 10
The OWASP community's ranking of the ten main risk categories for web applications. It is updated every few years; the current edition is from 2025.
- PAC (Privilege Attribute Certificate)
A structure inside an Active Directory Kerberos ticket that lists the SIDs of the user and all of their groups. The server builds a Windows token from it without querying the directory.
- PACELC
Daniel Abadi's extension of CAP (2010–2012): if there is a partition (P), the system trades availability (A) against consistency (C); else (E), latency (L) against consistency (C).
- Package lock file (packages.lock.json)
A file with the project's full dependency graph and exact versions, transitive ones included. With
dotnet restore --locked-mode, restore uses exactly these versions or fails if the graph changed.- Package Source Mapping
A
nuget.configsetting that defines, per package name pattern, which feed a package may come from. It protects against internal packages being replaced by same-named ones from nuget.org (dependency confusion).- package-lock.json
npm's lockfile with exact versions and integrity hashes of the whole dependency tree, transitive dependencies included.
npm ciinstalls strictly from it and fails if it disagrees withpackage.json.- Page density
How full the index pages are —
avg_page_space_used_in_percent. Half-empty pages need more reads and more buffer pool memory for the same data.- Page split
An insert into a full index page: SQL Server allocates a new page and moves part of the rows into it. The result is extra log, fragmentation and half-empty pages.
- PAR (Pushed Authorization Requests)
An OAuth extension (RFC 9126): the client sends authorization parameters in a direct POST and gets a
request_uri, and the browser goes to/authorizewith only that. Parameters are neither visible nor tamperable in the browser.- Parallel Programming Library (PPL)
The
System.Threadingunit:TTaskandITasktasks,IFuture<T>tasks with a result andTParallel.Forparallel loops, all running on a thread pool.- Parallel run
The old and new versions of a system run at the same time on the same data. Results are compared, and the old version stays as the rollback path until the new one proves equivalent.
- Parameter sniffing
Optimizer behavior where a plan is compiled for the parameter values of the first call and reused for the rest. Helpful with uniform data, harmful with skewed data.
- Parameterized test
One test method that runs against several sets of input data. In xUnit it is
[Theory]with[InlineData]or[MemberData], in NUnit[TestCase], in MSTest[DataRow].- Parametric polymorphism
The same code works with any type passed as a parameter. In C# these are generics:
List<T>,Max<T>(T a, T b).- Parent control (Parent)
The windowed control (
TWinControl) inside which a control is displayed. It positions and paints its child controls and also frees them along with itself.- Partial index
An index over only the rows that satisfy the
WHEREcondition in its definition. Smaller than a full index and used by queries with a compatible condition; the equivalent of a SQL Server filtered index.- Partial Prerendering (PPR)
A Next.js rendering mode: the static and cached part of a page is prebuilt into a static shell, and dynamic parts behind
Suspensestream in the same response.- Partial view
A
.cshtmlfile with a repeated chunk of markup that other views include via<partial>. It has no logic of its own and gets its data from the parent.- Partition
A slice of a Kafka topic — a separate ordered log on one of the brokers. Record order is guaranteed only within a partition, and in a consumer group each partition is read by one consumer.
- Partition elimination
An optimization where a query filtering on the partitioning column reads only the partitions it needs. Without such a filter the query touches every partition.
- Partition switching
ALTER TABLE ... SWITCH: moving a partition into or out of another table by changing metadata, without copying rows. The basis of sliding-window archiving and fast loading.- Pass by object reference (call by sharing)
How Python passes arguments: a function parameter becomes another name for the same object. Changes to the object are visible to the caller; rebinding the parameter is not.
- Password hashing
Storing a password as the output of a slow function (PBKDF2, bcrypt, scrypt, Argon2) with a salt. The slowness is deliberate: it makes brute-forcing a leaked database expensive.
- Pattern matching
Testing a value against a pattern — a type, properties, a range, a list — while extracting data into variables. Works in
is,switchstatements andswitchexpressions.- PDP and PEP (policy decision and enforcement points)
A policy decision point computes the permit or deny decision; a policy enforcement point intercepts the request and enforces that decision. The split is described in NIST SP 800-162; OPA and OpenFGA are examples of external PDPs.
- Percentile (p50, p95, p99)
The value below which a given share of measurements falls: p99 = 200 ms means 99% of requests are faster than 200 ms. In metrics, percentiles are approximated from histogram buckets.
- PerfView
A free Microsoft profiler on top of ETW: it collects CPU, allocation, GC and exception traces and analyses them offline. The learning curve is steep, but it shows what counters and logs do not.
- Persistent fields
TFieldobjects created in the Fields Editor and stored in the .dfm. They give typed access and let you add calculated and lookup fields, but must match the query columns by name and type.- Pessimistic concurrency
Concurrency control through locks: data is locked before it is changed, and competitors wait. Pays off with frequent conflicts on short transactions.
- pg_stat_statements
A PostgreSQL extension that accumulates execution statistics per normalized query: calls, total and mean time, rows, block reads. The closest equivalent of Query Store, but it does not store plans.
- PgBouncer
A lightweight external connection pooler for PostgreSQL. In
transactionmode it gives a client a server connection only for the duration of a transaction, so thousands of client connections are served by a small number of server processes.- Phantom dependency
A package your code imports even though it is not in your own
package.json: it is reachable only because npm hoisted someone else's transitive dependency into a flatnode_modules. It breaks when the package that pulled it in is updated.- Phantom read
An anomaly in which re-running a query with the same condition returns new or missing rows: another transaction inserted or deleted matching records.
- pickle
The built-in format for serializing Python objects to bytes.
multiprocessinguses it to pass data between processes, which is why lambdas and local functions cannot be sent.- Pinning
Preventing the GC from moving an object so its address can be passed to native code:
fixed, aGCHandleof typePinned, or allocation on the POH. Pinned objects get in the way of compaction and fragment the heap.- Pipe in NestJS
A class with a
transformmethod that validates or transforms a handler argument before the call. Built-in ones includeValidationPipeandParseIntPipe; a failing pipe produces a 400.- Pivot transaction
The saga step after which no compensations run: the remaining steps are only retried until they succeed, so they must be idempotent.
- PKCE (Proof Key for Code Exchange)
An OAuth extension (RFC 7636): the client sends a hash of a random string in the authorization request and the string itself when redeeming the code. An intercepted code is useless without it.
- Plan cache
The memory area where SQL Server keeps compiled plans for reuse. A plan is matched by the query text with its parameter declarations and by the session SET options.
- Plan forcing
Pinning a specific Query Store plan to a query with
sp_query_store_force_plan. The server compiles the query with that plan until forcing is removed or the plan becomes impossible.- Platform adapter
The layer through which NestJS works with an HTTP library:
@nestjs/platform-express(the default) or@nestjs/platform-fastify. Decorator-based NestJS code doesn't depend on the choice.- Pod
The smallest unit of deployment in Kubernetes: one or more containers sharing an IP and volumes. Pods are ephemeral — controllers such as a Deployment create and delete them.
- POH (pinned object heap)
The heap for objects that must not move (.NET 5+). An array is allocated there with
GC.AllocateArrayandpinned: true; it is collected with generation 2 and never compacted.- Point-to-point
A messaging model where each message in a queue goes to exactly one of the competing consumers. It's how work is spread across instances of a service.
- Polymorphism
The ability of one piece of code to work with objects of different types. In OOP it usually means subtype polymorphism: a virtual call picks the implementation by the object's actual type.
- Ports and adapters (hexagonal architecture)
Alistair Cockburn's style: the application talks to the outside world only through ports — interfaces it declares itself. An adapter implements a port for a specific technology: a controller, an EF Core repository, an SMTP client.
- Prefix sums
An array where element i is the sum of the first i elements of the original. After O(n) setup, the sum of any range takes O(1) as the difference of two prefixes.
- Preflight request
An
OPTIONSrequest the browser sends before a "non-simple" cross-origin request: one with a method such asPUT, anapplication/jsonbody or custom headers. Without the server's permission the actual request is not sent.- preStop hook
An action the kubelet runs before sending SIGTERM to a container: a command, an HTTP request or a
sleeppause. The hook's time counts againstterminationGracePeriodSeconds.- Primary constructor
- Primitive
A JavaScript value that is not an object and has no methods:
string,number,bigint,boolean,undefined,null,symbol. Primitives are immutable and compared by value.- Primitive obsession
A code smell: domain concepts such as email, money and identifiers are stored as
string,decimalandint. Validation gets scattered across the code; the cure is the Replace Primitive with Object refactoring.- Principle of least privilege
A user or process gets only the permissions its task needs, and only for as long as it needs them. In NIST SP 800-53 this is control AC-6.
- Prisma Client
A typed database client that
prisma generatebuilds from the schema:findMany,create,updateand other methods for each model. It doesn't track changes — every call runs a query right away.- Prisma driver adapter
A package through which Prisma Client runs queries with a regular database driver, for example
@prisma/adapter-pgon top ofpg. Since Prisma 7 an adapter is required, and the connection pool is configured in the driver.- Prisma interactive transaction
A
prisma.$transaction(async (tx) => ...)call: every query throughtxruns in one transaction, and you can run your own logic between them. An exception rolls it back; the default timeout is 5 seconds.- Prisma Migrate
Prisma's migration tool:
prisma migrate devcreates SQL migrations from schema changes, andprisma migrate deployapplies ready-made migrations in CI and production. History is kept in the_prisma_migrationstable.- Prisma schema (schema.prisma)
A file in the Prisma schema language with the data source, generators and models. Prisma Migrate builds SQL migrations from it, and the generator builds a typed client.
- Privilege creep
The gradual growth of an employee's permissions: transfers and new projects add access, but the old access is never removed. The cure is access reviews and revoking permissions on a role change.
- ProblemDetails
A standard JSON error format for HTTP APIs defined by RFC 9457 (formerly RFC 7807), with
type,title,status,detailandinstancefields. ASP.NET Core enables it withAddProblemDetails().- Process pool (ProcessPoolExecutor)
An executor from
concurrent.futuresthat runs functions in separate processes. Each process has its own interpreter and its own GIL, and arguments and results travel through pickle.- Producer-consumer
A pattern where some threads put work into a shared queue and others take it out and process it. The queue decouples the pace of production from the pace of processing.
- Projection
Selecting only the needed fields from a source, such as
Selectinto a DTO in a LINQ query. EF Core then reads only those columns and does not track entities.- Prometheus
A monitoring system and time series database. It scrapes metrics from services' HTTP endpoints (pull), stores them and evaluates alerting rules; charts are usually built in Grafana.
- Promise
An object holding the result of an asynchronous operation, which will be fulfilled with a value or rejected with an error. The
then,catchandfinallycallbacks run as microtasks.- Prop drilling
Passing props through several layers of components that don't need them just to reach a deep descendant. Context or composition via
childrenfixes it.- Property injection
A form of DI where the container assigns dependencies to public properties of an already created object. The built-in .NET container does not support it; Autofac does.
- Props
The inputs a parent passes to a React component. The component only reads them; to change something above, it calls a callback from props.
- Protocol (typing.Protocol)
An interface description for structural typing (PEP 544, Python 3.8): a class is compatible with a protocol if it has the required methods, with no explicit inheritance. Checked by mypy and pyright.
- Protocol Buffers (Protobuf)
Google's binary serialization format: the schema is described in
.proto, and every field is encoded by its number and type. Messages are more compact than JSON but unreadable without the schema.- Provisioning
Automatically creating accounts and granting permissions in target systems — AD, SaaS, internal apps — and the reverse process, deprovisioning. The standard protocol for it is SCIM (RFC 7643, RFC 7644).
- Proxy
A structural pattern: an object with the same interface as the real one controls access to it — creates it lazily, calls it remotely, checks permissions or caches results.
- PSP optimization (Parameter Sensitive Plan)
A SQL Server 2022 feature at compatibility level 160: for a query over skewed data the server keeps several plan variants and picks one by the cardinality range of the current parameter value. Works with equality predicates.
- Pub/sub (publish-subscribe)
A messaging scheme: a sender publishes a message to a topic or channel without knowing the receivers, and every subscriber gets it. Whether messages are stored depends on the system: Redis pub/sub delivers only to current subscribers, while Kafka and Service Bus subscriptions keep them until they are read.
- Public client
A client that cannot keep a secret: an SPA, a mobile or desktop app. Its code is available to the user, so PKCE is mandatory for it.
- Pull request (PR, merge request)
A request to merge one branch into another on a platform such as GitHub, GitLab or Azure DevOps. Review, discussion and CI checks happen around it; GitLab calls it a merge request.
- Pure function
A function whose result depends only on its arguments and which has no side effects: it does not change fields or write to files or a database. It is easy to test and safe to call in parallel.
- Pydantic
A library for data validation and serialization driven by type hints. Models inherit from
BaseModel; in version 2 the pydantic-core engine is written in Rust.- pydantic-settings
A package with the
BaseSettingsclass: settings fields are filled from environment variables,.envand secret files, and Pydantic validates the types when the object is created.- pyproject.toml
The standard Python project file: metadata and dependencies in the
[project]table (PEP 621), the build system and tool settings in[tool.*]tables. The counterpart of.csproj.- pytest fixture
A function decorated with
@pytest.fixturethat prepares data or a resource for a test. The test receives its result as a parameter with the same name, and the code afteryieldruns as teardown.- Quality gate
A set of thresholds an analysis result must pass to be considered acceptable, for example no new issues and at least 80% coverage on new code. In SonarQube a failed gate can stop the pipeline and block the PR merge.
- Quartz.NET
A job scheduler for .NET: a job (
IJob) runs on triggers — an interval, cron or a calendar. WithAdoJobStoreit keeps the schedule in a database and runs as a cluster.- Query materialization
Running a lazy query and storing the result in a collection:
ToList(),ToArray(),ToDictionary(). After that, further reads do not run the query again.- Query optimizer
The DBMS component that uses the query text, statistics and indexes to pick the execution plan with the lowest estimated cost. The query says what to get; the optimizer decides how.
- Query provider
An
IQueryProviderimplementation that builds and executesIQueryable<T>queries by translating the expression tree into the data source's language. The EF Core provider, which generates SQL, is one example.- Query Store
A per-database store of query history, plans and runtime statistics. Introduced in SQL Server 2016 and on by default for new databases since SQL Server 2022; it helps find regressions and pin a plan.
- Query Store hints
Query hints such as
RECOMPILEorMAXDOPattached to a query in Query Store throughsys.sp_query_store_set_hints, without changing its text. Available since SQL Server 2022.- Queue-based load leveling
A pattern where requests go into a queue and workers drain it at a steady rate. A peak turns into queue growth and latency instead of an overloaded service.
- Quicksort
A sort that picks a pivot, partitions the rest into smaller and larger elements and recursively sorts the parts. O(n log n) on average and in place, O(n²) in the worst case; unstable.
- Quorum
The minimum number of replicas that must acknowledge a write (W) or answer a read (R). When W + R exceeds the number of replicas N, a read overlaps with at least one up-to-date replica.
- Race condition
A bug where the program's result depends on the order in which threads access shared data. The classic example is a lost increment when two threads run count++.
- Ranking functions
ROW_NUMBER,RANK,DENSE_RANKandNTILE— window functions that number rows within a partition. They differ in how they treat ties.- Rate limiting
Protection that rejects requests above a limit, usually with status 429. Since .NET 7 ASP.NET Core has middleware with fixed window, sliding window, token bucket and concurrency algorithms.
- Razor
A template syntax that embeds C# in HTML with the
@symbol..cshtmlfiles are compiled into C# classes at build time, and values written out are encoded automatically.- Razor Pages
A server-rendered UI model where a
.cshtmlpage with the@pagedirective answers a route itself, andOnGetandOnPosthandlers live next to it in aPageModelclass. Built on the MVC infrastructure.- RBAC (role-based access control)
A model where permissions are grouped into roles and users are assigned roles. The NIST model is standardized as ANSI INCITS 359 and, beyond the core level, covers role hierarchies and separation of duties.
- RBAR (row by agonizing row)
A tongue-in-cheek name for row-by-row processing: cursors,
WHILEloops and per-row calls from an application. The term was coined by Jeff Moden.- RBCD (resource-based constrained delegation)
Constrained delegation configured by the owner of the target service: its account lists the accounts allowed to delegate to it. Introduced in Windows Server 2012; works across domains.
- RCSI (read committed snapshot isolation)
SQL Server's row-versioning implementation of READ COMMITTED: each statement reads data committed before it started, without shared locks. Enabled by the
READ_COMMITTED_SNAPSHOTdatabase option and on by default in Azure SQL Database.- React Compiler
A build-time tool that analyzes components and automatically memoizes values, JSX and callbacks. The stable 1.0 release shipped in October 2025.
- React hooks
Functions whose names start with
use(useState,useEffect,useContext) that give a component state and other React features. They are called only at the top level of a component or custom hook.- React Server Components (RSC)
Components that run only on the server or at build time. They can be
asyncand read data directly, and their code never reaches the browser, but they have no state or event handlers.- Read model
Data shaped for specific queries: flat tables, documents, a cache. In CQRS it is updated from events or changes in the write model, so it may lag behind.
- Read-your-writes
A session guarantee: a user always sees their own writes, even while other clients may still read an older version from a lagging replica.
- Readable secondary replica
A secondary replica of an Always On availability group that accepts read-only connections. Its data lags the primary by the time it takes to ship and apply the log, and queries run under snapshot isolation.
- ReaderWriterLockSlim
A lock that admits many readers at once or a single writer. It is thread-affine and does not support recursion by default.
- Readiness probe
A periodic Kubernetes check of whether a container is ready to accept traffic. On failure the pod is removed from the Service's EndpointSlices but not restarted.
- ReadyToRun (R2R)
A form of AOT compilation that adds precompiled machine code to an assembly alongside its IL. It speeds up startup; the JIT stays and recompiles hot methods.
- ReBAC (relationship-based access control)
A model where permissions are derived from a graph of relationships between users and objects — "owner", "group member", "folder contains document". Google Zanzibar, OpenFGA and SpiceDB work this way.
- Rebalance
Reassignment of partitions among consumer group members when a member joins, leaves or stops responding. Records processed but not committed before the rebalance are delivered again.
- Rebase
Moving a branch's commits onto a new base: Git reapplies each commit on top of another branch and creates a copy with a new hash. It makes history linear but rewrites it.
- Receiver
The value an extension member is called "on": the
thisparameter of a classic extension method or the parameter of anextension(...)block in C# 14.- Reconciliation
A periodic comparison of data in two systems: counts, totals and document numbers for a period. It finds what was lost or duplicated despite receipts and retries.
- Reconciliation (React)
The algorithm React uses to compare a new element tree with the previous one and decide which DOM nodes to update, create or remove. List items are matched by
key.- Record
The
recordmodifier for a class (C# 9) or a struct (C# 10): the compiler generates value equality,ToString,Deconstructfor positional parameters and support forwith.- Recursion
A technique where a function calls itself on a smaller subproblem. It needs a base case without recursion and a step that moves towards it; every call takes a stack frame.
- Recursive CTE
A CTE that references itself: the anchor part produces the initial rows, and the recursive part after
UNION ALLrepeats while it returns rows. Used to walk hierarchies; in SQL Server the depth is limited byMAXRECURSION, 100 by default.- RED method
A metric set for a request-serving service: Rate (requests per second), Errors and Duration (response time). Proposed by Tom Wilkie as a complement to USE.
- Red-black tree
A self-balancing binary search tree: insert, delete and lookup take O(log n).
SortedSet<T>andSortedDictionary<TKey, TValue>are built on it.- Redis
An in-memory key-value store with optional persistence. Typical roles are a distributed cache, counters, queues and locks; in ASP.NET Core it plugs in as
IDistributedCacheor directly via StackExchange.Redis.- Reentrancy
A handler being called again while its previous call has not finished yet. In the VCL it happens with
Application.ProcessMessagesinside an event handler.- Reentrant lock
A lock that the owning thread can enter again without waiting for itself; it has to exit the same number of times. Monitor and Lock are reentrant, SemaphoreSlim is not.
- Ref and HEAD
A ref is a name that points to a commit: a branch, a tag or a remote-tracking branch. HEAD is a special ref to the current branch or, in a detached HEAD state, directly to a commit.
- Ref safety
C# compiler rules that keep a reference (
ref,Span<T>, anyref struct) from outliving the data it points to. For example, you cannot return a span over astackallocbuffer; thescopedmodifier narrows the allowed lifetime.- ref struct
A struct that can live only on the stack: it cannot be boxed, stored in a class field or captured by a lambda. Example:
Span<T>.- Reference counting
CPython's main memory management mechanism: every object has a reference count, and the object is freed as soon as the count drops to zero. Reference cycles are not freed this way.
- Reference counting in Delphi
A lifetime model where a value carries a count of references: the compiler increments it on assignment and decrements it when a reference goes away, and the memory is freed at zero. Strings, dynamic arrays, interfaces and anonymous methods live this way in Delphi.
- Reference equality
Two references point to the same object. Checked with
object.ReferenceEquals;==andEqualson classes behave this way by default.- Reference token
An opaque identifier token: the data stays with the authorization server, and the API gets it through introspection. It is revocable instantly and reveals nothing, but needs a network call.
- Reference type
A type whose variable contains a reference to an object on the managed heap; assignment copies the reference. In C# these are
class,interface,string, arrays and delegates.- Reflog (reference log)
A local log where Git records every move of HEAD and branches. It is how you find commits after
reset --hardor a deleted branch; entries live 90 days by default, unreachable ones 30.- Reflow
Recomputing element sizes and positions (layout) after a change to geometry or the DOM. More expensive than a repaint, which only redraws pixels.
- Refresh token
A long-lived token the client exchanges at the authorization server for a new access token without the user signing in again. It is never sent to APIs.
- Refresh token rotation
The authorization server issues a new refresh token on every refresh and invalidates the old one. Presenting the old one again signals theft, and the server revokes the whole chain.
- Registered claims (iss, sub, aud, exp)
The standard JWT payload fields:
issis the issuer,subthe subject,audthe intended audience,expandnbfthe lifetime bounds,iatthe issue time,jtithe token id. Validate the signature together withiss,audandexp, or a token meant for someone else passes.- Regression testing
Re-checking functionality that already worked after a change. In a migration it confirms that the new version behaves the same as the old one.
- reintroduce
A method directive that explicitly hides an ancestor's virtual method of the same name and suppresses warning W1010. The counterpart of the
newmodifier in C#.- Relying party trust
An ADFS entry for an application that ADFS issues tokens to: identifier, return URL, protocol, claim rules and access policy.
- Remote (remote repository)
A named reference to another copy of the repository, usually on a server:
originis created bygit clone. Commits are exchanged with it viafetch,pullandpush.- Remote-tracking branch
A local ref such as
origin/mainthat remembers where a server branch was at the lastfetch. You do not commit to it directly:fetchandpullupdate it.- Render-blocking resource
A resource the browser must have before it starts rendering: stylesheets in the
headand synchronous scripts. Scripts withdefer,asyncand modules do not block.- Request pipeline
The chain of middleware every HTTP request passes through: in registration order on the way in and in reverse on the way out. It is built once when the app starts.
- Request timeout
ASP.NET Core middleware (.NET 8+) that cancels the
HttpContext.RequestAbortedtoken after a set time. If the app does not handle the cancellation, the client gets a 504.- RequestDelegate
The
Task RequestDelegate(HttpContext context)delegate — the signature of a pipeline step and of an endpoint. The whole built pipeline is a singleRequestDelegatetoo.- Requests and limits
Container resources in Kubernetes. Requests are a reservation the scheduler uses to pick a node; limits are a ceiling: exceeding memory gets the process killed (OOMKilled), exceeding CPU gets it throttled.
- Required member
A property or field with the
requiredmodifier (C# 11): it must be set in the object initializer, or the code does not compile. It helps with NRT when objects are created without a parameterized constructor.- Resource-based authorization
An access check on a specific object, such as a document or a request, after it is loaded. In ASP.NET Core it is done in code by calling
IAuthorizationService.AuthorizeAsync(user, resource, policy).- Respawn
Jimmy Bogard's library that quickly cleans a test database between tests: it deletes table data in foreign-key order and leaves the schema alone.
- Response caching
Caching HTTP responses by standard headers: browsers, proxies and CDNs store a response according to
Cache-Control. ASP.NET Core has the[ResponseCache]attribute and a middleware of the same name.- REST
An architectural API style where a URL names a resource and a standard HTTP method expresses the action on it. The status code reports the outcome, and the server keeps no client state between requests.
- Retention
The policy by which a broker removes old log data: by time (
retention.ms, 7 days by default), by size, or by per-key compaction. Reading never deletes data.- Retry storm
An avalanche of requests when retries at several layers multiply or all clients retry at once. It finishes off an already overloaded service.
- Reverse proxy
A server in front of the app that accepts requests from the network and forwards them to the app. It usually terminates TLS, balances load and lets several apps share ports 80 and 443.
- Role explosion
Uncontrolled growth in the number of roles when every combination of job title, department, region or project gets its own role. A sign that the parameter belongs in an attribute (ABAC) or a relationship (ReBAC).
- Role interface
An interface that describes one role an object plays for a specific client, rather than all its public methods. The opposite is a header interface, which mirrors the whole class.
- Roll-forward
The rule for choosing a runtime version when an app starts. By default it takes the latest installed patch of its own version but not a new major version; the
RollForwardsetting changes this.- Rolling deployment
A strategy where instances behind a load balancer are updated one at a time or in small batches. No extra servers are needed, but the old and new versions run side by side during the rollout.
- Root service provider
The
IServiceProvidercreated bybuilder.Build(). It lives for the whole lifetime of the app, stores singleton services and disposes of them at shutdown.- Roslyn
The open-source C# and Visual Basic compiler with APIs for code analysis. It turns source code into IL and metadata; analyzers and source generators run on it.
- Roslyn analyzer
A C# compiler extension that checks code during the build and in the IDE and reports diagnostics such as
CA2016orIDE0161. Code quality analyzers have been part of the .NET SDK since .NET 5.- Route constraint
A condition on a route parameter:
{id:int},{name:alpha},{slug:regex(...)}. If the value doesn't fit, the route doesn't match. It exists to tell routes apart, not to validate input.- Route group
A set of Minimal API endpoints sharing a prefix, created with
MapGroup(.NET 7+). Filters, authorization and metadata applied to the group apply to all its endpoints.- Route template
A string like
/orders/{id:int}describing which URLs match an endpoint. It contains literals, parameters in curly braces, constraints, default values and catch-alls.- Route template precedence
The rule for choosing among several matching routes: the more specific template wins. A literal beats a parameter, a constrained parameter beats an unconstrained one, and a catch-all is weakest.
- Row versioning
A mechanism in which changing a row keeps its previous committed version. Readers take the suitable version instead of waiting for locks; RCSI and SNAPSHOT are built on it.
- Row-level security (RLS)
A database feature that filters table rows by a policy for the current user or session context:
CREATE POLICYin PostgreSQL,CREATE SECURITY POLICYin SQL Server.- rowversion
A SQL Server data type: 8 bytes from a database-wide counter that change automatically on every row modification. Used for the optimistic "nobody changed the row" check. The
timestampsynonym is deprecated.- RPS (requests per second)
The number of requests per second — the main measure of load on a service. Both the average and the peak matter; the peak is usually several times the average.
- Ruff
A Python linter and formatter from Astral, written in Rust.
ruff checkreplaces flake8, isort and pyupgrade, andruff formatreplaces Black.- Rule of three
A refactoring heuristic: tolerate two similar fragments, extract the common part on the third. Attributed to Don Roberts and popularized by Martin Fowler in "Refactoring".
- RUM (real user monitoring)
Collecting performance metrics in real users' browsers and sending them to analytics. Gives field data, as opposed to Lighthouse lab measurements.
- Runbook
Instructions for the on-call engineer for a specific alert: what to check, which actions are safe, whom to escalate to. Its link goes right into the alert.
- Safe HTTP method
A method that by its semantics does not change server state: GET, HEAD, OPTIONS, TRACE. Such requests can be cached and retried without side effects.
- Safe point
A place in the code where the runtime knows exactly where references live and can suspend the thread for a collection. A blocking collection waits for threads to reach one; a thread in native code is not suspended but cannot return to managed code until the collection ends.
- SafeHandle
An abstract wrapper over an OS handle with a critical finalizer. It guarantees the handle is released exactly once and can't be closed during a P/Invoke call.
- Saga
A way to run a business operation across several services as a chain of local transactions. If a step fails, completed steps are undone with compensating actions.
- Salt
A random value, unique to each password and stored next to the hash. Identical passwords produce different hashes, and precomputed tables become useless.
- Same-origin policy
The browser rule that a script may only read responses from its own origin: the same scheme, host and port. It can send requests to other origins but cannot read the responses.
- SameSite (cookie attribute)
A cookie attribute that limits sending the cookie on cross-site requests:
Strict— never,Lax— only on top-level navigation,None— always (only withSecure).- SAML 2.0
An XML standard for exchanging authentication assertions between an identity provider and an application. Common in enterprise products and SaaS; ASP.NET Core has no built-in handler for it.
- SARGable predicate
A predicate the optimizer can turn into an index seek range (from "search argument"). The column appears in it without functions, calculations or type conversions.
- SaveChanges batching
Sending several
INSERT,UPDATEandDELETEcommands in one network round trip. On SQL Server EF Core puts up to 42 commands in a batch by default;MaxBatchSizesets the limit.- Scalar user-defined function (scalar UDF)
A T-SQL function that returns a single value. Before SQL Server 2019 it runs once per row and prevents a parallel plan; since 2019, at compatibility level 150, eligible functions are inlined into the query.
- Sch-M lock (schema modification)
The lock DDL takes while changing an object. It is incompatible with every other lock, so while it is waiting or held, all queries on the table stall.
- Scope
A string in the token request that limits what the client may do on behalf of the user:
openid,orders.read,offline_access. It describes the client's permissions, not the user's.- Scope (DI scope)
An area inside which scoped services exist as a single instance and at the end of which the container disposes of the objects created in it. ASP.NET Core creates a scope for every HTTP request.
- Scope validation (ValidateScopes)
A
ServiceProviderOptionssetting that makes the container forbid resolving scoped services from the root provider and injecting them into singletons. On by default in the Development environment.- Screen reader
Software that reads the interface aloud or outputs it to a braille display: NVDA, JAWS, VoiceOver, TalkBack. It reads the accessibility tree, not pixels.
- Scrutor
An extension library for the built-in .NET container: assembly scanning with convention-based registration (
Scan) and decorators (Decorate).- SDK container publishing (PublishContainer)
Building an image with
dotnet publish /t:PublishContainer, without a Dockerfile or a Docker daemon. The SDK picks the base image, user and port; settings areContainer*properties in the project.- Seam
Michael Feathers's term: a place where you can change a program's behavior without editing the code in that place — a virtual method, an interface parameter, configuration. Seams are how legacy code gets covered by tests.
- search_path
A PostgreSQL setting with the list of schemas searched for objects referenced without a schema. By default it is the schema named after the user plus
public; the closest SQL Server equivalent is a user's default schema, usuallydbo.- Secret store
An external service for passwords, keys and certificates with access control, auditing and rotation: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault. The app reads secrets at startup through a configuration provider.
- Self-contained deployment
A publish mode that ships the .NET runtime together with the app. It needs no installed .NET but is built for a specific OS and architecture.
- Semantic HTML
Markup with elements chosen by meaning:
button,nav,main,label, headings — instead ofdivandspan. It gives role, keyboard behaviour and structure for screen readers with no extra code.- Semantic versioning (SemVer)
A
MAJOR.MINOR.PATCHversioning scheme: major goes up for breaking changes, minor for new backward-compatible features, patch for fixes. A hyphen suffix marks a prerelease, a plus suffix carries build metadata.- SemaphoreSlim
A lightweight in-process semaphore that lets at most N participants in at once. It can wait asynchronously with WaitAsync and has no owner.
- Semi join
A join that returns rows of the left table that have at least one match on the right, without multiplying them or adding columns. In SQL it is expressed with
EXISTSorIN.- Sender-constrained token
A token that only the holder of a specific key can use: via an mTLS certificate (RFC 8705) or a DPoP signature (RFC 9449). Stolen without the key, the token is useless.
- Separate chaining
A collision-resolution technique in which items of the same hash-table bucket are linked into a chain. In
Dictionarythe chain is a set of indices inside the entries array, not separate node objects.- Separation of duties (SoD)
A rule that no single person performs a critical operation end to end: whoever creates a payment does not approve it. In RBAC it forbids conflicting roles for one user (static) or within one session (dynamic).
- Sequence
A database object that hands out increasing numbers via
nextval. It works outside transactions: a rollback does not return issued values, so keys can have gaps. Identity columns andserialare built on sequences.- Serilog enricher
A component that adds properties to every event: machine name, thread ID, data from
LogContext. Added withEnrich.With...orEnrich.FromLogContext().- Serilog sink
A destination Serilog writes events to: the console, a file, Seq, Elasticsearch, OTLP. Each sink is a separate NuGet package.
- Server Action
An async function marked with
'use server'that the client calls with a POST request to change data, for example via<form action>. It is a public endpoint, so authorization is checked inside it.- Server GC
A GC mode with a separate heap and a dedicated GC thread per logical processor. It gives more throughput at the cost of memory and is the default in ASP.NET Core.
- Server state
A copy of data owned by the server. It goes stale without the client knowing, so it is cached, refetched and invalidated rather than kept as ordinary state.
- Server-Sent Events (SSE)
A browser standard for a stream of text events from server to client over plain HTTP (
EventSource). In the other direction SignalR sends data as separate POSTs.- Server-side rendering (SSR)
Producing a page's HTML on the server for every request. The user sees content right away, and JS then makes the page interactive.
- Service lifetime
The rule the container uses to decide when to create a new instance of a service and when to dispose of it. .NET has three options: Transient, Scoped and Singleton.
- Service Locator
A pattern where a class asks a global registry for its dependencies, for example through
IServiceProvider.GetService. With DI it is considered an anti-pattern: dependencies are not visible in the constructor and errors move to run time.- Service mesh
An infrastructure layer for service-to-service calls: a proxy next to each service (sidecar) adds mTLS, retries, load balancing and telemetry without code changes. Examples are Istio and Linkerd.
- Service ticket
A Kerberos ticket for a specific service, issued by the KDC in exchange for a TGT. It's encrypted with the key of the account that owns the service's SPN, so the service validates it on its own, without the KDC.
- Session (SQLAlchemy)
The SQLAlchemy ORM object for working with objects within one unit of work: it loads them, tracks changes and saves them through flush and
commit(). The counterpart ofDbContext; not thread-safe.- SET XACT_ABORT
A session setting: with
ON, any run-time error rolls back the whole transaction. The default isOFF, where some errors roll back only one statement and a client timeout leaves the transaction open.- Set-based approach
A style where a set of rows is processed by one statement (
UPDATE ... JOIN,INSERT ... SELECT,MERGE) rather than by a loop over rows. The optimizer picks a plan for the whole set, and the overhead is paid once.- Shallow copy
A new container holding the same nested objects:
copy.copy,list(a),a[:]. A deep copy (copy.deepcopy) recursively copies the nested objects as well.- Sharding
Horizontal splitting of data across several databases on different servers by a shard key, for example by store. It scales writes but complicates cross-shard queries and transactions.
- Short-circuiting the pipeline
When middleware responds itself without calling
next, so the rest of the pipeline doesn't run. Serving static files works this way, for example.- Shotgun surgery
A code smell: one logical change requires many small edits across many classes. The cure is to gather related logic into one module, for example with the Move Function and Combine Functions into Class refactorings.
- ShutdownTimeout
How long the Generic Host waits for services and the server to stop (
HostOptions.ShutdownTimeout). The default is 30 seconds since .NET 6; it used to be 5.- SID (Security Identifier)
A permanent identifier of a Windows account or group, such as
S-1-5-21-...-1105. It doesn't change when the account is renamed, so checking rights by SID is more reliable than by name.- Signal
A wrapper around a value that notifies consumers when it changes:
signal()for a writable value,computed()for a derived one,effect()for side effects. Stable since Angular 17.- Signal inputs and outputs (input, output, model)
The
input(),output()andmodel()functions that replace the@Input()and@Output()decorators. An input is a read-only signal,model()is a two-way binding. Stable since Angular 19.- SignalR
An ASP.NET Core library for real-time messaging. It keeps a persistent connection and lets the server and the client call each other's methods.
- SignalR backplane
A channel through which SignalR servers relay messages for clients connected to other servers. The standard implementation is Redis pub/sub.
- SignalR group
A named set of connections that can be sent a message with a single
Clients.Group(name)call. It lives in memory and isn't restored after a reconnect.- SignalR hub
A class deriving from
Hubthrough which clients call server methods and the server calls client methods. An instance is created for every method call.- Signing key rotation
Scheduled replacement of the key an issuer signs tokens with. The new key is published in the JWKS ahead of time and the old one is kept until its tokens expire, otherwise validators with a cache reject tokens.
- SIGTERM
The Unix signal asking a process to terminate.
docker stop, Kubernetes and systemd send it; if the process does not exit in the allotted time, SIGKILL follows.- Silent renew
Getting a new token without user interaction: an
/authorizerequest withprompt=nonein a hidden iframe uses the provider's session. It breaks when the browser blocks third-party cookies.- Single point of failure
A component whose failure stops the whole system: a single gateway, database or load balancer instance. It is removed by redundancy across failure zones.
- Single Responsibility Principle (SRP)
The S in SOLID: a module has one reason to change. In Martin's "Clean Architecture" wording, a module is responsible to one actor — one group of people who request changes.
- Singleton
A creational pattern: a class has exactly one instance and a global access point to it. In .NET "one instance" is usually expressed with an
AddSingletonregistration in DI rather than a static property.- SLI (service level indicator)
A measurable indicator of service quality, usually the share of good events among all events: successful requests, requests faster than a threshold.
- Sliding expiration
The entry is removed if nobody accessed it for a set interval; every read extends its lifetime. Without absolute expiration a frequently read entry never goes stale.
- Sliding window
A technique for subarray problems: the window [left, right] grows to the right and shrinks from the left when the condition breaks. Each index moves at most once, so it is O(n).
- SLO (service level objective)
A target value for a service quality indicator, such as "99.9% of requests succeed" or "p99 under 300 ms". An SLA is a contractual commitment to customers, usually looser than the internal SLO.
- SMPP (Short Message Peer-to-Peer)
A protocol over TCP for exchanging SMS between an application (ESME) and an operator's or aggregator's SMS centre. Messages are sent with submit_sm, statuses come back via deliver_sm.
- Snapshot (event sourcing)
A saved state of an aggregate at a given stream version. The aggregate is loaded from the snapshot plus only the later events instead of the whole stream.
- SNAPSHOT isolation
A row-versioning isolation level in SQL Server: the whole transaction sees data as of its first data access. Trying to modify a row that was changed after that point fails the transaction with error 3960.
- SOAP
A protocol for exchanging XML messages (envelopes) with a WSDL contract. Used by WCF and enterprise systems; the WS-* standards add security, reliable delivery and transactions.
- Software supply chain
Everything an application is built from: packages, their dependencies, container images, CI/CD. A vulnerable or tampered package gives the attacker code inside your process.
- SOLID
Five object-oriented design principles collected by Robert Martin: single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion. Michael Feathers coined the acronym.
- Source generator
A Roslyn compiler extension that adds generated code to the project during the build. It replaces runtime reflection: this is how
[LoggerMessage],[OptionsValidator]and[GeneratedRegex]work.- Source Link
A technology that records the repository URL and commit in the PDB and the package, so the debugger can download the source of the exact library version. Since .NET 8 it is built into the SDK for GitHub, Azure Repos, GitLab and Bitbucket.
- SPA (single-page application)
An app where the browser loads the shell once and then swaps content and the address without a full reload. The cost is JavaScript weight, client-side routing and state, plus extra work on accessibility and indexing.
- Space complexity
An estimate of how much extra memory an algorithm needs as the input n grows, not counting the input itself. A pass with a
HashSet<T>is O(n) space; a double loop with no collections is O(1).- Span
One operation inside a trace: an incoming request, a SQL query or an HTTP call. A span has a name, a start, a duration, attributes and a link to its parent span. In .NET a span is an
Activity.- Span<T>
A
ref structmade of a reference to a contiguous block of memory and a length. It can point to an array, a string, astackallocbuffer or unmanaged memory, and slicing does not copy data. It lives only on the stack.- Specificity
A selector's weight in the cascade — a triple of ids; classes, attributes and pseudo-classes; type selectors and pseudo-elements. With equal origin and layer, the more specific rule wins.
- Speculative generality
A code smell from Fowler's catalog: abstractions, parameters and hooks "for the future" that nobody uses. The cure is to remove them.
- Split query
An EF Core 5+ mode where collection
Includes run as separate SQL queries instead of one query withJOINs. Enabled withAsSplitQuery(); it removes cartesian explosion at the cost of extra round trips and no shared consistency.- SPN (Service Principal Name)
A Kerberos service name such as
HTTP/portal.contoso.com, bound to a single AD account. The KDC uses it to pick the key it encrypts the ticket with; a duplicate or an SPN on the wrong account breaks sign-in.- SQL injection
A vulnerability where user data is spliced into SQL text and changes the query itself. The defense is passing values as parameters instead of concatenating strings.
- SQLAlchemy Core
SQLAlchemy's lower layer: tables, SQL expressions (
select,insert), connections and transactions without objects or change tracking. The ORM is built on top of it.- Squash merge
A way to merge a pull request in which all the branch's commits are combined into a single commit on the target branch.
mainhistory stays short, but intermediate commits do not make it in.- SSRF (server-side request forgery)
The attacker makes the server send an HTTP request to an address of their choosing, such as the internal network or a cloud metadata service. In the OWASP Top 10:2025 it is part of the access control category.
- Stable sort
A sort that preserves the original order of elements with equal keys.
Enumerable.OrderByis stable;Array.SortandList<T>.Sortare not.- Stack frame
The part of the stack used by a single method call: the return address, saved registers, local variables and some of the arguments. It is popped when the method returns.
- Stack trace
The list of calls from where an exception was thrown to where it was caught, stored in
Exception.StackTrace.throw;preserves it,throw ex;restarts it.- Stack unwinding
The second phase of exception handling: the runtime pops stack frames from the throw site to the handler it found and runs
finallyblocks along the way.- Staging table
A table where a load first puts raw data from the source. From there the data is validated and moved into the target tables with a set-based statement, and on a rerun staging is simply truncated.
- Stale closure
A function that captured props or state from an old render and keeps using them. Typical for effects and timers with an incomplete dependency array.
- Standalone component
A component that lists its own dependencies in
importsand isn't declared in an NgModule. Introduced in Angular 14, stable in v15, the default since v19.- Star schema
A warehouse model: a fact table with measures and keys (sales) in the center, surrounded by denormalized dimension tables (date, store, product). A query is one level of joins plus an aggregate.
- Starlette
A lightweight ASGI framework: routing, middleware, requests and responses, WebSockets. FastAPI inherits its application class and adds dependencies, validation and OpenAPI.
- Startup probe
A Kubernetes check that waits for a container to finish starting. Until it succeeds, liveness and readiness probes do not run; if it fails, the container is restarted.
- State machine
The type the compiler generates from an async method. It stores the current step number and the local variables, and its
MoveNextmethod resumes execution after the lastawait.- Stateful reconnect
A SignalR mode (.NET 8+) in which the server and client buffer unacknowledged messages and, after a brief drop, resume the same connection without losses.
- Stateless service
A service that keeps no state between requests in its own memory: sessions, carts and files live in external storage. Any instance can handle any request.
- Static abstract interface member
A static method, property or operator that an interface requires from the implementing type (C# 11). It is called through a type parameter, such as
T.Zero; generic math is built on it.- Static lambda
A lambda with the
staticmodifier (C# 9) that is not allowed to capture locals orthis. It guarantees that no closure is created and the delegate can be cached.- Statistics
An object describing the distribution of column values: a histogram on the first column and density for column prefixes. The optimizer uses it to estimate how many rows a predicate returns.
- Statistics histogram
Part of a statistics object: up to 200 steps over the values of the first column. For each step it records how many rows equal its upper boundary and how many fall inside the range.
- Sticky sessions
A load balancer setting that sends all of a client's requests to the same server, usually based on a cookie or IP. Also called session affinity.
- Stored procedure
A named set of T-SQL statements on the server, with parameters. It can modify data, control transactions and return several result sets; its plan is cached on first execution.
- Strangler fig
A pattern for replacing a system gradually: new code grows next to the old one and takes over features one by one until the old system can be switched off. The name comes from Martin Fowler.
- Strategy
A behavioral pattern: a family of interchangeable algorithms behind a common interface, with the one to use passed in from outside. In C# a strategy is often a delegate or an
IComparer<T>.- Stream
A Node.js object for processing data in chunks as it arrives: Readable is a source, Writable a destination, Duplex both, Transform changes data on the way. Streams are connected with
pipeline.- Streaming SSR
Server rendering where HTML is sent in chunks: first a shell with fallbacks, then finished fragments in the same response. Slow data does not hold up the whole page.
- Strict equality (===)
Comparison without type conversion: values of different types are not equal, and objects are equal only if the reference is the same. The one oddity is that
NaN === NaNisfalse.- StrictMode
React's development checks: components render twice, and effects go through an extra setup → cleanup → setup cycle. This surfaces impure renders and effects without cleanup.
- String interning
Keeping a single instance per unique string value in a runtime pool (the intern pool).
string.Internadds a string to the pool; interned strings live until the process exits.- StringBuilder
A mutable buffer for building a string piece by piece. It appends characters without intermediate strings and creates the final
stringinToString().- Strongly typed hub (Hub<T>)
A hub whose client methods are described by an interface. Instead of
SendAsync("Name", ...)you call an interface method, and the compiler catches a misspelled name.- Structural pattern
A pattern that describes how to compose classes and objects into larger structures. GoF lists seven: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
- Structural sharing
A technique of immutable data structures: a new version reuses the unchanged parts of the old one.
ImmutableList<T>.Addcreates O(log n) new tree nodes, and the remaining nodes are shared.- Structural typing
Type compatibility is determined by the set of members, not by name or declared inheritance. TypeScript works this way; C# and Java use nominal typing.
- Structured logging
Writing logs as events with properties instead of finished strings. You can search, filter and aggregate by those properties in Elastic, Seq or another store.
- STS (Standard Term Support)
A .NET release supported for 24 months (since .NET 9; it used to be 18). These are the odd versions: .NET 9, .NET 11.
- Stub
A test double that returns predefined answers and so controls the inputs of the code under test. The test asserts nothing on a stub.
- Surrogate key
An artificial row identifier with no business meaning: a number from
IDENTITYorSEQUENCE, a GUID. It never changes, which makes it convenient for foreign keys.- Suspense
A React component that shows a fallback while its children wait for data or code. On the server its boundaries define the parts that stream separately.
- Switch expression
The expression
x switch { pattern => result, ... }(C# 8) that returns the value of the first matching arm. If no arm matches, it throwsSwitchExpressionException.- Symptom-based alerting
Alerting on what users see: errors, latency, unavailability. The opposite of a cause-based alert on an internal indicator such as CPU utilization.
- Sync block
An internal CLR structure that a Monitor's state moves to when the lock on an object becomes contended. You can see owners and waiters with the syncblk command in a dump.
- Sync-over-async
Waiting synchronously for an async operation via .Result, .Wait() or GetAwaiter().GetResult(). It blocks a thread for the whole operation and is the most common cause of thread pool starvation.
- Synchronization context (SynchronizationContext)
An abstraction that schedules code to run in the right environment, such as the UI thread. By default
awaitresumes the method in the captured context.- Synchronizer token pattern
A CSRF defense where the server gives the client an unpredictable token tied to the user and accepts a state-changing request only if the token comes back with it.
- System.Threading.Lock
A dedicated lock type introduced in .NET 9. When the expression in a lock statement has this type, C# 13 and later emit a call to EnterScope instead of Monitor.
- Table partitioning
Storing one logical table in partitions by ranges of a column's values, for example by month. A partition function defines the boundaries, a partition scheme maps them to filegroups.
- Table-valued parameter (TVP)
A parameter of a user-defined table type (
CREATE TYPE ... AS TABLE) through which a client passes a set of rows in one call. It is declaredREADONLYin a procedure and has no column statistics.- Tabulation
Bottom-up DP: the table of answers is filled by a loop from the base cases to the target, with no recursion. It lets you keep only the last rows of the table and save memory.
- Tag helper
A class that processes an HTML element in Razor markup on the server, such as
<a asp-action="...">or<input asp-for="...">. Enabled with the@addTagHelperdirective.- Tail call
A call that is the last action of a function, so its stack frame can be reused. The C# compiler doesn't guarantee this optimization, so deep recursion in C# is rewritten as a loop.
- Tail latency
The response time of the slowest requests, usually the p95, p99 and p99.9 percentiles. Under load these grow first, and the average hides it.
- takeUntilDestroyed
An operator from
@angular/core/rxjs-interopthat completes a subscription when the component or service is destroyed. In an injection context it getsDestroyRefitself; outside one it takes it as a parameter. Stable since v19.- TanStack Query (React Query)
A library for server state: it fetches data, caches it by query key, refetches stale data and invalidates it after mutations.
- Task
An object that describes asynchronous work and its future result. By default a task's delegate runs on the thread pool, and a task from async I/O may not occupy a thread at all.
- Task queue (macrotask)
The queue from which the event loop takes one task at a time:
setTimeoutcallbacks, user events, network messages. All microtasks run between tasks.- Task scheduler (TaskScheduler)
An object that decides where tasks run. The default scheduler is the thread pool, and
awaitcaptures a non-default scheduler the same way it captures a synchronization context.- Task.WhenAll
A method that returns a task completing after all the given tasks complete. If some of them failed, it holds all their exceptions.
- TaskGroup
An async context manager (Python 3.11+) that waits for every task started inside it. If one fails, the rest are cancelled and the errors are collected into an
ExceptionGroup.- TBytes
A dynamic array of bytes (array of Byte) in Delphi. After the move to Unicode, binary data is kept in TBytes rather than in a string, because strings are now two-byte and get re-encoded.
- TDataSet
The abstract base class of Delphi datasets: a cursor over rows, fields, states, events and navigation. ADO, FireDAC, dbExpress datasets and
TClientDataSetinherit from it.- Tell, Don't Ask
A principle: do not pull data out of an object to make a decision for it; ask the object to perform the action. That keeps behavior next to the data.
- Template Method
A behavioral pattern: a base class defines the skeleton of an algorithm in one method and leaves individual steps to subclasses through virtual or abstract methods.
- Temporal coupling
A dependency where systems must be running at the same time for an interaction to succeed. A synchronous call couples in time; exchange through a queue or files does not.
- Temporal dead zone (TDZ)
The region from the start of a block to a
let,constorclassdeclaration where the variable already exists, but accessing it throwsReferenceError.- TEncoding
A Delphi RTL class that converts text to bytes and back in a given encoding: UTF-8, UTF-16, ANSI or a specific code page. It can detect and write a BOM.
- Terminal middleware
Middleware that produces the response itself and never calls the next component, such as
app.Run. Nothing registered after it in the same branch runs.- Test double
The general name for an object that replaces a real dependency in a test. Gerard Meszaros's kinds are dummy, stub, spy, mock and fake.
- Test pyramid
Mike Cohn's model: many fast unit tests, fewer integration tests and very few end-to-end tests. The higher the level, the slower, more expensive and more brittle the test.
- Testcontainers
A library that starts Docker containers from test code — SQL Server, PostgreSQL, Redis, brokers — and removes them after the run. Tests work against real infrastructure of the same version as production.
- TFM (target framework moniker)
The short name of a target platform in a project or NuGet package:
net48,netstandard2.0,net10.0,net10.0-windows.- TGT (Ticket Granting Ticket)
The Kerberos "ticket for getting tickets": the KDC issues it after checking the password, and the client uses it to get service tickets without re-entering the password. Encrypted with the
krbtgtaccount's key; lives 10 hours by default.- The 'use cache' directive
A Next.js directive (Cache Components) that caches the result of an async function, a component or all exports of a file. The cache key is the arguments and captured values,
cacheLifesets the lifetime andcacheTagadds tags for invalidation.- The [ApiController] attribute
A controller attribute that turns on API-specific behavior: required attribute routing, an automatic 400 response on validation errors, binding source inference and ProblemDetails for error status codes.
- The field keyword
A C# 14 contextual keyword that refers to a property's compiler-generated backing field right inside an accessor, without declaring your own field.
- The never type
A type with no values: the result of a function that never returns and what is left after exhaustive narrowing. Assigning to
neverin adefaultbranch checks that aswitchhandled every variant.- Third-party cookies
Cookies of another site loaded inside a page, for example in an iframe. Safari blocks them, Firefox partitions them by top-level site, and in Chrome the user can turn them off.
- this in JavaScript
A keyword whose value is set by how a function is called:
new,call/apply/bind, a call through an object, or a plain call. Arrow functions have nothisof their own.- Thread affinity
The property of a primitive that must be released by the same thread that acquired it. Monitor, Lock, Mutex and ReaderWriterLockSlim have it, so they cannot be held across await.
- Thread pool
A set of background threads that the CLR creates on demand and reuses for short work items. Task.Run, async method continuations and timer callbacks run here.
- Thread pool starvation
A state where the pool has no free threads for new work because the existing ones are blocked. It shows up as growing latency with low CPU usage.
- Three-valued logic
In SQL a condition is TRUE, FALSE or UNKNOWN. Any comparison with
NULLyields UNKNOWN, andWHERE,ONandHAVINGlet through only TRUE — hence theNOT INand<>traps.- THTTPClient
An HTTP client from the System.Net.HttpClient unit with no visual components. It uses the platform's native HTTP stack and fits calling REST services from a Delphi client.
- Tiered compilation
A JIT mode in which a method is first compiled quickly without optimizations and, after 30 calls, recompiled with optimizations in the background. On by default since .NET Core 3.0.
- TimeProvider
The .NET 8+ abstraction over system time: current time, time zone and timers. Tests replace it with
FakeTimeProviderfrom theMicrosoft.Extensions.TimeProvider.Testingpackage and advance time manually.- timestamptz (timestamp with time zone)
The PostgreSQL type for a point in time. On input the value is converted to UTC, on output to the session time zone; the original offset is not stored, unlike
datetimeoffsetin SQL Server.- TInterfacedObject
An RTL base class with a thread-safe
IInterfaceimplementation: it counts interface references and destroys the object when the count reaches zero. Descendants are held only through interface variables and never freed withFree.- TLS (Transport Layer Security)
A protocol over TCP that encrypts traffic, protects it from tampering and proves the server's identity with a certificate. HTTPS is HTTP over TLS; the current versions are 1.2 and 1.3.
- TLS termination
Decrypting HTTPS at a proxy or load balancer, after which the request travels to the app over plain HTTP. Only the termination point needs a certificate.
- TOAST
PostgreSQL's mechanism for storing large values: when a row is wider than ~2 KB, large fields are compressed and moved to a separate internal table. Changing such a value rewrites it entirely.
- Token bucket
A rate-limiting algorithm: the bucket refills with tokens at a constant rate and each operation takes one. It allows short bursts up to the bucket size while holding the average rate.
- Token exchange
An OAuth 2.0 grant from RFC 8693: a service hands the authorization server an incoming token and gets a new one for another
audience. The user stays insub, and the calling service goes intoact.- Token introspection
An API asking the authorization server "is this token valid and what does it contain" (RFC 7662). It gives instant revocation at the cost of a network call per validation.
- Token revocation
Declaring a token invalid before it expires. An API validates a self-contained JWT locally, so revocation needs a list of revoked
jtivalues or introspection.- Topological sort
An ordering of the vertices of a directed acyclic graph such that every edge goes from an earlier vertex to a later one. Kahn's algorithm does it in O(V + E) and detects cycles along the way.
- Trace ID
A W3C Trace Context identifier shared by all operations of one request across a distributed system. ASP.NET Core takes it from
Activity.Currentand adds it to ProblemDetails astraceId.- Transaction
A group of database operations that runs as a single unit: either committed entirely (
COMMIT) or rolled back entirely (ROLLBACK).- Transaction ID wraparound
PostgreSQL transaction IDs are 32-bit and compared circularly, so after ~2 billion transactions old rows would appear to be "from the future". VACUUM freezes them in advance; if it falls behind, the database stops accepting write transactions.
- Transaction log (write-ahead log, WAL)
A sequential log of changes that is written to disk before the data pages. On commit the database waits for the log write, and after a crash it uses the log to redo committed work and undo uncommitted work.
- Transactional outbox
A pattern where an event is saved to an outbox table in the same local transaction as the business data, and a separate process (the relay) later publishes it to the broker. It gives at-least-once delivery without a distributed transaction.
- TransactionScope
A System.Transactions class that creates an ambient transaction: connections opened inside the block enlist in it automatically. Defaults to SERIALIZABLE and a 1-minute timeout.
- Transient fault
An error that goes away by itself shortly: a network blip, a service restart, a 503 or 429 response. Such errors are worth retrying after a pause.
- Transition
An update marked as non-urgent with
startTransitionoruseTransition. React can interrupt it for user input and keeps showing the previous UI meanwhile.- Transitive dependency
A package that got into the project not directly but as a dependency of another package. NuGet picks one version of it for the whole project.
- Trimming
Removing unused code from an app and its libraries at publish time. It reduces size but can break code that finds types via reflection; trim analyzers flag the risky spots.
- Trunk-based development
A model in which all developers merge small changes into one branch (the trunk, usually
main) often and keep no other long-lived development branches. Unfinished work hides behind feature flags.- Truthy and falsy
How a value behaves in a boolean context (
if,&&,||). Falsy values arefalse,0,-0,0n,'',null,undefinedandNaN; everything else, including[]and'0', is truthy.- TryAdd and TryAddEnumerable
Registration methods from
Microsoft.Extensions.DependencyInjection.Extensions.TryAdd*adds a service only if it is not registered yet,TryAddEnumerableonly if the same service-and-implementation pair is not there.- TThread
Delphi's class for a background thread: code goes in
Execute,Terminaterequests a stop, andSynchronizeandQueuepass code to the main thread.- TTL jitter
A random addition to a cache entry's lifetime so that keys loaded together do not expire at the same moment and cause a wave of misses.
- Two pointers
A technique where two indexes move through an array towards each other or in the same direction. It solves problems on sorted arrays in O(n) time and O(1) memory: a pair with a given sum, a palindrome, a merge.
- Two-phase commit (2PC)
A distributed transaction protocol: the coordinator first asks all participants whether they're ready, then sends commit or rollback. Participants hold locks until the coordinator decides.
- Type checker
A static analysis tool that checks type annotations without running the code: mypy, pyright. The interpreter itself does not check annotations.
- Type coercion
Automatic conversion of a value to another type that JavaScript performs on its own: in
==, arithmetic,ifand template literals. For example,'5' * 2gives10.- Type erasure
The TypeScript compiler removes type annotations when emitting JavaScript. Types do not exist at runtime: they cannot be checked, reflected on or used as values.
- Type guard
A function with the return type
value is T: if it returnstrue, the compiler narrows the argument toT. Whether the check inside is correct is up to its author.- Type hint
A type annotation on a parameter, variable or return value:
item_id: int,-> dict. The interpreter does not enforce it, but mypy, IDEs and libraries such as FastAPI and Pydantic read it.- Type stripping
Built-in Node.js support for running
.tsfiles: type annotations are replaced with whitespace, nothing is transpiled and types are not checked. On by default since Node 22.18 and 23.6, stable since 24.12 and 25.2;enumandnamespacewith runtime code are not supported.- TypedResults
A Minimal API result factory (.NET 7+) that returns concrete types such as
Ok<T>andNotFound. The response type is visible in the signature and flows automatically into endpoint metadata and OpenAPI.- TypeScript strict mode
The
tsconfig.jsonflag that turns on the family of strict checks:strictNullChecks,noImplicitAny,strictFunctionTypesand others. On by default since TypeScript 6.0.- Ubiquitous language
A shared vocabulary of developers and domain experts within one bounded context. The same words appear in conversations, requirements, class names and method names.
- UI thread message loop
The loop in which the UI thread processes messages one by one: input, repainting, delegates from
SynchronizationContext.Post. While the UI thread is busy, the queue stalls and the UI stops responding.- Unboxing
Extracting a value-type value from a boxed object: a type check plus a copy. You can unbox only to the original type or to its
Nullableform; otherwise you getInvalidCastException.- uncaughtException
The Node.js process event for an exception that reached the event loop unhandled. By default Node prints the stack and exits with code 1; resuming normal operation after it is not safe.
- Unconstrained delegation
A Kerberos mode in which the client forwards its TGT to the server, letting the server act as the user toward any service. Dangerous; Credential Guard blocks it.
- Unhandled rejection
A rejected promise with no error handler attached. The browser fires the
unhandledrejectionevent, and Node.js 15+ terminates the process by default.- UnicodeString
Delphi's reference-counted string type that stores text as UTF-16. Since Delphi 2009, string is UnicodeString and Char is the two-byte WideChar.
- Unit of work
A set of operations that are performed and saved together as one business transaction. In EF Core a
DbContextinstance represents a unit of work.- Unit test
An automated test that checks one behavior of a small piece of code in isolation from the database, network and file system. It runs in milliseconds.
- Unmanaged resource
A resource outside the managed heap that the GC knows nothing about: a file or window handle, a socket, native memory. It must be released explicitly — through
DisposeorSafeHandle.- Unsafe reference [unsafe]
An attribute that turns off reference counting for a reference entirely: no
_AddRef, no clearing when the object is destroyed. It costs nothing, but after the object dies it points to freed memory.- Update anomalies
Errors that appear when one fact is stored in several rows: an update changes only some copies, a delete removes unrelated data, and an insert is impossible without a related row.
- Upsert (INSERT ... ON CONFLICT)
An "insert, or update if the row already exists" operation. In PostgreSQL it is
INSERT ... ON CONFLICT DO UPDATE, atomic under concurrent inserts thanks to a unique index; in SQL Server it is usuallyMERGEwith theHOLDLOCKhint.- URL
A string shaped like
https://host:port/path?query#fragment: scheme, host, path, query string and fragment. The server routes on the path and query, while the fragment after#is never sent and stays in the browser.- USE method
A metric set for every resource: Utilization, Saturation (a queue of waiting work) and Errors. Proposed by Brendan Gregg for performance analysis.
- useEffectEvent
A React 19.2 hook for logic that reads the latest props and state but must not re-run the effect. Its function is called only from inside effects and is left out of dependencies.
- User Secrets (Secret Manager)
Development-time secret storage: an unencrypted
secrets.jsonin the user profile, outside the project directory.WebApplication.CreateBuilderloads it only in theDevelopmentenvironment.- Using declaration
The
using var x = ...;form without braces (C# 8):Disposeis called at the end of the scope where the variable is declared. Several declarations are disposed in reverse order.- UTF-16
A Unicode encoding where a character takes 2 bytes, and characters outside the Basic Multilingual Plane (such as emoji) take 4 bytes as a surrogate pair. Used by the Windows API, Delphi strings and .NET.
- Utility types
Built-in TypeScript generic types that build a new type from an existing one:
Partial,Required,Readonly,Pick,Omit,Record,ReturnType,Awaitedand others.- UUIDv7
A UUID version from RFC 9562: the first 48 bits are milliseconds since the Unix epoch, the rest are the version and random bits, so values grow over time. In .NET 9+ it is created with
Guid.CreateVersion7().- uv
A Python package and project manager from Astral, written in Rust. It creates environments, resolves and locks dependencies, installs Python versions and runs tools — replacing pip, venv, pip-tools and pipx.
- Uvicorn
An ASGI server for Python: it accepts HTTP connections and calls the application on its own event loop. The
--workersflag starts several processes.- V8
Google's JavaScript engine, shared by Chrome and Node.js. It compiles and runs JavaScript and manages the heap and garbage collection; it has no I/O of its own — libuv provides that.
- VACUUM
A PostgreSQL maintenance command: it removes dead row versions, updates the visibility map and freezes old rows to protect against transaction counter overflow. Usually it is run by the background autovacuum process.
- ValidateOnBuild
A
ServiceProviderOptionssetting that makes the container check duringBuild()that every registered service can be created. Open generic registrations are not checked; on by default in Development.- ValidateOnStart
An
OptionsBuilder<T>method (.NET 6+) that runs settings validation when the host starts. Without it, an error surfaces only on the first access to the settings.- Value equality
Two instances are equal if they have the same type and equal field values, even when they are different objects. Structs and records compare this way by default; classes compare by reference.
- Value object
An object without its own identity, defined by the values of its fields:
Money,Address,DateRange. It is immutable and compared by value; in C# arecordfits it well.- Value type
A type whose variable contains the value itself; assignment copies the value. In C# these are
struct,enumand the built-in numeric types.- ValueTask
A struct that represents the result of an asynchronous operation without necessarily allocating a
Task. It can be awaited only once.- VCL main thread
The thread in which windows are created and the application's message loop runs. The VCL is not thread-safe, so controls are changed only from this thread.
- Version store
Where SQL Server keeps previous row versions for RCSI, SNAPSHOT, triggers and online index rebuilds. Without ADR it lives in tempdb, with ADR in the persistent version store of the database itself.
- View component
A class deriving from
ViewComponent, with its own view, that loads its own data and renders a block of a page: a cart, a menu. It is invoked from a view, not over HTTP.- View discovery
The process MVC uses to find a view file by name. By default it checks
Views/{Controller}/{View}.cshtmlfirst, thenViews/Shared/{View}.cshtml.- ViewModel
A class shaped for one specific page: only the fields it shows or accepts. It decouples the view from database entities and protects against overposting.
- Virtual environment (venv)
A directory with a link to a Python interpreter and its own set of packages. It isolates one project's dependencies from the system and from other projects.
- Virtual method
A method marked
virtualorabstractthat a derived class can override withoverride. Which implementation runs is decided by the object's actual type at run time.- Virtual method table (vtable)
A run-time structure of a type with slots holding the addresses of its virtual methods. A virtual call takes the address from the slot in the table of the object's actual type.
- Virtual scrolling
A technique where only the visible rows of a long list exist in the DOM, and the rest are swapped in as you scroll. In Angular —
cdk-virtual-scroll-viewportfrom the CDK or the built-in mode of component library grids.- Visitor
A GoF behavioral pattern: operations on a hierarchy move into a separate visitor class with one method per type, and elements call the right method through
Accept. Adding operations is easy, adding types is hard.- volatile
A C# field modifier: every access to the field becomes a volatile read or write with acquire/release ordering. It does not make compound operations atomic.
- Volume
Data storage outside the container's writable layer, managed by Docker. It survives container removal and, unlike a bind mount, is not tied to a host folder.
- W3C Trace Context
A standard for the
traceparentandtracestateheaders that carry trace context between services. In .NET it is the default ID format ofActivity.- WAI-ARIA
A W3C specification of
roleandaria-*attributes that add to the accessibility tree where HTML lacks semantics. It changes only what the screen reader hears, not how the element behaves.- WCAG (Web Content Accessibility Guidelines)
A W3C standard of testable accessibility success criteria at levels A, AA and AAA. The current version is WCAG 2.2 (October 2023); laws usually require level AA.
- Weak reference [weak]
An attribute on an interface reference that does not increment the reference count. When the object is destroyed, the runtime sets all such references to
nil, at the cost of tracking weak references. Available on Win32 and Win64 since Delphi 10.1 Berlin.- WebApplicationFactory
A class from the
Microsoft.AspNetCore.Mvc.Testingpackage that runs an ASP.NET Core app in memory onTestServerand hands out anHttpClientfor requests to it. It lets you replace services and settings.- WebSocket
A protocol for a persistent two-way connection over a single TCP connection. It starts with an HTTP Upgrade request and a
101 Switching Protocolsresponse.- Window frame (ROWS, RANGE)
The part of
OVERthat defines which rows relative to the current one take part in the calculation.ROWScounts physical rows,RANGEuses sort key values; withORDER BYand no frame,RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWapplies.- Window function
A function with
OVER (...)that computes a value over a set of rows related to the current one and, unlikeGROUP BY, does not collapse rows. Examples:ROW_NUMBER,LAG,SUM() OVER.- Window Spool
A SQL Server plan operator in row mode that stores the rows of a window frame. For
ROWSwith a frame under 10,000 rows it works in memory; forRANGEit uses a worktable in tempdb, which is noticeably slower.- Windows authentication
Signing into a web app with a Windows domain account without typing a password: the browser and the server exchange Kerberos or NTLM tokens in HTTP headers. IIS and ASP.NET Core also call it Negotiate authentication.
- WireMock.Net
An HTTP service emulator for .NET: it starts a real HTTP server with canned responses, delays and errors. Used in integration tests of external APIs.
- with expression
Creates a copy of a record or a struct with some properties changed:
p with { X = 1 }. The copy is shallow: reference-type fields point to the same objects.- Work stealing
A scheduling technique where an idle thread takes work from another thread's local queue. This is how the thread pool balances load without a single point of contention.
- work_mem
A PostgreSQL setting for how much memory a single sort or hash operation may use before spilling to disk. It is allocated per such operation in every connection, so large values are set selectively.
- Worker Service
A .NET template (
dotnet new worker) for a long-running background process without HTTP: a Generic Host plus a class derived fromBackgroundService. It runs as a console app, a container, a Windows service or under systemd.- worker_threads
The Node.js module for threads inside a process. Each worker has its own V8 isolate, heap and event loop; data is passed via
postMessageorSharedArrayBuffer. Meant for CPU work, not I/O.- Workstation GC
A GC mode with a single heap where the collection runs on the thread that triggered it. The default for console and desktop apps.
- Worst case
The complexity on the least favourable input of a given size. It gives a guarantee for any input: quicksort is O(n log n) on average but O(n²) in the worst case.
- WOW64
The 64-bit Windows subsystem that runs 32-bit programs. It redirects their system calls, folders and registry, but 32-bit and 64-bit code never mix within one process.
- Write skew
A snapshot anomaly: two transactions read the same data, check a condition and change different rows, and together they violate that condition. SNAPSHOT doesn't catch it, SERIALIZABLE does.
- Write-through
A pattern in which a write goes to the cache and the source at the same time, so the cache always holds the latest written version. The price is slower writes.
- WS-Federation
A browser-based federated sign-in protocol: the app redirects the user to an STS, which posts back a signed token, usually a SAML assertion. In ASP.NET Core it's the
Microsoft.AspNetCore.Authentication.WsFederationpackage.- xmin horizon
The ID of the oldest transaction whose snapshot may still be needed: an open transaction, a replication slot or a replica. VACUUM does not remove row versions newer than the horizon, so a single long transaction causes bloat across the whole database.
- XSS (cross-site scripting)
An attack where someone else's JavaScript gets into a page, for example through user data. The script runs in the victim's browser with your site's privileges.
- xUnit.net
A popular .NET test framework:
[Fact]and[Theory], a new class instance per test, shared resources through fixtures. The current line is v3, packagexunit.v3.- YAGNI (You Aren't Gonna Need It)
An Extreme Programming rule: do not implement functionality until it is needed. It does not forbid refactoring and tests that make future changes easier.
- YARP (Yet Another Reverse Proxy)
Microsoft's library for building a reverse proxy on ASP.NET Core (the
Yarp.ReverseProxypackage). Used for API gateways and for migrating ASP.NET apps to ASP.NET Core step by step.- Zod
A schema library for TypeScript: it validates data at runtime and infers a static type from the schema via
z.infer. Used at boundaries — API responses, forms, configuration.- zone.js
A library that patches the browser's async APIs (
setTimeout,Promise, events, XHR) and tells Angular when tasks finish. That is how the framework knew when to run change detection; since v21 new apps run without it.- Zoneless
Angular without zone.js: change detection runs only on explicit notifications — signals, template events,
markForCheck(). Stable since v20.2 and the default for new apps since v21.