Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

NotificationsYou must be signed in to change notification settings

java-code-help/topjava

 
 

Repository files navigation

Разработка полнофункционального 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

ВНИМАНИЕ: выбирайте для проекта простой пусть без пробелов и русских букв, например (Windows)c:\projects\topjava\. Иначе впоследствии будут проблемы

Проект постоянно улучшается, поэтому видео иногда отличается от кода проекта. Изменения указываю после видео: вUserMeals/UserMealWithExceed поля изменились наprivate

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

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

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

ВНИМАНИЕ: варианты Optional делайте вUserMealsUtil в одной ветке в разных методах. Проще делать, проще проверять

Optional (Java 8 Stream API)

Сделать реализацию через Java 8 Stream API.

Optional 2 (+5 бонусов)

Сделать реализацию со сложностью O(N):- циклом за 1 проход по List<UserMeal>. Обратите внимание на п.13 замечаний- через Stream API за 1 проход по исходному списку Stream<UserMeal> meals  - возможно дополнительные проходы по частям списка  - нельзя использовать внешние коллекции, не являющиеся частью коллектора или результатами работы stream

Замечания по использованию Stream API:

При использовании Stream API производительность улучшиться только на больших задачах, где возможно распараллеливание.Еще - просто так запустить и померять скорость JVM нельзя (как минимум дать прогреться и запустить очень большое число раз). Лучше использовать какие-нибудь бенчмарки, напримерJMH, который мы юзаем на другом проекте (Mastejava).

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

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

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

ВНИМАНИЕ:

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

HTML, JavaScript, CSS

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

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

Сервлеты

JDBC, SQL

Разное

Книги

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java100.0%

[8]ページ先頭

©2009-2025 Movatter.jp