Лучшая практика для хранения больших объемов данных с J2ME

Вы можете наложить хотя бы один из них, но для согласованности вы можете явно указать, что должно работать как-то вроде v = (float) s / (float) t.

9
задан roryf 18 September 2008 в 20:21
поделиться

8 ответов

Для чего-либо прошлого несколько килобайтов необходимо использовать или JSR 75 или удаленный сервер. Записи RMS чрезвычайно ограничены в размере и скорости, даже в некоторых гарнитурах более высокого уровня. Если необходимо манипулировать 1 МБ данных в J2ME, единственный надежный, портативный путь состоит в том, чтобы сохранить его в сети. Класс HttpConnection и ПОЛУЧЕНИЕ и методы POST всегда поддерживаются.

На гарнитурах, которые поддерживают JSR 75 FileConnection, это может быть допустимая альтернатива, но без подписывания кода это - пользовательский кошмар опыта. Почти каждый вызов API вызовет подсказку безопасности без общего выбора разрешения. Компаниям, которые развертывают приложения с JSR 75 обычно, нужны полдюжины двоичных файлов для каждого порта только для покрытия небольшой части возможных сертификатов. И это только для сертификатов производителя; некоторые гарнитуры только заблокировали поставщиками услуг сертификаты.

9
ответ дан 4 December 2019 в 08:54
поделиться

Под Blackberry ОС 4.6 предел размера хранилища RMS был увеличен до 512 КБ, но это не много справки, поскольку много устройств не будут, вероятно, иметь поддержки 4,6. Другая опция на Blackberry является Персистентным Хранилищем, которое имеет рекордный предел размера 64 КБ, но никакой предел на размер хранилища (кроме физических пределов устройства).

Я думаю, Carlos и izb правы.

2
ответ дан 4 December 2019 в 08:54
поделиться

Я думаю, что самый гибкий подход должен был бы реализовать Вашу собственную файловую систему сверху RMS. Можно обработать записи RMS похожим способом как блоки на жестком диске и использовать inode структуру или подобный для распространения логических файлов по нескольким блокам. Я рекомендовал бы реализовать байт или потоковый интерфейс сверху блоков, и затем возможно сделать другой уровень API к тому же для записи специальных структур данных (или просто сделал бы Ваши объекты сериализуемыми к потоку данных).

Классическая книга Tanenbaum по операционным системам касается, как реализовать простую файловую систему, но я уверен, что можно найти другие ресурсы онлайн, если Вы не любите бумаги.

3
ответ дан 4 December 2019 в 08:54
поделиться

Это довольно просто, используйте JSR75 (FileConnection) и не забудьте подписывать свой midlet с действительным (доверяемым) сертификатом.

2
ответ дан 4 December 2019 в 08:54
поделиться

Производительность RMS и реализация варьируются дико между устройствами, поэтому если мобильность платформы является проблемой, можно найти, что код работает хорошо над некоторыми устройствами и не другими. RMS разработана для хранения небольших объемов данных (Высоко таблицы счета, или безотносительно) не большой объем.

Вы могли бы найти, что некоторые платформы быстрее с файлами, хранившими в нескольких магазинах звукозаписей. Некоторые быстрее с несколькими записями в одном хранилище. Многие хорошо для устройства хранения данных, но становятся неприменимо медленными при удалении больших объемов данных от хранилища.

Ваш лучший выбор состоит в том, чтобы использовать JSR-75 вместо этого где это возможно, и создавать Ваш собственный интерфейс хранилища файлов, который отступает к RMS, если ничто лучше не поддерживается.

К сожалению, когда дело доходит до JavaME, Вы часто вовлекаетесь в запись определенных для устройства вариантов Вашего кода.

4
ответ дан 4 December 2019 в 08:54
поделиться

Я только начинаю кодировать для JavaME, но иметь опыт со старыми версиями PalmOS, где все блоки данных ограничены в размере, требуя дизайна структур данных с помощью рекордных индексов и смещений.

1
ответ дан 4 December 2019 в 08:54
поделиться

Спасибо все для полезных комментариев. В конце простое решение состояло в том, чтобы ограничить сохраненный объем данных, реализующий код, который корректирует данные согласно тому, насколько большой хранилище, и выбирающие данные из сервера по требованию если не сохраненный локально. Это интересно, что предел увеличен в ОС 4.6 с любой удачей, которую мой код будет просто корректировать самостоятельно и хранить больше данных :)

Разработка приложения J2ME для Blackberry, не используя .cod компилятор ограничивает использование JSR 75 некоторые что, так как мы не можем подписать архив. Как указано Carlos это - проблема на любой платформе, и у меня были подобные проблемы с помощью части PIM ее. RMS, кажется, является невероятно медленной на платформе Blackberry, таким образом, я не уверен, насколько полезный inode/b-tree файловая система на вершине была бы, если данные не кэшировались в памяти и писались в RMS в низкоприоритетном фоновом потоке.

1
ответ дан 4 December 2019 в 08:54
поделиться

Только для чтения. Я прихожу в приемлемое время (в пределах 10 секунд), индексируя файл ресурсов. У меня есть два экспорта прайс-листа CSV размером ~ 800 КБ. Классы программ и оба этих файла сжимаются до JAR размером 300 КБ.

При поиске я показываю List и запускаю два Thread в фоновом режиме, чтобы заполнить его, так что первые результаты приходят довольно быстро и сразу же становятся доступны для просмотра. Сначала я реализовал простой линейный поиск, но он был слишком медленным (~ 2 мин).

Затем я проиндексировал файл (отсортированный по алфавиту), чтобы найти начало каждой буквы. Теперь, прежде чем разбирать строку за строкой, я сначала InputStreamReader.skip () перехожу в нужную позицию по первой букве. Я подозреваю, что задержка в основном связана с распаковкой ресурса, поэтому разделение ресурсов ускорит его еще больше. Я не Я не хочу этого делать, чтобы не потерять преимущества легкого обновления. CSV экспортируются без предварительной обработки.

2
ответ дан 4 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: