Контест Junior net/http и middleware обновлено
Статистика access-логов: ошибки и p95 на Go
Условие
По логу запросов посчитайте для каждого пути: число запросов, число ответов 5xx, долю 5xx в процентах (округление вниз до целого) и p95 времени ответа.
p95 считается методом ближайшего ранга: отсортируйте времена по возрастанию, возьмите элемент с номером ⌈0.95·n⌉ (нумерация с 1).
Ввод: n (1 ≤ n ≤ 2000), затем строки МЕТОД путь статус время_мс.
Вывод: по строке на путь в порядке возрастания пути: путь запросы 5xx процент p95.
Пример
5
GET /api/users 200 12
GET /api/users 500 300
POST /login 401 40
GET /api/users 200 15
POST /login 200 35
/api/users 3 1 33 300
/login 2 0 0 40
Как подойти
map[path]*stats, целочисленный ранг (95n+99)/100, сортировка времён.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Термины по теме
Ещё по теме «net/http и middleware»
- Разбор query-строки URL с декодированием на Go
- Маршрутизатор с параметрами пути в стиле ServeMux
- Rate limiter на токен-бакете для middleware на Go
- Зачем закрывать resp.Body
- Таймаут http.DefaultClient
- Обработчики net/http и горутины
- http.HandlerFunc
- Надёжный HTTP-клиент в Go