Java for Beginner
672 subscribers
540 photos
155 videos
12 files
826 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Оглавление обучающих постов часть 1.

История и особенности языка Java
Основы синтаксиса Java
Объявление переменных
Операнды cравнения в Java
Логические операторы
Управляющие конструкции
Циклы
Массивы в Java
Массивы: Обход и основные операции
Введение в ООП и основы классов и объектов
Классы и объекты
Поля и методы класса. Конструкторы
Методы класса
Конструкторы
Статические и блоки инициализации
Инкапсуляция и модификаторы доступа
Абстракция и примеры применения
Наследование
Переопределение методов
Полиморфизм
Абстрактные классы и методы
Интерфейсы
Различия между абстрактными классами и интерфейсами
Перегрузка метода
Пакеты и импорт
Основные принципы организации классов и пакетов
Исключения: Основы
Обработка исключений
Создание собственных исключений
Вложенные и множественные catch блоки
Строки: Основные операции
Класс String и его методы
StringBuilder и StringBuffer
Разница между String, StringBuilder и StringBuffer
Collections, особенности и внутреннее устройство
Коллекции
Arrays, особенности и внутреннее устройство
List, ArrayList, LinkedList
Set, HashSet, TreeSet
Map, HashMap, TreeMap
Введение в I/O (Input/Output)
Классы File и Path
Чтение и запись файлов: FileReader, FileWriter
Буферизованные потоки: BufferedReader, BufferedWriter
Работа с байтовыми потоками: InputStream, OutputStream
Работа с буферизованными байтовыми потоками: BufferedInputStream, BufferedOutputStream
Объектные потоки: ObjectInputStream, ObjectOutputStream
Сериализация и десериализация объектов
Классы-обёртки (Wrapper classes): Integer, Double
Автоупаковка (Autoboxing) и распаковка (Unboxing)
Класс Object и его значение в Java
Другие методы класса Object
Операторы присваивания, инкремента-декремента в Java
Введение в Queue
Введение в Stack
Дженерики
Продвинутые возможности дженериков
Внутренние классы
Статические вложенные классы и примеры использования внутренних классов
Лямбда-выражения
Применение лямбда-выражений в коллекциях и Stream API
Введение в Stream API и основные методы создания стримов
Терминальные методы Stream API
Многопоточность
Использование synchronized в многопоточности
Условные переменные
Многопоточность в Java: wait и notify
Продвинутые аспекты wait и notify
Асинхронизм и Future в Java
CompletableFuture в Java
Комбинирование CompletableFuture
Многопоточность в Java: volatile и Immutable Classes
Многопоточность в Java: Deadlock
Многопоточность в Java: Пул потоков
Многопоточность в Java: ExecutorService
Concurrency
Продвинутые методы ConcurrentHashMap

#Contents
Оглавление обучающих постов часть 2.

Распространенные ошибки многопоточности
Callable
Semaphore
CountDownLatch
Аннотации в Java
Создание собственных аннотаций в Java
BitSet
NavigableSet

Неизменяемые коллекции
Cинхронизированные коллекции
Properties
Stream API
CompletableFuture
Optional
Алгоритмы
Работа с датами в Java
Класс Random в Java
Рекурсия в Java
Pair
Приведение типов в Java
Оператор Instanceof
Основные методологии разработки
Оператор try-catch в Java
Оператор multi-catch в Java
Оператор try-with-resources
Переменные-ссылки в Java
StackTrace в Java
Класс Math в Java
Побитовые операции в Java
Литералы в Java
Кодировки в Java
Экранирование символов в Java
Регулярные выражения в Java
Метасимволы
Введение в URL, URLConnection, работа с сетью, особенности и применение
Основные методы URL, URLConnection и примеры использования
Работа с файлами в Java, Класс Files, особенности и применение
Основные методы Files, примеры использования работы с файлами в Java
StringBuilder
String.format и StringFormatter
StringTokenizer
Substring
Класс StringReader
Класс StringWriter
Основные методы класса StringWriter
Enum
Dynamic Proxy
Итераторы в Java
Метод Thread.sleep()
Класс TimeUnit
Память в JVM
Metaspace
Java Memory Model (JMM)
Сборка мусора в Java
Типы сборок мусора в Java
Внутреннее устройство Garbage Collector
Мусорные ссылки в Java
Утечка памяти в Java

Управление JVM (Java Virtual Machine) командами
Компиляция программ Java
Команды в JVM

Классы для работы с датами и временем в Java Time API
Работа с временными зонами, Duration и Period
Форматирование и парсинг дат с DateTimeFormatter
ZoneOffset, OffsetDateTime и конвертация времени между часовыми поясами
Класс Instant и TemporalAdjusters
Работа с временными зонами
Основные аннотации для работы с датами в Spring
Продвинутые аннотации и нюансы работы с датами

#Contents
Оглавление обучающих постов часть 3. SPRING

Spring Framework
Архитектура Spring и его модули
Spring Framework's
Контейнер Inversion of Control (IoC)
Принципы Dependency Injection (DI)
Управление объектами в Spring Container
Конфигурация Spring через XML
Конфигурация Spring через аннотации
Основы Bean в Spring: создание и управление
Жизненный цикл бинов
Синглтон и Прототипы в Spring
Паттерны использования бинов в Spring
Spring. Внедрение зависимостей через конструктор
Spring. Внедрение зависимостей через сеттеры
@Autowired
@Qualifier
Контекст Spring: ApplicationContext и BeanFactory
Способы загрузки контекста в Spring
Жизненный цикл ApplicationContext в Spring
Построение приложения с использованием Java-конфигурации в Spring
@Component и @Service
@Repository в Spring
Способы работы с внешними конфигурациями в Spring: application.properties и application.yml
Валидация и валидационные аннотации в Spring
@Import
@Value

——SPRING MVC——

Spring MVC
Архитектура MVC в Spring
@Controller
@RequestMapping
@GetMapping, @PostMapping, @PutMapping и @DeleteMapping
@RequestBody
@ModelAttribute
@RequestParam и @PathVariable
ViewResolver
@ResponseBody
Как @RestController взаимодействует с @RequestMapping
JSP и Thymeleaf как механизмы представления
Конфигурация шаблонов Thymeleaf в Spring
Формы и отправка данных в Spring MVC
Обработка форм и привязка данных в Spring MVC
@ExceptionHandler
@ControllerAdvice

——SPRING JDBC——

Введение в Spring JDBC
Настройка DataSource и подключение к базе данных в Spring JDBC
Использование JdbcTemplate в Spring JDBC для выполнения SQL-запросов
Создание и выполнение CRUD операций через Spring JDBC
Введение в ORM и Spring Data JPA
@Entity, @Table, @Id
@Column, @GeneratedValue, @ManyToOne
@OneToOne, @ManyToMany, @JoinColumn, @Lob, @Query, @Modifying, @EnableJpaRepositories
@Embeddable, @Embedded, @ElementCollection, @Inheritance, @Cacheable, @Lock, @EntityListeners, @SQLInsert, @SQLUpdate, @SQLDelete
Сущности в JPA
Репозитории в Spring Data: интерфейс CrudRepository и JpaRepository
Создание методов для поиска данных в Spring Data JPA
Транзакции в Spring
@Transactional
Уровни изоляции транзакций и виды проблем
Управление транзакциями вручную
Rollback и Commit транзакций
Rollback с использованием @Transactional
Исключения в транзакциях
Оптимизация работы с транзакциями
Нюансы работы с транзакциями в Spring

#Contents
Оглавление часть 4. Spring продолжение

——SPRING CACHE——
Введение в кеширование в Spring
Аннотации @Cacheable и @CacheEvict
Виды кеша в Spring и настройки конфигурации для Redis, Ehcache и Caffeine
Примеры использования кеша на примере Caffeine и Redis

——SPRING AOP——
Основы аспектно-ориентированного программирования (AOP) в Spring
Зачем нужно AOP?
Понятия Joinpoint, Pointcut, Advice
Создание простого аспекта
Аннотации @Before, @After, @Around
Примеры аспектов
Pointcut Expressions
Настройка AOP через XML и аннотации
Практическое использование AOP для логирования
Проверка авторизации для выполнения методов
Транзакционный менеджмент с помощью AOP
Все аннотации AOP и их использование

——SPRING SECURITY——
Введение в Spring Security
Основные принципы безопасности
Spring Security и его интеграция в проект
Аннотации используемые в Spring Security
Аутентификация и Авторизация в Spring Security
Проверка подлинности пользователя в Spring Security
OAuth2 Authentication
Использование базы данных для хранения пользователей в Spring Security
Настройка ролей и прав доступа в Spring Security
JWT (JSON Web Token)
Внедрение JWT-аутентификации в Spring Security
Обработка исключений в Spring Security
Настройка кастомных страниц ошибок в Spring Security

——REST——
REST и его архитектура
Принципы построения RESTful API
Форматы данных: JSON и XML
Настройка сериализации данных в Spring
Работа с HTTP-методами в Spring: GET, POST, PUT, DELETE
Создание CRUD API в Spring
Пагинация и фильтрация данных в REST API с использованием Spring
Обработка ошибок в REST API с использованием Spring Boot
Микросервисы в контексте Spring
Компоненты микросервисной архитектуры

——SPRING TEST——
Введение в тестирование в Spring
Аннотации JUnit 5
Продвинутые аннотации JUnit 5
Введение в Mockito
Проверка вызовов методов с помощью verify в Mockito
Аргумент-матчеры и частичное мокирование
Всё о thenReturn, thenThrow и thenAnswer в Mockito
Тестирование Spring компонентов
Интеграционные тесты с использованием базы данных
Тестирование веб-приложений в Spring
Написание тестов для CRUD REST API
Основы тестирования взаимодействия с базами данных в Spring
Нюансы и продвинутые сценарии тестирования с PostgreSQL
Тестирование сложных сценариев в Spring
Лучшие практики, советы и нюансы тестирования в Spring


——LOMBOK——
Введение в Lombok и базовые аннотации
Lombok, базовые аннотации
Аннотации для конструкторов
Аннотации для управления состоянием
Аннотации для логирования
Аннотации для работы с исключениями
Аннотации для работы с синхронизацией
Аннотации для работы с данными — @Value и @With
Создание кастомных аннотаций с использованием Lombok
Аннотации Lombok для работы с ресурсами, делегированием и утилитарными классами
Продвинутые аннотации Lombok и лучшие практики
Лучшие практики использования Lombok

#Contents