Главная страница
Навигация по странице:

  • Назовите несколько форматов сериализации.

  • BSON (binary JSON)

  • Position based protocol

  • Ревью 5. Что такое потоки вводавывода Как это реализовано в Java 3 Классынадстройки потоков вводавывода 4


    Скачать 110.73 Kb.
    НазваниеЧто такое потоки вводавывода Как это реализовано в Java 3 Классынадстройки потоков вводавывода 4
    АнкорРевью 5
    Дата24.12.2022
    Размер110.73 Kb.
    Формат файлаdocx
    Имя файлаРевью 5.docx
    ТипДокументы
    #861326
    страница8 из 13
    1   ...   5   6   7   8   9   10   11   12   13

    Что такое сериализация и десериализация?


    Сериализация (Serialization) - процесс преобразования структуры данных в линейную последовательность байтов для дальнейшей передачи или сохранения. Сериализованные объекты можно затем восстановить (десериализовать).

    В Java, согласно спецификации Java Object Serialization существует два стандартных способа сериализации: стандартная сериализация, через использование интерфейса java.io.Serializable и «расширенная» сериализация - java.io.Externalizable.

    Сериализация позволяет в определенных пределах изменять класс. Вот наиболее важные изменения, с которыми спецификация Java Object Serialization может справляться автоматически:

    добавление в класс новых полей;

    изменение полей из статических в нестатические;

    изменение полей из транзитных в нетранзитные.

    Обратные изменения (из нестатических полей в статические и из нетранзитных в транзитные) или удаление полей требуют определенной дополнительной обработки в зависимости от того, какая степень обратной совместимости необходима.

    Десериализация — это процесс восстановления объекта из этих байт.

    Назовите несколько форматов сериализации.


    JSON (JavaScript Object Notation)

    Поскольку JSON — объект JavaScript, он поддерживает следующие форматы данных JavaScript:

    строки (string);

    числа (number);

    объекты (object);

    массивы (array);

    boolean-значения (true и false);

    null.

    Какие же преимущества есть у JSON?

    Human-readable («человеко-читаемый») формат. Это очевидное преимущество, если твой конечный пользователь — человек. К примеру, на твоем сервере хранится база данных с расписанием авиаперелетов. Клиент-человек запрашивает данные из этой базы с помощью веб-приложения, сидя дома за компьютером. Поскольку тебе нужно предоставить данные в формате, который он сможет понять, JSON будет отличным решением.

    Простота. Можно сказать — элементарность :) Выше мы привели пример двух JSON-файлов. И даже если ты вообще не слышал о существовании JavaScript (и уж тем более о его объектах), ты легко поймешь, что за объекты там описаны.

    Вся документация JSON — это одна веб-страница с парой картинок.

    Широкая распространенность. JavaScript — доминирующий язык фронтенда, и он диктует свои условия. Использование JSON — необходимость. Поэтому огромное число веб-сервисов используют JSON в качестве формата для обмена данными. Каждая современная IDE поддерживает JSON-формат (в том числе Intellij IDEA). Для работы с JSON написана куча библиотек для всех возможных языков программирования.

    YAML

    В начале своего существования расшифровывался как Yet Another Markup Language — «еще один язык разметки». В то время его позиционировали как конкурента XML.

    Сейчас же, по прошествии времени, он расшифровывается как «YAML Ain’t Markup Language» («YAML — не язык разметки»).

    YAML-файл имеет древовидную структуру: одни элементы вложены в другие. Вложенностью мы можем управлять при помощи некоторого количества пробелов, которым обозначаем каждый уровень.

    Какими же преимуществами обладает YAML-формат?

    Human-readable. Опять же, даже увидев yaml-файл без описания, ты легко поймешь, какие объекты там описаны. YAML насколько хорошо читается человеком, что главная страница yaml.org — это обычный yaml-файл :)

    Компактность. Структура файла формируется за счет пробелов: нет необходимости использовать скобки или кавычки.

    Поддержка структур данных, «родных» для языков программирования. Огромное преимущество YAML перед JSON и многими другими форматами заключается в том, что он поддерживает разные структуры данных. В их числе:

    !!map

    Неупорядоченный набор пар ключ:значение без возможности дубликатов;

    !!omap

    Упорядоченная последовательность пар ключ:значение без возможности дубликатов;

    !!pairs:

    Упорядоченная последовательность пар ключ:значение с возможностью дубликатов;

    !!set

    Неупорядоченная последовательность значений, которые не равны друг другу;

    !!seq

    Последовательность произвольных значений;

    Некоторые из этих структур знакомы тебе по Java! :) За счет этой фичи в формат YAML можно сериализовать разные структуры данных из языков программирования.

    Возможность использования anchor и alias

    Перевод слов «anchor» и «alias» — «якорь» и «псевдоним». В принципе, он довольно точно описывает суть этих терминов в YAML.

    Они позволяют тебе идентифицировать какой-то элемент в yaml-файле, и ссылаться на него в остальных частях этого файла, если он встречается повторно. Anchor создается с помощью символа &, а alias — с помощью.

    Допустим, у нас есть файл с описанием книг Льва Толстого. Чтобы не писать имя автора каждый раз вручную, мы просто создадим якорь «leo» и будем ссылаться на него с помощью алиаса, когда нам это будет нужно:

    В YAML можно встроить данные в других форматах. Например, JSON

    XML

    Этот формат основан на так называемом дереве тегов.

    Каждый элемент состоит из открывающего и закрывающего тега (<> и ). У каждого элемента могут быть вложенные элементы.

    XML — распространенный формат, не уступающий JSON и YAML (если говорить об использовании в реальных проектах). Об XML у нас есть отдельная лекция.

    BSON (binary JSON)

    Как и следует из его названия, очень похож на JSON, но не является human-readable и оперирует данными в двоичном формате.

    За счет этого он очень удобен при хранении и передаче изображений и других вложений. Кроме того, BSON поддерживает некоторые типы данных, недоступные в JSON. Например, в BSON-файл можно записать дату (в формате миллисекунд) или даже кусок JavaScript кода.

    Популярная NoSQL база данных MongoDB хранит информацию именно в BSON формате.

    Position based protocol

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

    В этой ситуации мы можем использовать position based protocol, то есть передавать значения параметров без названий самих параметров.
    1   ...   5   6   7   8   9   10   11   12   13


    написать администратору сайта