|
|
|
expiring map
|
|||
|---|---|---|---|
|
#18+
Всем привет, Есть ли библиотека типа guava которая удовлетворяет следующим требованиям для map?: 1. при добавлении элементов можно повесить что-то типа expiration policy: вообще никогда не удалять, удалять через 5 мин, удалять через 10 минут, .. Т.е. полиси определяется при добавлении нового элемента 2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу. Guava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2014, 18:38 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
diverMВсем привет, Есть ли библиотека типа guava которая удовлетворяет следующим требованиям для map?: 1. при добавлении элементов можно повесить что-то типа expiration policy: вообще никогда не удалять, удалять через 5 мин, удалять через 10 минут, .. Т.е. полиси определяется при добавлении нового элемента 2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу. Guava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?В моем понимании, реализация подобного функционала поверх существующих коллекций это порядка 50-100 строк кода. Не проще ли будет реализовать этот тривиальный функционал самому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2014, 21:04 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
DEVcoachВ моем понимании, реализация подобного функционала поверх существующих коллекций это порядка 50-100 строк кода. Не проще ли будет реализовать этот тривиальный функционал самому? А зачем велосипед изобретать если это уже есть? Поэтому и спрашиваю про существующие решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2014, 21:53 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
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 будет завершён. Это для тех кто любит скорость. Такую чтоб значить "уши трепыхались от набегающего потока". Запуск - фоновых чистящих потоков предлагаю выносить на обсуждение. В свете вышепредложенного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2014, 00:45 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
diverMGuava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?Добавляйте разные объекты в разные наборы с разными политиками очистки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2014, 05:12 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovdiverMGuava делает одно правило по очистке и поэтому не подходит. Есть ли open source библиотеки удовлетворяющие моим требованиям?Добавляйте разные объекты в разные наборы с разными политиками очистки. Тогда искать надо во всех по очереди. Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полиси ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2014, 17:48 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
diverM2. удаление элементов происходит в фоновом потоке периодически, основываясь на expiration policy, а не когда мы обращаемся к элементу. Навесить на коллекцию ScheduledExecutorService и скедулить удаление при добавлении. Доступ только синхронизировать правильно или использовать ConcurrentHashMap. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2014, 17:53 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
diverMТогда искать надо во всех по очередиИщите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полисиЛожный посыл. Подумайте немного и сами это поймёте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2014, 20:36 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovdiverMТогда искать надо во всех по очередиИщите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.Соответственно, время доступа увеличиться в 5-10 раз если исходить из того, что будет 10 разных полисиЛожный посыл. Подумайте немного и сами это поймёте. Вопрос стоял о существующей библиотеке, а не так как это самому реализовать. Видно такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 00:42 |
|
||
|
expiring map
|
|||
|---|---|---|---|
|
#18+
diverMBasil A. Sidorovпропущено... Ищите параллельно. Сделайте отдельную карту, которая укажет набор, хранящий тот или иной объект.пропущено... Ложный посыл. Подумайте немного и сами это поймёте. Вопрос стоял о существующей библиотеке, а не так как это самому реализовать. Видно такого нет. Это простая задача. И на каждый чих никто не будет создавать библиотеки. Есть пространство имён java.util.collections. Есть механизм Generics. Бери и пиши. Как Delphi никто не будет клепать компоненты на каждый случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=146&tid=2126034]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 341ms |

| 0 / 0 |
