Создайте историю состояний в Java

1112 Конечно, может быть. В большинстве случаев REST представляет собой JSON по HTTP , поэтому JMeter, естественно, поддерживает отправку запросов REST через сэмплер HTTP Request .

Вам также может понадобиться добавить HTTP Header Manager , чтобы отправить Content-Type Заголовок со значением application/json [1113 ]

Дополнительная информация:

5
задан 3 February 2009 в 07:08
поделиться

7 ответов

Вы попытались изучить Шаблон разработки Сувенира? Это кажется особенно четко определенным для Вашей проблемы. Из Википедии:

Шаблон "memento" является шаблоном программного дизайна, который обеспечивает способность восстановить объект к его предыдущему состоянию (отмена через откат).

Та же страница также имеет раздел с реализацией Java, так как Вы упомянули, что это находится в Java.

13
ответ дан 18 December 2019 в 09:54
поделиться

Если то, что Вы хотите, является на самом деле картой, можно хотеть изучить персистентные структуры данных; например, персистентные деревья B.

0
ответ дан 18 December 2019 в 09:54
поделиться

Мы делаем что-то подобное этому с сериализацией.

Мы храним заархивированные данные к файловой системе в сериализированной форме. Часть графа объектов, который мы должны восстановить, сериализируется, а также основной объект.

Удостоверьтесь, что Вы присваиваете версию своим объектам и удостоверяетесь, что Ваш differencing может справиться с недостающими/новыми полями.

Мы приняли решение сохранить к файловой системе, потому что она дает нам (эффективно) неограниченную способность. Скорость не является проблемой для нас, но метод файловой системы удивительно быстр, большинство людей не замечает дополнительный 50-100ms!

0
ответ дан 18 December 2019 в 09:54
поделиться

Рассмотрите изменение перспективы. Вместо того, чтобы видоизменить объекты, которые составляют состояние экрана, используйте неизменное состояние. Это могло бы походить на противоречие в терминах, но это не.

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

public List<String> changeTheScreen(List<String> states) {
  return states.cons(states.head() + "x");
}

public void renderTheScreen(String currentState) {
  // TODO: draw the screen given the current state
}

В вышеупомянутом примере, List fj.data.List, неизменный тип отдельно-связанного-списка в оперативной памяти из библиотеки Functional Java (стандартные библиотеки не имеют неизменного списка). Метод взял бы историю состояний с текущим состоянием впереди списка. Это управляет состоянием экрана путем создания нового состояния и помещения его впереди нового списка состояний.

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

Неизменный объект будет инициализирован в его конструкторе, и все его внутренние поля будут final.

Функциональный Java имеет неизменную карту под названием TreeMap. Вы использовали бы его следующим образом:

public List<TreeMap<String, Object>>
changeState(List<TreeMap<String, Object>> states) {
  return states.cons(states.head().set("Key1", new Object1("x")));
}
2
ответ дан 18 December 2019 в 09:54
поделиться

Вы могли бы хотеть проверить Prevayler

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

Вы могли всегда использовать сериализацию;

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
byteArrayOutputStream.close();
ByteArrayInputStream istream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
ObjectInputStream objectInputStream= new ObjectInputStream(istream);
Object deserialized = objectInputStream.readObject();
istream.close();

Медленный и неуклюжий, но работы.

0
ответ дан 18 December 2019 в 09:54
поделиться

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

0
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

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