Code Explainers

Code explainers tagged #sliding-window

go
package retry
 
import (
	"errors"

How a retry budget caps retries in Go

rate-limiting sliding-window concurrency
Intermediate 7 steps
rust
use axum::{
    body::Body,
    extract::State,
    http::{Request, StatusCode},

A sliding-window rate limiter in Axum

rate-limiting middleware sliding-window
Intermediate 10 steps
javascript
class DownloadTracker {
  constructor(totalBytes, { windowMs = 3000 } = {}) {
    this.totalBytes = totalBytes;
    this.windowMs = windowMs;

Estimating download speed with a sliding window

sliding-window getters rate-calculation
Intermediate 7 steps
typescript
interface Reading {
  timestamp: number;
  value: number;
}

A weighted moving average in TypeScript

moving-average sliding-window smoothing
Intermediate 6 steps
typescript
type Bucket = { start: number; count: number };
 
export class SlidingWindowCounter {
  private readonly windowMs: number;

A sliding window rate counter in TypeScript

sliding-window ring-buffer rate-limiting
Intermediate 7 steps
javascript
class MovingAverage {
  constructor(windowSize) {
    if (!Number.isInteger(windowSize) || windowSize <= 0) {
      throw new RangeError('windowSize must be a positive integer');

A rolling average over a fixed window

circular-buffer streaming async-generators
Intermediate 7 steps
go
package metrics
 
import (
	"sync"

A thread-safe sliding-window average in Go

concurrency sliding-window running-average
Intermediate 8 steps
javascript
import { NextResponse } from 'next/server';
import { Redis } from '@upstash/redis';
 
const redis = Redis.fromEnv();

Sliding-window rate limiting in a Next.js route

rate-limiting redis sorted-set
Advanced 8 steps
php
<?php
 
namespace App\RateLimiting;
 

Sliding-window rate limiting with Redis sorted sets

rate-limiting redis sorted-sets
Advanced 8 steps
ruby
class SyncContactsJob < ApplicationJob
  queue_as :external_api
 
  MAX_CONCURRENCY = 5

Rate-limited CRM sync in a Rails job

background-jobs rate-limiting redis
Advanced 9 steps
java
public class SlidingLogRateLimiter {
 
    private final int maxRequests;
    private final long windowMillis;

How a sliding-log rate limiter works

rate-limiting concurrency sliding-window
Advanced 8 steps
rust
use std::collections::VecDeque;
 
pub struct RollingAverage {
    window: VecDeque<f64>,

A rolling average over a sliding window

sliding-window running-sum ring-buffer
Intermediate 6 steps
python
from django.core.cache import cache
from rest_framework.throttling import SimpleRateThrottle
 
 

A login rate throttle in Django REST Framework

rate-limiting caching throttling
Intermediate 8 steps
ruby
class MetricSeries
  def initialize(readings, window: 5)
    @readings = readings
    @window = window

Rolling averages with each_cons in Ruby

sliding-window enumerable data-smoothing
Intermediate 7 steps
python
import time
from collections import defaultdict
from threading import Lock
 

Sliding-window login rate limiting in Flask

rate-limiting sliding-window thread-safety
Intermediate 7 steps
java
import java.util.ArrayDeque;
import java.util.Deque;
 
public final class RollingAverage {

A rolling average over a sliding window

sliding-window running-sum deque
Intermediate 7 steps
python
from collections import deque
 
 
class RollingAverage:

A rolling average over a fixed window

sliding-window running-sum deque
Intermediate 7 steps
javascript
// Sliding window maximum using a monotonic decreasing deque.
// Returns an array of the maximum value within each window of size k.
function maxSlidingWindow(nums, k) {
  const result = [];

Sliding window maximum with a deque

sliding-window monotonic-deque amortized-analysis
Advanced 7 steps