Ein beim ersten Zugriff beginnendes festes Fenster auf einer Zeitachse erklären.
Ein Name wie 'sliding window' ist eine überprüfbare Behauptung. Entscheidend ist der gespeicherte Zustand: Unser Lernmodell hält je Schlüssel nur windowStart und count. Der erste Zugriff beginnt ein Fenster von 60 Sekunden; spätere Zugriffe erhöhen den Zähler, verschieben den Beginn aber nicht. Bei elapsed ≥ 60 wird ein neues Fenster begonnen. Es werden keine Zeitpunkte einzelner Zugriffe gespeichert. Das Modell besitzt deshalb einen festen Beginn je Schlüssel und ist weder ein echtes gleitendes Fenster noch an volle Uhrminuten gebunden. Eine kontrollierte Uhr macht genau diese Randbedingungen lesbar.
Ein Beispiel
Für alpha gilt Grenze 2: t=0 erlaubt (count 1), t=59 erlaubt (2), t=59,5 abgelehnt und t=60 wieder erlaubt. Die Restwartezeit bei 59,5 beträgt auf volle Sekunden aufgerundet 1. Beginnt beta erst bei t=17, läuft sein eigenes erstes Fenster bis t=77.
Python 3.11 · Lehrbeispiel
def attempt(state, now, limit=2, duration=60):
start, count = state if state is not None else (now, 0)
if now - start >= duration:
start, count = now, 0
allowed = count < limit
return (start, count + int(allowed)), allowed
state = None
for now in [0, 59, 59.5, 60]:
state, allowed = attempt(state, now)
print(now, allowed)
Erwartete Ausgabe
0 True
59 True
59.5 False
60 True