Предоставляет метод без параметров для доступа к форме потока байтов в виде строки Base64.
Предоставляет метод без возвращаемого значения, совпадающего с типом инициализируемого объекта, который десериализуется из потока байтов.
Метод, упомянутый в C2-06, не может напрямую возвращать объект, переданный в C2-01.
Сериализованный объект должен быть неизменным объектом. Не предоставляйте никаких методов set*, add* и других, которые изменяют состояние объекта. Метод, определённый в C2-02, должен выполнять защитное копирование внутреннего массива байтов.
2.3. Объекты эталонного тестирования
2.3.1. Пространственные объекты эталонного тестирования
Тестирование пространственных эталонов проще. Необходимо только случайным образом протестировать образцы и вывести использование пространства каждой системы сериализации по очереди.
2.3.2. Скоростные объекты эталонного тестирования
Для справедливого сравнения всех систем сериализации определены следующие ограничения для скоростных объектов эталонного тестирования:
— C3-01 Предоставить метод, принимающий один аргумент типа Object (объект для сериализации) и один аргумент int (количество циклов).
— C3-02 Запустить таймер до и после выполнения метода, определённого в C3-01, чтобы рассчитать общее затраченное время и среднее время каждой сериализации.
— C3-03 Порядок выполнения скоростных эталонных тестов можно свободно изменять во время выполнения.
3. Реализация тестовой программы
3.1. SerializedObject
SerializedObject — это базовый класс для всех объектов сериализации, соответствующий требованиям [2.2]. Подтипы SerializedObject сообщают своему суперклассу, как сериализовать упакованный объект и как десериализовать поток байтов обратно в объект. Подтипы могут реализовать метод beforeSerilize() для инициализации необходимых инструментов во время процесса сериализации. SerializationException повторно генерируется при перехвате любого проверенного исключения, возникающего во время сериализации в SerializedObject. SerializedObject предоставляет фабричный метод для создания своих подтипов, конструкторы которых являются закрытыми для пакета.
3.1.1. Hessian2
Hessian2SerializedObject требует дополнительной настройки для указания пользовательских стратегий сериализации и десериализации. Соответствующая конфигурация находится в каталоге META-INF.
3.2. Интерфейс Benchmark
Интерфейс скорости эталонного тестирования.
Benchmark определяет метод выполнения для однократного эталонного тестирования в соответствии с [2.3.2]. Выполнение Benchmark перехватывается ProfilingAspect для расчёта затраченного времени. Общее затраченное время ProfilingAspect измеряется в миллисекундах, а среднее затраченное время одного вызова — в микросекундах.
3.3. SpeedBenchmarks
Комбинация реализаций всех известных интерфейсов Benchmark. Каждый интерфейс Benchmark выполняется отдельно 1000, 5000, 20 000, 50 000 и 200 000 раз. Определяет пул потоков для выполнения эталонного тестирования Benchmark и управляет его жизненным циклом.
3.4. Автоматически сгенерированный код
Сообщения Protocol Buffers должны быть предварительно скомпилированы статически. 3.5. Тестирование моделей
TestingModels — это генератор тестовых данных, который может создавать случайные образцы объектов и перечислений для тестирования. Типы тестовых образцов генерируются компилятором Lombok. Исходный файл можно найти в каталоге message/testing-models/src/main/lombok
, независимо от того, был ли он скомпилирован или нет.
3.6. Пакет io.demo.message.domain.proto
В пакете io.demo.message.domain.proto
есть два типа классов:
message/testing-models/target/generated-sources/protobuf/java
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )