- приложение импорта из XML (JAXB, StAX, XPath, XSLT)
- многопоточного почтового веб-сервиса (JavaMail, java.util.concurrent, JAX-WS, MTOM, хендлеры авторизации, логирования и статистики)
- веб приложения отправки почты с вложениями
- сохранение данных в PostgreSQL используя jDBI
- миграция базы LiquiBase
- использование в проекте Guava, Thymleaf, Lombok, StreamEx, Typesafe Config, Java Microbenchmark JMH
Опыт программирования на Java. Базовые знания Maven.
В видео в
LazySingleton
ошибка: должно быть как в коде проектаinstance == null
- JVM изнутри - оптимизация и профилирование.
- Stack and Heap
- Дополнительно:
- Оптимизация памяти
- Реализация Singleton в JAVA
- Double checked locking
- Initialization-on-demand holder idiom
- Подводные камни Singleton
- Параллелизм в Java
- Монитор (синхронизация)
- Compare-and-swap
- Java Memory Model
- Синхронизация потоков
- Обзор java.util.concurrent.*
- Как работает ConcurrentHashMap
- Справочник по синхронизаторам java.util.concurrent.*
- Использование ThreadLocal переменных
- Николай Алименков — Прикладная многопоточность
- Can thread switching happen in the synchronized block?
- 1. Параллельное выполнение кода с помощью потоков
- 2. Синхронизация доступа к изменяемым объектам
- 3. Атомарные переменные и конкурентные таблицы
правка к видео:
22: completionService.submit(..)
Скачайте 1_1_MailService.patch, положите его в проект, правой мышкой на нем сделайте Apply Patch ...
- Intuit, Потоки выполнения. Синхронизация
- Алексей Владыкин, Основы многопоточность в Java
- Виталий Чибриков, Java. Многопоточность
- Computer Science Center, курс Параллельное программирование
- Юрий Ткач, курс Advanced Java - Concurrency
- Головач, курс Java Multithreading
- Перевод «Java Memory Model»
Вычекать этот проект:
git clone https://github.com/JavaOPs/masterjava.git
- Применить оптимизацию к MatrixUtil.singleThreadMultiply
- Реализовать метод
MatrixUtil.concurrentMultiply
, позволяющий многопоточно перемножать квадратные матрицы N*N. - Количество дочерних потоков ограничено
MainMatrix.THREAD_NUMBER
. - Добиться того, чтобы на матрице 1000*1000 многопоточная реализация была быстрее однопоточной
- 1: не делайте 1000 000 тасок, лучше их сделать крупнее
- 2: у меня разница между 4 и 1000 тасками по времени незаметна, поэтому делайте просто и не делайте сложно
- 3: наконец: можно не считать значение элемента результирующей матрицы C за раз, а накапливать (
concurrentMultiply3
). Тогда трансформация B не нужна. Мои результаты:
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
- Разбор ДЗ (многопоточная реализация умножения матриц)
- Java Microbenchmark JMH (от Алексея Шипилева)
- Формат XML. Создание схемы XSD.
- Работа с XML в Java
- JAXB, JAXP
- StAX
- XPath
- XSLT
- Разбор ДЗ (работа с XML)
- Обзор Guava
- Монады. flatMap
- SOA и Микросервисы
- Многомодульный Maven проект
- Разбор ДЗ (реализация структуры проекта, загрузка и разбор xml)
- Thymleaf
- Maven. Поиск и разрешение конфликтов зависимостей
- Подключаем логирование с общими настройкам
- Библиотеки и фреймворки для работы с JDBC.
- Модуль persistence
- Разбор ДЗ
- Сохранение в базу в batch-моде с обработкой конфликтов
- Вставка в несколько потоков
- Конфигурирование приложения (Typesafe config)
- Lombok
- Разбор ДЗ (доработка модели и модуля export)
- Миграция DB
- Веб-сервисы (REST/SOAP)
- Java реализации SOAP
- Имплементируем Mail Service
- Разбор ДЗ
- реализация MailSender
- сохранение результатов отправки в DB
- импорт Проектов и Групп
- Стили WSDL. Кастомизация WSDL
- Публикация кастомизированного WSDL. Автогенерация.
- Деплой в Tomcat
- Создание клиента почтового сервиса
- Реализация массовой и групповой отправки почты. HW7
- Разбор ДЗ
- Делаем общий mailService.wsdl
- Обновление WSDL
- Отправка почты из модуля webapp
- Доступ к переменным maven в приложении
- SOAP Exception. Выделение общей части схемы
- Коррекция схемы
- Добавление мавен плагинов (copy-rename-maven-plugin, maven-antrun-plugin, liquibase-maven-plugin)
- Разбор ДЗ
- Реализация вложений в веб-сервисе
- Подключение MTOM
- Реализация загрузки вложений в модуле webapp
- Реализация вложений в почте
- JAX-WS Message Context. Авторизация
- JAX-WS Handlers (логирование SOAP)
- Домашнее задание. Статистика
- Разбор ДЗ
- Реализация SOAP handlers
- Конфигурирование сервисов
- JavaEE
- JAX-RS. Интеграция с Jersey
- JMS. Интеграция с ActiveMQ
- Авторизация в контейнере Tomcat
- Отправка почты с вложениями
- по JAX-RS
- по JMS
- Рефакторинг. Эксепшены в лямбдах Java 8
- Concurrent and distributed applications toolkit AKKA
- Отсылка почты через AKKA Actors (Typed и Untyped Actors)
- Асинхронные сервлеты 3.0
- Домашнее задание
- Разбор решения с асинхронными сервлетами
- Выбор языка программирования