Skip to content

Latest commit

 

History

History
144 lines (102 loc) · 6.67 KB

File metadata and controls

144 lines (102 loc) · 6.67 KB

ДЗ-01

Сборка и запуск проекта Создать проект под управлением maven, настроить сборку проекта из командной строки командой mvn install. Выложить проект на github. Создать ветку "obfuscation" изменить в ней pom.xml так чтобы сборка содержала стадию обфускации байткода.

ДЗ-02

Измерение памяти Написать стенд для определения размера объекта. Определить размер пустой строки и пустых контейнеров. Определить рост размера контейнера от количества элементов в нем.

ДЗ-03

MyArrayList Написать свою реализацию ArrayList на основе массива. Проверить, что на ней работают методы java.util.Collections

ДЗ-04

Измерение активности GC Написать приложение которое "подтекает" по памяти. Логгировать активность GC (количетство сборок в минуту, время паузы в минуту). Написать скрипт, который проведет измерение активности GC для разных параметров GC.

ДЗ-05

Тестовый фреймворк на аннотациях Написать свой тестовый фреймворк. Поддержать аннотации @Test, @Before, @After. Запускать вызовом статического метода с

  1. именем класса с тестами,
  2. именем package в котором надо найти и запустить тесты

ДЗ-06: ATM

Написать эмулятор АТМ Объект класса АТМ должен уметь:

  • принимать банкноты разных номиналов (на каждый номинал должна быть своя ячейка)
  • выдавать запрошенную сумму минимальным количеством банкнот или ошибку если сумму нельзя выдать
  • выдавать сумму остатка денежных средств

ДЗ-07: ATM Department

Написать приложение ATM Department:

  • Приложение может содержать несколько ATM
  • Departmant может собирать сумму остатков со всех ATM
  • Department может инициировать событие – восстановить состояние всех ATM до начального. (начальные состояния у разных ATM могут быть разными)

ДЗ-08: JSON object writer

Напишите свой json object writer (object to json string) аналогичный gson на основе javax.json или simple-json и Reflection. Поддержите массивы объектов и примитивных типов, и коллекции из стандартный библиотерки.

ДЗ-09: myORM

Создайте в базе таблицу с полями: id bigint(20) NOT NULL auto_increment name varchar(255) age int(3)

Создайте абстрактный класс DataSet. Поместите long id в DataSet. Добавьте класс UserDataSet (с полями, которые соответствуют таблице) унаследуйте его от DataSet.

Напишите Executor, который сохраняет наследников DataSet в базу и читает их из базы по id и классу.

<T extends DataSet> void save(T user){…}
<T extends DataSet> T load(long id, Class<T> clazz){…}

ДЗ-10: Hibernate ORM

На основе предыдущего ДЗ (myORM):

  1. Оформить решение в виде DBService (interface DBService, class DBServiceImpl, UsersDAO, UsersDataSet, Executor)

  2. Не меняя интерфейс DBSerivice сделать DBServiceHibernateImpl на Hibernate.

  3. Добавить в UsersDataSet поля: адресс (OneToOne) class AddressDataSet{ private String street; } и телефон* (OneToMany) class PhoneDataSet{ private String number; } Добавить соответствущие датасеты и DAO.

  4. Поддержать работу из пункта (3) в myORM


ДЗ-11: my cache engine

Напишите свой cache engine с soft references. Добавьте кэширование в DBService из заданий myORM или Hibernate ORM

ДЗ-12: Веб сервер

Встроить веб сервер в приложение из ДЗ-11. Сделать админскую страницу, на которой админ должен авторизоваться и получить доступ к параметрам и состоянию кэша.

ДЗ-13: WAR

Собрать war для приложения из ДЗ-12. Создавать кэш и DBService как Spring beans, передавать (inject) их в сервлеты. Запустить веб приложение во внешнем веб сервере.

ДЗ-14: Многопоточная сортировка

Написать приложение, которое сортирует массив чисел в 4 потоках с использованием библиотеки или без нее.


ДЗ-15: MessageSystem

Добавить систему обмена сообщениями в веб сервер из ДЗ-13. Пересылать сообщения из вебсокета в DBService и обратно. Организовать структуру пакетов без циклических зависимостей.

ДЗ-16: MessageServer

Cервер из ДЗ-15 разделить на три приложения:

  • MessageServer
  • Frontend
  • DBServer

Запускать Frontend и DBServer из MessageServer. Сделать MessageServer сокет-сервером, Frontend и DBServer клиентами. Пересылать сообщения с Frontend на DBService через MessageServer. Запустить приложение с двумя фронтендами (на разных портах)* и двумя датабазными серверами.

  • если у вас запуск веб приложения в контейнере, то MessageServer может копировать root.war в контейнеры при старте