Онлайн проекта Masterjava.
- Не стоит стремится прочитать все ссылки урока, их можно впоследствии использовать как справочник. Гораздо важнее сделать Домашнее Задание
- Обязательно посмотри правила работы с патчами на проекте (совпадают с проектом Topjava)
- Делать Apply Patch лучше по одному, непосредственно перед видео на эту тему, а при просмотре видео сразу отслеживать все изменения кода проекта по изменению в патче
- Код проекта обновляется и не всегда совпадает с видео (можно увидеть как развивался проект). Изменения в проекте указываю после соответствующего патча.
- 42 IntelliJ IDEA Tips and Tricks
В коде проекта используется JDK 8. Если у вас выше, необходимо будет включить в проект дополнительные зависимости, исключенные в JDK 9
Материалы занятия (скачать все патчи можно через Download папки patch)
Callable / executor.invokeAllвconcurrentMultiply2поменял наRunnable / CountDownLatch
- Fork/Join Framework в Java 7
- Java Parallel Streams Are Bad for Your Health
- Custom thread pool in Java 8 parallel stream
Сделал forks=10 для большой точности измерений и убрал лишние измерения
- JMH - Java Microbenchmark Harness, Java Performance Tuning Guide (если не работает, попробуйте перейти на Introduction to JMH отсюда)
- idea-jmh-plugin, Exception while trying to acquire a JMH lock
- Maven latest dependency version
- История создания. XML формат и технологии, XML
- Attribute vs Element.
- sequence/ choice/ all/ group. Define referring to Another XML Element
- Лекции по XML
4. JAXB, JAXP
- Добавил в
maven-surefire-pluginUTF-8- Убрал лишний
synchronizedвJaxbParser.marshal()(уже есть вJaxbMarshaller.marshal())- Сделал загрузку ресурсов используя context class loader
- Работа с XML в Java.
- DOM, SAX
- JAXP: вспомогательный слой над SAX и DOM API
- JAXB, JAXP, Xerces, Xalan
- Валидации XML
5. StAX
- Java XML API: выбираем правильно. StAX: работаем с удовольствием
- StAX: XMLStreamReader, XMLEventReader
6. XPath
Поправка к видео на 2:29 - лет 10-15 назад был популярен подход рисовать квадратиками в специальном приложении логику связываения через сообщения разных сервисов. Сервисы подключались к ESB по разным протоколам. Один из них был JBI. Все это было достаточно красиво для продаж, но очень неуклюже для разработки. Cейчас уже редко где можно встретить, хотя Spring Integration, Apache Camel и пр. для определенных приложений-процессов используют.
- XPath: Java XPath API
- Примеры XPath
В IDEA в контекстном меню на элемент XML есть пункт (2-й снизу) Evaluate XPath...
На имена города он выдает /Payload/Cities/City/text()
Чтобы это выражение работало в нашем XPathProcessorTest нужно отключить NamespaceAware:
public class XPathProcessor
...
25 DOCUMENT_FACTORY.setNamespaceAware(false);
7. XSLT
- Преобразование XSLT, Default XSLT output
- XSLT, XSL
- Дополнительно
- 1: Изменить XML схему:
- 1.1 добавить проекты. Имеют название (например
topjava, masterjava) и описание - 1.2 добавить группы. Они имеют название и тип (
REGISTERING/CURRENT/FINISHED) и принадлежат проекту. Например проектtopjava, группыtopjava01,topjava02, .. - 1.3 сделать
User.emailаттрибутом. - 1.4 реализовать принадлежность участников разным группам (
Adminсостоит в группахtopjava07, topjava08, masterjava01)
- 1.1 добавить проекты. Имеют название (например
- 2: Дополнить xml тестовыми данными.
- 3: Реализовать класс
MainXml, которые принимает параметром имя проекта в тестовом xml и выводит отсортированный список его участников (использовать JAXB).
- 4: Сделать реализацию
MainXmlчерез StAX (выводить имя/email) - 5: Из списка участников сделать html таблицу (имя/email). Реализация- любая.
- 6: Вывести через XSLT преобразование html таблицу с группами заданного проекта
- 1: Не используйте IDREF, где можно сделать обычную вложенность, принятую в структурах XML
- 2: Попробуйте сделать минимальное количестово XML текста на одного юзера (пользователей много, экономим)
- 3: Используйте StaxStreamProcessor! Добавляйте туда и используйте утильные методы.
- 4: Постарайтесь оптимизировать реализацию определения "находится ли пользователь в проекте". Не делать сложность (N пользователей * M групп)!

