prinstonsam / topjava

Java Enterprise: Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Java Enterprise Online Project

Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей с использованием наиболее популярных инструментов и технологий Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), datatables, jQuery + plugins, Java 8 Stream and Time API и хранением в базах данных Postgresql и HSQLDB.

topjava_structure

Когда вы слышите что-то, вы забываете это.
Когда вы видите что-то, вы запоминаете это.
Но только когда вы начинаете делать это,
вы начинаете понимать это

Старинная китайская поговорка

Вводное занятие

Spring Pet-Clinic

Инструкция по шагам (из видео):

hw Домашнее задание HW0

Реализовать метод UserMealsUtil.getFilteredWithExceeded:
-  должны возвращаться только записи между startTime и endTime 
-  поле UserMealWithExceed.exceed должно показывать, 
                                     превышает ли сумма калорий за весь день параметра метода caloriesPerDay  
        
Т.е UserMealWithExceed - это запись одной еды, но поле exceeded будет одинаково для всех записей за этот день.
    
- Проверте результат выполнения ДЗ (можно проверить логику в http://topjava.herokuapp.com , список еды)
- Оцените Time complexity вашего алгоритма, если он O(N*N)- попробуйте сделать O(N).

Optional (Java 8 Stream API)

Сделать реализация через Java 8 Stream API. Заменяйте forEach оператором stream.map(..)

error Замечания к HW0

  • Код проекта менять можно! Одна из распространенных ошибок как в тестовых заданиях на собеседовании, так и при работе на проекте, что ничего нельзя менять. Конечно при правках в рабочем проекте обязятельно нужно проконсультироваться/проревьюится у авторов кода (находится по истории VCS)
  • Наследовать UserMealWithExceed от UserMeal я не буду, т.к. это разные сущности: Transfer Object и Entity. Мы будет их проходить на 2м уроке.
  • Правильная реализация должна быть простой и красивой, можно сделать 2-мя способами: через стримы и через циклы. Сложность должна быть O(N), т.е. без вложенных стримов и циклов.
  • При реализации через циклы посмотрите в Map на методы getOrDefault или merge
  • При реализации через Stream заменяйте forEach оператором stream.map(..)
  • Объявляйте переменные непосредственно перед использованием (если возможно - сразу с инициализацией). При объявлении коллекций используйте тип переменной - интерфейс (Map, List, ..)
  • Если IDEA предлагает оптимизацию (желтым подчеркивает), нарпимер заменить лямбду на метод-референс, соглашайтесь (Alt+Enter)
  • Пользуйтесь форматированием кода в IDEA: Alt+Ctrl+L
  • Перед check-in проверяйте чендж-лист (курсор на файл и Ctrl+D): не оставляйте в коде ничего лишнего (закомментированный код, TODO и пр.). Если файл не меняется (например только пробелы или переводы строк), не надо его чекинить, делайте ему revert (Git -> Revert / Ctrl+Alt+Z).
  • System.out.println нельзя делать нигде, кроме как в main. Позже введем логирование.
  • Результаты, возвращаемые UserMealsUtil.getFilteredWithExceeded мы будем использовать в нашем приложении для фильтрации по времени и отображения еды правильным цветом.
  • Обращайте внимание на комментарии к вашим коммитам в git. Они должны быть короткие и информативные (лучше на english)

Полезные ресурсы

ВНИМАНИЕ: основы JavaSсript необходимы для понимания проекта, начиная с 8-го занятия!

Все остальное - опционально.

HTML, JavaScript, CSS

Java (базовые вещи)

Туториалы, разное

Что нужно знать о бэкенде новичку в веб-разработке Туториалы: Spring Framework, Hibernate, Java Core, JDBC

Сервлеты

JDBC, SQL

Разное

Книги

About

Java Enterprise: Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery


Languages

Language:Java 100.0%