powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Когда и где использовать сериализацию
20 сообщений из 20, страница 1 из 1
Когда и где использовать сериализацию
    #39342060
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так сложилось , что еще не приходилось где-то использовать сериализацю в явном виде. Я говорю о своем коде, и если фреймворк использует сериализацию для своей работы, то этот вариант не рассмартривается, - т.е. там так надо, выбор уже сделали за вас, и вам только нужно проставить SerialVersionUID.
А вот где использовать сериализацию в своем коде и когда?
Более того, я вообще не примомню, чтобы где-то сталкивался с задачами, где показаны примеры реальной необходимости использования сериализации/десериализации, отсюда и непонимание, - где я могу это использовать? Может это действительно какой-то узкий круг применения, который не всем нужен? Растолкуйте на реальных примерах работы.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342062
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342072
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
толстые клиенты и передача объектов через сеть. Например GWT.
Но как видно, это не часто нужно. Как вариант - JSON справляется.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342224
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использую ее без всяких там сдвигов, подписей и запутывания для того чтобы сохранить настройки конкретного пользователя при работе с таблицами: в отдельный класс записывается название поля таблицы, его ширина и свойство видимости, ну или еще что-то там.
Когда пользователь настроил "под себя" табличку, поменял местами некоторые поля, изменил их ширину, скрыл "ненужные" ему поля, он жмет кнопку сохранить.
В этот момент инициализируется класс, в него записываются данные о таблице, и все это сериализуется в его(пользователя) папку на сервере, папка называется так же как его айдишник в системе, а сам класс сериализуется и записывается в файл. Я называю файлы по имени переменной класса таблица, которая используются в классе интерфейса пользователя.
Пример: юзер с айди 555, таблица Table productTable = new Table(), получаю файл /files/555/productTable.ser
Когда пользователь переходит к интерфейсу где он работает с этой таблице, то проверяется наличие этого файла на сервере и если его нет, то таблица использует значения по-умолчанию.
Не знаю верна ли моя стратегия, я ее ниоткуда не слизывал, просто прочитал когда-то про сериализацию. Поэтому если есть замечания, то я с удовольствием их бы почитал.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342255
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic, твоя идея понятна, а если пользователе 1000, это тыща файлов там будет? или активных пользователей может быть меньше, но все равно те которые были осталвяют за собой след сериализованных настроек.

и чем эта идея в принципе отличается от сохранения в БД - можно завести табличку с полями настроек (или как там это все работает) и брать оттуда. хотя с сериализацией писанины поменьше будет.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342258
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Nixic, твоя идея понятна, а если пользователе 1000, это тыща файлов там будет? или активных пользователей может быть меньше, но все равно те которые были осталвяют за собой след сериализованных настроек.

и чем эта идея в принципе отличается от сохранения в БД - можно завести табличку с полями настроек (или как там это все работает) и брать оттуда. хотя с сериализацией писанины поменьше будет.
В БД у меня тоже раньше сохранялись настройки почти те же, но когда часть функционала переписал на swing'е, то чтобы не грузить лишний раз БД добавил сериализацию, тогда у каждого пользователя, в домашней папке сохранялись сериализованные файлы.
А затем когда отказались от swing'а, то уже в новой версии сразу перешел на сериализацию, ибо на самом деле возни с ней меньше.
Кстати, на свинге у меня были добавлены еще и настройки подключения к БД, которые сохранялись так же в файлах, хотя это не безопасно. Но зато можно было менять, допустим, адрес сервера с БД и работать одновременно с несколькими базами.
А пользователей работающих в одном приложении у меня даже и 50-ти за 5 лет не было, так что этот факт меня особо не волновал/не волнует.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342266
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Уже устарело. По крайней мере а javaFx есть уже в платформе интрфейс сохранения параметров приложения. По одному параметру проще чем класс. Нам же объект не нужен. Нужна например, ширина экрана окна.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342279
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
когда у тебя 1000 файлов, тормозить начнет файловая система. база это сделает быстрее. и меньше писанины.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39342283
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
настройки сохраняют на клиенте. И не будет никакой тысячи.
Различные форумные движки сохраняют скорее в базе. Но тогда и сериализация не нужна. Т.к. нужны запросы sql к этим полям.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Когда и где использовать сериализацию
    #39615548
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вопрос касательно бинарной сериализации, например некой папки с фалами в .Net. Есть енумератор который позволяет получить в списке имена папок или файлов. Но мне надо как то связать имена фпайлов и их байтовое содержимое. Надо ли здесь испольовать Hastable (Dictionary), для получение последующей возможности распаковать сериализированый контент, или можно использовать какие то встроенные (собственные) итераторы? Возможно ли для бинарной сериализации использовать древовидные структуры, например клас Папки из листом пакок (подпапок) и файлов - или здесь рекурсия не подойдет для более менее большых папок, ибо при использование рекурсии временные обьекты при сериализации/десериализации будут размещатся на стеке, обьем которого несколько мегабайт?
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39615559
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
Ты бы задачу описал. Zip архив то получше будет для файлов.
И пути есть, и бинарно, и компрессия.
Сериализация это рождение классов в оперативке.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39615561
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtнекой папки с фалами в .Net.
Причем тут .Net ?

arrtНо мне надо как то связать имена фпайлов и их байтовое содержимое.

вообще не понял, это как?

new FileInputStream( <имя_файла> )
замечательно все связывает )))

arrtНадо ли здесь испольовать Hastable (Dictionary), для получение последующей возможности распаковать сериализированый контент, или можно использовать какие то встроенные (собственные) итераторы?

Опять таки не понятно, что Вы пытаетесь сделать.

arrtВозможно ли для бинарной сериализации использовать древовидные структуры, например клас Папки из листом пакок (подпапок) и файлов

Для сериализации AFAIK ничего использовать не нужно. Она и так работает

Сериализовать коллекции, в том числе дерево - да, можно, без проблем


arrtили здесь рекурсия не подойдет

Какая рекурсия? Откуда еще и рекурсия взялась.

arrtвременные обьекты при сериализации/десериализации будут размещатся на стеке
Кто и где будет размешаться, то мне не ведомо.

Но вообще, как-то возникает подозрение, что на стеке ОБЪЕКТЫ размещаться НЕ умеют. На стеке могут быть только атомарные типы, если я не путаю.

arrtобьем которого несколько мегабайт

Если Вам не хватает - ну увеличьте стек.
Ну или перепишите Ваши алгоритмы без рекурсии.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39615638
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь - не хотел создавать новой темы и задал вопрос о бинарной сериализации в разделе о джава, хотя мне действительно надо написать програмку на шарпе. Вопрос в том как потом получить байтовый масив начального файла, если не использовать пару ключ (относительный путь файла среди папок и подпапок)-значение (бинарирный масив). Я например использовал два листа, но это более чревато ошибками несоответствия. Касательно дерева - то сделать один tree class object этой папки невозможно без рекурсии - вчера это даже прочитал в сети. Как тогда делать проход по подпампам нижнего уровня, и т.д. Увеличивать стек возможно разве на ПК разработчика, но не все же пользователей, но если папка 100-200 мб то и это не подойдет в тестовых целях. Вы правы - на стеке размещаются - ссылки на обьекты и обекты примитивных типов, и даже так - при использование расчета чисел фибоначчи на уровне N=100, это не оправдано через большие затраты времени - не то что здесь, хотя проверить то можно.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39615643
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtКасательно дерева - то сделать один tree class object этой папки невозможно без рекурсии....
ЛЮБОЙ рекурсивный алгоритм можно представить в виде не рекурсивного.

arrtУвеличивать стек возможно разве на ПК разработчика, но не все же пользователей, но если папка 100-200 мб то и это не подойдет в тестовых целях.

А причем тут размер папки?

Даже при рекурсивном обходе, глубина рекурсии будет ровно такая же, как вложенность директориев.

Т.е. при 1 мб стеке, считая где нибудь 100 байт на кадр стека.... Вы знаете реальные винчестеры, где есть вложенность 10 000 папок друг в друга? Например на Windows это достаточно затруднительно, т.к. есть придел на максимальную длину имени файла. Директории не то, что по одному символу, а по четвертинке символа называть придется... лично я так не умею ))) у меня клавиатура только из целых клавиш (слава богу), даже половинку буквы и то в имя файла напечатать сложно ((((

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

MSDNMaximum Path Length Limitation

In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters . A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character. For example, the maximum path on drive D is "D:\some 256-character path string<NUL>" where "<NUL>" represents the invisible terminating null character for the current system codepage. (The characters < > are used here for visual clarity and cannot be part of a valid path string.)
.....

The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters .
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616326
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на особо больших папках сериализацию не тестировал - но все заработало на папке до 100 мб - для архивации и розархивации. Но все таки интерфейс при рекурсии блокируется в отличие от использование последовательной сериалиализации файлов с помощью встроеного итератора файлов класа Directory. Хотя пол дня пошло на разгадку ошибки что я в функции рекурсии не указал что вложенная функция рекурсии должна вызыватся на дочернем обьекте, а не как бы снова от обьекта в котором была запакована в виде дерева файловая система конкретной директории.
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616327
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но мне сейчас более важно - возможно ли переделать мою десктоп програмку в веб-приложение типа asp.net. Но такую програму наверное можно использовать лиш в виде сервиса - какой смысл отправлять файлы и папки на сервер для сериализации и получить обратно "архив"?
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616333
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtНо мне сейчас более важно - возможно ли переделать мою десктоп програмку в веб-приложение типа asp.net. Но такую програму наверное можно использовать лиш в виде сервиса - какой смысл отправлять файлы и папки на сервер для сериализации и получить обратно "архив"?
посмотри в сторону JWS - java web start
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616356
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний вопрос был возможно ли здесь использовать веб-приложение или надо десктоп для такой простой програмы? Не создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темы
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616372
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtНе создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темыА почему, собственно, "не создавать же"?
Ну вот хоть один разумный аргумент?
Особенно с учётом "лиш косвенно"?
...
Рейтинг: 0 / 0
Когда и где использовать сериализацию
    #39616403
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtПоследний вопрос был возможно ли здесь использовать веб-приложение или надо десктоп для такой простой програмы? Не создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темы
у вас всё косвенно мимо темы и Java.
Вам в ветку - Разработка ИС.
arrtНе создавать ли мне же новую тему
по правилам форума надо создать, но вам лень? Так что ли?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Когда и где использовать сериализацию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]