Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для florgas
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366

Вызвать метод в указанное время

07.10.2018, 17:23. Показов 1209. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пишу на java, использую spring.
Хочу реализовать серверный анти-флуд чата.
Решил в массив записывать имя пользователя и время его последнего сообщения.
Если имя юзера есть в массиве, значит отправить сообщение он пока не может.
Вопрос в том, чтобы через 15 секунд (задержка между сообщениями), дропнуть юзера из массива.
Подскажите в какую сторону посмотреть. Есть ли что-то у джавы или у спринга для подобной реализации?
Вижу какой-нибудь шедулер на указанное время. Но по реализации пока нет представлений.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2018, 17:23
Ответы с готовыми решениями:

Через некоторое время простоя приложения, не удается вызвать метод
Здравствуйте! У меня есть приложение, которое через определенный промежуток времени (несколько минут, в зависимости от настроек) вызывает...

Попытка вызвать запрос который не включает указанное выражение
Доброго времени суток, есть запрос на подсчёт суммы заказа, но при его выполнении появляется ошибка "Попытка вызвать запрос который не...

Выполнение в указанное время
Программа должна выполнять код по достижению заданного времени #include "stdafx.h" #include <iostream> #include...

12
 Аватар для snajper_ro
116 / 101 / 52
Регистрация: 14.09.2011
Сообщений: 696
Записей в блоге: 1
07.10.2018, 19:31
там есть аннатации, запускаете ваше задачу каждую мунуту: очистить вашу матрицу и дело готово
@Scheduled(fixedRate = 5000)
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.10.2018, 21:20
Цитата Сообщение от florgas Посмотреть сообщение
Если имя юзера есть в массиве, значит отправить сообщение он пока не может.
Вопрос в том, чтобы через 15 секунд (задержка между сообщениями), дропнуть юзера из массива.
Почему просто не переписать туда новое значение и проверять разницу по времени каждый раз когда юзер что-то отправляет? Зачем тут городить какой-то шедулер?
0
 Аватар для florgas
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
07.10.2018, 22:27  [ТС]
Почему просто не переписать туда новое значение и проверять разницу по времени каждый раз когда юзер что-то отправляет? Зачем тут городить какой-то шедулер?
Потому что если человек покинет сайт, он по прежнему останется висеть в памяти сервера. И все, кто когда либо что-то писали в чат, будут висеть в памяти. Так как веб-приложение большое, массив будет расти 100-1.000+ и более имен. Зачем все это продолжать хранить, когда можно по таймеру очищать лишние имена из массива?

Добавлено через 8 минут
там есть аннатации, запускаете ваше задачу каждую мунуту: очистить вашу матрицу и дело готово
@Scheduled(fixedRate = 5000)
Мне не надо каждую минуту. Мне надо в нужное время, которое я постоянно буду менять и вешать разные задачи.
Подход через аннотацию не взлетит.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
07.10.2018, 22:51
Цитата Сообщение от florgas Посмотреть сообщение
Подскажите в какую сторону посмотреть.
https://redis.io/commands/expire
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
08.10.2018, 00:45
Потому что если человек покинет сайт, он по прежнему останется висеть в памяти сервера
Для этого есть сессия юзера и тайм аут этой самой сессии.
Ну и режим выше посоветовали тоже норм.
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
08.10.2018, 02:13
Цитата Сообщение от florgas Посмотреть сообщение
Вызвать метод в указанное время
scheduleAtFixedRate(TaskTimer t, Date d, long l), schedule(TaskTimer t, Date d, long l).
Вывод каждую минуту
0
 Аватар для snajper_ro
116 / 101 / 52
Регистрация: 14.09.2011
Сообщений: 696
Записей в блоге: 1
08.10.2018, 10:29
Вы уверены, что ваша логика приложения корректна,
1)и нельзя ли написать лучше
2)вы пересмотрели все варианты? и ваш единственный вариант он подходит(только он)
0
 Аватар для florgas
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
08.10.2018, 14:01  [ТС]
1)и нельзя ли написать лучше
С радостью выслушал бы варианты, если у кого-то они есть.

Нам надо где-то хранить список пользователей, которым не доступен чат. Базу использовать нет смысла, так как будет много ненужных запросов. Какие еще варианты, кроме массива в java?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
08.10.2018, 14:13
Цитата Сообщение от florgas Посмотреть сообщение
Базу использовать нет смысла, так как будет много ненужных запросов.
А захламлять память сервера --- имеет смысл? Каких еще ненужных запросов? Только нужные.

Впрочем, дело твое, достаточно было задать вопрос гуглу https://stackoverflow.com/a/3802420
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
08.10.2018, 14:18
Цитата Сообщение от florgas Посмотреть сообщение
Зачем все это продолжать хранить, когда можно по таймеру очищать лишние имена из массива?
Думаю как-то Вы определяете статус юзера: онлайн или нет. Если оффлайн, то удалять информацию о последнем сообщении.

Не по теме:

Если не хотите по-нормальному через сессии)


Цитата Сообщение от florgas Посмотреть сообщение
Какие еще варианты, кроме массива в java?
HashMap
0
 Аватар для florgas
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
08.10.2018, 14:28  [ТС]
А захламлять память сервера --- имеет смысл? Каких еще ненужных запросов? Только нужные.
Чем захламлять? Хлам я как раз пытаюсь вычистить, а актуальный список хранить.
Юзер каждую секунду шлет запрос - сервер каждую секунду дергает базу. 100 юзеров каждую секунду шлют запрос. Лишние запросы. Разве нет?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
08.10.2018, 14:50
Цитата Сообщение от florgas Посмотреть сообщение
Чем захламлять? Хлам я как раз пытаюсь вычистить, а актуальный список хранить.
Этим самым актуальным списком и захламлять. Я уж не говорю про минусы наличия состояния у сервера.

Цитата Сообщение от florgas Посмотреть сообщение
Юзер каждую секунду шлет запрос - сервер каждую секунду дергает базу. 100 юзеров каждую секунду шлют запрос. Лишние запросы. Разве нет?
Ты вообще представляешь себе, что такое Redis? https://redis.io/topics/benchmarks
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2018, 14:50
Помогаю со студенческими работами здесь

Выполнение скрипта в указанное время
Всем привет. Возможно создать скрипт который будет выполнять определённый запрос в базе в указанное время DATE(data type из базы). ...

Выполнить действие в указанное время
Как выполнить действие в указанное время как это сделать к примеру мне нужно вывести переменную echo $g в эту дату 7-5-2010 как это сделать

выполнение скрипта в указанное время
Здравствуйте! у меня такая проблема, подскажите хотя бы в каком направлении искать) итак, в форме вводится некая информация и какое то...

Остановка выполнения в указанное время
Доброго времени суток. Господа, как заставить приложение прекратить выполнение через 10 секунд после запуска? Спасибо ) using...

Запуск процедуры в указанное время
Программа должна в нужное время делать нужное действие. Взял таймер, указал интервал = 1000 и Enabled = True Вставил код (см. ниже)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru