Алгоритм - как рассчитать количество активных сессий во временных рядах? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть таблица, в которой мы поддерживаем время входа и выхода пользователя.Теперь я хочу отобразить таблицу для администратора с количеством активных пользователей, например:

00: 00 - 25000:15 - 22500:30 - 24000:45 - 19001:00 - 240......

Какой алгоритм мы должны использовать?

Заранее спасибо :)

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Вы можете просто перебрать список пар логин-выход для всех пользователей и просто поместить пользователя (или увеличить счетчик для этого пользователя) в соответствующий сегмент.Теперь, если конкретный пользователь охватывает несколько сегментов, вам нужно рассмотреть возможность помещения этого пользователя (или увеличить счетчик для этого пользователя) в несколько сегментов.

Это все об алгоритме.Вероятно, самый простой.

Если вы хотите перейти к деталям реализации, вы можете использовать HashMap или unordered_map, чьи ключи будут вашим временем, когда вы хотите сообщить количество пользователей изначение будет начинаться с нуля, вы будете увеличивать это значение каждый раз, когда получаете нового пользователя.

0 голосов
/ 15 декабря 2018

Создание списка / массива с парами (time; incr = +1 for login, -1 for logout)

Сортировка списка по временному ключу

Создание ActiveCount = 0

Перемещение списка, добавление incr к ActiveCount,

Значение ActiveCount в каждый момент соответствует количеству активных пользователей

  login: 0; logout: 4
  login: 2; logout: 6
  list 
   (0;1), (2;1), (4;-1), (6;-1)
 count 
 0   1     2       1       0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...