О курсе
Освойте язык, который популярен уже более 20 лет
Заработок будет расти вместе с опытом
Итоговые навыки
- Работаю с файловой системой и базами данных
- Тестирую приложения
- Знаю и применяю паттерны проектирования приложений
- Знаю принципы объектно-ориентированного программирования
- Умею разбираться в чужом коде
- Применяю алгоритмы для решения задач
- Работаю с системой контроля версий Git
- Разрабатываю многопоточные приложения
- Умею работать в распределённой команде по методологии SCRUM
Программа курса
1.1 Чем занимаются Java-разработчики .
1.2 Как устроено обучение .
1.3 Почему вы точно станете востребованным специалистом через 6 месяцев .
1.4 Погружение в программирование. Знакомство с Java .
1.5 Первое практическое задание .
1.6 Инструменты для самоорганизации .
1.7 Как найти время на курс и не бросить на полпути .
2.1 Введение в модуль .
2.2 Какие бывают программы .
2.3 Веб-приложения. Frontend и backend .
2.4 Цели и области применения Java .
2.5 Как выглядит программный код .
2.6 Установка среды разработки .
2.7 Пишем простое приложение .
2.8 Упаковываем приложение в один файл .
2.9 Особенности языка Java .
3.1 Переменные .
3.2 Условные операторы “if”и “else” .
3.3 Булевы операции .
3.4 Приоритеты и скобки в условиях .
3.5 Вложенные условия .
3.6 Тернарный оператор .
3.7 Комментарии в коде .
3.8 Разбираем код готового приложения .
3.9 Цикл “for” .
3.10 Циклы “while” и “do while” .
3.11 Операторы “break” и “continue” .
3.12 Оператор “switch … case” .
3.13 Оператор switch в Java 17 .
3.14 Разбираем сложный код .
4.1 Методы .
4.2 Параметры методов .
4.3 Возвращаемые значения .
4.4 Классы и объекты .
4.5 Конструкторы .
4.6 Перегрузка методов .
4.7 Области видимости .
4.8 Инкапсуляция .
4.9 POJO-классы, геттеры и сеттеры .
4.10 Records в Java 17 .
4.11 Immutable-классы .
4.12 Передача по ссылке или по значению .
4.13 Копирование объектов .
4.14 Статические переменные .
4.15 Статические методы .
4.16 Константы .
4.17 Enum .
4.18 Статическая инициализация .
5.1 Примитивы и объекты .
5.2 Виды примитивов .
5.3 Биты и байты .
5.4 Числа .
5.5 Символы .
5.6 Классы-обёртки, boxing и unboxing .
6.1 Операции с числами .
6.2 Инкремент и декремент .
6.3 Преобразование (приведение) чисел .
6.4 Точность вычислений .
6.5 Работа с большими и точными числами .
6.6 Дата и время .
6.7 Метка времени (timestamp) .
7.1 Строки, конкатенация и сравнение .
7.2 Преобразование чисел в строки и обратно .
7.3 Символы и кодировки .
7.4 Методы работы с подстроками .
7.5 String Pool .
7.6 Регулярные выражения .
8.1 Создание массивов .
8.2 Работа с массивами в циклах .
8.3 Многомерные массивы .
8.4 Класс Arrays .
8.5 Списки .
9.1 Коллекция HashSet .
9.2 Механизм работы HashSet .
9.3 Коллекция TreeSet .
9.4 Красно-черные деревья .
9.5 Коллекции HashMap и TreeMap .
10.1 Выбор подходящей коллекции .
10.2 Преобразование массивов и коллекций .
10.3 Итератор .
10.4 Класс Collections .
11.1 Наследование классов Java .
11.2 Переопределение методов .
11.3 Переопределение статических методов .
11.4 Класс Object .
11.5 Модификаторы доступа .
12.1 Абстрактные классы .
12.2 Интерфейсы .
12.3 Интерфейсы в языке Java .
12.4 Методы с дефолтной реализацией в интерфейсах .
12.5 Полиморфизм .
12.6 Вложенные классы .
13.1 Maven .
13.2 Команды Maven. Плагины .
13.3 Система автоматической сборки Gradle .
13.4 Установка системы Gradle .
13.5 Работа с Gradle в IntelliJ IDEA .
13.6 Docker .
13.7 Генерация документации Javadoc .
14.1 Дженерики .
14.2 Функциональные интерфейсы .
14.3 Лямбда-выражения .
14.4 Класс Optional .
14.5 Аннотации .
14.6 Lombok .
14.7 Введение в Stream API .
14.8 Создание Stream .
14.9 Промежуточные операторы .
14.10 Терминальные операторы .
14.11 Parallel, reduce и комбинирование операторов .
15.1 Что такое исключения и зачем они нужны .
15.2 Типы исключений .
15.3 Обработка исключений .
15.4 Создание собственных исключений .
15.5 Отладка приложений .
15.6 Логирование .
16.1 Класс File .
16.2 Чтение файлов с помощью FileInputStream .
16.3 Чтение файлов с помощью BufferedReader .
16.4 Чтение файлов с помощью класса Files .
16.5 Запись в файл .
16.6 Java NIO API .
16.7 Табличные файлы .
16.8 Структура XML и HTML-файлов .
16.9 Парсинг HTML-файлов .
16.10 Формат JSON и парсинг JSON файлов .
16.11 Формат JSON .
16.12 Конфигурационные файлы .
17.1 Установка MySQL .
17.2 Подключение через JDBC .
17.3 Запросы без ResultSet .
17.4 Hibernate — подключение и настройка .
17.5 Hibernate: изменение данных в базе .
17.6 Связи ManyToOne и OneToMany .
17.7 Связь ManyToMany .
17.8 Hibernate query builder .
17.9 Ленивая загрузка данных .
17.10 Where и OrderBy .
17.11 HQL .
18.1 Зачем нужна многопоточность .
18.2 Класс Thread .
18.3 Интерфейс Runnable .
18.4 Состояние гонки и критические секции .
18.5 Атомарные переменные .
18.6 Ключевое слово Volatile .
18.7 Synchronized-методы .
18.8 Synchronized-блоки .
18.9 Взаимодействие потоков — методы Wait и Notify .
18.10 Потокобезопасные классы .
18.11 Взаимная блокировка — Deadlock .
18.12 Интерфейс Callable .
18.13 Executors, Executor и ExecutorService .
18.14 Метод Shutdown .
18.15 ThreadPoolExecutor .
18.16 ScheduledExecutorService .
18.17 Приостановка и прерывание потоков .
18.18 ForkJoinPool и RecursiveTask .
18.19 Интерфейс RunnableFuture .
19.1 Протокол HTTP. Запрос и ответ .
19.2 Методы HTTP-запросов GET и POST .
19.3 Другие методы HTTP-запросов .
19.4 Статус-коды HTTP-ответов .
19.5 Адресация сетевых ресурсов .
19.6 REST: теория и практика .
19.7 HTTP-заголовки .
19.8 Версии протокола HTTP и HTTPS .
20.1 Знакомство с фреймворком Spring .
20.2 Inversion of Control и Dependency Injection .
20.3 Bean и их жизненный цикл .
20.4 Контроллеры. Аннотации @Controller и @RestController .
20.5 Сервисы. Аннотация @Service .
20.6 Конфигурация Spring-приложений .
20.7 Работа с базой данных. Spring Data JPA .
20.8 Подключение к базе данных .
20.9 Сущности и репозитории .
20.10 Связи между сущностями .
20.11 Версионирование баз данных. Liquibase .
21.1 Работа с базой данных. Spring Data JPA .
21.2 Подключение к базе данных .
21.3 Сущности и репозитории .
21.4 Связи между сущностями .
21.5 Версионирование баз данных. Liquibase .
22.1 Основы Redis, простейшие команды .
22.2 Сложные структуры данных в Redis .
22.3 Сравнение Redis vs MySQL .
22.4 Базовые возможности MongoDB .
22.5 Агрегация данных в MongoDB .
23.1 Факторы производительности .
23.2 Преждевременная оптимизация .
23.3 Что нужно оптимизировать .
23.4 Длительность конкатенации строк .
23.5 Буферизация .
23.6 Два принципа оптимизации по времени .
23.7 Какую память нужно экономить .
23.8 Память можно не экономить .
23.9 Память и разные структуры данных .
23.10 Чем меньше запросов, тем лучше .
23.11 Multiinsert .
23.12 Утечка памяти .
23.13 Индексация и оптимизация запросов .
23.14 Кэширование запросов .
23.15 Хранение данных .
25.1 Введение в Spring: IoC + DI .
25.2 Бины и контекст .
25.3 Spring Context в действии .
25.4 Скоупы бинов .
25.5 Методы жизненного цикла бина .
25.6 Параметры приложения .
25.7 Профили приложения .
26.1 Основы Spring Boot .
26.2 Конфигурация в Spring Boot .
26.3 Стартеры .
26.4 Реализация стартера .
26.5 Docker .
26.6 Docker Compose .
27.1 Паттерн MVC .
27.2 Создание простого MVCприложения .
27.3 Методы контроллеров .
27.4 Шаблонизаторы и основы тимлиф .
27.5 Трехзвенная архитектура приложения .
27.6 JDBC Template .
27.7 Библиотека Jooq для работы с базами данных .
28.1 RESTful API .
28.2 RESTконтроллеры Spring .
28.3 Тестирование контроллеров. Работа с ошибками и валидация .
28.4 Фильтры и перехватчики. Request Scope и Session Scope .
28.5 OpenAPI .
28.6 Основы Spring Data JPA .
28.7 Составление запросов с помощью Spring Data JPA .
28.8 Транзакции в базах данных .
28.9 AOP .
29.1 Интеграция с внешними сервисами .
29.2 HTTP клиенты .
29.3 Декларативные методы для Restсервисов .
29.4 Кэширование .
29.5 Redis .
29.6 Тестирование систем .
30.1 Очереди. Стриминговые системы. EventDriven .
30.2 Kafka (основные компоненты и понятия) .
30.3 Kafka Template и Kafka Listener .
30.4 Тестирование интеграций с Kafka .
31.1 Особенности реактивного подхода .
31.2 Реактивный подход WebFlux .
31.3 Mongo DB и ее отличие от реляционных баз данных .
31.4 Реактивные репозитории и клиенты .
31.5 Тестирование реактивных компонентов .
32.1 Основы безопасности .
32.2 Основы Spring Security .
32.3 OAUTH 2.0 .
32.4 Защита приложения с помощью JWT токенов .
32.5 Авторизация во внешних системах .
32.6 Тестирование с Sping Security .
32.7 Reacive Sping Security .
33.1 О командном итоговом проекте .
33.2 Гибкие методологии .
33.3 Rest/Swagger .
33.4 HTML/CSS .
33.5 Паттерны проектирования .
33.6 Введение в алгоритмы .
33.7 Структуры данных .
33.8 Разработка desktopприложений .
33.9 Технические задания .
35.1 Работаем с Git на своём компьютере .
35.2 Работаем с удалённым репозиторием .
35.3 Командная работа в Git .
35.4 Сравнение версий и отмена изменений .
35.5 Инструменты и правила работы с Git .
36.1 Основы SQL .
36.2 Введение в реляционные базы данных .
36.3 Основные запросы по работе с данными .
36.4 Функции и выражения в SQL-запросах .
36.5 Проектирование и оптимизация реляционных баз данных .
37.1 Подготовка к презентации проекта .
37.2 Несколько уроков из курса «Мастер презентаций» .
Школы
Skillbox
Skillbox – один из лидеров российского рынка онлайн-образования.