Giter Club home page Giter Club logo

masterjava's Introduction

Многомодульный 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
    • используя асинхронные сервлеты 3.0
  • сохранение данных в PostgreSQL используя jDBI
  • миграция базы LiquiBase
  • использование в проекте Guava, Thymleaf, Lombok, StreamEx, Typesafe Config, Java Microbenchmark JMH

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

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

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

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

Concurrent vs Parallel

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

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

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

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

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

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

Все изменения в проекте будут делаться на основе патчей: скачайте 1_1_MailService.patch, положите его в проект, правой мышкой на нем сделайте Apply Patch ...


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


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

  • Применить оптимизацию к 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.
  • Модуль persistence

Занятие 5

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

Занятие 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
  • Домашнее задание
    • Разбор решения с асинхронными сервлетами
  • Выбор языка программирования

masterjava's People

Contributors

javaops avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

masterjava's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.