![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
Добрый день, товарищи!
Задали мне тестовую задачку - реализовать cache для Object на файловой системе с ограничением на размер кэша. Для справки: размер объектов можно получить с помощью вот этой утилиты: sizeof Но как же выгрузить объект в файл, чтоб освободить занимаемую им память, а затем, при надобности, подгрузить его в память обратно? Это ведь задачка, на мой взгляд, не на простую сериализацию. Я не сомневаюсь, что если и найдется такое решение, то придеться бороться с фрагментацией. Пожалуйста, не обсуждайте здесь само задание. Мне нужна ваша помощь в том, как реализовать поставленную задачу или доказать, что решения не существует. Спасибо за внимание! -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Metal Heart Вы ведь легко могли бы сохранить обьект в базе данных и при необходимости извлечь. База данных - это тот же файл, только операции с обьектами (поиск, удаление, вставка) база выполняет сама. Ваше задание выглядит как создание специализированной базы данных. Или как HashMap, но не в памяти, а на диске .
В качестве основы для этого удобен RandomAccessFile. Вы записываете в файл обьекты и запоминаете позицию каждого обьекта и его длину. И храните эти параметры в памяти. Удаление обьекта - это удаление только ключей в памяти. Дефрагментация файла - это создание нового файла, куда копируются только "живые" обьекты из старого. |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
COVD, спасибо!
База данных - хорошее решение, о котором я даже и не подумал! Но я пожалуй остановлюсь на 2м варианте, потому как его реализация мне интереснее. -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| Metal_Heart |
|
||||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
Дошли, таки руки, реализовал я этот swap:
класс-помощник:
если что, пишите, рад буду помочь! -------------------- не стыдно учиться, а стыдно не учиться |
||||
|
|||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
Кстати, этот swap я реализовал в виде статического класса и сделал я это интуитивно.
Лично мне писать статические классы - не очень привычно, не люблю я их, зато с другой стороны, риск получить сообщение типа такого:
Вопрос, прав ли я, используя для кэша реализацию на статическом классе? Это сообщение отредактировал(а) Metal_Heart - 9.11.2009, 18:20 -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |