Я использую groovy для обработки пакетного задания, я планирую кэшировать объект домена с помощью аннотации @Memoize от groovy, но проблема в истечении срока действия, я хочу истечь кеш, когда работа закончен. Есть ли способ сказать groovy, чтобы истечь кеш из кода?Groovy @Memoize expiry на основе пользовательского события
1
A
ответ
1
Согласно the docs, @Memoized
имеет только максимальное значение и параметры размера кеша защиты.
Поскольку AST под крышки будет создан механизм memoize через Closure::memoize
, вы можете эмулировать с картой и memoized затворов, которые могут быть утилизированы:
class Job {
def log = []
def repoBase = [
sum: { a, b ->
log << "sum $a and $b"
a + b
},
multiply: { a, b ->
log << "multiply $a and $b"
}
]
def repo
def startJob() {
repo = repoBase.collectEntries { key, value ->
[(key): value.memoize()]
} as Expando
}
def withJob(Closure c) {
startJob()
c.delegate = repo
c.delegateStrategy = Closure.DELEGATE_FIRST
c(this)
repo = null
}
}
И тест:
j = new Job()
j.withJob {
multiply 3, 4
multiply 3, 4
multiply 8, 8
sum 9, 9
sum 1, 2
sum 9, 9
}
assert j.log == [
"multiply 3 and 4",
"multiply 8 and 8",
"sum 9 and 9",
"sum 1 and 2"
]
+1
Или используйте гуаву. https://github.com/google/guava/wiki/CachesExplained –
Смежные вопросы
- 1. используя memoize в groovy
- 2. groovy fibonacchi trampoline and memoize
- 3. Clojure - memoize на диске
- 4. Весной BDD на основе Groovy
- 5. Гобелен - обновление пользовательского интерфейса на основе фонового события
- 6. вызывать разные события на основе пользовательского стиля ввода javascript
- 7. Mule Cache - Expiry
- 8. пожара пользовательского события на console.log
- 9. Весенний ботинок на основе Groovy на примере
- 10. Запуск будущего события на основе текущего события
- 11. Изменение действия события на основе другого события
- 12. Google oAuth Token expiry
- 13. Set Expiry Headers asset_sync
- 14. jQuery cookie expiry time
- 15. Podio Refresh token Expiry
- 16. Password Reset Link Expiry
- 17. Powershell QADUser Password Expiry
- 18. Ehcache Expiry и Deadlock
- 19. Groovy SwingBuilder события для TextField
- 20. IHostBufferPolicySelector на основе пользовательского атрибута
- 21. Добавить Флаг на основе события кнопки
- 22. События на основе времени выполнения
- 23. Показать изображение на основе события
- 24. События для пользовательского UIView
- 25. события пользовательского управления wpf
- 26. События пользовательского контроля
- 27. вызов пользовательского события динамически на JQuery плагин
- 28. Отправка пользовательского события на загружаемый динамически SWF
- 29. Выполнение отправки пользовательского события piwik.js на обслуживание
- 30. Запрос на перенаправление на основе пользовательского агента
Довольно верный ответ не –
Правильный ответ: Спасибо Тиму, я был под тем же впечатлением, но мне хотелось перекреститься с таким поднятым вопросом здесь, после нескольких дней ожидания придет к выводу, что нет никакого способа. Я не уверен, как я могу пометить ваш комментарий правильно. –