Скачать [Otus] Буткемп Java 2022 [Олег Агафонов]

  • Гость, подпишитесь сейчас

    📥 Наш адрес сайта меняется, чтобы быть в курсе актуального адреса, подпишитесь на телеграм канал «Перейти»

Описание складчины

Практические лабораторные работы делают [Otus] Буткемп Java 2022 [Олег Агафонов] полезным как для начинающих, так и для опытных системных администраторов. Складчина позволит приобрести курс без лишних затрат.

Информация
Цена: 295 РУБ
Организатор: Kail Kail
Скачать
Kail
Kail
Организатор
Организатор
Регистрация
09.04.2020
Сообщения
462 868
Реакции
45 705
Монеты
1 191
Оплачено
0
Баллы
0
  • #SkladchinaVip
  • #1
[Otus] Буткемп Java 2022 [Олег Агафонов]
Ссылка на картинку
Что даст вам этот курс:
Буткемп Java поможет вам полностью погрузиться в программирование и получить навыки Java-разработчика за короткий срок.
Программа нацелена на формирование целостного понимания профессиональной разработки на языке Java. Вы освоите основы программирования на Java и заложите фундамент из навыков, необходимых для работы в команде разработчиков.
Формат буткемпа поможет в течение 2-х месяцев пройти программу специализации и сформировать навыки уверенного разработчика.
Список основных информационных ресурсов и сценарии работы с ними:
Hard skills: Java Core, алгоритмы и структуры данных, основы Spring Framework (MVC, Data, Security, Cloud), Docker + K8S, CI\CD, Git, TDD, DDD, Clean Code, Шаблоны проектирования, SOLID, Code Review. Soft Skills: Agile + Scrum, командная работа.
Реальные примеры (личные и наиболее заметных личностей комьюнити) построения успешной ИТ карьеры (success stories).

На кого ориентирован курс?
Курс рассчитан на новичков, кто хочет обучиться программированию с нуля и дойти до минимальной позиции, когда можно трудоустроиться разработчиком.

Что сможет делать выпускник после окончания курса?
Трудоустроиться на junior позицию.
У выпускника будет сформирован образ его профессионального будущего (кем и где он себя видит через 3 года) с маршрутом движения к этому образу (в том числе и использованием образовательных возможностей OTUS). Он сможет успешно пройти собеседование на позицию junior разработчика. Он сможет успешно работать в команде и течение 1 года перейти на позицию middle разработчика. Он станет частью ИТ-комьюнити и сможет вносить посильный вклад в его развитие (open source проекты и базы знаний).
Длительность курса - 3 месяца (338 академических часов).
Ориентировочный старт ~ Февраль 2022

Спойлер: Программа обучения
1 Введение в экосистему Java. Знакомство с инфраструктурой курса. Настройка окружения.
1 Вводное занятие
2 Обзор экосистемы Java.Технологический стек. Виды приложений. Roadmap разработчика. Работодатели.
Цели занятия: понять текущее состояние рынка IT, ниша Java.
Краткое содержание: что такое IT; направления в IT (администрирование, разработка, менеджмент, автоматизация процессов, дизайн
3 Командная строка linux. Базовые понятия, основы работы в командной строке
Цели занятия: познакомиться с Linux; объяснить, почему Java-разработчику важно уметь пользоваться Linux Краткое содержание: чем Linux отличается от Windows и MacOs; зачем программисту Linux;
4 Часы практики с ментором 1
Цели занятия: познакомиться с экосистемой Java.
Краткое содержание: Подробно познакомиться с ресурсами Java Community, настроить рассыkки и подписки, в соотвеnствии со своими интересами. Ознакомиться с основными проектами Java Community и выбрать для себя те, в которых было бы интересно принять участи.
5 Часы практики с ментором 2
Цели занятия: научиться управлять сервисами в linux
Краткое содержание: Зарегистрировать заранее подготовленный сервис. Изменить его версию с использованием символических ссылок. Выполнить анализ журнала его работы. Домашние задания 1ДЗ 1
6 Установка Java в Linux, MacOS, Windows. WSL. Установка и настройка IDE IntelliJ Idea, VS Code. Основы работы в IDE.
Цели занятия: понять чем отличается IDE от языка программирования, какие есть популярные IDE для Java Краткое содержание: Установка Java; текстовый редактор как инструмент написания программы, почему программы типа MS Word не подходят; что такое компилятор и для чего он нужен; компиляция программы; что такое IDE и чем полезна; какие есть полулярные IDE для Java: Eclipse, NetBeans, JDeveloper, Idea, Visual Studio Code; демонстрация Idea как самой популярной IDE; почему Visual Studio Code хороша для начинающих.
7 Введение в версионирование кода через GIT
Цели занятия: познакомиться системами контроля версия и подходами управлением кодом при командной работе Краткое содержание: Version Control и его история, зачем вести историю кода; принципы работы Git, branch-и и commit-ы; основные команд; GitHub, создание аккаунта; Pull Request.
8 Часы практики с ментором 1
Цели занятия: настроить рабочее место для командной работы научиться устанавливать необходимое программное обеспечение, освоить компиляцию и запуск java-приложения.
Краткое содержание: Установить несколько версия JDK. Научиться менять версию по умолчанию. Установить javaсервис, для специфичной версии java. Загрузить проект в Idea (VS Code). Изучить его структуру. Научиться его запускать и тестировать Исправить проблемы с компиляцией и тестами. В парах воспользоваться функцие Idea code with me или Live Share в VS Code
9 Часы практики с ментором 2
Цели занятия: научиться совместно работать на общим текстом
Краткое содержание: Работа в парах: создать новый репозиторий для совместной работой на статье в markdown. Согласно плану написать свои части статьи и отправить PR на друг друга. Выполнить text review и слить изменения в основную ветку. Правка одного и того же текста и разрешение конфликтов. Использование тегов для фиксирования версий статьи. Домашние задания 1ДЗ 2
2 Java Core. Синтаксис языка.
1 Структура программы на Java. Примитивные типы.
Цели занятия: написать первую программу на Java.
Краткое содержание: текстовый файл для программы; функция main; javac и его основные параметры; как запустить скомпилированный класс; что такое тип данных; константы; enum; Code conventions и почему это важно. 2 Условные операторы. Операторы цикла. Массивы.
Цели занятия: познакомиться с массивами, циклами и условными операторами.
Краткое содержание: массивы в Java и зачем один нужны; условные операторы, switch-case;
3 Часы практики с ментором 1
Цели занятия: реализовать на Java задачи, которые решались на прошлом уроке. Проверить корректность их работы с помощью тестов. Выполнить отладку в IDE.
Краткое содержание: написать систему тестирования. На экран выводится вопрос и варианты ответа, с клавиатуры вводится номер ответа. Вопросы и ответы должны быть зашиты в коде, внешнего хранения в файлах или базах данных не нужно. Должно быть три вопроса, каждый с 3-5 вариантами ответов. Все вопросы с одним правильным вариантом ответа. После прохождения теста отображается результат.
4 Часы практики с ментором 2
Цели занятия: решение задач по созданию и обработки массивов (преобразование массивов, перестановки, вычисления). Задачи из линейной алгебры. Реализация стэка и очереди с помощью массивов. Решение задач по созданию и обработки массивов (преобразование массивов, перестановки, вычисления). Задачи из линейной алгебры. Реализация стэка и очереди с помощью массивов.
Краткое содержание: Потренироваться в работе с массивами - Поиск анаграммы - Поиск максимального и минимального значения - Вычисление среднего значения - Транспонирование массива Домашние задания 1ДЗ 4
5 Классы и интерфейсы. Введение в ООП 1
Цели занятия: познакомиться с основами концепции ООП и реализацией ООП в Java.
Краткое содержание: почему ООП стало популярным; Java и ООП; классы и интерфейсы в Java.
6 Классы и интерфейсы. Введение в ООП 2
Цели занятия: познакомиться с основными практиками ООП
Краткое содержание: что такое полиморфизм, виды полиморфизма; ООП как частный случай полиморфизма;
7 Часы практики с ментором 1
Цели занятия: получить навыки разработки ООП-модели
Краткое содержание: Переписать в ООП-стиле задание по разработке программы для тестирования из занятия ""Java синтаксис: массивы, условные операторы, циклы"". Продумать структуру классов и как они будут между собой взаимодействовать (какие будут методы в классах).
8 Часы практики с ментором 2
Цели занятия: применить практики ОПП на практике
Краткое содержание: "Написать эмулятор АТМ (банкомата). Объект класса АТМ должен уметь: - принимать банкноты разных номиналов (на каждый номинал должна быть своя ячейка) - выдавать запрошенную сумму минимальным количеством банкнот или ошибку если сумму нельзя выдать Это задание не на алгоритмы, а на проектирование. Поэтому оптимизировать выдачу не надо. - выдавать сумму остатка денежных средств" Домашние задания 1ДЗ 5
9 Введение в ФП 1
Цели занятия: рассмотреть введение в функциональное программирование (ФП);
Краткое содержание: чистые функции; не мутирующие данные; лямбда-функции; монады;
10 ФП в Java
Цели занятия: познакомиться с возможностями ФП Java.
Краткое содержание: Функциональный интерфейс
11 Часы практики с ментором 1
Цели занятия: получить навыки разработки модели с помощью ФП Решение задач 6-го дня с помощью ФП. Анализ различия.
Краткое содержание: Переписать в ФП-стиле задание по разработке программы для тестирования из занятия ""Java синтаксис: массивы, условные операторы, циклы"". Продумать структуру классов и как они будут между собой взаимодействовать (какие будут методы в классах).
12 Часы практики с ментором 2
Цели занятия: применить практики ФП на практике Развитие задач за счет добавления валидного состояния объектов. Реализация валидации с помощью Exception.
Краткое содержание: Написать эмулятор АТМ (банкомата). Объект класса АТМ должен уметь: - принимать банкноты разных номиналов (на каждый номинал должна быть своя ячейка) - выдавать запрошенную сумму минимальным количеством банкнот или ошибку если сумму нельзя выдать Это задание не на алгоритмы, а на проектирование. Поэтому оптимизировать выдачу не надо. - выдавать сумму остатка денежных средств Домашние задания 1ДЗ 6
13 Работа со строками. Регулярные выражения
Цели занятия: научиться выполнять часто встречающиеся задачи со строками
Краткое содержание: Java String API Appahce StringUtils Pattern, Matcher
14 Exception Handling
Цели занятия: познакомиться с методами обработок ошибок.
Краткое содержание: почему важно работать с ошибками; какими могут быть ошибки (некорректные входные данные, ошибки в логике, ошибки внешних систем);
15 Часы практики с ментором 1
Цели занятия: применение регулярных выражений для решения задач валидации
Краткое содержание: Написать программу, когда выполняет валидациях входных строк на соответствие шаблонам: - номер телефона - email - число с десятичным разделителем и прочее
16 Часы практики с ментором 2
Цели занятия: применение регулярных выражение для решения задач парсинга текста
Краткое содержание: Написать программу, которая разбирает исходный тест и создает нужную модель данных. В качестве исходного текста берется разделенными табами текст из Excel, содержащий данные счета-фактуры. На выходе получаем объект "Счет-фактура" Домашние задания 1ДЗ 7
3 Java Core. Java Collections
1 Элементы формальной логики. Базовые структуры данных
Цели занятия: познакомиться с основами алгоритмов и булевой алгеброй. Изучить базовые структуры данных: массивы, списки, словари
Краткое содержание: надо ли изучать алгоритмы; алгоритмическая сложность - О(n) массивы; односвязные и двухсвязные списки; сортировка выбором как пример простейшей сортировки;
2 Алгоритмы сортировки
Цели занятия: изучить различные алгоритмы сортировки
Краткое содержание: алгоритмы сортировки пузырьком и вставкой; комбинированный алгоритм сортировки Шелла; сложность каждого алгоритма; время работы алгоритмов для различных данных. принцип работы пирамидальной сортировки; сравнить её преимущества и недостатки; Быстрая и внешняя сортировка
3 Часы практики с ментором 1
Цели занятия: написать свою реализацию различных структур данных; сравнить эффективность различных подходов; выбрать подходящую структуру данных под конкретную задачу.
Краткое содержание: создание динамического массива; сравнение эффективности различных подходов; оценка эффективности разных операций; реализация стека и очереди.
4 Часы практики с ментором 2
Цели занятия: реализация различные алгоритмы сортировки
Краткое содержание: Реализовать алгоритмы сортировки пузырьком и вставкой, реализовать алгоритм быстрой сортировки quick sort; реализовать алгоритм сортировки слиянием merge sort; отсортировать миллиард чисел, не загружая их все в память. Домашние задания 1ДЗ 8
5 Введение в Java Collections: обзор интерфейсов и их имплементаций.
Цели занятия: познакомиться с Generic-ами в Java и со стандартными коллекциями.
Краткое содержание: Generic-ков, особенности использования стандартных коллекций. понимание базовых коллекций и ответ на самый популярный вопрос на собеседованиях по Java.
6 Собственные реализации интерфейсов Java Collections
Цели занятия: объяснить на примере принципы создания коллекций; познакомиться с пакетом unsafe, утилитой JMH и популярными библиотеками коллекций.
Краткое содержание: Unsafe; утилита JMH; принципы построения hashMap; Apache Commons; Google Guava.
7 Часы практики с ментором 1
Цели занятия: самостоятельно реализовать интерфейса. Выполнить анализ сложности. Оптимизировать. Собственная реализация hash-функции.
8 Часы практики с ментором 2
Цели занятия: реализация основных операция работы с графами и деревьями: обход, задача коммивояжёра и т.п. (список задач) Домашние задания 1ДЗ 9
9 Java Streams. Основы
Цели занятия: познакомиться с Java Streams API
Краткое содержание: Как streams работают MapReduce: map, filter, collect
10 Java Streams. Продвинутые техники
Цели занятия: научиться применять Java Stream API в задачах обработки данных
Краткое содержание: Groupping FlatMap Parallels streams
11 Часы практики с ментором 1
Цели занятия: самостоятельно реализовать один из интерфейсов. Выполнить анализ сложности. Оптимизировать Краткое содержание: Самостоятельно реализовать один из интерфейсов. Выполнить анализ сложности. Оптимизировать
12 Часы практики с ментором 2
Цели занятия: решение задач обработки и преобразования коллекций с помощью базовых инструкцию java и java stream.
Краткое содержание: Решение задач обработки и преобразования коллекций с помощью базовых инструкцию java и java stream. Домашние задания 1ДЗ 10
4 Взаимодействие с внешними системами
1 I/O Streams. File I/O.
Цели занятия: познакомиться с возможностями IO в Java
Краткое содержание: InputSteam и OutputSteam Reader и Writer Apache библиотеки FileUtils, IOUtils
2 Сериализация/ десериализация.
Цели занятия: познакомиться с функционалом сериализации объектов.
Краткое содержание: что такое сериализация?; Java API для работы с JSON; GSON; Google ProtoBuf.
3 Часы практики с ментором 1
Цели занятия: задачи на сохранение состояния объектов программы при остановке с последующим продолжением работы после перезапуска. Задачи на обмен данными объектами. Варианты решения этих же задач с помощь различных алгоритмов и форматов сериализации (в том числе собственной). Сравнение эффективности. Задачи на обработку файлов: обработка списков, парсинг файлов и т.п.
4 Часы практики с ментором 2
Цели занятия: задачи на сохранение состояния объектов программы при остановке с последующим продолжением работы после перезапуска. Задачи на объмен данными объектами. Варианты решения этих же задач с помощь различных алгоритмов и форматов сериализации (в том числе собственной). Сранение эффектиности. Задачи на обработку файлов: обработка списков, парсинг файлов и т.п. Домашние задания 1ДЗ 11
5 Основы сетевых технологий, TCP/IP.
Цели занятия: познакомиться с основами сетевых технологий и TCP/IP.
Краткое содержание: понятие компьютерной сети; что такое Ethernet
6 HTTP и Sockets. Web-сервер.
Цели занятия: объяснить на примере Jetty принципы работы Webсервера и servlet API
Краткое содержание: "встроенный веб сервер; сервлеты: servlet API, жизненный цикл сервлета; Jetty: устройство, работа, подключение сервлетов."
7 Часы практики с ментором 1
Цели занятия: разработать клиент-серверное приложение: клиент принимает данные, передает из серверу, сервер выполняет задачу и возвращает данные клиенту. Варианты работы через Socket и HTTP.
Краткое содержание: Разработать клиент-серверное приложение: клиент принимает данные, передает из серверу, сервер выполняет задачу и возвращает данные клиенту. Варианты работы через Socket и HTTP.
8 Часы практики с ментором 2
Цели занятия: разработать клиент-серверное приложение: клиент принимает данные, передает из серверу, сервер выполняет задачу и возвращает данные клиенту. Варианты работы через Socket и HTTP.
Краткое содержание: Разработать клиент-серверное приложение: клиент принимает данные, передает из серверу, сервер выполняет задачу и возвращает данные клиенту. Варианты работы через Socket и HTTP. Домашние задания 1ДЗ 12
5 Работа с БД
1 Основы СУБД. SQL. Нормализация/ денормализация данных. Уровни изоляции транзакций.
Цели занятия: познакомиться с реляционными базами данных и SQL. Оптимизировать SQL-запросы
Краткое содержание: что такое реляционные база данных, для чего нужны; Postgres как популярный пример; установка и запуск Postgres; основы SQL: DDL, DML; DDL: create table; DML: select, update, delete, insert; агрегатные функции sql. архитектура РСУБД нормализация
2 JDBC
Цели занятия: познакомиться с транзакцией в реляционной СУБД и jdbc.
Краткое содержание: ACID; транзакции в СУБД; JDBC, роль JDBC в стеке технологий; база данных в Docker Connection Pool, HikariCP
3 Часы практики с ментором 1
Цели занятия: спроектировать реляционную структуру БД для управлением состоянием объектов задачи предметной области (UML). Разработать приложение, которое выполняет бизнес-сценарий с сохранением результатов работы в БД. Написать SQL запрос, которые выдает аналитику по данным приложения.
4 Часы практики с ментором 2
Цели занятия: спроектировать реляционную структуру БД для управлением состоянием объектов задачи предметной области (UML). Разработать приложение, которое выполняет бизнес-сценарий с сохранением результатов работы в БД. Написать SQL запрос, которые выдает аналики по данным прилоежния. Домашние задания 1ДЗ 13
5 Паттерн ORM
Цели занятия: познакомиться с концепцией ORM
Краткое содержание: ORM Pattern “Executor”.
6 Hibernate
Цели занятия: познакомиться с Hibernate.
Краткое содержание: Hibernate, место Hibernate в современном стеке технологий; конфигурирование Hibernate в коде и в XML;
7 Часы практики с ментором 1
Цели занятия: доработать предыдущее решение с использованием ORM.
8 Часы практики с ментором 2
Цели занятия: доработать предыдущее решение с использованием ORM. Домашние задания 1ДЗ 14
9 JPQL.
Цели занятия: познакомиться с Connection Pool; проанализировать методы конструирования запросов в Hibernate. Краткое содержание: Hibernate: Entity, Fetch, JPQL, SQL.
10 NoSQL.
Цели занятия: познакомиться с noSQL базами данных; объяснить отличия SQL от noSQL, когда и что следует использовать;
Краткое содержание: SQL базы данных; noSQL базы данных;
11 Часы практики с ментором 1
Цели занятия: реализовать предыдущее решение с помощью NoSQL хранилища
12 Часы практики с ментором 2
Цели занятия: реализовать предыдущее решение с помощью NoSQL хранилища Домашние задания 1ДЗ 15
6 Spring Framework
1 Введение в Spring Framework
Цели занятия: ориентироваться в проектах Spring для дальнейшего изучения; применять принцип IoC при написании классов и тестов; создавать контекст Spring; определять Spring Beans в контексте; организовывать правильный DI." "ориентироваться в проектах Spring для дальнейшего изучения; применять принцип IoC при написании классов и тестов; создавать контекст Spring; определять Spring Beans в контексте; организовывать правильный DI.
Краткое содержание: Spring Framework и его Spring Projects; IoC в общем виде; IoC-контейнер в Spring (контекст); XML-контекст cо Spring Beans и DI между ними
2 Конфигурирование Spring-приложений
Цели занятия: конфигурировать Spring-приложения в современном Java-based стиле (как сейчас и все пишут); ориентироваться в многослойной и луковой (Onion) архитектурах; пользоваться Spring Expression Language (SpEL); задавать параметры приложения c помощью .properties файлов.
Краткое содержание: Java-based конфигурацию контекста Spring; Annotation-based конфигурацию контекста; аннотация стереотипов, @Autowired и многие другие; многослойная и луковая (Onion) архитектура; SpEL; параметры конфигурации из .properties-файлов
3 Работа над командным проектом 1
4 Работа над командным проектом 2
5 Spring Boot
Цели занятия: ориентироваться в возможностях Spring Boot для различных функциональностей и технологий; максимально быстро создавать production-grade standalone Spring-приложения с помощью Spring Boot Starters; писать автоконфигурации и использовать существующие; писать property в YAML-формате.
Краткое содержание: Spring Boot и зачем он; проект и научимся собирать артефакт; pom-файл, стартеры, структура проекта; пример применения – Rest-сервис; пример теста; разные интересные возможности.
6 Введение в Spring MVC, Spring MVC на Spring Boot
Цели занятия: различать архитектуры MVC и Spring MVC; создавать простые классические Web-приложения на основе Spring MVC и Spring Boot; создавать REST-сервисы на основе Spring MVC и Spring Boot.
Краткое содержание: архитектуры MVC и Spring MVC; Web-слой на Spring MVC; простой REST-сервис (без View).
7 Работа над командным проектом 1
8 Работа над командным проектом 2
9 Spring Data JPA
Цели занятия: использовать абстракции Spring Data для реализации собственных репозиториев в общем виде; использовать "белую магию" Spring Data JPA для создания репозиториев для JPA сущностей.
Краткое содержание: проекты Spring Data; репозитории на Spring Data JPA; кастомизация (Query, custom repositories).
10 Транзакции, Spring Tx
Цели занятия: применять особенности транзакции в реляционных БД для правильной разработки слоя DAO; использовать декларативное и императивное управление транзакциями в Spring-приложениях с помощью Spring Tx.
Краткое содержание: ACID; уровни изоляции транзакций; декларативное управление транзакциями в Spring Tx; propagation транзакций в Sping Tx; императивное управление транзакциями в Spring Tx.
11 Работа над командным проектом 1
12 Работа над командным проектом 2
13 Spring Security: Архитектура
Цели занятия: использовать абстракции Spring Data для реализации собственных репозиториев в общем виде; использовать "белую магию" Spring Data JPA для создания репозиториев для JPA сущностей.
Краткое содержание: проекты Spring Data; репозитории на Spring Data JPA; кастомизация (Query, custom repositories).
14 Spring Security: Аутентификация и авторизация
Цели занятия: различать различные механизмы аутентификации; внедрять HTTP Basic аутентификацию для защиты Web-приложения; внедрять Form-based аутентификацию для защиты Web-приложения; использовать вторичные виды аутентификации (такие как Remember Me и Anonymous). внедрять в приложение различные механизмы авторизации - на основе URL и методов сервисов, для глубокой защиты приложений.
Краткое содержание: различные механизмы первичной аутентификации - HTTP Basic и Form-based и как их реализовывать с помощью Spring Security; вторичные механизмы аутентификации и как они поддерживаются Spring Security. классы Spring Security, участвующие в авторизации; авторизация на основе URL с помощью встроенного DSL; механизмы для авторизации на методах сервисов.
15 Работа над командным проектом 1
16 Работа над командным проектом 2
17 Тестирование Spring приложений
Цели занятия: познакомится с инструментами и подходами Spring для тестирования.
Краткое содержание: Тестирование приложения на различных этапах. Инструментарий spring для реализации тестов на различных этапа: - JPA testing - JDBC testing - JSON testing - Application testing MockMvc
18 Профилирование и сбор метрик
Цели занятия: познакомиться со стратегиями и тактиками сбора метрик и профилировки java приложений и в частности в Spring
Краткое содержание: Сбор, хранение и анализ метрики: инструменты. Promoteus + Graphana JVM metrics, Micrometer
19 Работа над командным проектом 1
20 Работа над командным проектом 2
7 Проектирование ПО
1 Waterfall vs Agile
Цели занятия: познакомиться с основными подходами к разработке ПО.
Краткое содержание: классический подход к разработке Waterfall, его плюсы и минусы; Agile-подход, манифест, ценности;
2 Scrum
Цели занятия: познакомиться с методологией Scum
Краткое содержание: Scrum framework
3 Работа над командным проектом 1
4 Работа над командным проектом 2
5 Введение в архитектуру ПО
Цели занятия: познакомиться с понятием архитектуры программного обеспечения.
Краткое содержание: что такое архитектура программного обеспечения; масштабы архитектуры: метод, класс, модуль, микросервис, система
6 Микро сервисная архитектура vs Монолит
Цели занятия: различать два похода к разработке Enterpriseприложений - монолиты и микросервисы; видеть проблемы, возникающие при создании монолитов; использовать Best Practices при разработке монолитов. использовать Best Practices для разработки приложений на микро сервисной архитектуре
Краткое содержание: микросервисная и монолитная архитектуры; преимущества и недостатки обеих архитектур; микросервисная архитектура и Best Practices; HATEOAS подход; Spring Data REST, как самый простой способ создания CRUD микросервисов.
7 Работа над командным проектом 1
8 Работа над командным проектом 2
9 Принципы SOLID.
Цели занятия: объяснить принципы SOLID и общие критерии идеальной архитектуры.
Краткое содержание: идеальная архитектура; Coupling и Cohesion;
10 Обзор шаблонов проектирования.
Цели занятия: подробно познакомиться с популярными шаблонами проектирования
Краткое содержание: Behavioral, Creational, Structural patterns
11 Работа над командным проектом 1
12 Работа над командным проектом 2
13 Тестирование ПО. Основы TDD.
Цели занятия: познакомиться с junit и mockito; объяснить на примере, что такое ""тестируемое приложение"" Краткое содержание: виды тестов; инструменты: junit, mockito
14 Качество кода. Clean Code. Code Review.
Цели занятия: видеть недостатки кода, смогут корректировать его, превращая в корректный удобный код.
Краткое содержание: понятия ""чистого кода""; корректное представление; обработка ошибок, тестирование; ""воняющий"" код; реализация принципа единственной ответственности; модели выполнения (производители-потребители, читатели-писатели, обедающие философы); корректное завершение; понятие рефакторинга, принципы; тестирование.
15 Работа над командным проектом 1
16 Работа над командным проектом 2
8 Жизненный цикл приложения
1 DevOps
Цели занятия: рассмотреть процесс создания и поставки ПО в рамках devops.
Краткое содержание: проблемы доставки ПО; 4 фактора devops; версионирование,
2 CI/CD
Цели занятия: познакомится с основами развертывания приложения
Краткое содержание: Проблемы ""ручной"" сборки приложения и деплоя что такое CI/CD, что это дает
3 Работа над командным проектом 1
4 Работа над командным проектом 2
5 Docker, основы применения
Цели занятия: использовать Docker для запуска приложений в повседневной жизни, собирать собственные образы Docker c помощью Dockerfile для запуска собственных приложений, использовать docker-compose для запуска сложных систем.
Краткое содержание: уровень виртуализации Docker; приложение с помощью Docker; свой image c помощью Dockerfile; dockercompose
6 Архитектура K8S. Minikube, kind.
Цели занятия: узнать, что такое Kubernetes и чем он полезен javaразработчику. Использовать k8s для запуска сложных систем
Краткое содержание: Архитектура k8s, minikube и kind как варианты работы с k8s в повседневной работе программиста
7 Работа над командным проектом 1
8 Работа над командным проектом 2
9 Логирование. Обзор решений.
Цели занятия: познакомиться со стратегий логирования в промышленных системах. Познакомиться с основными инструментами для сбора и анализа логов
Краткое содержание: Логирование как важная правктика разрабокти современных систем организация логирования в Java: logback, sl4j; ELK стек
10 Отладка приложений
Цели занятия: объяснить детали устройства типов данных в Java; познакомиться с механизмами Remote Debug и Hot swap; познакомиться с утилитой Jol.
Краткое содержание: память, которую занимают объекты; изменение размера объекта, утилита JOL; remote Debug; hot swap.
11 Работа над командным проектом 1
12 Работа над командным проектом 2
9 Java Core Advance
1 Аннотации и reflection.
Цели занятия: познакомиться с механизмом Reflection; объяснить, что такое Аннотации и как их можно сделать. Краткое содержание: Reflection; аннотации
2 Lombok
Цели занятия: познакомиться с технологиями annotation Processor и возможностями Lombok.
Краткое содержание: проблема Boilerplate-кода в Java-проектах; дерево интеграции функционала; как Annotation Processor может взломать компилятор?; Lombok – интеграция в проект; Record’ы для Java 13-; mutable-Record’ы; декларативные Builder’ы; различные мелочи.
3 Работа над командным проектом 1
4 Работа над командным проектом 2
5 Сборщик мусора
Цели занятия: познакомиться со сборщиком мусора в Java.
Краткое содержание: концепция сборки мусора в JVM; виды сборщиков мусора; мониторинг работы сборщиков; примеры проблем производительности, связанных с мусором
6 Кеширование
Цели занятия: объяснить какие в java есть виды ссылок и для чего они нужны; оценить как устроены кэши; познакомиться с ""промышленным"" кэшом Ehcache.
Краткое содержание: виды ссылок в Java; пример самодельного кэша; Ehcache.
7 Работа над командным проектом 1
8 Работа над командным проектом 2
9 Многопоточность в Java
Цели занятия: познакомиться с основными принципами многопоточности; объяснить как управлять потоками в Java.
Краткое содержание: многопоточность; класс и объект Thread; создание многопоточного приложения; проблемы многопоточного доступа.
10 Java Memory Model
Цели занятия: познакомиться с основными проблемами многопоточности; объяснить зачем придумали JMM; рассмотреть основные положения JMM.
Краткое содержание: основная проблема многопоточности; «железные» оптимизации; «программные» оптимизации; JMM; Volatile; Happens before; Lock-free алгоритмы, CAS.
11 Работа над командным проектом 1
12 Работа над командным проектом 2
13 Пул потоков и executors.
Цели занятия: познакомиться с пулами потоков в Java.
Краткое содержание: поддержка многопоточности в стандартной библиотеке; Workers. Executors; Fork/Join.
14 Многопроцессорность в java.
Цели занятия: проанализировать сетевое взаимодействие в java. объяснить принципы работы ""клиентсерверного"" приложения в Java
Краткое содержание: Сокеты; RMI; разбор примера многопроцессного приложения. gRPC
15 Работа над командным проектом 1
16 Работа над командным проектом 2
17 Java NIO.
Цели занятия: рассмотреть основы сетевых возможностей NIO.
Краткое содержание: NIO для сокетов
18 Netty
Цели занятия: рассмотреть основные принципы работы Netty.
Краткое содержание: архитектура Netty; примеры применения.
19 Работа над командным проектом 1
20 Работа над командным проектом 2
21 Архитектура систем обмена сообщениями
Цели занятия: рассмотреть архитектурные концепции построения систем обмена сообщений
Краткое содержание: стили интеграции (File Transfer, RPI, Shared Database, Messaging); основные концепции обмена сообщениями; каналы, сообщение, маршрутизация, трансляция, конечная точка.
22 Message System 2
Цели занятия: познакомиться с потокобезопасными контейнерами; JMS
Краткое содержание: Познакомитьсяс возможсностями java для создания система обмена сообщениями JMS
23 Работа над командным проектом 1
24 Работа над командным проектом 2
ПРОЕКТНАЯ РАБОТА
1 Вводное занятие Домашние задания 1
Проектная работа
Цель: В проектной работе вы сделаете прототип пользовательского сервиса, который будет поддерживать работу с телеграм-ботом и помогать пользователю решать задачи по учету, сбору, анализу данных.
2 Консультация по проектам
3 Защита проектов
4 Итоговое занятие
Показать больше
 
Зарегистрируйтесь , чтобы посмотреть контент.
java otus олег агафонов программирование java
Похожие складчины
Kail
Ответы
0
Просмотры
105
Kail
Kail
Kail
Ответы
0
Просмотры
108
Kail
Kail
Kail
Ответы
0
Просмотры
232
Kail
Kail
Kail
Ответы
0
Просмотры
172
Kail
Kail
Показать больше складчин

Войдите или зарегистрируйтесь

Вы должны быть авторизованны для просмотра материала

Создать аккаунт

Создать учетную запись займет не больше минуты!

Войти

Уже зарегистрированы? Просто войдите.