Java programming tasks for institute
Имплементировать интерфейс Comparator, сравнивающий две строки по сумме всех чисел, представленных в строке.
Сортировка по возрасту в обратном порядке, фильтрация по имени «начинается с А», сортировка по дате рождения, расчет среднего веса.
Создать свои потокобезопасные имплементацииинтерфейсов. Set с использованием Semaphore, List сиспользованием ключевого слова synchronized.
Реализовать собственную имплементацию ExecutorService с единственным параметром конструктора – количеством потоков.
Реализовать паттерн Singleton как минимум 3-мя способами.
Написать реализацию паттернов «Фабричный метод», «Абстрактная фабрика», «Строитель», «Прототип».
Написать реализацию паттернов «Фасад», «Легковес».
Написать реализацию паттернов «Снимок», «Наблюдатель».
Создать приложение, которое выводит какое-то сообщение в консоль. Создать Gradle Task, который создает jar-файл приложения, переносит его в отдельную папку, в которой хранится Dockerfile для jar, а затем создает Docker контейнер из данного jar-файла и запускает его.
Создать приложение, в котором создается ApplicationContext и из него берётся бин с названием, переданным в качестве аргумента к приложению, и вызывается метод интерфейса, который он имплементирует. Нужно создать по одному бину для каждого класса, определить им название. Проверить, что вызывается при вводе названия каждого из бинов. Интерфейс Musician с методом doMusic(), его имплементации: Drummer, Guitarist, Trombonist.
Создать приложение с использованием Spring Boot Starter Initializr с такими зависимостями:
- Spring Web
- Lombok
- Validation
- Spring boot Actuator
Запустить приложение и удостовериться, что не появилось никаких ошибок. Добавить все эндпоинты в Actuator, сделать HTTP-запрос на проверку состояния приложения. Собрать jar-файл приложения, запустить и проверить состояние при помощи REST-запроса.
Создать приложение, которое при запуске берет данные из одного файла, хеширует, а при остановке приложения удаляет исходный файл, оставляя только файл с захешированными данными. Названия первого и второго файла передаются в качестве аргументов при запуске. При отсутствии первого файла создает второй файл и записывает в него строку null. Реализовать с использованием аннотаций PostConstruct, PreDestroy.
Создать файл application.yml в папке resources, добавитьв него такие свойства:
- student.name - имя студента
- student.last_name - фамилия студента
- student.group - группа студента
При запуске приложения вывести данные свойства в консоль при помощи интерфейса Environment или аннотации Value.