-
Вводный модуль.Какие бывают программы. Где и для чего применяется Java. Как выглядит программный код. Установка среды разработки. Исправляем готовое приложение. Пишем консольное приложение.
-
Синтаксис языка.Что вообще бывает в коде. Переменные в Java. Boolean, операторы сравнения и условные операторы. Циклы. Разбираем сложный код.
-
Система контроля версий Git.Версии программного кода. Установка Git. Индекс и частичные коммиты. Сравнение версий. Отмена изменений и откат версий. Репозитории и коллективная работа. Ветки: создание и управление. Слияние и разрешение конфликтов. Полезные инструменты. Правила работы с Git.
-
Объекты и классы. Понятие класса и объекта. Метод, параметры, return. Статические методы и переменные. Константы и Enum. Создание объектов и конструктор. Инкапсуляция, геттеры и сеттеры. Копирование объектов. Внешние библиотеки классов. Создание JAR-файлов.
-
Числа, строки, даты. Объекты и примитивы. Зачем нужны объекты и примитивы. Значения по умолчанию. Boxing и unboxing. Какие бывают числа. Биты и байты. Числа int и double. Точность чисел с плавающей точкой. Преобразование чисел разных типов. Преобразование строки в число и обратно. Какие бывают операции с числами. Инкремент и декремент. Класс Math. Символы и кодировки. Специальные символы. Методы класса String. Конкатенация строк. Сравнение строк. Регулярные выражения. Календарь и метка времени.
-
Массивы и коллекции. Создание массивов. Перебор элементов массивов. Обход массивов в обратном порядке. Массивы массивов. Списки элементов. Наборы уникальных элементов. HashMap и TreeMap. Поиск и сортировка.
-
Наследование и полиморфизм. Наследование классов Java. Доступ к методам и переменным. Абстрактные классы. Интерфейсы. Полиморфизм. Интерфейс Comparable. Интерфейс Comparator. Краткая реализация интерфейсов. Интерфейсы Map и Set.
-
Особенности ООП в Java. Лямбда-выражения. Указатели на методы. Метод forEach. Способы получения Stream. Sorted, max, min. Map reduce. Static- и default-методы в интерфейсах. Generics. Система сборки Maven. Репозиторий Maven. Аннотации и Lombok.
-
Исключения, отладка, тестирование и логирование. Возникновение исключений. Отлов исключений. Типы исключений. Отладка приложений. Виды тестирования ПО. Модульное тестирование. Логирование в консоли. Логирование с помощью log4j2.
-
Работа с файлами и сетью.Класс File. Чтение файлов с помощью FileInputStream. Чтение файлов с помощью BufferedReader. Чтение файлов с помощью класса Files. Запись в файл. Табличные файлы. Структура XML и HTML-файлов. Парсинг HTML-файлов. Формат JSON и парсинг JSON-файлов. Конфигурационные файлы.
-
Работа с MySQL в Java.Установка MySQL. Подключение через JDBC. Запросы без ResultSet. Hibernate: подключение и настройка. Hibernate: изменение данных в базе. Связи ManyToOne и OneToMany. Связь ManyToMany. Hibernate query builder. Ленивая загрузка данных. Where и OrderBy. HQL.
-
Многопоточность. Зачем нужна многопоточность. Класс Thread. Интерфейс Runnable. Состояние гонки и критические секции. Атомарные переменные. Ключевое слово Volatile. Synchronized-методы. Synchronized-блоки. Взаимодействие потоков — методы Wait и Notify. Потокобезопасные классы. Взаимная блокировка — Deadlock. Интерфейс Callable. Executors, Executor и ExecutorService. Метод Shutdown. ThreadPoolExecutor. SheduledExecutorService. Приостановка и прерывание потоков. ForkJoinPool и RecursiveTask.
-
Разработка веб-приложений. Создание Maven-проекта. Создание приложения на Spring Boot. Создание первого контроллера. Концепция MVC. RESTful API и CRUD. Создание контроллера. Request, response и статусы ответов. Подключение к БД и создание сущности. Репозиторий и добавление элементов в БД. Получение данных из БД. Изменение и удаление данных в БД. View и подключение шаблонов. Параметры конфигурации. Упаковка приложения в JAR-файл.
-
Нереляционные базы данных и очереди. Введение. Основы Redis, простейшие команды. Сложные структуры данных в Redis. Сравнение Redis и MySQL. Базовые возможности MongoDB. Агрегация данных в MongoDB.
-
Производительность и оптимизация.Факторы производительности. Преждевременная оптимизация. Что нужно оптимизировать. Длительность конкатенации строк. Буферизация. Два принципа оптимизации по времени. Какую память нужно экономить. Память можно не экономить. Память и разные структуры данных. Чем меньше запросов, тем лучше. Multiinsert. Утечка памяти. Индексация и оптимизация запросов. Кэширование запросов. Хранение данных.
-
Распределённые хранилища и вычисления. Что такое большие данные. Файловая система HDFS. Практическая работа с HDFS. Концепция MapReduce. Фреймворк Apache Spark. Установка Spark. Запуск в Spark собственного приложения. Запуск приложения обработки текста. Модуль YARN.
-
Заключительный модуль. Desktop-приложения: создание интерфейса. Desktop-приложения: события и их обработка. Desktop-приложения: кастомизация интерфейса. Android-приложения. Язык программирования Scala. Язык программирования Kotlin. Реактивное программирование. RxJava.
-
Бонус-модуль. Паттерны проектирования. Что такое паттерны проектирования. Паттерн Singleton. Паттерн Factory. Паттерн Abstract Factory. Паттерн Decorator. Паттерн Adapter. Паттерн Bridge. Паттерн Strategy. Паттерн Observer. Паттерн Iterator. Другие паттерны.
-
Бонус-модуль. Введение в алгоритмы.Введение в алгоритмы Зачем нужны алгоритмы Рекурсивные алгоритмы Временная сложность алгоритмов Алгоритм бинарного поиска Алгоритм сортировки пузырьком Алгоритм сортировки QuickSort Алгоритм сортировки MergeSort Алгоритм поиска подстроки Рабина-Карпа Алгоритм поиска подстроки Кнута-Морриса-Пратта Алгоритм поиска подстроки Бойера-Мура
-
Бонус-модуль. Введение в структуры данных. Введение в структуры данных Зачем нужны структуры данных Хэш-таблицы Очередь и стэк Связные списки Бинарное дерево Суффиксное дерево Графы
-
Бонус-модуль. Протокол HTTP. Протокол HTTP. Запрос и ответ. Методы HTTP-запросов GET и POST. Другие методы HTTP-запросов. Статус-коды HTTP-ответов. Адресация сетевых ресурсов. HTTP-заголовки. Версии протокола HTTP и HTTPS
-
Дополнительные модули. Универсальные знания программиста. Английский для IT-специалистов