Домашние задания курса https://fintech.tinkoff.ru/academy/java (нынешний аналог)
Студент: Локосов Даниил Дмитриевич
Требуется написать консольную версию игры Виселица.
Слово загадывается случайным образом из заранее заданного словаря.
- Java Core
Требуется реализовать:
- 1 или более алгоритмов генерации лабиринта (реализован алгоритм Прима и клеточный автомат)
- 1 или более алгоритмов решения лабиринта (реализован поиск в глубину и ширину)
- красивую печать в консоль (pretty print) лабиринта и маршрута из точки А в Б
- JCF
- Stream API
На вход программе через аргументы командной строки задаётся:
- путь к одному или нескольким NGINX лог-файлам в виде локального шаблона или URL
- опциональные временные параметры from и to в формате ISO8601
- необязательный аргумент формата вывода результата:markdown или adoc
Программа должна выполнять следующие задачи:
- Подсчитывать общее количество запросов
- Определять наиболее часто запрашиваемые ресурсы
- Определять наиболее часто встречающиеся коды ответа
- Рассчитывать средний размер ответа сервера
- Picocli
- HttpClient
- RegEx
- JCF
Задача реализовать алгоритм и сделать его многопоточным.
Функция отрисовки должна принимать все конфигурируемые параметры как аргументы, например, размер изображения или
коэффициенты трансформаций.



- Concurrency
- ImageIO
В этом задании потребуется реализовать и сравнить производительность 4 способов обращения к методу Student#name()(или любого другого класса/интерфейса):
- Прямой доступ
- java.lang.reflect.Method
- java.lang.invoke.MethodHandles
- java.lang.invoke.LambdaMetafactory
Задание состоит в том, чтобы написать набор JMH-тестов для каждого сценария и сравнить, насколько медленнее работает каждый из способов по сравнению с прямым доступом.
Вид доступа | Счёт | Единицы измерения | Во сколько раз хуже |
---|---|---|---|
Прямой | 0,517 | ns/op | 1 |
LambdaMetafactory | 0,772 | ns/op | 1,493230174 |
MethodHandles | 3,42 | ns/op | 6,615087041 |
Method | 6,175 | ns/op | 11,94390716 |
- JMH
- Reflection API