Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / expiring map / 10 сообщений из 10, страница 1 из 1
17.12.2014, 18:38
    #38836323
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
Всем привет,
Есть ли библиотека типа guava которая удовлетворяет следующим требованиям для map?:
1. при добавлении элементов можно повесить что-то типа expiration policy: вообще никогда не удалять, удалять через 5 мин, удалять через 10 минут, .. Т.е. полиси определяется при добавлении нового элемента
2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу.

Guava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?
...
Рейтинг: 0 / 0
17.12.2014, 21:04
    #38836450
DEVcoach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverMВсем привет,
Есть ли библиотека типа guava которая удовлетворяет следующим требованиям для map?:
1. при добавлении элементов можно повесить что-то типа expiration policy: вообще никогда не удалять, удалять через 5 мин, удалять через 10 минут, .. Т.е. полиси определяется при добавлении нового элемента
2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу.

Guava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?В моем понимании, реализация подобного функционала поверх существующих коллекций это порядка 50-100 строк кода.
Не проще ли будет реализовать этот тривиальный функционал самому?
...
Рейтинг: 0 / 0
17.12.2014, 21:53
    #38836474
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
DEVcoachВ моем понимании, реализация подобного функционала поверх существующих коллекций это порядка 50-100 строк кода.
Не проще ли будет реализовать этот тривиальный функционал самому?
А зачем велосипед изобретать если это уже есть? Поэтому и спрашиваю про существующие решения
...
Рейтинг: 0 / 0
18.12.2014, 00:45
    #38836529
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverMВсем привет,
Есть ли библиотека типа guava которая удовлетворяет следующим требованиям для map?:
1. при добавлении элементов можно повесить что-то типа expiration policy: вообще никогда не удалять, удалять через 5 мин, удалять через 10 минут, .. Т.е. полиси определяется при добавлении нового элемента
Я-бы предложил небольшое изменение (дополнение). Вряд-ли кто-то будет ставить OVER 9000 отдельных
policy. Скорее всего их будет немного. 5-10 штук. От 5 минут до бесконечности. С экспоненциальным
шагом.... ну да бох с ним. Неважно.
2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу.
Всегда лучше разработать и исследовать однопоточную реализацию и если не хватит возможностей
то тогда запускать фоновые задачи. В данном конкретном случае задача хорошо решается через
список 5-10 штук коллекций типа LRU. Ясен пень - каждая коллекция имеет свой Exp Policy и
внутри LRU будет упорядоченный по чистке список. Добавление и чистка - синхронны. 1 элемент добавил
и тут-же почистил от 0 до N устаревших ключиков. Фоновые потоки - не нужны.

Для batch-варинта можно предусмотреть: добавление пачки и ручная (управляемая) очистка
когда batch будет завершён. Это для тех кто любит скорость. Такую чтоб значить "уши
трепыхались от набегающего потока".

Запуск - фоновых чистящих потоков предлагаю выносить на обсуждение. В свете вышепредложенного.
...
Рейтинг: 0 / 0
18.12.2014, 05:12
    #38836562
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverMGuava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?Добавляйте разные объекты в разные наборы с разными политиками очистки.
...
Рейтинг: 0 / 0
18.12.2014, 17:48
    #38837438
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
Basil A. SidorovdiverMGuava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?Добавляйте разные объекты в разные наборы с разными политиками очистки.
Тогда искать надо во всех по очереди. Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полиси
...
Рейтинг: 0 / 0
18.12.2014, 17:53
    #38837453
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverM2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу.

Навесить на коллекцию ScheduledExecutorService и скедулить удаление при добавлении. Доступ только синхронизировать правильно или использовать ConcurrentHashMap.
...
Рейтинг: 0 / 0
18.12.2014, 20:36
    #38837568
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverMТогда искать надо во всех по очередиИщите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полисиЛожный посыл. Подумайте немного и сами это поймёте.
...
Рейтинг: 0 / 0
23.12.2014, 00:42
    #38840132
diverM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
Basil A. SidorovdiverMТогда искать надо во всех по очередиИщите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полисиЛожный посыл. Подумайте немного и сами это поймёте.
Вопрос стоял о существующей библиотеке, а не так как это самому реализовать.
Видно такого нет.
...
Рейтинг: 0 / 0
23.12.2014, 14:54
    #38840649
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
expiring map
diverMBasil A. Sidorovпропущено...
Ищите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.пропущено...
Ложный посыл. Подумайте немного и сами это поймёте.
Вопрос стоял о существующей библиотеке, а не так как это самому реализовать.
Видно такого нет.
Это простая задача. И на каждый чих никто не будет создавать библиотеки.
Есть пространство имён java.util.collections. Есть механизм Generics.
Бери и пиши.

Как Delphi никто не будет клепать компоненты на каждый случай.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / expiring map / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]