Skip to content

StasNeg/masterjava

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Многомодульный maven. Многопоточность. XML. Веб сервисы. Удаленное взаимодействие

Разработка полнофункционального многомодульного Maven проекта

состоящего из 3-х веб приложений:

image

  • приложение импорта из XML (JAXB, StAX, XPath, XSLT)
  • многопоточного почтового веб-сервиса (JavaMail, java.util.concurrent, JAX-WS, MTOM, хендлеры авторизации, логирования и статистики)
  • веб приложения отправки почты с вложениями
    • по SOAP (JAX-WS, MTOM)
    • по JAX-RS (Jersey)
    • по JMS (ActiveMQ)
    • через AKKA
    • через Redis
  • сохранение данных в PostgreSQL используя jDBI
  • миграция базы LiquiBase
  • использование в проекте Guava, Thymleaf, Lombook, StreamEx, Typesafe Config, Java Microbenchmark JMH

Требование к участникам

Опыт программирования на Java. Базовые знания Maven.

Необходимое ПО

Первое занятие: многопоточность.

Concurrent vs Parallel

В видео в LazySingleton ошибка: должно быть как в коде проекта instance == null

Структура памяти: куча, стек, permanent/metaspace

Ленивая инициализация

Tproger: Многопоточное программирование в Java 8

правка к видео: 22: completionService.submit(..)

Все изменения в проекте будут делаться на основе патчей

Скачайте 1_1_MailService.patch, положите его в проект, правой мышкой на нем сделайте Apply Patch ...


Ресурсы (основы)


hw Задание первого занятия

Вычекать этот проект: git clone https://github.com/JavaOPs/masterjava.git

  • Применить оптимизацию к MatrixUtil.singleThreadMultiply
  • Реализовать метод MatrixUtil.concurrentMultiply, позволяющий многопоточно перемножать квадратные матрицы N*N.
  • Количество дочерних потоков ограничено MainMatrix.THREAD_NUMBER.
  • Добиться того, чтобы на матрице 1000*1000 многопоточная реализация была быстрее однопоточной

error Подсказки по HW1

  • не делайте 1000 000 тасок, лучше их сделать крупнее
  • у меня разница между 4 и 1000 тасками по времени незаметна, поэтому делайте просто и не делайте сложно
  • наконец: можно не считать значение элемента результирующей матрицы C за раз, а накапливать (concurrentMultiply3). Мои результаты:
Benchmark                             (matrixSize)  Mode  Cnt    Score    Error  Units
MatrixBenchmark.singleThreadMultiplyOpt       1000    ss  100  837,867 ± 25,530  ms/op
MatrixBenchmark.concurrentMultiply2           1000    ss  100  394,294 ± 21,657  ms/op
MatrixBenchmark.concurrentMultiply3           1000    ss  100  186,827 ± 11,882  ms/op

Программа проекта

Занятие 2

  • Разбор ДЗ (многопоточная реализация умножения матриц)
  • Java Microbenchmark JMH (от Алексея Шипилева)
  • Формат XML. Создание схемы XSD.
  • Работа с XML в Java
    • JAXB, JAXP
    • StAX
    • XPath
    • XSLT

Занятие 3

  • Разбор ДЗ (работа с XML)
  • Обзор Guava
  • Монады. flatMap
  • SOA и Микросервисы
  • Многомодульный Maven проект

Занятие 4

  • Разбор ДЗ (реализация структуры проекта, загрузка и разбор xml)
  • Thymleaf
  • Maven. Поиск и разрешение конфликтов зависимостей
  • Подключаем логирование с общими настройкам
  • Библиотеки и фреймворки для работы с JDBC.
  • Модуль persist

Занятие 5

  • Разбор ДЗ
    • Сохранение в базу в batch-моде с обработкой конфликтов
    • Вставка в несколько потоков
  • Конфигурирование приложения (Typesafe config)
  • Lombook

Занятие 6

  • Разбор ДЗ (доработка модели и модуля export)
  • Миграция DB
  • Веб-сервисы (REST/SOAP)
    • Java реализации SOAP
    • Имплементируем Mail Service

Занятие 7

  • Разбор ДЗ
    • реализация MailSender
    • сохранение результатов отправки в DB
    • импорт Проектов и Групп
  • Стили WSDL. Кастомизация WSDL
  • Публикация кастомизированного WSDL. Автогенерация.
  • Деплой в Tomcat
  • Создание клиента почтового сервиса
  • Реализация массовой и групповой отправки почты. HW7

Занятие 8

  • Разбор ДЗ
    • Делаем общий mailService.wsdl
    • Обновление WSDL
    • Отправка почты из модуля webapp
  • Доступ к переменным maven в приложении
  • SOAP Exception. Выделение общей части схемы
  • Коррекция схемы

Занятие 9

  • Добавление мавен плагинов (copy-rename-maven-plugin, maven-antrun-plugin, liquibase-maven-plugin)
  • Разбор ДЗ
    • Реализация вложений в веб-сервисе
    • Подключение MTOM
    • Реализация загрузки вложений в модуле webapp
    • Реализация вложений в почте
  • JAX-WS Message Context. Авторизация
  • JAX-WS Handlers (логирование SOAP)
  • Домашнее задание. Статистика

Занятие 10

  • Разбор ДЗ
    • Реализация SOAP handlers
    • Конфигурирование сервисов
  • JavaEE
  • JAX-RS. Интеграция с Jersey
  • JMS. Интеграция с ActiveMQ

Занятие 11

  • Авторизация в контейнере Tomcat
  • Отправка почты с вложениями
    • по JAX-RS
    • по JMS
  • Рефакторинг. Эксепшены в лямбдах Java 8
  • Concurrent and distributed applications toolkit AKKA
  • Отсылка почты через AKKA Actors (Typed и Untyped Actors)
  • Асинхронные сервлеты 3.0
  • Домашнее задание
    • Разбор решения с асинхронными сервлетами
  • Выбор языка программирования

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 95.4%
  • HTML 3.1%
  • XSLT 1.3%
  • Batchfile 0.2%