Explore
101 visualisers you can step through forwards and backwards, with synced code and a reason for every move.
Showing 12 of 101
Pastel = track · chip = your mastery
- Operating SystemsCPU SchedulingWatch FCFS, SJF, SRTF, round robin and priority share one CPU on a Gantt chart: who waits, for how long, and what each switch costs.
- CachingLRU and LFU CachesGet and put keys in a fixed-size cache and watch the hash map and the recency (or use-count) list stay in step, evicting in O(1) when it is full.
- Operating SystemsPage ReplacementRun a string of page references through a few frames of memory under FIFO, LRU, Clock and the optimal OPT, and count the faults, including Bélády’s anomaly.
- Distributed SystemsConsistent HashingSpread keys over servers on a hash ring: each key belongs to the first server clockwise, so adding or removing a server moves only about 1/N of the keys, and virtual nodes even out the load.
- PerformanceQueueing and Tail LatencyWatch random requests queue in front of servers, see why latency explodes as load nears 100%, and why p99 matters more than the average.
- PerformanceToken Bucket Rate LimiterA bucket of tokens that refills at a steady rate: bursts up to its capacity get through, but the long-run rate is capped.
- Distributed SystemsLogical ClocksStamp events on a space-time diagram with Lamport and vector clocks, and see why a smaller Lamport time doesn’t mean “happened before”, while vector clocks spot concurrent events exactly.
- Distributed SystemsRaft ConsensusElect a leader, replicate a log and commit by majority, then crash servers and split the network to see why Raft never loses a committed entry.
- DatabasesB+ TreeThe index inside databases: keys live in linked leaves, separator copies above steer each lookup to one page per level, and range scans walk along the leaves.
- DatabasesLSM TreeWrite keys into a memtable, flush it to sorted tables on disk and watch compaction merge them down the levels; then follow a get from newest to oldest, skipping tables by key range and Bloom filter.
- ConcurrencyRace ConditionsTwo threads run count++ one instruction at a time: watch an update get lost, then try every interleaving and see how often it happens, and how a lock or an atomic instruction fixes it.
- ConcurrencyDeadlockProcesses take locks in turn: watch the resource-allocation graph grow, find the cycle that is a deadlock, and see how taking locks in one global order prevents it, with dining philosophers.