Skip to content
Alesey edited this page Dec 9, 2021 · 59 revisions

Привет!

Это учебный репозиторий для проведения курсов программирования на Java. В данном Wiki размещаются конспекты тем курса и различные вспомогательные материалы и инструкции. В исходном коде этого репозитория можно найти домашние задания для большинства тем.

Всегда буду рад получить любую обратную связь о курсе.

Программа курса:

Одна тема на один астрономический час (60 минут)

Блок 0. Введение

  1. О курсе
  2. О программе курса
  3. Технические требования
  4. Список литературы/курсов
  1. Общая информация о Java
  2. Hello World приложение
    1. Создание проекта в Intellij IDEA
    2. Checkout GItHub репозитория
  3. Общая информация о системах контроля версий
  4. Список литературы/курсов

Блок 1. Процедурное программирование

  1. Переменные и константы
    1. Создание переменных
  2. Обзор типов данных в Java
    1. Примитивные типы данных
      1. Целочисленные типы
      2. Дробные числа
      3. Логический тип
    2. Ссылочные типы данных
    3. Строки
  3. Массивы
  4. Список литературы/курсов
  1. Арифметические операторы
  2. Битовые операторы
  3. Операторы сравнения
  4. Логические операторы
  5. Операторы присваивания
  6. Оператор instanceOf
  7. Тернарный оператор
  8. Список литературы/курсов
  1. Условный оператор if
  2. Условный оператор switch
  3. Циклы
    1. Цикл for
    2. Цикл for-each
    3. Циклы while и do-while
    4. Операторы break и continue
  4. Список литературы/курсов
  1. Операции со строками
    1. Соединение строк
    2. Сравнение строк
  2. Список литературы/курсов
  3. Список литературы/курсов

Блок 2. Основы ООП

  1. Основные понятия ООП
    1. Класс
    2. Конструктор
  2. Инкапсуляция, наследование, полиморфизм
    1. Инкапсуляция
    2. Наследование
    3. Полиморфизм
      1. Переопределение
      2. Перегрузка
      3. Параметрический полиморфизм
  3. Список литературы/курсов
  1. Метод toString
  2. Методы hashCode и equals
    1. Метод equals
    2. Метод hashCode
  3. Метод getClass
  4. Методы wait и notify
  5. Метод finalize
  6. Метод clone
  7. Список литературы/курсов
  1. Пакеты
    1. Импорт
  2. Модификаторы доступа
    1. Доступы к классам
    2. Геттеры и сеттеры
      1. Геттеры
      2. Сеттеры
  3. Вложенные классы
  4. Список литературы/курсов
  1. Объявление и синтаксис наследования
  2. Абстрактные классы
    1. Абстрактные методы
  3. Обобщение
  4. Перегрузка и переопределение методов
    1. Переопределение методов
    2. Аннотация @override
    3. Запрет переопределения методов
    4. Перегрузка методов
    5. Вызов методов суперкласса
  5. Композиция и агрегирование 1.IS A отношения 2.HAS A отношения
  6. Приведение типов
  7. Upcasting и Downcasting
  8. Пример инструкции instanceof
  9. Наследование полей и методов 1.Поля 2.Конструкторы 5.Вложенные классы 6.Запрет наследования
  10. Статичные поля и методы
  11. Статический метод
  12. Особенности использования статических методов, полей и классов
  13. Список литературы/курсов
  1. Перегрузка и переопределение методов
  2. Абстрактные классы и методы
  3. Интерфейсы
    1. Методы по умолчанию
    2. Анонимные классы
  4. Параметрический полиморфизм (generics)
  5. Список литературы/курсов
  1. Что такое "Дженериков" и зачем они нужны
  2. Cпособ применения "Дженериков": Типовой класс
  3. Cпособ применения "Дженериков": Конструктор
  4. Cпособ применения "Дженериков": Интерфейс
  5. Cпособ применения "Дженериков": Метод
  6. Ограничения дженериков
  7. Список литературы/курсов
  1. Конструкция enum
  2. Перечисление это класс
  3. Элементы перечисления
  4. Название и порядковый номер элемента enum
    1. Получение всех элементов перечисления
    2. Добавляем свои методы в enum класс
  5. Рекомендации в случае использования enum
  6. Случаи использования enum
  7. Примеры использования enum
    1. Специальные коллекции для перечислений
  8. Список литературы/курсов

Тема 13. Паттерны

  1. Паттерн Builder
  2. Паттерн Singleton
  3. Список литературы/курсов

Тема 14. Java Code Convention

  1. Не игнорируйте исключения
  2. Комментарии/Javadoc
  3. Короткие методы
  4. Локальные переменные
  5. Импорты
  6. Отступы
  7. Названия полей и методов
  8. Фигурные скобки
  9. Длина строки
  10. Согласованность
  11. Список литературы/курсов

Блок 3. Коллекции

  1. Обзор Collections Framework
  2. Iterator
  3. Список литературы/курсов

Тема 16. Списки

  1. ArrayList
  2. LinkedList
  3. Сравнение ArrayList и LinkedList
  4. Список литературы/курсов

Тема 17. Очереди

  1. Интерфейс Queue
  2. Список литературы/курсов

Тема 18. Карты

  1. Интерфейс Map
  2. Список литературы/курсов

Тема 19. Множества

  1. Интерфейс Set
  2. Список литературы/курсов

Блок 4. Stream API

Тема 20. Лямбды

  1. Функциональный интерфейс
  2. Реализация лямбд
    1. Лямбды как объекты
    2. Согласование интерфейса
    3. Реализация
    4. Захват переменных
  3. Особенности Лямбд
  4. Случаи использования Лямбд
  5. Список литературы/курсов
  1. Ссылки на методы
  2. Ссылка на статический метод
  3. Ссылка на нестатический метод конкретного объекта
  4. Ссылка на нестатический метод любого объекта конкретного типа
  5. Ссылка на конструктор
  6. Список литературы/курсов

Тема 22. Stream

  1. Обзор функциональности Stream
    1. Операторы (Методы класса Stream)
      1. Конвейерные методы работы со Stream
      2. Терминальные методы работы со Stream
      3. Методы у числовых Stream
      4. Особенные методы Stream
  2. Map/reduce
  3. Список литературы/курсов

Тема 23. Spliterator

  1. Интерфейс Сплитератора
  2. Методы Сплитератора
  3. Особенности использования Сплитератора
  4. Список литературы/курсов

Блок 5. Ввод/вывод

Тема 24. Исключения

  1. Зачем нужны исключения?
    1. Исключения в Java
  2. Типы исключений
    1. Непроверяемые исключения
    2. Проверяемые исключения
  3. Генерация исключений
    1. Создание собственных классов-исключений
  4. Обработка исключений
    1. Конструкция try-catch-finally
    2. Конструкция try-with-resources
    3. Наследование методов бросающих исключения
    4. Проброс исключений без обработки
  5. Список литературы/курсов
  1. Потоки ввода и вывода
  2. Try-with-resources
  3. Чтение файла
  4. Запись в файл
  5. Создание и удаление файлов
  6. Временные файлы
  7. Список литературы/курсов
  1. Ввод и вывод на консоль
  2. Логирование
  3. Форматирование строк
  4. Список литературы/курсов

Блок 6. Более продвинутые возможности языка

Тема 27. Аннотации

  1. Обзор функциональности аннотаций
  2. Создание аннотаций
  3. Примеры использования
  4. Список литературы/курсов

Тема 28. Рефлексия

  1. Рефлексия в Java
  2. Работа с объектом Class
  3. Примеры использования
  4. Список литературы/курсов

Блок 7. Модель памяти

  1. Стэк
  2. Куча
  3. GC
  4. Список литературы/курсов

Тема 30. Ссылки

  1. Сильные 26
  2. Слабые и мягкие ссылки
  3. Утечки памяти
  4. Список литературы/курсов

Блок 8. Многопоточность

  1. Многопоточность в Java
  2. Создание потоков
  3. Жизненный цикл потоков
  4. Список литературы/курсов
  1. Метод wait и его модификации
    1. Метод wait с аргументом timeout
    2. Метод wait с аргументами timeout и nanos
    3. Метод wait без аргументов
  2. Методы notify, notifyAll
    1. Метод notify
    2. Метод notifyAll
  3. Список литературы/курсов
  1. Принцип работы ForkJoinPool
  2. Модель ForkJoin
  3. Внутреннее устройство ForkJoinPool
    1. Алгоритм "Кражи работы"
  4. Создание экземпляра ForkJoinPool
  5. ForkJoinTask
    1. RecursiveAction
    2. RecursiveTask
  6. Отправка задач в ForkJoinPool
  7. Рекомендации в случае использования ForkJoinPool
  8. Случаи использования ForkJoinPool
  9. Список литературы/курсов

Блок 9. Spring

  1. Создание Spring-проекта
  2. Обзор возможностей фреймворка
  3. Модули Spring
  4. Список литературы/курсов

Тема 35. HTTP и REST

  1. Обзор протокола HTTP
  2. Обзор подходов построения REST API
  3. Форматы данных (JSON, XML, YAML)
  4. Список литературы/курсов

Тема 36. Spring MVC

  1. Паттерн MVC
  2. Spring-контроллеры
  3. Шаблонизаторы
  4. Обзор и подключение Swagger
  5. Обработка ошибок
  6. Список литературы/курсов

Тема 37. Spring Data JPA

  1. Общая информация о JPA и ORM
  2. Подключение к базе данных
  3. Spring-репозитории
  4. CRUD-операции
  5. Список литературы/курсов
  1. Обзор вариантов кеширования
  2. Сложные запросы к БД
  3. Обзор возможностей Spring Cache
  4. Список литературы/курсов

Clone this wiki locally