|
|
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Так сложилось , что еще не приходилось где-то использовать сериализацю в явном виде. Я говорю о своем коде, и если фреймворк использует сериализацию для своей работы, то этот вариант не рассмартривается, - т.е. там так надо, выбор уже сделали за вас, и вам только нужно проставить SerialVersionUID. А вот где использовать сериализацию в своем коде и когда? Более того, я вообще не примомню, чтобы где-то сталкивался с задачами, где показаны примеры реальной необходимости использования сериализации/десериализации, отсюда и непонимание, - где я могу это использовать? Может это действительно какой-то узкий круг применения, который не всем нужен? Растолкуйте на реальных примерах работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 11:10 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 11:15 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
rema174, толстые клиенты и передача объектов через сеть. Например GWT. Но как видно, это не часто нужно. Как вариант - JSON справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 12:19 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Я использую ее без всяких там сдвигов, подписей и запутывания для того чтобы сохранить настройки конкретного пользователя при работе с таблицами: в отдельный класс записывается название поля таблицы, его ширина и свойство видимости, ну или еще что-то там. Когда пользователь настроил "под себя" табличку, поменял местами некоторые поля, изменил их ширину, скрыл "ненужные" ему поля, он жмет кнопку сохранить. В этот момент инициализируется класс, в него записываются данные о таблице, и все это сериализуется в его(пользователя) папку на сервере, папка называется так же как его айдишник в системе, а сам класс сериализуется и записывается в файл. Я называю файлы по имени переменной класса таблица, которая используются в классе интерфейса пользователя. Пример: юзер с айди 555, таблица Table productTable = new Table(), получаю файл /files/555/productTable.ser Когда пользователь переходит к интерфейсу где он работает с этой таблице, то проверяется наличие этого файла на сервере и если его нет, то таблица использует значения по-умолчанию. Не знаю верна ли моя стратегия, я ее ниоткуда не слизывал, просто прочитал когда-то про сериализацию. Поэтому если есть замечания, то я с удовольствием их бы почитал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 21:40 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Nixic, твоя идея понятна, а если пользователе 1000, это тыща файлов там будет? или активных пользователей может быть меньше, но все равно те которые были осталвяют за собой след сериализованных настроек. и чем эта идея в принципе отличается от сохранения в БД - можно завести табличку с полями настроек (или как там это все работает) и брать оттуда. хотя с сериализацией писанины поменьше будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 22:57 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
rema174Nixic, твоя идея понятна, а если пользователе 1000, это тыща файлов там будет? или активных пользователей может быть меньше, но все равно те которые были осталвяют за собой след сериализованных настроек. и чем эта идея в принципе отличается от сохранения в БД - можно завести табличку с полями настроек (или как там это все работает) и брать оттуда. хотя с сериализацией писанины поменьше будет. В БД у меня тоже раньше сохранялись настройки почти те же, но когда часть функционала переписал на swing'е, то чтобы не грузить лишний раз БД добавил сериализацию, тогда у каждого пользователя, в домашней папке сохранялись сериализованные файлы. А затем когда отказались от swing'а, то уже в новой версии сразу перешел на сериализацию, ибо на самом деле возни с ней меньше. Кстати, на свинге у меня были добавлены еще и настройки подключения к БД, которые сохранялись так же в файлах, хотя это не безопасно. Но зато можно было менять, допустим, адрес сервера с БД и работать одновременно с несколькими базами. А пользователей работающих в одном приложении у меня даже и 50-ти за 5 лет не было, так что этот факт меня особо не волновал/не волнует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 23:10 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Nixic, Уже устарело. По крайней мере а javaFx есть уже в платформе интрфейс сохранения параметров приложения. По одному параметру проще чем класс. Нам же объект не нужен. Нужна например, ширина экрана окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 23:37 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
rema174, когда у тебя 1000 файлов, тормозить начнет файловая система. база это сделает быстрее. и меньше писанины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 23:59 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
настройки сохраняют на клиенте. И не будет никакой тысячи. Различные форумные движки сохраняют скорее в базе. Но тогда и сериализация не нужна. Т.к. нужны запросы sql к этим полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 00:16 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
У меня вопрос касательно бинарной сериализации, например некой папки с фалами в .Net. Есть енумератор который позволяет получить в списке имена папок или файлов. Но мне надо как то связать имена фпайлов и их байтовое содержимое. Надо ли здесь испольовать Hastable (Dictionary), для получение последующей возможности распаковать сериализированый контент, или можно использовать какие то встроенные (собственные) итераторы? Возможно ли для бинарной сериализации использовать древовидные структуры, например клас Папки из листом пакок (подпапок) и файлов - или здесь рекурсия не подойдет для более менее большых папок, ибо при использование рекурсии временные обьекты при сериализации/десериализации будут размещатся на стеке, обьем которого несколько мегабайт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 17:02 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
arrt, Ты бы задачу описал. Zip архив то получше будет для файлов. И пути есть, и бинарно, и компрессия. Сериализация это рождение классов в оперативке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 17:13 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
arrtнекой папки с фалами в .Net. Причем тут .Net ? arrtНо мне надо как то связать имена фпайлов и их байтовое содержимое. вообще не понял, это как? new FileInputStream( <имя_файла> ) замечательно все связывает ))) arrtНадо ли здесь испольовать Hastable (Dictionary), для получение последующей возможности распаковать сериализированый контент, или можно использовать какие то встроенные (собственные) итераторы? Опять таки не понятно, что Вы пытаетесь сделать. arrtВозможно ли для бинарной сериализации использовать древовидные структуры, например клас Папки из листом пакок (подпапок) и файлов Для сериализации AFAIK ничего использовать не нужно. Она и так работает Сериализовать коллекции, в том числе дерево - да, можно, без проблем arrtили здесь рекурсия не подойдет Какая рекурсия? Откуда еще и рекурсия взялась. arrtвременные обьекты при сериализации/десериализации будут размещатся на стеке Кто и где будет размешаться, то мне не ведомо. Но вообще, как-то возникает подозрение, что на стеке ОБЪЕКТЫ размещаться НЕ умеют. На стеке могут быть только атомарные типы, если я не путаю. arrtобьем которого несколько мегабайт Если Вам не хватает - ну увеличьте стек. Ну или перепишите Ваши алгоритмы без рекурсии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 17:14 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Извиняюсь - не хотел создавать новой темы и задал вопрос о бинарной сериализации в разделе о джава, хотя мне действительно надо написать програмку на шарпе. Вопрос в том как потом получить байтовый масив начального файла, если не использовать пару ключ (относительный путь файла среди папок и подпапок)-значение (бинарирный масив). Я например использовал два листа, но это более чревато ошибками несоответствия. Касательно дерева - то сделать один tree class object этой папки невозможно без рекурсии - вчера это даже прочитал в сети. Как тогда делать проход по подпампам нижнего уровня, и т.д. Увеличивать стек возможно разве на ПК разработчика, но не все же пользователей, но если папка 100-200 мб то и это не подойдет в тестовых целях. Вы правы - на стеке размещаются - ссылки на обьекты и обекты примитивных типов, и даже так - при использование расчета чисел фибоначчи на уровне N=100, это не оправдано через большие затраты времени - не то что здесь, хотя проверить то можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 19:30 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
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 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 19:47 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Я на особо больших папках сериализацию не тестировал - но все заработало на папке до 100 мб - для архивации и розархивации. Но все таки интерфейс при рекурсии блокируется в отличие от использование последовательной сериалиализации файлов с помощью встроеного итератора файлов класа Directory. Хотя пол дня пошло на разгадку ошибки что я в функции рекурсии не указал что вложенная функция рекурсии должна вызыватся на дочернем обьекте, а не как бы снова от обьекта в котором была запакована в виде дерева файловая система конкретной директории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2018, 21:43 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Но мне сейчас более важно - возможно ли переделать мою десктоп програмку в веб-приложение типа asp.net. Но такую програму наверное можно использовать лиш в виде сервиса - какой смысл отправлять файлы и папки на сервер для сериализации и получить обратно "архив"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2018, 21:53 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
arrtНо мне сейчас более важно - возможно ли переделать мою десктоп програмку в веб-приложение типа asp.net. Но такую програму наверное можно использовать лиш в виде сервиса - какой смысл отправлять файлы и папки на сервер для сериализации и получить обратно "архив"? посмотри в сторону JWS - java web start ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2018, 22:30 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
Последний вопрос был возможно ли здесь использовать веб-приложение или надо десктоп для такой простой програмы? Не создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2018, 00:04 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
arrtНе создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темыА почему, собственно, "не создавать же"? Ну вот хоть один разумный аргумент? Особенно с учётом "лиш косвенно"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2018, 05:45 |
|
||
|
Когда и где использовать сериализацию
|
|||
|---|---|---|---|
|
#18+
arrtПоследний вопрос был возможно ли здесь использовать веб-приложение или надо десктоп для такой простой програмы? Не создавать ли мне же новую тему пусть и мой начальный вопрос лиш тоже косвенно касался темы у вас всё косвенно мимо темы и Java. Вам в ветку - Разработка ИС. arrtНе создавать ли мне же новую тему по правилам форума надо создать, но вам лень? Так что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2018, 10:54 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=49&tid=2122175]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 154ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...