Skip to content

CoolTeam74/masterjava

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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

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

  • веб приложение (Tomcat, Thymleaf, jQuery)
  • модуль экспорта из XML (JAXB, StAX)
  • многопоточный почтовый сервис (JavaMail, java.util.concurrent.*)
  • связь модулей через веб-сервисы (SOAP, JAX-WS) и по REST (JAX-RS)
  • сохранение данных в RMDBS (postgresql)
  • библиотеки Guava, StreamEx, Lombook, Typesafe config, jDBI

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

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

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

Выбирать Ultimate, 30 days trial (работа с JavaScript, Tomcat, JSP). Персональный ключ к Ultimate (на 6 месяцев) выдается на первом занятии.

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

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 (от Алексея Шипилева)
  • Обзор Guava
  • Формат XML. Создание схемы XSD.
  • Работа с XML в Java
    • JAXB, JAXP
    • StAX
    • XPath
    • XSLT

Занятие 3

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

Занятие 4

  • Разбор ДЗ (реализация структуры проекта, загрузка и разбор xml)
  • Thymleaf
  • Maven. Поиск и разрешение конфликтов зависимостей
  • Логирование
  • Выбор lightweight JDBC helper library. JDBI
  • Tomcat Class Loader. Memory Leaks

Занятие 5

  • Разбор ДЗ (реализуем модули persist, export и web)
  • Конфигурирование приложения (Typesafe config)
  • Lombook

Занятие 6

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

Занятие 7

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

Занятие 8

  • Разбор ДЗ (отправка почты через Executor из модуля web)
  • Доступ к переменным maven в приложении
  • SOAP Exception. Выделение общей части схемы
  • Передача двоичных данных в веб-сервисах. MTOM

Занятие 9

  • Разбор ДЗ (реализация загрузки и отправки вложений по почте)
  • JAX-WS Message Context
  • JAX-WS Handlers (логирование SOAP)

Занятие 10

  • Разбор ДЗ (реализация авторизации и статистики)
  • JavaEE
    • CDI
    • JAX-RS. Интеграция с Jersey
    • EJB
    • JMS

Занятие 11 (предварительно)

  • Асинхронные сервлеты 3.x в Tomcat
  • Maven Groovy cкрптинг (groovy-maven-plugin)
  • AKKA
  • Redis

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%