ребят Я внедряющие простой пример кэша 2 уровня в Java: первого уровень Memeory второй - файловая системакэширования в яве
Я новичок в Java, и я делаю это только для понимания кэширования в Java. И извините за мой английский, этот язык не является родным для меня :)
Я закончил 1-й уровень, используя класс LinkedHashMap и метод removeEldestEntry и это выглядит следующим образом:
import java.util.*;
public class level1 {
private static final int max_cache = 50;
private Map cache = new LinkedHashMap(max_cache, .75F, true) {
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > max_cache;
}
};
public level1() {
for (int i = 1; i < 52; i++) {
String string = String.valueOf(i);
cache.put(string, string);
System.out.println("\rCache size = " + cache.size() +
"\tRecent value = " + i +
" \tLast value = " +
cache.get(string) + "\tValues in cache=" +
cache.values());
}
}
Теперь я перейдя ко второму уровню. Какой код и методы я должен написать для реализации этих задач:
1) Когда кеш 1-го уровня заполнен, значение не должно быть удалено с помощью removeEldestEntry, но его необходимо перенести на 2-й уровень (в файл)
2) Когда новые значения добавляются на 1-й уровень, во-первых, это значение должно быть проверено в файле (2-й уровень), и если оно существует, оно должно быть перемещено со второго на 1-й уровень.
И я попытался использовать LRUMap для обновления моего 1-го уровня, но компилятор не смог найти класс LRUMap в библиотеке, в чем проблема? Может быть, нужен специальный синтаксис?
LRUMap - это коллекция в apache commons, она не находится в базовой библиотеке Java. Поэтому вам нужно будет загрузить и использовать библиотеку apache commons для использования LRUMap. – berry120
Если это для lern java, тогда все в порядке, я хочу использовать его в производстве, вместо этого вы можете использовать EHCache. – Ralph
Спасибо большое! Во-первых, я должен начать с изучения простых конструкций, потому что я полагаю, что основные принципы используются в таких продуктах, как EHCache и OSCache. – BraginiNI