From a25826a72997abeffa261f84d881b6902be257f0 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Mon, 5 Jun 2017 03:29:38 +0300 Subject: [PATCH 001/393] Add lesson01 --- lesson/lesson01.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 lesson/lesson01.md diff --git a/lesson/lesson01.md b/lesson/lesson01.md new file mode 100644 index 00000000..6d20351d --- /dev/null +++ b/lesson/lesson01.md @@ -0,0 +1,79 @@ + +# Первое занятие + +## [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) +- [Книга: Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) +- [Размеры проектов в количестве строк кода](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) +- [Соглашения по именованию](http://www.intuit.ru/studies/courses/16/16/lecture/27113?page=4) +- [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) + - **Доступ из России через прокси (например [friGate CDN](https://chrome.google.com/webstore/detail/frigate-cdn-smooth-access/mbacbcfdfaapbcnlnbmciiaakomhkbkb))** +- [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) + +## [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) +- [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) +- [Типичный тест SQL на собеседованиях](https://habrahabr.ru/post/181033/) +- **Обновление!!** [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) + - [Java Tools and Technologies Landscape for 2014](http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014) +- Дополнительно: + - [Автоматизированные сборки в Java](http://www.quizful.net/post/automated-builds-java) + +## [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) +- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) +- [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) +- [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) + +![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) + +- [Java Microbenchmark JMH](https://github.com/JavaOPs/masterjava#Занятие-2) используем на курсе Masterjava +- [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) +- [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](http://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition) (русский), [EE](http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) ([русский](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition)) +- Дополнительно: + - [Java version and vendor data analyzed](https://plumbr.eu/blog/java/java-version-and-vendor-data-analyzed-2016-edition) + - [Most Popular Java EE Servers](https://dzone.com/articles/most-popular-java-ee-servers-2016-edition) + - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc/) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) Системы управления версиями. Git. +- **Wiki по ведению проекта в Git** +- Система управления версиями. VCS/DVSC. + +![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) + +- Ресурсы: + - Интерактивная Git обучалка + - Еще одна интерактивная обучалка, по русски + - Книга Git + - Working with remote repositories + - Видео по обучению Git + - Git Overview + - Видеокурс по Git + - [Основы Git за 20 минут](https://www.youtube.com/watch?v=TMeZGvtQnT8) + + +- [Популярность разный VSC](http://www.netinstructions.com/the-case-for-git/) +- Книга по Git + +## Настройка окружения +- Idea Wiki (поставить кодировку UTF-8, поменять фонт по умолчанию на DejaVu) +- git занести в переменная окружения PATH, перезапустить cmd +- Создайте локальную копию нашего проекта: `git clone https://github.com/School-IT-Programm/resume-storage.git` +- Перейти в каталог проекта: `cd resume-storage` +- `git remote -v` +- `git remote set-url origin https://github.com/School-IT-Programm/resume-storage.git` - настройка pull +- `git remote set-url --push origin https://github.com/[YouGitHub/YourRepo].git` - настройка push +- `git push -u origin master` + +## Насторойка проекта. Debug +- Отладчик IntelliJ IDEA +- Эффективная работа с кодом в IntelliJ IDEA + +## Домашнее задание +- Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок null), чтобы не перебирать каждый раз все 10000 элементов. +``` +Хранеие резюме в storage (от 0 до size-1 элементов null нет): + +r1, r2, r3,..., rn, null, null,..., null +<---- size -----> +<---- storage.length ---------------> +``` +- Посмотреть на класс `Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. +- Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка. From c10fa1a2514f29abbbecf794215712dd76e60bde Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Mon, 5 Jun 2017 03:37:07 +0300 Subject: [PATCH 002/393] Update lesson01 --- lesson/lesson01.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 6d20351d..b58d39e4 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,7 +1,7 @@ # Первое занятие -## [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Книга: Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) - [Размеры проектов в количестве строк кода](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по именованию](http://www.intuit.ru/studies/courses/16/16/lecture/27113?page=4) @@ -9,7 +9,7 @@ - **Доступ из России через прокси (например [friGate CDN](https://chrome.google.com/webstore/detail/frigate-cdn-smooth-access/mbacbcfdfaapbcnlnbmciiaakomhkbkb))** - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) -## [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) - [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) - [Типичный тест SQL на собеседованиях](https://habrahabr.ru/post/181033/) - **Обновление!!** [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) @@ -17,7 +17,7 @@ - Дополнительно: - [Автоматизированные сборки в Java](http://www.quizful.net/post/automated-builds-java) -## [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) - [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) - [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) @@ -32,7 +32,7 @@ - [Most Popular Java EE Servers](https://dzone.com/articles/most-popular-java-ee-servers-2016-edition) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) Системы управления версиями. Git. +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) - **Wiki по ведению проекта в Git** - Система управления версиями. VCS/DVSC. @@ -47,19 +47,17 @@ - Git Overview - Видеокурс по Git - [Основы Git за 20 минут](https://www.youtube.com/watch?v=TMeZGvtQnT8) - - - [Популярность разный VSC](http://www.netinstructions.com/the-case-for-git/) - Книга по Git ## Настройка окружения - Idea Wiki (поставить кодировку UTF-8, поменять фонт по умолчанию на DejaVu) - git занести в переменная окружения PATH, перезапустить cmd -- Создайте локальную копию нашего проекта: `git clone https://github.com/School-IT-Programm/resume-storage.git` -- Перейти в каталог проекта: `cd resume-storage` +- Создайте локальную копию нашего проекта: `git clone https://github.com/JavaWebinar/basejava.git` +- Перейти в каталог проекта: `cd basejava` - `git remote -v` -- `git remote set-url origin https://github.com/School-IT-Programm/resume-storage.git` - настройка pull -- `git remote set-url --push origin https://github.com/[YouGitHub/YourRepo].git` - настройка push +- `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull +- `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push - `git push -u origin master` ## Насторойка проекта. Debug From 210f0e20a4eef120ea550b696eb11de99db2890f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 10:06:56 -0700 Subject: [PATCH 003/393] Create lesson02.md --- lesson/lesson02.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lesson/lesson02.md diff --git a/lesson/lesson02.md b/lesson/lesson02.md new file mode 100644 index 00000000..4971aff0 --- /dev/null +++ b/lesson/lesson02.md @@ -0,0 +1,41 @@ + +# Второе занятие + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) +- Методология процедурно-ориентированного и объектно-ориентированного программирования +- Объекты (cостояние, поведение, уникальность) +- Классы. Инкапсуляция. Наследование. Полиморфизм. +- Объектно-ориентированное программирование (перевод статьи) +- Типы отношений между классами Наследование, агрегация, композиция, ассоциация. +- Достоинства/Недостатки ООП. Библиотеки vs фреймворки. +- Дополнительно: + - Что такое ООП и с чем его едят? + - Объектно ориентированное программирование + - Николай Алименков — Парадигмы ООП + - Концепции объектно-ориентированного программирования + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) + - JVM изнутри - оптимизация и профилирование. + - Stack and Heap + - Дополнительно: + - Из каких частей состоит память java процесса. + - Permanent область памяти + - Java thread stack + - Размер Java объектов + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) +[см. коммит Introduce package and encapsulation](https://github.com/truefirefox/basejava/commit/f591f2d7bd1fb26deff3022d1514ce744df7dca4) + - Типы данных + - Классы- оберки + - Ссылочные типы + - Пакеты + - Модификаторы доступа. Область Видимости. + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) +> Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size-1] = null` + +- Прочитать Соглашения по именованию. +- Реализовать `ArrayStorage.update` +- Сделать проверки: в `update/delete/get` - резюме есть в storage, в `save`- нет в storage: `System.out.println("Resume ...")`. +- Сделать в save проверку на переполнениe: `System.out.println("...")`. +- Избавится от дублирования в коде `ArrayStorage` From 664c52b6df2cd99732e4bd55c7c52f76fd4ff899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 10:09:33 -0700 Subject: [PATCH 004/393] update lesson02.md --- lesson/lesson02.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 4971aff0..587c6fef 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -5,7 +5,7 @@ - Методология процедурно-ориентированного и объектно-ориентированного программирования - Объекты (cостояние, поведение, уникальность) - Классы. Инкапсуляция. Наследование. Полиморфизм. -- Объектно-ориентированное программирование (перевод статьи) +- Объектно-ориентированное программирование (перевод статьи) - Типы отношений между классами Наследование, агрегация, композиция, ассоциация. - Достоинства/Недостатки ООП. Библиотеки vs фреймворки. - Дополнительно: @@ -15,7 +15,7 @@ - Концепции объектно-ориентированного программирования ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - - JVM изнутри - оптимизация и профилирование. + - JVM изнутри - оптимизация и профилирование. - Stack and Heap - Дополнительно: - Из каких частей состоит память java процесса. From 1bb034b1492ceec54f399d0fab13ec909188c66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 10:58:52 -0700 Subject: [PATCH 005/393] add commit to lesson02 --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 587c6fef..997ec748 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -24,7 +24,7 @@ - Размер Java объектов ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) -[см. коммит Introduce package and encapsulation](https://github.com/truefirefox/basejava/commit/f591f2d7bd1fb26deff3022d1514ce744df7dca4) +[см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) - Типы данных - Классы- оберки - Ссылочные типы From 479a959f76d9cfe5a905dd8ebf75395fa43a4ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 22:43:32 -0700 Subject: [PATCH 006/393] Create lesson03.md --- lesson03.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lesson03.md diff --git a/lesson03.md b/lesson03.md new file mode 100644 index 00000000..8cf6f785 --- /dev/null +++ b/lesson03.md @@ -0,0 +1,27 @@ + +# Третье занятие + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpdVRBTlBOUUtmNUE) +[см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) +[см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) +[см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) +- static +- Object. Контракт equals/hashCode +- Интерфейсы +- Полиморфизм, abstract + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) +- Алгоритмы и структуры данных для начинающих: сложность алгоритмов +- Time complexity +- Временная сложность алгоритма +- Вычислительная сложность + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) +[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) +- Шаблонный метод + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) +- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). +- Сделать проверку `ArrayStorage.update` From e73b35a02c2b90cd300769662cc6b51ed6f6123c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 22:45:03 -0700 Subject: [PATCH 007/393] Create lesson03.md --- lesson/lesson03.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lesson/lesson03.md diff --git a/lesson/lesson03.md b/lesson/lesson03.md new file mode 100644 index 00000000..8cf6f785 --- /dev/null +++ b/lesson/lesson03.md @@ -0,0 +1,27 @@ + +# Третье занятие + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpdVRBTlBOUUtmNUE) +[см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) +[см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) +[см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) +- static +- Object. Контракт equals/hashCode +- Интерфейсы +- Полиморфизм, abstract + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) +- Алгоритмы и структуры данных для начинающих: сложность алгоритмов +- Time complexity +- Временная сложность алгоритма +- Вычислительная сложность + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) +[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) +- Шаблонный метод + +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) +- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). +- Сделать проверку `ArrayStorage.update` From 5a92a72267c96956be700ec4c794c4c7b7b3c0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 22:45:16 -0700 Subject: [PATCH 008/393] Delete lesson03.md --- lesson03.md | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 lesson03.md diff --git a/lesson03.md b/lesson03.md deleted file mode 100644 index 8cf6f785..00000000 --- a/lesson03.md +++ /dev/null @@ -1,27 +0,0 @@ - -# Третье занятие - -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpdVRBTlBOUUtmNUE) -[см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) - -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) -[см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) -[см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) -- static -- Object. Контракт equals/hashCode -- Интерфейсы -- Полиморфизм, abstract - -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) -- Алгоритмы и структуры данных для начинающих: сложность алгоритмов -- Time complexity -- Временная сложность алгоритма -- Вычислительная сложность - -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) -[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) -- Шаблонный метод - -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). -- Сделать проверку `ArrayStorage.update` From 7ae837aa6b51b13112f7472e0eae89577cc04d3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 8 Jun 2017 22:46:05 -0700 Subject: [PATCH 009/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 8cf6f785..9994925a 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -6,6 +6,7 @@ ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) [см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) + [см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) - static - Object. Контракт equals/hashCode From f9e0b8727ae06213508cac31a9854ee86bbe5d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 15 Jun 2017 20:20:56 -0700 Subject: [PATCH 010/393] Create lesson04.md --- lesson/lesson04.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lesson/lesson04.md diff --git a/lesson/lesson04.md b/lesson/lesson04.md new file mode 100644 index 00000000..c67bbee0 --- /dev/null +++ b/lesson/lesson04.md @@ -0,0 +1,27 @@ + +# Четвертое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-3](https://drive.google.com/open?id=0B_4NpoQW1xfpQXVMb2xjRXJPdUU) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Работа со строками](https://drive.google.com/open?id=0B_4NpoQW1xfpSWVLYk51M2JpRnM) +- Строки в Java. Кодировка. +- Управление строками, функции для работы со строками в Java. +- StringBuilder vs StringBuffer +- String literal pool + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) + - Исключения (Exceptions). + - "Java. Эффективное программирование" Джошуа Блох: Исключения. + - Конструктор. this, super + +![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Reflection. Аннотации. Модульное тестирование](https://drive.google.com/open?id=0B_4NpoQW1xfpT0dGZWlJbnN3bU0) + - Аннотации + - Введение в Java Reflection API + - Модульное тестирование JUnit 4 + - Тестирование с помощью JUnit (Test Case) + +## Домашнее задание +Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest`. +В `MainReflection` сделать вызов метода `toString` через отражение. From aaa4c1ae3dcd840bb2e4f3d257adca959f63e5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 16 Jun 2017 00:15:29 -0700 Subject: [PATCH 011/393] Update lesson04.md --- lesson/lesson04.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index c67bbee0..f418c63c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -2,14 +2,17 @@ # Четвертое занятие ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-3](https://drive.google.com/open?id=0B_4NpoQW1xfpQXVMb2xjRXJPdUU) +[см. коммит lesson04 HW03](https://github.com/JavaWebinar/basejava/tree/afc0cc5111434375f9da00e225ed7cbb15bbd4b7/src/ru/javawebinar/basejava/storage) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Работа со строками](https://drive.google.com/open?id=0B_4NpoQW1xfpSWVLYk51M2JpRnM) +[см. коммит Lesson04 String](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java) - Строки в Java. Кодировка. - Управление строками, функции для работы со строками в Java. - StringBuilder vs StringBuffer - String literal pool ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) +[см. коммит Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) - Исключения (Exceptions). - "Java. Эффективное программирование" Джошуа Блох: Исключения. - Конструктор. this, super @@ -17,6 +20,7 @@ ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Reflection. Аннотации. Модульное тестирование](https://drive.google.com/open?id=0B_4NpoQW1xfpT0dGZWlJbnN3bU0) +[см. коммит Lesson04 Reflection and JUnit](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) - Аннотации - Введение в Java Reflection API - Модульное тестирование JUnit 4 From 2c954dfb57fd2fa44ad2b5a62f4c5b119efb7ef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 22 Jun 2017 01:30:57 +0300 Subject: [PATCH 012/393] Update lesson01.md --- lesson/lesson01.md | 58 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index b58d39e4..2da44afd 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,6 +1,17 @@ - # Первое занятие +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [11.07 в 20.00 (GMT+3) будет вступительный вебинар-презентация](https://www.youtube.com/watch?v=Upz4RWvDGCM) +- Презентация проекта обучения +- Настройка окружения и проекта в IntelliJ IDEA +- Ответы на вопросы + +## Необходимо: +- Установить JDK8 (выбрать Accept License Agreement) +- Установить систему управления версиями Git (опции по умолчанию) +- Создать аккаунт на GitHub +- Установить IntelliJ IDEA +> Выбирать Ultimate, 30 days trial (нам понадобится SQL, Tomcat, JSP). Ключ на 6 месяцев выдается на первом занятии. + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Книга: Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) - [Размеры проектов в количестве строк кода](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) @@ -33,8 +44,18 @@ - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) -- **Wiki по ведению проекта в Git** -- Система управления версиями. VCS/DVSC. +### Настройка проекта +- Создать на GitHub репозиторий `basejava` +- git занести в переменная окружения PATH, перезапустить cmd +- Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` +- Перейти в каталог проекта: `cd basejava` +- Настроить git в локальном проекте на свой проект в GitHub: + - `git remote -v` + - `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull + - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push + - `git push -u origin master` + +### Система управления версиями. VCS/DVSC ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) @@ -50,28 +71,31 @@ - [Популярность разный VSC](http://www.netinstructions.com/the-case-for-git/) - Книга по Git -## Настройка окружения -- Idea Wiki (поставить кодировку UTF-8, поменять фонт по умолчанию на DejaVu) -- git занести в переменная окружения PATH, перезапустить cmd -- Создайте локальную копию нашего проекта: `git clone https://github.com/JavaWebinar/basejava.git` -- Перейти в каталог проекта: `cd basejava` -- `git remote -v` -- `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull -- `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push -- `git push -u origin master` +## Домашнее задание HW1 +- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, в котором находится ваш репозиторий: + +![newproject](https://user-images.githubusercontent.com/13649199/27245917-c66f0b5a-52f6-11e7-98dc-f88d0198b5c4.png) + +![next](https://user-images.githubusercontent.com/13649199/27245921-c88b4570-52f6-11e7-83a3-e52627468be7.png) + +![finish](https://user-images.githubusercontent.com/13649199/27245924-cab3618e-52f6-11e7-9655-4293149b4126.png) -## Насторойка проекта. Debug -- Отладчик IntelliJ IDEA -- Эффективная работа с кодом в IntelliJ IDEA +- Реализуйте класс `ArrayStorage`: хранение резюме на основе массива (методы `clear, get, save, delete, getAll, size`). +- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()`: в IDEA слева на полях зеленая стрелка. +- Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()`. +- Дополнительные материалы по IntelliJ IDEA + - Idea Wiki (поставить кодировку UTF-8, поменять фонт по умолчанию на DejaVu) + - Отладчик IntelliJ IDEA + - Эффективная работа с кодом в IntelliJ IDEA -## Домашнее задание +### Optional - Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок null), чтобы не перебирать каждый раз все 10000 элементов. ``` Хранеие резюме в storage (от 0 до size-1 элементов null нет): r1, r2, r3,..., rn, null, null,..., null <---- size -----> -<---- storage.length ---------------> +<---- storage.length (10000)----------> ``` - Посмотреть на класс `Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. - Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка. From 4b3e142b78fa9459846359b3406c946c8cf35f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 24 Jun 2017 19:56:31 +0300 Subject: [PATCH 013/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 9994925a..04ea8f0e 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -1,7 +1,7 @@ # Третье занятие -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpdVRBTlBOUUtmNUE) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) [см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) From 0503a038dfe80fd8a10857ca0c848dc8476e8c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 25 Jun 2017 12:22:57 +0300 Subject: [PATCH 014/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index f418c63c..3d0f267c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -22,7 +22,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Reflection. Аннотации. Модульное тестирование](https://drive.google.com/open?id=0B_4NpoQW1xfpT0dGZWlJbnN3bU0) [см. коммит Lesson04 Reflection and JUnit](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) - Аннотации - - Введение в Java Reflection API + - Reflection (Рефлексия) — основы. В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON. - Модульное тестирование JUnit 4 - Тестирование с помощью JUnit (Test Case) From 4fb91be25a3a1240a9fcfd86319c5725c8bac200 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Mon, 26 Jun 2017 13:54:22 -0700 Subject: [PATCH 015/393] Lesson05 --- lesson/lesson05.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lesson/lesson05.md diff --git a/lesson/lesson05.md b/lesson/lesson05.md new file mode 100644 index 00000000..8e5c33d9 --- /dev/null +++ b/lesson/lesson05.md @@ -0,0 +1,19 @@ + +# Пятое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-4](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) +[см. коммит lesson05 HW04](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/open?id=0B_4NpoQW1xfpVWxFbDFFRktSN1U) +[см. коммит Lesson05 Static initializer block and Collections](https://github.com/JavaWebinar/basejava/tree/6def59a3c6e1a20804d9414f95240f2b973a6ba6) + +- Контейнеры/коллекции. +- List, Set, Map, Queue, Iterator, ListIterator +- Структуры данных в картинках +- Инициализация полей в Java +- Java собеседование по коллекциям +- [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) +- [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) + +## Домашнее задание +Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage`. Выбор реализации List и Map за вами. From 892d419af2996cc295b2aba3d59f9b53884407ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 26 Jun 2017 14:05:48 -0700 Subject: [PATCH 016/393] Update lesson04.md --- lesson/lesson04.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 3d0f267c..e7b51f31 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -26,6 +26,16 @@ - Модульное тестирование JUnit 4 - Тестирование с помощью JUnit (Test Case) +## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы +> В чём разница между Assert.fail(); и e.printStackTrace();? +Assert.fail(); - если тест дошел до этого места, то он провалился +e.printStackTrace(); - e.printStackTrace() - выводит стактрайс + ## Домашнее задание Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest`. В `MainReflection` сделать вызов метода `toString` через отражение. + +## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 +- SortedArrayStorageTest должен запускаться с SortedArrayStorage +- ArrayStorageTest c ArrayStorage +как вариант, добавить конструктор в AbstractArrayStorageTest, который инициализирует Storage storage,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From 99fd4d0eb511aa66c02b49e96a851dbfb002eed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 26 Jun 2017 14:07:07 -0700 Subject: [PATCH 017/393] Update lesson04.md --- lesson/lesson04.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index e7b51f31..d43b4141 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -28,7 +28,9 @@ ## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы > В чём разница между Assert.fail(); и e.printStackTrace();? + Assert.fail(); - если тест дошел до этого места, то он провалился + e.printStackTrace(); - e.printStackTrace() - выводит стактрайс ## Домашнее задание @@ -38,4 +40,5 @@ e.printStackTrace(); - e.printStackTrace() - выводит стактрайс ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - SortedArrayStorageTest должен запускаться с SortedArrayStorage - ArrayStorageTest c ArrayStorage + как вариант, добавить конструктор в AbstractArrayStorageTest, который инициализирует Storage storage,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From 5336b26e8cf8d0d250981ccd66eaeaf5eeef7dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 26 Jun 2017 14:07:54 -0700 Subject: [PATCH 018/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index d43b4141..e8238602 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -31,7 +31,7 @@ Assert.fail(); - если тест дошел до этого места, то он провалился -e.printStackTrace(); - e.printStackTrace() - выводит стактрайс +e.printStackTrace(); - выводит стактрайс ## Домашнее задание Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest`. From 46ebc4e99c5bbae4cd39945a5f463010b25af134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 26 Jun 2017 15:48:04 -0700 Subject: [PATCH 019/393] Update lesson04.md --- lesson/lesson04.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index e8238602..893c6f9a 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -38,7 +38,7 @@ e.printStackTrace(); - выводит стактрайс В `MainReflection` сделать вызов метода `toString` через отражение. ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 -- SortedArrayStorageTest должен запускаться с SortedArrayStorage -- ArrayStorageTest c ArrayStorage +- `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` +- `ArrayStorageTest` c `ArrayStorage` -как вариант, добавить конструктор в AbstractArrayStorageTest, который инициализирует Storage storage,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем +как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From 00299e13dfaae262b1c7a83bfb5e21eb4ee7d3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 28 Jun 2017 11:19:42 +0300 Subject: [PATCH 020/393] Update lesson05.md --- lesson/lesson05.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 8e5c33d9..eaea4ca1 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -17,3 +17,5 @@ ## Домашнее задание Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage`. Выбор реализации List и Map за вами. +- [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) +> Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. From 330da8022ac68480426b8a3d646d5956bddb0bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 28 Jun 2017 11:23:36 +0300 Subject: [PATCH 021/393] Update lesson05.md --- lesson/lesson05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index eaea4ca1..24d82d51 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -16,6 +16,6 @@ - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) ## Домашнее задание -Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage`. Выбор реализации List и Map за вами. +Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage` (вынести в `AbstractStorage` максимум кода, чтобы не было дублирования). Выбор реализации `List` и `Map` за вами. - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) > Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. From d0137644a10c76d80d5549038145c7960617aca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 30 Jun 2017 11:15:22 -0700 Subject: [PATCH 022/393] Update lesson05.md --- lesson/lesson05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 24d82d51..d47ce008 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -16,6 +16,6 @@ - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) ## Домашнее задание -Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage` (вынести в `AbstractStorage` максимум кода, чтобы не было дублирования). Выбор реализации `List` и `Map` за вами. +Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage` (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов), а именно вынести в `AbstractStorage` максимум кода, чтобы не было дублирования. Выбор реализации `List` и `Map` за вами. - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) > Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. From cf00da4414430a19214f9219c37c47af2bc09ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 30 Jun 2017 16:36:27 -0700 Subject: [PATCH 023/393] Update lesson05.md --- lesson/lesson05.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index d47ce008..faf0f341 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -16,6 +16,8 @@ - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) ## Домашнее задание -Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage` (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов), а именно вынести в `AbstractStorage` максимум кода, чтобы не было дублирования. Выбор реализации `List` и `Map` за вами. +Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage`, а именно вынести в `AbstractStorage` максимум кода, чтобы не было дублирования (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов). + +Выбор реализации `List` и `Map` за вами. - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) > Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. From 6027820d9eedc8c3b9fb900cfbfa6a91b12d8471 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Fri, 30 Jun 2017 18:16:05 -0700 Subject: [PATCH 024/393] Lesson06 --- lesson/lesson06.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lesson/lesson06.md diff --git a/lesson/lesson06.md b/lesson/lesson06.md new file mode 100644 index 00000000..b2d0ffba --- /dev/null +++ b/lesson/lesson06.md @@ -0,0 +1,25 @@ + +# Шестое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-5](https://drive.google.com/open?id=0B_4NpoQW1xfpUFJpRVZvNVVpeDg) +[см. коммит lesson06 HW05](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3) +- Преобразования Integer и int + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы.](https://drive.google.com/open?id=0B_4NpoQW1xfpTk5YeTBYbFE4dTg) +[см. коммит Lesson06 Iterator, Comparator and Inner Classes](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava) +- Iterator / Iterable. +- Вложенные и внутренние классы. Примеры в Collections API: Arrays.asList, ArrayList.iterator +- Локальные и анонимные классы. Comparator + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8.](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) +[см. коммит Lesson06 Lambda](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java) +- Lambda выражения. Default методы для Interface. +- Встроенные функциональные интерфейсы. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) +[см. коммит Lesson06 prepare to HW06](https://github.com/JavaWebinar/basejava/tree/9cbab019ee274b212d8c52a44c93a887175866bc) + +- Сделать рефакторинг тестов: `saveOverflow` должно быть только для Array реализаций. +- Рефакторинг: в конструктор Resume добавить второй параметр `fullName` +- Сделать рефакторинг всех реализаций `Storage`: заменить метод `Resume[] getAll()` на `List getAllSorted()` +- Реализовать до конца `MapUuidStorage`. Подумать что еще может быть search key в реализации на основе Map. From 31bdba3bc488ad5db7e92c4f23c033715ce4478c Mon Sep 17 00:00:00 2001 From: Tanechka Date: Sun, 9 Jul 2017 22:48:42 -0700 Subject: [PATCH 025/393] Lesson07 --- lesson/lesson07.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lesson/lesson07.md diff --git a/lesson/lesson07.md b/lesson/lesson07.md new file mode 100644 index 00000000..51d0d001 --- /dev/null +++ b/lesson/lesson07.md @@ -0,0 +1,56 @@ + +# Седьмое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-6](https://drive.google.com/open?id=0B_4NpoQW1xfpT1BwLUNBanVfd1E) +[см. коммит Lesson07_HW06 test refactoring](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage) +[см. коммит Lesson07_HW06 add fullName](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680) +[см. коммит Lesson07_HW06 getAllSorted](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294) +[см. коммит Lesson07_HW06 mapStorage](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Параметризация. Стирание типов.](https://drive.google.com/open?id=0B_4NpoQW1xfpbXotWEFrYVVGUWc) +[см. коммит Lesson07 generic](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage) + +- Дженерики (Java, обучающая статья) +- Обобщения (Generic) +- Ограничения. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Логирование](https://drive.google.com/open?id=0B_4NpoQW1xfpM1J5NkVqNHd1MlU) +[см. коммит Lesson07 logging](https://github.com/JavaWebinar/basejava/blob/63674b7f246bf6bc4e509cc1241c7b6340477d18/src/ru/javawebinar/basejava/storage/AbstractStorage.java) + +- Log4J (Apache logging) +- Java Logging API - Tutorial +- Логирование в Java / quick start +- Ведение лога приложения +- Java Logging: история кошмара + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглетон, Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) +[см. коммит Lesson07 enum](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava) + +- Одиночка (шаблон проектирования) +- Перечисляемые типы (enum) в Java + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) +Доменный объект + +Cделать объектную модель резюме (диаграмма и классы). Образец резюме (делаем упрощенно) + - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации). + - Схожие по структуре и функциональности сущности делаем одним классом. + - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме. + - В модели резюме должны быть представлены контакты и следующие разделы: + - PERSONAL("Личные качества") + - OBJECTIVE("Позиция") + - ACHIEVEMENT("Достижения") + - QUALIFICATIONS("Квалификация") + - EXPERIENCE("Опыт работы") + - EDUCATION("Образование") + - В секциях Достижения и Квалификация хранить список строк + - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет сделано следующим образом: +обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат..). +При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны. + +#### Инструменты для рисования: + +- Generate class diagram in IntelliJ IDEA (Help: working with Diagrams) +- Нарисовать и сфотографировать +- Online: www.draw.io +- yEd - Graph Editor From adc31f2c819a4d3aa0721226fc6f4e3d19832351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 9 Jul 2017 22:49:44 -0700 Subject: [PATCH 026/393] Update lesson07.md --- lesson/lesson07.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 51d0d001..ac2aa97b 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -3,8 +3,11 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-6](https://drive.google.com/open?id=0B_4NpoQW1xfpT1BwLUNBanVfd1E) [см. коммит Lesson07_HW06 test refactoring](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage) + [см. коммит Lesson07_HW06 add fullName](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680) + [см. коммит Lesson07_HW06 getAllSorted](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294) + [см. коммит Lesson07_HW06 mapStorage](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Параметризация. Стирание типов.](https://drive.google.com/open?id=0B_4NpoQW1xfpbXotWEFrYVVGUWc) From 7919f927bd81435c539e5e5ad2fe0e288637d746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 12 Jul 2017 17:20:12 +0300 Subject: [PATCH 027/393] Update lesson07.md --- lesson/lesson07.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index ac2aa97b..d94d92de 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -35,7 +35,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) Доменный объект -Cделать объектную модель резюме (диаграмма и классы). Образец резюме (делаем упрощенно) +- Cделать объектную модель резюме (диаграмма и классы). Образец резюме (делаем упрощенно) - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации). - Схожие по структуре и функциональности сущности делаем одним классом. - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме. @@ -49,7 +49,8 @@ Cделать объектную модель резюме (диаграмма - В секциях Достижения и Квалификация хранить список строк - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет сделано следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат..). -При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны. + - При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны. +- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиции).** #### Инструменты для рисования: From bc563dfb6c7351fac92e138b3b8b7a9481ae1330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 12 Jul 2017 20:44:53 +0300 Subject: [PATCH 028/393] Update lesson07.md --- lesson/lesson07.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index d94d92de..add221c3 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -35,7 +35,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) Доменный объект -- Cделать объектную модель резюме (диаграмма и классы). Образец резюме (делаем упрощенно) +- Cделать объектную модель резюме (диаграмма и классы). Образец резюме - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации). - Схожие по структуре и функциональности сущности делаем одним классом. - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме. @@ -50,7 +50,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет сделано следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат..). - При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны. -- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиции).** +- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиций).** #### Инструменты для рисования: From 8a513b1e0f01b112fc39c681bdf33d5a729b3e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 12 Jul 2017 20:46:00 +0300 Subject: [PATCH 029/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index add221c3..cc4182bf 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -35,7 +35,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) Доменный объект -- Cделать объектную модель резюме (диаграмма и классы). Образец резюме +- Cделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации). - Схожие по структуре и функциональности сущности делаем одним классом. - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме. From 0d417ff3dcf8d6dcdc28689ee51b83e146de5c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 13 Jul 2017 21:12:57 +0300 Subject: [PATCH 030/393] Update lesson05.md --- lesson/lesson05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index faf0f341..e9b636e8 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -4,7 +4,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-4](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) [см. коммит lesson05 HW04](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/open?id=0B_4NpoQW1xfpVWxFbDFFRktSN1U) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) [см. коммит Lesson05 Static initializer block and Collections](https://github.com/JavaWebinar/basejava/tree/6def59a3c6e1a20804d9414f95240f2b973a6ba6) - Контейнеры/коллекции. From ffbab17bd1a024ea08bb9ead9b4d104d651dc224 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Fri, 14 Jul 2017 14:37:28 -0700 Subject: [PATCH 031/393] Lesson08 --- lesson/lesson08.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lesson/lesson08.md diff --git a/lesson/lesson08.md b/lesson/lesson08.md new file mode 100644 index 00000000..f90b4781 --- /dev/null +++ b/lesson/lesson08.md @@ -0,0 +1,30 @@ + +# Восьмое занятие + +## Разбор Домашнего Задания-7: объектная модель резюме +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) +[см. коммит Lesson08 HW07 model implementation](https://github.com/JavaWebinar/basejava/tree/8ba1997667b33253df132eb5aef1fc618298687b/src/ru/javawebinar/basejava/model) + + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Работа с датами и временем.](https://drive.google.com/open?id=0B_4NpoQW1xfpV3hZMk85djRfeVk) +[см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/tree/f4844c291cf82387a14088ab3eed112b3102a607/src/ru/javawebinar/basejava) + +- Класс Date, Calendar, TimeZone +- Java – Convert date and time between timezone +- Joda Time library +- Java 8 Date API + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Работа с файлами и ресурсами.](https://drive.google.com/open?id=0B_4NpoQW1xfpWjJFazJQT0Y2SHc) +[см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/blob/c4011b8d0a07aa0cbc07731809b6b0de61cd767b/src/ru/javawebinar/basejava/MainFile.java) + + - File. Работа с файловой системой. + - Работа с ресурсами. Правильно освобождаем ресурсы в Java + - Java 7 try-with-resources + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpRV8xMnpDV0VBUGc) +[см. коммит Lesson08 HW08 ](https://github.com/JavaWebinar/basejava/tree/126be641f9cf8202956817d26279a7af0cdf6845/src/ru/javawebinar/basejava) + +- Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется +- Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) +- Заполнить в `AbstractStorageTest` резюме данными +- Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. From e15c94408b3951f9d6635628fc8e1b111c1d0a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 14 Jul 2017 14:50:07 -0700 Subject: [PATCH 032/393] Update lesson08.md --- lesson/lesson08.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index f90b4781..04809a6d 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -1,8 +1,7 @@ # Восьмое занятие -## Разбор Домашнего Задания-7: объектная модель резюме -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7: объектная модель резюме](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) [см. коммит Lesson08 HW07 model implementation](https://github.com/JavaWebinar/basejava/tree/8ba1997667b33253df132eb5aef1fc618298687b/src/ru/javawebinar/basejava/model) @@ -15,7 +14,7 @@ - Java 8 Date API ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Работа с файлами и ресурсами.](https://drive.google.com/open?id=0B_4NpoQW1xfpWjJFazJQT0Y2SHc) -[см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/blob/c4011b8d0a07aa0cbc07731809b6b0de61cd767b/src/ru/javawebinar/basejava/MainFile.java) +[см. коммит Lesson08 File and Resources ](https://github.com/JavaWebinar/basejava/blob/c4011b8d0a07aa0cbc07731809b6b0de61cd767b/src/ru/javawebinar/basejava/MainFile.java) - File. Работа с файловой системой. - Работа с ресурсами. Правильно освобождаем ресурсы в Java From ad351d2e564bd94f94b3a15a49e4d71d65809055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 14 Jul 2017 14:52:20 -0700 Subject: [PATCH 033/393] Update lesson08.md --- lesson/lesson08.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 04809a6d..cbd70190 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -1,8 +1,9 @@ # Восьмое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7: объектная модель резюме](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) [см. коммит Lesson08 HW07 model implementation](https://github.com/JavaWebinar/basejava/tree/8ba1997667b33253df132eb5aef1fc618298687b/src/ru/javawebinar/basejava/model) +- объектная модель резюме ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Работа с датами и временем.](https://drive.google.com/open?id=0B_4NpoQW1xfpV3hZMk85djRfeVk) From a0739e666a6c931470685c81ca0e588497b3c665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 20 Jul 2017 11:07:17 +0300 Subject: [PATCH 034/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2da44afd..2770d2ce 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -41,7 +41,7 @@ - Дополнительно: - [Java version and vendor data analyzed](https://plumbr.eu/blog/java/java-version-and-vendor-data-analyzed-2016-edition) - [Most Popular Java EE Servers](https://dzone.com/articles/most-popular-java-ee-servers-2016-edition) - - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc/) + - [Понимаем основы Java garbage collection](https://ggenikus.github.io/blog/2014/05/04/gc) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) ### Настройка проекта From 864930bc7416c9b688f97ec5a5ba38893601c78c Mon Sep 17 00:00:00 2001 From: Tanechka Date: Sat, 22 Jul 2017 21:17:35 -0700 Subject: [PATCH 035/393] Lesson09 --- lesson/lesson09.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lesson/lesson09.md diff --git a/lesson/lesson09.md b/lesson/lesson09.md new file mode 100644 index 00000000..4e6583b1 --- /dev/null +++ b/lesson/lesson09.md @@ -0,0 +1,33 @@ + +# Девятое занятие + +## Разбор Домашнего Задания-8: +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-8](https://drive.google.com/open?id=0B_4NpoQW1xfpeENDOVdQbUpIWEU) +[см. коммит Lesson09 HW08](https://github.com/JavaWebinar/basejava/tree/150e15f99c35d53e0c43c9f64d7833b5e7184768) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Ввод/вывод.](https://drive.google.com/open?id=0B_4NpoQW1xfpZHk3TnYyaDRjY3M) + +- Пакет java.io +- Паттерн Декоратор. +- Классы Reader и Writer. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Сериализация.](https://drive.google.com/open?id=0B_4NpoQW1xfpb0dRNjI1S2tOUjA) +[см. коммит Lesson09 ObjectStreamStorage ](https://github.com/JavaWebinar/basejava/tree/7a80d1d7feba08d433e55417bfd26ac0b3fa5298) + +- Сериализация объектов (serialization) +- Реализация Storage используя сериализацию. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. NIO.](https://drive.google.com/open?id=0B_4NpoQW1xfpMzBqSWI3eEI2RGs) +[см. коммит Lesson09 AbstractPathStorage ](https://github.com/JavaWebinar/basejava/commit/4b37c38fb980e315c5ec5f1b2b868fbb5935fe6d) + +- NIO Java 7 +- Чтения строк из файла + +# ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. Основы Java 8 Stream API.](https://drive.google.com/open?id=0B_4NpoQW1xfpMHd6VDJjS28tRmM) + +- Потоки + +## Домашнее задание +- Сделать рекурсивный вывод каталогов с отступом +- Реализовать Storage через java.nio.file.Path. +- Сделать возможным выбор меджу FileStorage и PathStorage для сериализации через ObjectStream. From 08ca2bbdf0d495326f6417a6fe83a58bcd41d446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 22 Jul 2017 21:19:27 -0700 Subject: [PATCH 036/393] Update lesson09.md --- lesson/lesson09.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index 4e6583b1..c5bc8963 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -1,7 +1,6 @@ # Девятое занятие -## Разбор Домашнего Задания-8: ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-8](https://drive.google.com/open?id=0B_4NpoQW1xfpeENDOVdQbUpIWEU) [см. коммит Lesson09 HW08](https://github.com/JavaWebinar/basejava/tree/150e15f99c35d53e0c43c9f64d7833b5e7184768) From 55082851d9e385f246b95aaaf25ac2d7c253204f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 27 Jul 2017 13:10:21 -0700 Subject: [PATCH 037/393] Update lesson02.md --- lesson/lesson02.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 997ec748..02317397 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -1,6 +1,9 @@ # Второе занятие +### HW1 +разбор HW1 будет на след уроке вместе с HW2 + ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) - Методология процедурно-ориентированного и объектно-ориентированного программирования - Объекты (cостояние, поведение, уникальность) @@ -24,7 +27,6 @@ - Размер Java объектов ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) -[см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) - Типы данных - Классы- оберки - Ссылочные типы From de6b7c1fe05be57f99a9990c3c4004d2ced43ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 27 Jul 2017 13:13:41 -0700 Subject: [PATCH 038/393] Update lesson03.md --- lesson/lesson03.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 04ea8f0e..3bd6e6f7 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -2,6 +2,8 @@ # Третье занятие ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) +[см. коммит HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) +[см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) [см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) @@ -24,5 +26,8 @@ - Шаблонный метод ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) + +# перед тем как приступить к ДЗ приведите свой проект в соотв. моим. Обратите внимание, что packages в видео и коммитах - отличаются. + - Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). - Сделать проверку `ArrayStorage.update` From b1b028f7642c4eeacdf03e18768d471527f85b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 27 Jul 2017 13:15:21 -0700 Subject: [PATCH 039/393] Update lesson03.md --- lesson/lesson03.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 3bd6e6f7..75b5e603 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -3,7 +3,9 @@ ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) [см. коммит HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) + [см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) + [см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) @@ -27,7 +29,7 @@ ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -# перед тем как приступить к ДЗ приведите свой проект в соотв. моим. Обратите внимание, что packages в видео и коммитах - отличаются. +* перед тем как приступить к ДЗ приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются. - Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). - Сделать проверку `ArrayStorage.update` From 8298ec13bfe0073a82a5f24ad3795b801be52965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 30 Jul 2017 14:32:46 -0700 Subject: [PATCH 040/393] Update lesson03.md --- lesson/lesson03.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 75b5e603..552c3723 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -32,4 +32,3 @@ * перед тем как приступить к ДЗ приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются. - Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). -- Сделать проверку `ArrayStorage.update` From 14f127afe16fe2789b5c3b158727a8c8c58fe90a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 1 Aug 2017 15:20:00 +0300 Subject: [PATCH 041/393] Update lesson09.md --- lesson/lesson09.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index c5bc8963..8b2fb2c3 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -28,5 +28,5 @@ ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом -- Реализовать Storage через java.nio.file.Path. -- Сделать возможным выбор меджу FileStorage и PathStorage для сериализации через ObjectStream. +- Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` +- Сделать возможным выбор меджу `File` и `Path` для сериализации через ObjectStream (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)) From 0320e3329d2fdd9c425765a571c218f9b459532d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 1 Aug 2017 15:36:28 +0300 Subject: [PATCH 042/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index 8b2fb2c3..ad577bb2 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -29,4 +29,4 @@ ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом - Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` -- Сделать возможным выбор меджу `File` и `Path` для сериализации через ObjectStream (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)) +- Сделать возможным выбор меджу `File` и `Path` для сериализации через ObjectStream (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Учесть что у нас еще будет несколько других сериализаций на основе файла. From 3fb7fdcec6e8fb6caa146356224372676ba60e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 2 Aug 2017 14:48:26 +0300 Subject: [PATCH 043/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index ad577bb2..9e3caafc 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -29,4 +29,4 @@ ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом - Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` -- Сделать возможным выбор меджу `File` и `Path` для сериализации через ObjectStream (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Учесть что у нас еще будет несколько других сериализаций на основе файла. +- Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сохранения. Сделать тесты для тестирования сериализации через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. From 6610c928f07304b516f9ceea60a12732c1aa5b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 2 Aug 2017 14:49:59 +0300 Subject: [PATCH 044/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index 9e3caafc..d1c951be 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -29,4 +29,4 @@ ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом - Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` -- Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сохранения. Сделать тесты для тестирования сериализации через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. +- Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сериализации. Сделать тесты для тестирования сериализации через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. From 42ccba0d35d2c651993faca00cdb25d6f24e25c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 2 Aug 2017 14:50:32 +0300 Subject: [PATCH 045/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index d1c951be..c1c5c936 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -29,4 +29,4 @@ ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом - Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` -- Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сериализации. Сделать тесты для тестирования сериализации через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. +- Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сериализации. Сделать тесты для тестирования сохранения через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. From 91163ab2adc75597acc72e100f5069c35a4b4dea Mon Sep 17 00:00:00 2001 From: Tanechka Date: Sun, 6 Aug 2017 00:04:16 -0700 Subject: [PATCH 046/393] Lesson10 --- lesson/lesson10.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lesson/lesson10.md diff --git a/lesson/lesson10.md b/lesson/lesson10.md new file mode 100644 index 00000000..33f7b557 --- /dev/null +++ b/lesson/lesson10.md @@ -0,0 +1,27 @@ + +# Десятое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-9](https://drive.google.com/open?id=0B_4NpoQW1xfpZDVJdGlDRlBlUEU) +[см. коммит Lesson10 HW09](https://github.com/JavaWebinar/basejava/tree/cf532714164239d7d99909f92ba52cb79cb0694a) + + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Формат XML. Работа с XML в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpUEtzQjhtQ0c3cFU) +[см. коммит Lesson10 xml](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) + +- XML формат и технологии +- Wiki: XML, XSL , DOM, SAX, StAX, JAXB +- Работа с XML в Java. Реализация хранения в XML. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. JSON](https://drive.google.com/open?id=0B_4NpoQW1xfpRUlvMU54a2hMR3c) +[см. коммит Lesson10 json](https://github.com/JavaWebinar/basejava/tree/ba409e3666f1a5086182a736784c4362a1979b7f) + +- JSON. JSON в JavaScript. REST +- Работа с JSON в Java: Google GSON и Jackson. Реализация хранения в JSON. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. DataInputStream / DataOutputStream](https://drive.google.com/open?id=0B_4NpoQW1xfpczVtenBCSDlKWU0) +[см. коммит Lesson10 DataStream](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) + +- Реализация Store на основе `DataInputStream/DataOutputStream`. + +## Домашнее задание +- Сделать и протестировать реализацию `DataStreamSerializer` \ No newline at end of file From a21c4b0371977c9627fdde4db2294c018ab85f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 10 Aug 2017 12:28:14 +0300 Subject: [PATCH 047/393] Update lesson02.md --- lesson/lesson02.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 02317397..3b23b8f0 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -9,6 +9,8 @@ - Объекты (cостояние, поведение, уникальность) - Классы. Инкапсуляция. Наследование. Полиморфизм. - Объектно-ориентированное программирование (перевод статьи) +- [Wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) +> Еще одна из трактовок инкапсуляции: свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. - Типы отношений между классами Наследование, агрегация, композиция, ассоциация. - Достоинства/Недостатки ООП. Библиотеки vs фреймворки. - Дополнительно: From 568ef951ff9dce7118158fd5ee9401c648733d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 10 Aug 2017 12:28:34 +0300 Subject: [PATCH 048/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 3b23b8f0..87287860 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -10,7 +10,7 @@ - Классы. Инкапсуляция. Наследование. Полиморфизм. - Объектно-ориентированное программирование (перевод статьи) - [Wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) -> Еще одна из трактовок инкапсуляции: свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. +> Еще одна из трактовок _инкапсуляции_: свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. - Типы отношений между классами Наследование, агрегация, композиция, ассоциация. - Достоинства/Недостатки ООП. Библиотеки vs фреймворки. - Дополнительно: From 246567d59dd71017a1a32260281867f8b26f21f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 12 Aug 2017 12:37:31 -0700 Subject: [PATCH 049/393] Update lesson05.md --- lesson/lesson05.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index e9b636e8..1cb45cde 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -3,6 +3,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-4](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) [см. коммит lesson05 HW04](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) +в коммите ошибка, в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, надо до `STORAGE_LIMIT` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) [см. коммит Lesson05 Static initializer block and Collections](https://github.com/JavaWebinar/basejava/tree/6def59a3c6e1a20804d9414f95240f2b973a6ba6) From ce7e51ae0b5361ee8bd18c41dbfa4903012b86d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 12 Aug 2017 12:38:15 -0700 Subject: [PATCH 050/393] Update lesson05.md --- lesson/lesson05.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 1cb45cde..d2e466ce 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -3,6 +3,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-4](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) [см. коммит lesson05 HW04](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) + в коммите ошибка, в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, надо до `STORAGE_LIMIT` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) From 40dd49e281324afc5ae332d22296dd9bc3105516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 13 Aug 2017 11:57:29 -0700 Subject: [PATCH 051/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 552c3723..e6e908a3 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -24,7 +24,7 @@ - Вычислительная сложность ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) -[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) +[см. коммит Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) - Шаблонный метод ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) From 573d174c5ce1f55e254628e9b19b621178b07dbc Mon Sep 17 00:00:00 2001 From: Tanechka Date: Mon, 21 Aug 2017 22:21:58 -0700 Subject: [PATCH 052/393] Lesson11 --- lesson/lesson11.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lesson/lesson11.md diff --git a/lesson/lesson11.md b/lesson/lesson11.md new file mode 100644 index 00000000..9e9a073a --- /dev/null +++ b/lesson/lesson11.md @@ -0,0 +1,37 @@ +# Одиннадцатое занятие + +## Разбор Домашнего Задания-10 будет на следующем уроке + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Многопоточность. Параллельное выполнение.](https://drive.google.com/open?id=0B_4NpoQW1xfpSmVjRzl6c3ctTTA) +[см. коммит Lesson11](https://github.com/JavaWebinar/basejava/blob/6a626f61722af844663860d1af284c53a9adf423/src/ru/javawebinar/basejava/MainConcurrency.java) + +![Закон Мура](https://www.karlrupp.net/wp-content/uploads/2015/06/40-years-processor-trend.png) +- Закон Мура +- Закон Амдала + +![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) + +## Потоки. Синхронизация +- Потоки выполнения. Синхронизация. +- Методы wait(), notify(), notifyAll() класса Object + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Ленивая инициализация, JMM.](https://drive.google.com/open?id=0B_4NpoQW1xfpN0R6d29UVERxLWc) +[см. коммит Lesson11](https://github.com/JavaWebinar/basejava/blob/6a626f61722af844663860d1af284c53a9adf423/src/ru/javawebinar/basejava/LazySingleton.java) + +## Ленивая инициализация, JMM +- Параллелизм в Java +- Реализация Singleton в JAVA +- Double checked locking +- Java Memory Model. final, volatile +- Initialization-on-demand holder idiom + +### Ресурсы +- Алексей Владыкин, Основы многопоточность в Java +- Виталий Чибриков, Java. Многопоточность +- Computer Science Center, курс Параллельное программирование +- Юрий Ткач, курс Advanced Java - Concurrency +- Головач, курс Java Multithreading + +## Домашнее задание +- Реализовать deadlock +- Взаимная блокировка From 3900f710dec0487abea0901bda798bd0f1ecf690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 21 Aug 2017 22:24:53 -0700 Subject: [PATCH 053/393] Update lesson11.md --- lesson/lesson11.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index 9e9a073a..e0abbf95 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -18,7 +18,6 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Ленивая инициализация, JMM.](https://drive.google.com/open?id=0B_4NpoQW1xfpN0R6d29UVERxLWc) [см. коммит Lesson11](https://github.com/JavaWebinar/basejava/blob/6a626f61722af844663860d1af284c53a9adf423/src/ru/javawebinar/basejava/LazySingleton.java) -## Ленивая инициализация, JMM - Параллелизм в Java - Реализация Singleton в JAVA - Double checked locking From 354fa5ab77699343c018d5b2292a67fee19661e8 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Thu, 24 Aug 2017 11:10:44 -0700 Subject: [PATCH 054/393] Lesson12 --- lesson/lesson12.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lesson/lesson12.md diff --git a/lesson/lesson12.md b/lesson/lesson12.md new file mode 100644 index 00000000..2e2ee3f2 --- /dev/null +++ b/lesson/lesson12.md @@ -0,0 +1,42 @@ + +# Двенадцатое занятие + +## Разбор Домашнего Задания-11: реализация dead lock. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-11](https://drive.google.com/open?id=0B_4NpoQW1xfpcWNMeHQ1Y0JoaUU) +[см. коммит Lesson12 HW11](https://github.com/JavaWebinar/basejava/blob/50388920c5e29e70208df572dc34208b46bcdd1a/src/ru/javawebinar/basejava/MainConcurrency.java) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Concurrency](https://drive.google.com/open?id=0B_4NpoQW1xfpRkdBLW81a1AtWDg) +[см. коммит Lesson12 Concurrency](https://github.com/JavaWebinar/basejava/blob/a34c2eec5a4b96d7ef7cd1fce140b0398e00a197/src/ru/javawebinar/basejava/MainConcurrency.java) + +- Обзор java.util.concurrent.* +- Compare-and-swap +- Справочник по синхронизаторам java.util.concurrent.* +- Использование ThreadLocal переменных + +> Замечания по видео: + + ThreadLocal DATE_FORMAT = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + }; + }; + +можно написать через лямбду: + + ThreadLocal.withInitial(() -> new SimpleDateFormat("dd.MM.yyyy HH:mm:ss")); + +А лучше использовать потокобезопасный `DateTimeFormatter` Java 8 Time API: + + DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); + + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-10](https://drive.google.com/open?id=0B_4NpoQW1xfpY3d6R204ZXplb00) +[см. коммит Lesson12 HW10](https://github.com/JavaWebinar/basejava/tree/4e75634fa4670a71a60f5643fa995295c4fb959d/src/ru/javawebinar/basejava) + +## Домашнее задание: +- Установить PostgreSQL +- Посмотреть на реляционные базы данных и SQL: + - Введение в базы данных + - Основы SQL From 401c9acb5321edc06f00e4422875c45fe454ab7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 24 Aug 2017 11:13:18 -0700 Subject: [PATCH 055/393] Update lesson12.md --- lesson/lesson12.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index 2e2ee3f2..d987b3dd 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -1,8 +1,6 @@ # Двенадцатое занятие -## Разбор Домашнего Задания-11: реализация dead lock. - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-11](https://drive.google.com/open?id=0B_4NpoQW1xfpcWNMeHQ1Y0JoaUU) [см. коммит Lesson12 HW11](https://github.com/JavaWebinar/basejava/blob/50388920c5e29e70208df572dc34208b46bcdd1a/src/ru/javawebinar/basejava/MainConcurrency.java) From 256ea32b38d9060ecfd47326c1031dfecae0cb82 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Fri, 25 Aug 2017 00:11:16 -0700 Subject: [PATCH 056/393] Lesson13 --- lesson/lesson13.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lesson/lesson13.md diff --git a/lesson/lesson13.md b/lesson/lesson13.md new file mode 100644 index 00000000..7294a1da --- /dev/null +++ b/lesson/lesson13.md @@ -0,0 +1,34 @@ +# Тринадцатое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Базы данных. Реляционные СУБД. PostgreSQL](https://drive.google.com/open?id=0B_4NpoQW1xfpOHFGQTUydzdKaFE) +[см. коммит Lesson13 Init DB](https://github.com/JavaWebinar/basejava/blob/79f4e1d3ecc9ce306504a991fcca00c81c992f8c/config/init_db.sql) + +- DB-Engines Ranking +- Реляционная СУБД +- Введение в базы данных +- Реляционные базы vs NoSQL. SQL. Денормализация. PK, FK, Cascade +- PostgreSQL. Надёжность +- Создание базы резюме. Работа с базами данных из IDEA +- IDEA Database tools. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) +[см. коммит Lesson13 properties](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) + +- Properties sample +- Конфигурирование DB и каталога хранения + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3.Подключение DB в проект](https://drive.google.com/open?id=0B_4NpoQW1xfpWVVSOURIeDNEMUk) +[см. коммит Lesson13 SqlStorage](https://github.com/JavaWebinar/basejava/tree/62705ea7e24dda66647b47971f83f1507dd80016) + +- JDBC. JDBC Architecture. +- ConnectionFactory. Реализация SqlStorage. +- Ресурсы: + - Книга: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL + - Работа с базами данных с помощью JDBC драйвера + - Уроки по JDBC + +### ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Домашнее задание HW13 +- Доделать `SqlStorage` без контактов и секций. + - Для работы с DB надо в lib и проект добавить драйвер базы данных + - Запустить `SqlStorageTest` (в `AbstractStorageTest` контакты и секции закоменченны), креденшелы к базе взять из `Config` +- Вынести общий код (`getConnection(), prepareStatement, catch SQLException`) в класс `SqlHelper`. From aebc50d8b9b993cde4391085efd1f489420a1f9c Mon Sep 17 00:00:00 2001 From: Tanechka Date: Mon, 4 Sep 2017 22:54:55 -0700 Subject: [PATCH 057/393] Lesson14 --- lesson/lesson14.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lesson/lesson14.md diff --git a/lesson/lesson14.md b/lesson/lesson14.md new file mode 100644 index 00000000..8f9293d5 --- /dev/null +++ b/lesson/lesson14.md @@ -0,0 +1,29 @@ + +# Четырнадцатое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-13](https://drive.google.com/open?id=0B_4NpoQW1xfpREpRYm5ZLWN2RWc) +[см. коммит Lesson14 HW13](https://github.com/JavaWebinar/basejava/tree/aa4dd3537275cc3be0d68aeb902d28c0ef94e747) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. JOIN](https://drive.google.com/open?id=0B_4NpoQW1xfpT3R6WFBBbmVGXzA) +[см. коммит Lesson14 JOIN](https://github.com/JavaWebinar/basejava/blob/57c5687e276d4fb3bfcf8d7b0c7b301db1a0095b/src/ru/javawebinar/basejava/storage/SqlStorage.java) +- LEFT, RIGHT, INNER JOIN +- Добавляем в `SqlStorage` контакты + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Транзакции](https://drive.google.com/open?id=0B_4NpoQW1xfpTm43Z2hnZkV4c2M) +[см. коммит Lesson14 Transaction_Batch](https://github.com/JavaWebinar/basejava/tree/0901c3a80ce8150524f2513c7ba148fdd03e49b2/src/ru/javawebinar/basejava) +- Транзакция. ACID. Уровни изоляции транзакций. +- Уровни изоляции транзакций в SQL +- Добавляем в `SqlStorage` транзакции +- Batch execute. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Установка/запуск Tomcat](https://drive.google.com/open?id=0B_4NpoQW1xfpZU9QQ25VTkRmSjg) +- Скачать и установить Tomcat 8. Устанавливать лучше простым копированием из архива в каталог (в том числе и для unix). Следите чтобы в пути не было пробелов и национальных букв. +- Для доступа к Tomсat Manager добавьте в конфигурацию Tomcat `TOMCAT_HOME\conf\tomcat-users.xml` права: +``` + +``` +- Запуск из `TOMCAT_HOME\bin\`: `catalina.bat start` + +## Домашнее задание HW14 +- Закончить реализацию `SqlStorage` с контактами +- Добавить `TextSection` в базу данных (`init_db.sql`) и `SqlStorage`. From d0fb5e6d55d09dec33cc1834fdbe63fc6e031a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 5 Sep 2017 11:31:09 -0700 Subject: [PATCH 058/393] Update lesson14.md --- lesson/lesson14.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson14.md b/lesson/lesson14.md index 8f9293d5..50959be9 100644 --- a/lesson/lesson14.md +++ b/lesson/lesson14.md @@ -26,4 +26,4 @@ ## Домашнее задание HW14 - Закончить реализацию `SqlStorage` с контактами -- Добавить `TextSection` в базу данных (`init_db.sql`) и `SqlStorage`. +- Выделить общие части ( DRY ) From aff13058f374fbc09990e59306dfc4a5a833abe4 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Fri, 8 Sep 2017 11:48:33 +0300 Subject: [PATCH 059/393] Update lesson01 --- lesson/lesson01.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2770d2ce..73ec8dbe 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,11 +1,9 @@ # Первое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [11.07 в 20.00 (GMT+3) будет вступительный вебинар-презентация](https://www.youtube.com/watch?v=Upz4RWvDGCM) -- Презентация проекта обучения -- Настройка окружения и проекта в IntelliJ IDEA -- Ответы на вопросы +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар ПРЕЗЕНТАЦИЯ обучения](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) +#### [Так будет выглядеть мое резюме в разабатываемом на этом проекте приложении](https://javawebinar.github.io/) -## Необходимо: +## Для участия необходимо: - Установить JDK8 (выбрать Accept License Agreement) - Установить систему управления версиями Git (опции по умолчанию) - Создать аккаунт на GitHub From 720cc7227251810553a5786206ae48113eafc461 Mon Sep 17 00:00:00 2001 From: Tanechka Date: Fri, 8 Sep 2017 13:55:08 -0700 Subject: [PATCH 060/393] Lesson15 --- lesson/lesson15.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lesson/lesson15.md diff --git a/lesson/lesson15.md b/lesson/lesson15.md new file mode 100644 index 00000000..9b2828a2 --- /dev/null +++ b/lesson/lesson15.md @@ -0,0 +1,33 @@ +# Пятнадцатое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-14](https://drive.google.com/open?id=0B_4NpoQW1xfpY1hTY282dzhuOFU) +[см. коммит Lesson15 HW14](https://github.com/JavaWebinar/basejava/tree/02aee9744d7512dfa9ffbebe00ad415ffe5f71ea) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. HTML, Tomcat](https://drive.google.com/open?id=0B_4NpoQW1xfpZk1pQ1h4dEJBVEE) +[см. коммит Lesson15 web](https://github.com/JavaWebinar/basejava/tree/2fe01af02b7ba82c3f0c8fa29dc3effb5b575531/src/ru/javawebinar/basejava) + +- Протокол HTTP. Смотрим демо приложение в Chrome -> Инструменты разработчика +- Добавление в проект Web Facet. web.xml. Постороение/cтруктура WAR. Статические ресурсы. +- Настройка и деплой в Tomcat. Tomcat manager. +- Запуск Tomcat из IDEA. Динамическое обновление без передеплоя. + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Сервлеты](https://drive.google.com/open?id=0B_4NpoQW1xfpUWw3NWo0SVFBRjg) +[см. коммит Lesson15 static_content](https://github.com/JavaWebinar/basejava/tree/e9a4a68e8e360f9cbcd3ff12d27876cee1b9f8cd/src/ru/javawebinar/basejava/web) + +[см. коммит Lesson15 servlets](https://github.com/JavaWebinar/basejava/tree/4d1043a3a45d27eda11fdc9c68ac46aa68fdd563) + +- Создаем Servlet. Параметры. Кодировка. +- Дополнительно: + - How do servlets work? + - Язык программирования Java и среда NetBeans: Введение в сетевое программирование + - Основы работы с HTML + - Учебник HTML + - Технологии Java для разработки веб-приложений + - Таблицы стилей CSS + - Основы JavaScript + +## Домашнее задание HW15 +- Сделать реализацию `SqlStorage.getAll` через 2 отдельных запроса: отдельно резюме и отдельно контакты. +- Добавить в реализацию `SqlStorage` и в базу секции (кроме `OrganizationSection`). Для `ListSection` склеиваем строки через `\n`. +- Сделать отображение таблицы резюме в сервлете. + - HTML таблицы From fc360db33d3276fbbea2ca5596c35a8c197a5617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 12 Sep 2017 00:21:16 +0300 Subject: [PATCH 061/393] Update lesson15.md --- lesson/lesson15.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index 9b2828a2..04106cfe 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -19,12 +19,10 @@ - Создаем Servlet. Параметры. Кодировка. - Дополнительно: - How do servlets work? - - Язык программирования Java и среда NetBeans: Введение в сетевое программирование + - Язык программирования Java: введение в сетевое программирование - Основы работы с HTML - Учебник HTML - - Технологии Java для разработки веб-приложений - - Таблицы стилей CSS - - Основы JavaScript + - [Ссылки по HTML, JavaScript, CSS](https://github.com/JavaOPs/topjava#html-javascript-css) ## Домашнее задание HW15 - Сделать реализацию `SqlStorage.getAll` через 2 отдельных запроса: отдельно резюме и отдельно контакты. From f8aac8c8209f7993dcfc351bf544af26ddaa89ca Mon Sep 17 00:00:00 2001 From: Tanechka Date: Fri, 22 Sep 2017 23:12:16 -0700 Subject: [PATCH 062/393] Lesson16 --- lesson/lesson16.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lesson/lesson16.md diff --git a/lesson/lesson16.md b/lesson/lesson16.md new file mode 100644 index 00000000..46c2a47c --- /dev/null +++ b/lesson/lesson16.md @@ -0,0 +1,33 @@ +# Шестнадцатое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-15. DB](https://drive.google.com/open?id=0B9Ye2auQ_NsFS0J4TEN2cjdtWjQ) +[см. коммит Lesson16 HW16 DB](https://github.com/JavaWebinar/basejava/tree/39775ee817be0da26ce111db9ba475bfd97b5a4c) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-15. Servlet](https://drive.google.com/open?id=0B_4NpoQW1xfpZWVSX0tCTjRiU28) +[см. коммит Lesson16 HW16 servlet](https://github.com/JavaWebinar/basejava/tree/46a5500bc1060ca7ab90ceb4de7979d0cefa3824) + +- Почему вы никогда не должны использовать MongoDB +- Жизненный цикл сервлета +- Tomcat maxThreads configuration + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. JSP](https://drive.google.com/open?id=0B_4NpoQW1xfpQ2hYRWJ2TWd2QjA) +[см. коммит Lesson16 jsp](https://github.com/JavaWebinar/basejava/tree/b29ed85e8a99432de317dcae0780ecedc37981ac) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. include](https://drive.google.com/open?id=0B_4NpoQW1xfpRy1DbWhRVXhTbHc) +[см. коммит Lesson16 include](https://github.com/JavaWebinar/basejava/tree/28f305b52abb96f237b4e30447b102f9b67d12a5/web/WEB-INF/jsp) + +- Что такое JSP. Wiki JSP +- Predefined Variables in JSP +- Стандартные элементы action +- How to use relative paths in JSP +- Отличие Redirect от Forward + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. JSTL](https://drive.google.com/open?id=0B_4NpoQW1xfpSHdUNE9TZWNJV1k) +[см. коммит Lesson16 jstl](hhttps://github.com/JavaWebinar/basejava/blob/a909d0854c47753d8f278a9d6e930411992762ac/web/WEB-INF/jsp/list.jsp) + +- JSTL +- JSTL для написания JSP страниц + +## Домашнее задание HW16 +- Доделать логику сервлета +- Дополнить отображение и редактирование JSP секциями From e0e18376eed718c02e16be5a219f81376bacc0a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 22 Sep 2017 23:19:39 -0700 Subject: [PATCH 063/393] Update lesson16.md --- lesson/lesson16.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 46c2a47c..32eea017 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -28,6 +28,9 @@ - JSTL - JSTL для написания JSP страниц +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. CRUD](https://drive.google.com/open?id=0B_4NpoQW1xfpak9nZS1BXzBTbEU) +[см. коммит Lesson16 crud](https://github.com/JavaWebinar/basejava/tree/3e07257a33d1ba51508e315d6021aa1b78849fca) + ## Домашнее задание HW16 - Доделать логику сервлета - Дополнить отображение и редактирование JSP секциями From 4fb813c5a6f21e51004d71fd3a36e729c9dc3728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 28 Sep 2017 13:23:38 +0300 Subject: [PATCH 064/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 87287860..e461bbe5 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -9,6 +9,7 @@ - Объекты (cостояние, поведение, уникальность) - Классы. Инкапсуляция. Наследование. Полиморфизм. - Объектно-ориентированное программирование (перевод статьи) +- Основы Объектно-Ориентированного Программирования (ООП) - [Wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) > Еще одна из трактовок _инкапсуляции_: свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. - Типы отношений между классами Наследование, агрегация, композиция, ассоциация. From 26ae5e58f3ebaa03f5fdf91db39391d156c85b5c Mon Sep 17 00:00:00 2001 From: Tanechka Date: Sun, 22 Oct 2017 21:07:20 -0700 Subject: [PATCH 065/393] Lesson17 --- lesson/lesson17.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lesson/lesson17.md diff --git a/lesson/lesson17.md b/lesson/lesson17.md new file mode 100644 index 00000000..54a61cd7 --- /dev/null +++ b/lesson/lesson17.md @@ -0,0 +1,29 @@ +# Семнадцатое занятие + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-16](https://drive.google.com/open?id=0B_4NpoQW1xfpR2U1OUJEM0hzc1k) +[см. коммит Lesson17 HW16](https://github.com/JavaWebinar/basejava/tree/dc678d613ecdf18d9973e7464ddc997ad316c22f) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-16 добавление резюме](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1d3VmN1RHA1Q1k) +[см. коммит Lesson17 HW16_add_resume](https://github.com/JavaWebinar/basejava/tree/10c521a8d412b3a4b3256d3044504fb269e16a26) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Деплой в Heroku](https://drive.google.com/open?id=0B_4NpoQW1xfpS2JSSDByQ2xGWm8) +[см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) +- Deployment with the Heroku CLI + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) +- Загрузка классов в Java +- Apache Tomcat Class Loader + +## Обзор Java Enterprise +- Из юниоров в разработчики: получаем первую работу +- Java Tools and Technologies Landscape for 2014 +- Java Tools and Technologies Landscape Report 2016 + +#### Spring Pet-Clinic +- Spring PetClinic Sample Application +- Demo +- Presentation + +#### Java Enterprise project Topjava +- Java Enterprise: Вводное занятие +- Demo приложение From f72b97c082f4f3c7310cce0058f7b568c28d176c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 9 Nov 2017 22:24:18 +0300 Subject: [PATCH 066/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 73ec8dbe..5c30c15c 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,7 +1,7 @@ # Первое занятие ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар ПРЕЗЕНТАЦИЯ обучения](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) -#### [Так будет выглядеть мое резюме в разабатываемом на этом проекте приложении](https://javawebinar.github.io/) +#### [Так будет выглядеть мое резюме в разрабатываемом на этом проекте приложении](https://javawebinar.github.io/) ## Для участия необходимо: - Установить JDK8 (выбрать Accept License Agreement) From 05a285f70661fb662fcfc6e8f891a0ec12f3236d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 17 Nov 2017 06:15:51 +0300 Subject: [PATCH 067/393] Update lesson17.md --- lesson/lesson17.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 54a61cd7..cf15b062 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -14,16 +14,13 @@ - Загрузка классов в Java - Apache Tomcat Class Loader -## Обзор Java Enterprise +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Вебинар "Осваиваем Java String/JPA Enterprise"](https://drive.google.com/file/d/0B9Ye2auQ_NsFY1ZDNXRCd1NCTG8) +- [Слайды вебинара](https://goo.gl/XNVOj4) - Из юниоров в разработчики: получаем первую работу -- Java Tools and Technologies Landscape for 2014 - Java Tools and Technologies Landscape Report 2016 -#### Spring Pet-Clinic -- Spring PetClinic Sample Application -- Demo -- Presentation - #### Java Enterprise project Topjava -- Java Enterprise: Вводное занятие -- Demo приложение +- Стажировка Spring/JPA Enterprise (Topjava) +- Ссылки по темам интервью, тестовое интервью +- Составление резюме, подготовка к интервью, поиск работы +- [Как стать профессиональным Java разработчиком (Яков Фaйн)](https://www.youtube.com/watch?v=ft0Nj8Cm9kk) From 0fa48c844ad82032891b810345dfa714e8930fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 2 Dec 2017 20:16:52 -0800 Subject: [PATCH 068/393] fixed typo lesson01 --- lesson/lesson01.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 5c30c15c..99b659f7 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -59,14 +59,14 @@ - Ресурсы: - Интерактивная Git обучалка - - Еще одна интерактивная обучалка, по русски + - Еще одна интерактивная обучалка, по-русски - Книга Git - Working with remote repositories - Видео по обучению Git - Git Overview - Видеокурс по Git - [Основы Git за 20 минут](https://www.youtube.com/watch?v=TMeZGvtQnT8) -- [Популярность разный VSC](http://www.netinstructions.com/the-case-for-git/) +- [Популярность разных VSC](http://www.netinstructions.com/the-case-for-git/) - Книга по Git ## Домашнее задание HW1 @@ -89,7 +89,7 @@ ### Optional - Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок null), чтобы не перебирать каждый раз все 10000 элементов. ``` -Хранеие резюме в storage (от 0 до size-1 элементов null нет): +Хранение резюме в storage (от 0 до size-1 элементов null нет): r1, r2, r3,..., rn, null, null,..., null <---- size -----> From 16aa2bc5dfc992d43398ef0b1a9e63b4a3579153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 8 Dec 2017 21:27:29 +0300 Subject: [PATCH 069/393] Update lesson01.md --- lesson/lesson01.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 99b659f7..077dd71a 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -21,7 +21,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) - [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) - [Типичный тест SQL на собеседованиях](https://habrahabr.ru/post/181033/) -- **Обновление!!** [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) +- **Обновление!!** [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) + - [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) - [Java Tools and Technologies Landscape for 2014](http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014) - Дополнительно: - [Автоматизированные сборки в Java](http://www.quizful.net/post/automated-builds-java) From 0948a8a381eadb7adbed46fa81a30d4cc3c05835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 13 Dec 2017 16:56:35 +0300 Subject: [PATCH 070/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index e461bbe5..95a58b4b 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -28,6 +28,7 @@ - Permanent область памяти - Java thread stack - Размер Java объектов + [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - Типы данных From 418138c204485313cb3f955c99c4e7c312155b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 13 Dec 2017 16:56:54 +0300 Subject: [PATCH 071/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 95a58b4b..c890d2bb 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -28,7 +28,7 @@ - Permanent область памяти - Java thread stack - Размер Java объектов - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) + - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - Типы данных From 7deedf8f23df8bcd7d2958efaaf83517fe6fb1ca Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 16:57:14 +0300 Subject: [PATCH 072/393] Update lesson02.md add new links delete broken links correct typos --- lesson/lesson02.md | 65 ++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index c890d2bb..e6f26268 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -2,46 +2,49 @@ # Второе занятие ### HW1 -разбор HW1 будет на след уроке вместе с HW2 +> разбор HW1 будет на следующем уроке вместе с HW2 ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) -- Методология процедурно-ориентированного и объектно-ориентированного программирования -- Объекты (cостояние, поведение, уникальность) -- Классы. Инкапсуляция. Наследование. Полиморфизм. -- Объектно-ориентированное программирование (перевод статьи) -- Основы Объектно-Ориентированного Программирования (ООП) -- [Wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) -> Еще одна из трактовок _инкапсуляции_: свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. -- Типы отношений между классами Наследование, агрегация, композиция, ассоциация. -- Достоинства/Недостатки ООП. Библиотеки vs фреймворки. -- Дополнительно: - - Что такое ООП и с чем его едят? - - Объектно ориентированное программирование - - Николай Алименков — Парадигмы ООП - - Концепции объектно-ориентированного программирования +- [wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) +- [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) +- [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) +- [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) +- [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) +- [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) +**Дополнительно:** + - [Что такое ООП и зачем нам оно?](https://habrahabr.ru/post/148015/) + - [youtube: Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) + - [oracle: Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) + - [oracle: Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - - JVM изнутри - оптимизация и профилирование. - - Stack and Heap - - Дополнительно: - - Из каких частей состоит память java процесса. - - Permanent область памяти - - Java thread stack - - Размер Java объектов - - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) + - [wiki: Стек](https://ru.wikipedia.org/wiki/Стек) + - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) + - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) +**Дополнительно:** + - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) + - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) + - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) + - [Размер Java объектов](http://habrahabr.ru/post/134102/) + - [youtube: JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) + - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) + - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - - Типы данных - - Классы- оберки - - Ссылочные типы - - Пакеты - - Модификаторы доступа. Область Видимости. + - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) + - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) + - [youtube: Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) + - [youtube: Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) + - [youtube: Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) +**Дополнительно:** + - [oracle: Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) + - [oracle: Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size-1] = null` -- Прочитать Соглашения по именованию. +- Прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) - Реализовать `ArrayStorage.update` -- Сделать проверки: в `update/delete/get` - резюме есть в storage, в `save`- нет в storage: `System.out.println("Resume ...")`. -- Сделать в save проверку на переполнениe: `System.out.println("...")`. +- Сделать проверки: в `update/delete/get` - резюме есть в storage, в `save`- нет в storage: `System.out.println("Resume ...")` +- Сделать в save проверку на переполнение: `System.out.println("...")` - Избавится от дублирования в коде `ArrayStorage` From 23c1c2bac6ae9230b95ab6fd24461de191cf3531 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 17:03:45 +0300 Subject: [PATCH 073/393] Update lesson02.md --- lesson/lesson02.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index e6f26268..be020ceb 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -11,6 +11,7 @@ - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) + **Дополнительно:** - [Что такое ООП и зачем нам оно?](https://habrahabr.ru/post/148015/) - [youtube: Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) @@ -21,6 +22,7 @@ - [wiki: Стек](https://ru.wikipedia.org/wiki/Стек) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) + **Дополнительно:** - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) @@ -36,6 +38,7 @@ - [youtube: Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) - [youtube: Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) - [youtube: Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) + **Дополнительно:** - [oracle: Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [oracle: Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) From f01f9edbc6b28cabeba66ff827fdc89b19b876bb Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 17:18:25 +0300 Subject: [PATCH 074/393] Update lesson02.md --- lesson/lesson02.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index be020ceb..63e8a711 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -12,7 +12,7 @@ - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) -**Дополнительно:** +- **Дополнительно:** - [Что такое ООП и зачем нам оно?](https://habrahabr.ru/post/148015/) - [youtube: Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) - [oracle: Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) @@ -23,14 +23,14 @@ - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) -**Дополнительно:** - - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) - - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) - - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) - - [Размер Java объектов](http://habrahabr.ru/post/134102/) - - [youtube: JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) - - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) + - **Дополнительно:** + - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) + - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) + - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) + - [Размер Java объектов](http://habrahabr.ru/post/134102/) + - [youtube: JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) + - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) + - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) @@ -39,7 +39,7 @@ - [youtube: Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) - [youtube: Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) -**Дополнительно:** + - **Дополнительно:** - [oracle: Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [oracle: Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) @@ -48,6 +48,6 @@ - Прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) - Реализовать `ArrayStorage.update` -- Сделать проверки: в `update/delete/get` - резюме есть в storage, в `save`- нет в storage: `System.out.println("Resume ...")` +- Сделать проверки: в `update/delete/get` - резюме есть в storage; в `save`- нет в storage: `System.out.println("Resume ...")` - Сделать в save проверку на переполнение: `System.out.println("...")` -- Избавится от дублирования в коде `ArrayStorage` +- Избавиться от дублирования в коде `ArrayStorage` From a1e639567f3a4b556f0d0546c6521afaaf492d4e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 17:22:58 +0300 Subject: [PATCH 075/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 63e8a711..91ee372d 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -13,7 +13,7 @@ - [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) - **Дополнительно:** - - [Что такое ООП и зачем нам оно?](https://habrahabr.ru/post/148015/) + - [Зачем нам ООП и что это такое](https://habrahabr.ru/post/148015/) - [youtube: Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) - [oracle: Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - [oracle: Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) From ea49e5f84f8feb5dda5cec21fa003b01a8e5c8d0 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 18:41:51 +0300 Subject: [PATCH 076/393] Update lesson03.md --- lesson/lesson03.md | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index e6e908a3..e9d9e24d 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -2,33 +2,41 @@ # Третье занятие ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) -[см. коммит HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) +1. [см. коммит HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) -[см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) +1. [см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) -[см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) +1. [см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) -[см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) - -[см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) -- static -- Object. Контракт equals/hashCode -- Интерфейсы -- Полиморфизм, abstract +1. [см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) + +1. [см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) +- [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) +- [Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) +- [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) +- [Полиморфизм, abstract](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) +- **Дополнительно:** + - youtube: [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) + - youtube: [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) + - хабр: [equals() / hashCode](https://habrahabr.ru/post/168195/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) -- Алгоритмы и структуры данных для начинающих: сложность алгоритмов -- Time complexity -- Временная сложность алгоритма -- Вычислительная сложность +- [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) +- [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view) +- [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) +- [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) +- **Дополнительно** + - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) -[см. коммит Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) -- Шаблонный метод +1. [см. коммит Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) +- wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) +- **Дополнительно** + - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -* перед тем как приступить к ДЗ приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются. +* перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются. -- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными, сортировать весь массив не надо). +- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными. Сортировать весь массив не надо). From 4c225534d5050fc31fd79f9c6596f4d09cbefe8a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 18:55:06 +0300 Subject: [PATCH 077/393] Update lesson03.md --- lesson/lesson03.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index e9d9e24d..2283f968 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -2,16 +2,19 @@ # Третье занятие ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) -1. [см. коммит HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) - -1. [см. коммит Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) - -1. [см. коммит lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) + +**Коммиты:** + 1. *[HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src)* + 1. *[Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d)* + 1. *[lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava)* ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) -1. [см. коммит Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) -1. [см. коммит Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) +**Коммиты:** + 1. *[Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava)* + 1. *[Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage)* + +**Материалы для изучения** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) - [Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) @@ -19,7 +22,7 @@ - **Дополнительно:** - youtube: [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) - youtube: [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) - - хабр: [equals() / hashCode](https://habrahabr.ru/post/168195/) + - хабр: [equals()/hashCode](https://habrahabr.ru/post/168195/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) @@ -30,10 +33,14 @@ - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) -1. [см. коммит Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) -- wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) -- **Дополнительно** - - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) + +**Коммиты:** + 1. [Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) + +**Материалы для изучения** + - wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) + - **Дополнительно** + - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) From 0aa37676b6b42d354af826dfcf6b104df3e3b3c4 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 18:57:48 +0300 Subject: [PATCH 078/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 2283f968..e06c1d89 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -35,7 +35,7 @@ ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) **Коммиты:** - 1. [Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) + 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* **Материалы для изучения** - wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) From a37b8216827e4a4d3f64562f9c33e3612e55254d Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Dec 2017 23:49:47 +0300 Subject: [PATCH 079/393] Update lesson02.md --- lesson/lesson02.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 91ee372d..970c91ed 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -5,8 +5,8 @@ > разбор HW1 будет на следующем уроке вместе с HW2 ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) -- [wiki: Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) -- [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) + - wiki: [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) + - [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) - [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) @@ -14,12 +14,12 @@ - **Дополнительно:** - [Зачем нам ООП и что это такое](https://habrahabr.ru/post/148015/) - - [youtube: Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) - - [oracle: Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - - [oracle: Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) + - youtube: [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) + - oracle: [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) + - oracle: [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - - [wiki: Стек](https://ru.wikipedia.org/wiki/Стек) + - wiki: [Стек](https://ru.wikipedia.org/wiki/Стек) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) @@ -28,20 +28,20 @@ - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) - [Размер Java объектов](http://habrahabr.ru/post/134102/) - - [youtube: JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) + - youtube: [JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - - [youtube: Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) - - [youtube: Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) - - [youtube: Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) + - youtube: [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) + - youtube: [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) + - youtube: [Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) - **Дополнительно:** - - [oracle: Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - - [oracle: Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) + - oracle: [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) + - oracle: [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size-1] = null` From 02271a5efae99dd0959c1a11e776bbccc03fa8ca Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 00:05:22 +0300 Subject: [PATCH 080/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index e06c1d89..9c766cfb 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -1,7 +1,7 @@ # Третье занятие -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-2](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) **Коммиты:** 1. *[HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src)* From 9fffe42ceffe78483028552c99b3160c0379320e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 16:37:02 +0300 Subject: [PATCH 081/393] Update lesson03.md --- lesson/lesson03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 9c766cfb..c97370ef 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -14,7 +14,7 @@ 1. *[Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava)* 1. *[Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage)* -**Материалы для изучения** +**Ресурсы** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) - [Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) @@ -37,7 +37,7 @@ **Коммиты:** 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* -**Материалы для изучения** +**Ресурсы** - wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) From 4551f82b903e3193795d50bbbd343f087b1fa6a0 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 16:37:28 +0300 Subject: [PATCH 082/393] Update lesson03.md --- lesson/lesson03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index c97370ef..a863adac 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -14,7 +14,7 @@ 1. *[Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava)* 1. *[Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage)* -**Ресурсы** +**Ресурсы:** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) - [Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) @@ -37,7 +37,7 @@ **Коммиты:** 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* -**Ресурсы** +**Ресурсы:** - wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) From 7133f83c0ebf6aafc8cb40a21c009b68c29cff5f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 18:07:18 +0300 Subject: [PATCH 083/393] Update lesson01.md --- lesson/lesson01.md | 77 ++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 077dd71a..e040a448 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -7,28 +7,28 @@ - Установить JDK8 (выбрать Accept License Agreement) - Установить систему управления версиями Git (опции по умолчанию) - Создать аккаунт на GitHub -- Установить IntelliJ IDEA -> Выбирать Ultimate, 30 days trial (нам понадобится SQL, Tomcat, JSP). Ключ на 6 месяцев выдается на первом занятии. +- Установить IntelliJ IDEA Ultimate +> Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев. + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) -- [Книга: Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) -- [Размеры проектов в количестве строк кода](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) -- [Соглашения по именованию](http://www.intuit.ru/studies/courses/16/16/lecture/27113?page=4) +- [Мифический человеко-месяц (wiki)](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) +- [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) +- [Соглашения по оформлению кода](https://google.github.io/styleguide/javaguide.html) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - - **Доступ из России через прокси (например [friGate CDN](https://chrome.google.com/webstore/detail/frigate-cdn-smooth-access/mbacbcfdfaapbcnlnbmciiaakomhkbkb))** - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) - [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) -- [Типичный тест SQL на собеседованиях](https://habrahabr.ru/post/181033/) -- **Обновление!!** [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) - - [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) - - [Java Tools and Technologies Landscape for 2014](http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014) -- Дополнительно: - - [Автоматизированные сборки в Java](http://www.quizful.net/post/automated-builds-java) +- [Интерактивный курс по SQL](http://www.sql-ex.ru/) +- [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) +- [Java in 2017 Survey Results](http://www.baeldung.com/java-in-2017) +- [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) +- **Дополнительно:** + - [Автоматизированная сборка проекта в Java](http://spring-projects.ru/guides/maven/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) -- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) +- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) (wiki) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) - [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) @@ -36,11 +36,10 @@ - [Java Microbenchmark JMH](https://github.com/JavaOPs/masterjava#Занятие-2) используем на курсе Masterjava - [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) -- [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](http://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition) (русский), [EE](http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) ([русский](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition)) -- Дополнительно: - - [Java version and vendor data analyzed](https://plumbr.eu/blog/java/java-version-and-vendor-data-analyzed-2016-edition) - - [Most Popular Java EE Servers](https://dzone.com/articles/most-popular-java-ee-servers-2016-edition) - - [Понимаем основы Java garbage collection](https://ggenikus.github.io/blog/2014/05/04/gc) +- [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) (wiki) +- **Дополнительно:** + - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) + - [Most Popular Java EE Servers](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) ### Настройка проекта @@ -54,24 +53,21 @@ - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push - `git push -u origin master` -### Система управления версиями. VCS/DVSC +#### [Система управления версиями](https://ru.wikipedia.org/wiki/Система_управления_версиями) (wiki) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) -- Ресурсы: - - Интерактивная Git обучалка - - Еще одна интерактивная обучалка, по-русски - - Книга Git - - Working with remote repositories - - Видео по обучению Git - - Git Overview - - Видеокурс по Git - - [Основы Git за 20 минут](https://www.youtube.com/watch?v=TMeZGvtQnT8) -- [Популярность разных VSC](http://www.netinstructions.com/the-case-for-git/) -- Книга по Git +**Ресурсы:** + - [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) + - [Git обучалка](https://githowto.com/ru) + - [Интерактивная Git обучалка (в настройках выберите русский язык)](http://learngitbranching.js.org) + - [Официальная книга про Git](https://git-scm.com/book/ru/v2) + - [Working with remote repositories](https://illustrated-git.readthedocs.org/en/latest/#working-with-remote-repositories) + - [Базовый курс по обучению Git](https://www.youtube.com/playlist?list=PLIU76b8Cjem5B3sufBJ_KFTpKkMEvaTQR) (youtube) + - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) ## Домашнее задание HW1 -- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, в котором находится ваш репозиторий: +- Создайте в IntelliJ IDEA новый проект, выбрав каталог basejava, который вы клонировали ранее к себе на компьютер: ![newproject](https://user-images.githubusercontent.com/13649199/27245917-c66f0b5a-52f6-11e7-98dc-f88d0198b5c4.png) @@ -79,16 +75,17 @@ ![finish](https://user-images.githubusercontent.com/13649199/27245924-cab3618e-52f6-11e7-9655-4293149b4126.png) -- Реализуйте класс `ArrayStorage`: хранение резюме на основе массива (методы `clear, get, save, delete, getAll, size`). -- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()`: в IDEA слева на полях зеленая стрелка. -- Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()`. -- Дополнительные материалы по IntelliJ IDEA - - Idea Wiki (поставить кодировку UTF-8, поменять фонт по умолчанию на DejaVu) - - Отладчик IntelliJ IDEA - - Эффективная работа с кодом в IntelliJ IDEA +- Реализуйте класс `ArrayStorage`: хранение резюме на основе массива (методы `clear, get, save, delete, getAll, size`) +- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()`: в IDEA слева на полях зеленая стрелка +- Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` +- Изучите дополнительные материалы по IntelliJ IDEA: + - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставить кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменять фонт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) + - [Отладчик IntelliJ IDEA](http://learn.javajoy.net/debug-intellij-idea) + - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) + - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) ### Optional -- Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок null), чтобы не перебирать каждый раз все 10000 элементов. +- Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок в виде null), чтобы не перебирать каждый раз все 10000 элементов ``` Хранение резюме в storage (от 0 до size-1 элементов null нет): @@ -96,5 +93,5 @@ r1, r2, r3,..., rn, null, null,..., null <---- size -----> <---- storage.length (10000)----------> ``` -- Посмотреть на класс `Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. +- Посмотреть на класс `java.util.Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. - Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка. From 35d3c8d262ca91846240106f39181135ddd238b2 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 18:11:42 +0300 Subject: [PATCH 084/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index e040a448..f9559134 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -90,8 +90,8 @@ Хранение резюме в storage (от 0 до size-1 элементов null нет): r1, r2, r3,..., rn, null, null,..., null -<---- size -----> -<---- storage.length (10000)----------> +<----- size -----> +<------- storage.length (10000) -------> ``` - Посмотреть на класс `java.util.Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. - Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка. From 6f79da50419cad85bd53878d197507f200ea51bb Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 18:13:38 +0300 Subject: [PATCH 085/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f9559134..008ed2b7 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -93,5 +93,5 @@ r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` -- Посмотреть на класс `java.util.Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage`. -- Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка. +- Посмотреть на класс `java.util.Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage` +- Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка From 878ae10042118193785bf0965ca16d40b9fba575 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 18:26:21 +0300 Subject: [PATCH 086/393] Update lesson02.md --- lesson/lesson02.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 970c91ed..82ec5f0b 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -5,21 +5,21 @@ > разбор HW1 будет на следующем уроке вместе с HW2 ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) - - wiki: [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) + - [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) (wiki) - [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) - [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) -- [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) +- [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) - **Дополнительно:** - [Зачем нам ООП и что это такое](https://habrahabr.ru/post/148015/) - - youtube: [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) - - oracle: [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - - oracle: [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) + - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) + - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) + - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - - wiki: [Стек](https://ru.wikipedia.org/wiki/Стек) + - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) @@ -28,20 +28,20 @@ - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) - [Размер Java объектов](http://habrahabr.ru/post/134102/) - - youtube: [JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) + - [JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) (youtube) - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - - youtube: [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) - - youtube: [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) - - youtube: [Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) + - [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) (youtube) + - [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) (youtube) + - [Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) (youtube) - **Дополнительно:** - - oracle: [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - - oracle: [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) + - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) + - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size-1] = null` From 14a0f48da492c3c1ef7aaf919311c497dbaba8f4 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 18 Dec 2017 18:28:00 +0300 Subject: [PATCH 087/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 008ed2b7..f4045af1 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -12,7 +12,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) -- [Мифический человеко-месяц (wiki)](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) +- [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) - [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://google.github.io/styleguide/javaguide.html) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) From 6d184c7aaf1554ded6313cae12ddae6044f88681 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 19 Dec 2017 01:54:29 +0300 Subject: [PATCH 088/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f4045af1..eaeddb23 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -8,7 +8,7 @@ - Установить систему управления версиями Git (опции по умолчанию) - Создать аккаунт на GitHub - Установить IntelliJ IDEA Ultimate -> Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев. +> Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) @@ -34,7 +34,7 @@ ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) -- [Java Microbenchmark JMH](https://github.com/JavaOPs/masterjava#Занятие-2) используем на курсе Masterjava +- [Java Microbenchmark JMH](https://github.com/JavaOPs/masterjava#Занятие-2) (используем на курсе [Masterjava](https://github.com/JavaWebinar/masterjava#2410-Занятие-2)) - [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) - [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) (wiki) - **Дополнительно:** From 2605e39d826fc30974fd3d29f33b9053e95242d8 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 19 Dec 2017 02:01:24 +0300 Subject: [PATCH 089/393] Update lesson03.md --- lesson/lesson03.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index a863adac..fc8b6693 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -20,9 +20,9 @@ - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) - [Полиморфизм, abstract](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) - **Дополнительно:** - - youtube: [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) - - youtube: [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) - - хабр: [equals()/hashCode](https://habrahabr.ru/post/168195/) + - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) + - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) + - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) @@ -38,12 +38,12 @@ 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* **Ресурсы:** - - wiki: [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) + - [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -* перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются. +* перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются -- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными. Сортировать весь массив не надо). +- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными. Сортировать весь массив не надо) From 96e6b7cbe79d749a1e856ef7f020913e00283053 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 03:45:00 +0300 Subject: [PATCH 090/393] Update lesson06.md --- lesson/lesson06.md | 54 +++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index b2d0ffba..967b608f 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -1,25 +1,49 @@ # Шестое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-5](https://drive.google.com/open?id=0B_4NpoQW1xfpUFJpRVZvNVVpeDg) -[см. коммит lesson06 HW05](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3) -- Преобразования Integer и int +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpUFJpRVZvNVVpeDg) +**Коммиты:** +1. *[lesson06 HW05](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3)* -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы.](https://drive.google.com/open?id=0B_4NpoQW1xfpTk5YeTBYbFE4dTg) -[см. коммит Lesson06 Iterator, Comparator and Inner Classes](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava) -- Iterator / Iterable. -- Вложенные и внутренние классы. Примеры в Collections API: Arrays.asList, ArrayList.iterator -- Локальные и анонимные классы. Comparator +**Ресурсы:** +- [Автоупаковка и распаковка в Java](https://habrahabr.ru/post/329498/) +- [Преобразования Integer и int](https://habrahabr.ru/post/104231/) +- [Класс-обертка](https://www.youtube.com/watch?v=T99Dpp29jrU) (youtube) +- **Дополнительно:** + - [Autoboxing and Unboxing](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html) + - [Why do we use autoboxing and unboxing in Java?](https://stackoverflow.com/questions/27647407/why-do-we-use-autoboxing-and-unboxing-in-java) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы](https://drive.google.com/open?id=0B_4NpoQW1xfpTk5YeTBYbFE4dTg) +**Коммиты:** +1. *[Lesson06 Iterator, Comparator and Inner Classes](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava)* + +**Ресурсы:** +- [Паттерн проектирования Итератор](https://refactoring.guru/ru/design-patterns/iterator/java/example) +- [Iterator / Iterable](http://www.javenue.info/post/101) +- **Дополнительно:** + - [Iterator in Java](https://www.journaldev.com/13460/java-iterator) + +- [Вложенные и внутренние классы](http://easy-code.ru/lesson/java-nested-classes) +> Примеры в Collections API: Arrays.asList, ArrayList.iterator +- [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java). Comparator + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) +**Коммиты:** +1. *[Lesson06 Lambda](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java)* + +**Ресурсы:** +- [Нововведения в java 8](https://habrahabr.ru/post/216431/) +- [Лямбда-выражения в Java 8](https://www.youtube.com/watch?v=DNC6Lknn2AE) (youtube) +- [Функциональный интерфейс](https://geekbrains.ru/posts/java_interfaces) +- [Лямбды в Java 8](https://habrahabr.ru/post/224593/) +- **Дополнительно:** + - [Java 8 Functional Interfaces](https://www.journaldev.com/2763/java-8-functional-interfaces) + - [Lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8.](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) -[см. коммит Lesson06 Lambda](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java) -- Lambda выражения. Default методы для Interface. -- Встроенные функциональные интерфейсы. ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) -[см. коммит Lesson06 prepare to HW06](https://github.com/JavaWebinar/basejava/tree/9cbab019ee274b212d8c52a44c93a887175866bc) -- Сделать рефакторинг тестов: `saveOverflow` должно быть только для Array реализаций. +- Сделать рефакторинг тестов: `saveOverflow` должно быть только для Array реализаций - Рефакторинг: в конструктор Resume добавить второй параметр `fullName` - Сделать рефакторинг всех реализаций `Storage`: заменить метод `Resume[] getAll()` на `List getAllSorted()` -- Реализовать до конца `MapUuidStorage`. Подумать что еще может быть search key в реализации на основе Map. +- Реализовать до конца `MapUuidStorage`. Подумать что еще может быть search key в реализации на основе Map From 0a6d9d0b68c2dca9aabb4d46e17279a32498298e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 04:13:55 +0300 Subject: [PATCH 091/393] Update lesson01.md --- lesson/lesson01.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index eaeddb23..39a03cc3 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,7 +1,7 @@ # Первое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар ПРЕЗЕНТАЦИЯ обучения](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) -#### [Так будет выглядеть мое резюме в разрабатываемом на этом проекте приложении](https://javawebinar.github.io/) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар-презентация обучения на проекте BaseJava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) +#### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) ## Для участия необходимо: - Установить JDK8 (выбрать Accept License Agreement) @@ -14,7 +14,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) - [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) -- [Соглашения по оформлению кода](https://google.github.io/styleguide/javaguide.html) +- [Соглашения по оформлению кода [eng]](https://google.github.io/styleguide/javaguide.html) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) @@ -34,9 +34,9 @@ ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) -- [Java Microbenchmark JMH](https://github.com/JavaOPs/masterjava#Занятие-2) (используем на курсе [Masterjava](https://github.com/JavaWebinar/masterjava#2410-Занятие-2)) -- [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) - [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) (wiki) +- [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [Masterjava](https://github.com/JavaWebinar/masterjava#2410-Занятие-2)) +- [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) - **Дополнительно:** - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) - [Most Popular Java EE Servers](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) From 1172429271d6f987659d90664c4d5bf283a82487 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 04:32:52 +0300 Subject: [PATCH 092/393] Update lesson02.md --- lesson/lesson02.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 82ec5f0b..188b5ca3 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -1,7 +1,6 @@ # Второе занятие -### HW1 > разбор HW1 будет на следующем уроке вместе с HW2 ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) @@ -10,10 +9,10 @@ - [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) -- [Достоинства/Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) +- [Достоинства / Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) - **Дополнительно:** - - [Зачем нам ООП и что это такое](https://habrahabr.ru/post/148015/) + - [Зачем нам ООП и что это такое?](https://habrahabr.ru/post/148015/) - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) @@ -32,7 +31,7 @@ - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты.](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) (youtube) @@ -43,10 +42,10 @@ - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) -> Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size-1] = null` +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) +> Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size - 1] = null` -- Прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) +- Еще раз прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) - Реализовать `ArrayStorage.update` - Сделать проверки: в `update/delete/get` - резюме есть в storage; в `save`- нет в storage: `System.out.println("Resume ...")` - Сделать в save проверку на переполнение: `System.out.println("...")` From dc0a01b94f2a722deee5b3740e5060c197fd3be3 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 04:43:08 +0300 Subject: [PATCH 093/393] Update lesson03.md --- lesson/lesson03.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index fc8b6693..2105649b 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -1,7 +1,7 @@ # Третье занятие -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) **Коммиты:** 1. *[HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src)* @@ -16,7 +16,7 @@ **Ресурсы:** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) -- [Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) +- [Object. Контракт equals / hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) - [Полиморфизм, abstract](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) - **Дополнительно:** @@ -25,25 +25,26 @@ - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) +- [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) +- [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) - [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view) -- [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) -- [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) - **Дополнительно** - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) **Коммиты:** 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* **Ресурсы:** - [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) + - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) +### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -* перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются +- Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются - Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными. Сортировать весь массив не надо) From 99d727260f04c8254cfe509f0dd201dc9bdb3711 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 04:43:55 +0300 Subject: [PATCH 094/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 2105649b..a58b6075 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -38,7 +38,7 @@ 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* **Ресурсы:** - - [Паттерн проектирования - шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) + - [Паттерн проектирования - Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) From e76151ffc610095d4a731cfd4ca9cffa971edf1a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 13:47:10 +0300 Subject: [PATCH 095/393] Update lesson06.md --- lesson/lesson06.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 967b608f..db154ca2 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -23,9 +23,15 @@ - **Дополнительно:** - [Iterator in Java](https://www.journaldev.com/13460/java-iterator) -- [Вложенные и внутренние классы](http://easy-code.ru/lesson/java-nested-classes) -> Примеры в Collections API: Arrays.asList, ArrayList.iterator -- [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java). Comparator +- [Вложенные классы в Java](https://habrahabr.ru/post/342090/) +- [Вложенные, внутренние, локальные и анонимные классы](http://pr0java.blogspot.ru/2015/08/1.html) +- [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java). +- [Интерфейсы Comparable и Comparator](https://metanit.com/java/tutorial/5.6.php) +- [Анонимные классы в Java](https://www.youtube.com/watch?v=P3uicghNPLg) (youtube) +- [Nested (static) классы в Java](https://www.youtube.com/watch?v=svOwVvSWeus) (youtube) +- [Inner (non-static) классы в Java](https://www.youtube.com/watch?v=LflAy_LOwwQ) (youtube) +- **Дополнительно** + - [Вложенные, внутренние, локальные и анонимные классы [eng]](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) **Коммиты:** @@ -41,7 +47,7 @@ - [Lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW6](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) - Сделать рефакторинг тестов: `saveOverflow` должно быть только для Array реализаций - Рефакторинг: в конструктор Resume добавить второй параметр `fullName` From 2c42d05cef87f663b4a3f7d8e77128119693ae40 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 21 Dec 2017 15:00:40 +0300 Subject: [PATCH 096/393] Update lesson04.md --- lesson/lesson04.md | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 893c6f9a..ebb9152c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -1,15 +1,19 @@ # Четвертое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-3](https://drive.google.com/open?id=0B_4NpoQW1xfpQXVMb2xjRXJPdUU) -[см. коммит lesson04 HW03](https://github.com/JavaWebinar/basejava/tree/afc0cc5111434375f9da00e225ed7cbb15bbd4b7/src/ru/javawebinar/basejava/storage) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpQXVMb2xjRXJPdUU) +**Коммиты:** +1. *[lesson04 HW03](https://github.com/JavaWebinar/basejava/tree/afc0cc5111434375f9da00e225ed7cbb15bbd4b7/src/ru/javawebinar/basejava/storage)* ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Работа со строками](https://drive.google.com/open?id=0B_4NpoQW1xfpSWVLYk51M2JpRnM) -[см. коммит Lesson04 String](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java) -- Строки в Java. Кодировка. -- Управление строками, функции для работы со строками в Java. -- StringBuilder vs StringBuffer -- String literal pool +**Коммиты:** +1. *[Lesson04 String](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java)* + +**Ресурсы:** +- []()Строки в Java. Кодировка. +- []()Управление строками, функции для работы со строками в Java. +- []()StringBuilder vs StringBuffer +- []()String literal pool ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) [см. коммит Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) @@ -20,11 +24,19 @@ ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Reflection. Аннотации. Модульное тестирование](https://drive.google.com/open?id=0B_4NpoQW1xfpT0dGZWlJbnN3bU0) -[см. коммит Lesson04 Reflection and JUnit](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) - - Аннотации - - Reflection (Рефлексия) — основы. В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON. - - Модульное тестирование JUnit 4 - - Тестирование с помощью JUnit (Test Case) +**Коммиты:** +1. *[Lesson04 Reflection and JUnit](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7)* + +**Ресурсы:** + - [Java 8 аннотации](https://urvanov.ru/2016/03/30/java-8-аннотации/) + - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) + - **Дополнительно:** + - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) + - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) +> В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON. + - [Фреймворк для модульного тестирования JUnit](http://junit.org/) + - [Тестирование с помощью JUnit (Test Case)](http://www.javenue.info/post/19) + - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) ## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы > В чём разница между Assert.fail(); и e.printStackTrace();? @@ -33,12 +45,12 @@ Assert.fail(); - если тест дошел до этого места, то e.printStackTrace(); - выводит стактрайс -## Домашнее задание -Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest`. -В `MainReflection` сделать вызов метода `toString` через отражение. +## Домашнее задание HW4 +- Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest` +В `MainReflection` сделать вызов метода `toString` через отражение ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` -- `ArrayStorageTest` c `ArrayStorage` +- `ArrayStorageTest` c `ArrayStorage` как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From b475c020d716785bc6636e4352eadbbf023b7f65 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 22 Dec 2017 16:34:04 +0300 Subject: [PATCH 097/393] Update lesson01.md --- lesson/lesson01.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 39a03cc3..c1a220d2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -42,22 +42,11 @@ - [Most Popular Java EE Servers](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) -### Настройка проекта -- Создать на GitHub репозиторий `basejava` -- git занести в переменная окружения PATH, перезапустить cmd -- Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` -- Перейти в каталог проекта: `cd basejava` -- Настроить git в локальном проекте на свой проект в GitHub: - - `git remote -v` - - `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull - - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push - - `git push -u origin master` - -#### [Система управления версиями](https://ru.wikipedia.org/wiki/Система_управления_версиями) (wiki) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) **Ресурсы:** + - [Система управления версиями](https://ru.wikipedia.org/wiki/Система_управления_версиями) (wiki) - [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) - [Git обучалка](https://githowto.com/ru) - [Интерактивная Git обучалка (в настройках выберите русский язык)](http://learngitbranching.js.org) @@ -65,6 +54,17 @@ - [Working with remote repositories](https://illustrated-git.readthedocs.org/en/latest/#working-with-remote-repositories) - [Базовый курс по обучению Git](https://www.youtube.com/playlist?list=PLIU76b8Cjem5B3sufBJ_KFTpKkMEvaTQR) (youtube) - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) + +### Настройка проекта +- Создать на GitHub репозиторий `basejava` +- git занести в переменная окружения PATH, перезапустить cmd +- Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` +- Перейти в каталог проекта: `cd basejava` +- Настроить git в локальном проекте на свой проект в GitHub: + - `git remote -v` + - `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull + - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push + - `git push -u origin master` ## Домашнее задание HW1 - Создайте в IntelliJ IDEA новый проект, выбрав каталог basejava, который вы клонировали ранее к себе на компьютер: From 6bd59a90e60c725d3eb820eaa595d1be3b3626b8 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 22 Dec 2017 17:23:12 +0300 Subject: [PATCH 098/393] Update lesson04.md --- lesson/lesson04.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index ebb9152c..5cb6eb0b 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -10,10 +10,14 @@ 1. *[Lesson04 String](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java)* **Ресурсы:** -- []()Строки в Java. Кодировка. -- []()Управление строками, функции для работы со строками в Java. -- []()StringBuilder vs StringBuffer -- []()String literal pool +- [Строки в Java](https://urvanov.ru/2016/04/20/java-8-строки/) +- [Кодировка в Java](http://www.skipy.ru/technics/encodings.html) +- [Ошибки при использовании строк](http://www.skipy.ru/technics/strings.html) +- [Обработка строк в Java](https://habrahabr.ru/post/260767/) +- **Дополнительно:** + - [StringBuilder vs StringBuffer](https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer?rq=1) + - [String vs StringBuffer vs StringBuilder](https://www.journaldev.com/538/string-vs-stringbuffer-vs-stringbuilder) + - [String literal pool](http://java67.blogspot.ru/2014/08/difference-between-string-literal-and-new-String-object-Java.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) [см. коммит Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) From 976c478bcbefeb9003907e48a368611cc0c60a46 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 22 Dec 2017 17:24:56 +0300 Subject: [PATCH 099/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 188b5ca3..df451a84 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -20,6 +20,7 @@ ### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) + - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) - **Дополнительно:** From b51acfdc4e1ee5ecc0449d05ed0023553570ae56 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 22 Dec 2017 17:40:08 +0300 Subject: [PATCH 100/393] Update lesson04.md --- lesson/lesson04.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 5cb6eb0b..ac8b404e 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -20,10 +20,11 @@ - [String literal pool](http://java67.blogspot.ru/2014/08/difference-between-string-literal-and-new-String-object-Java.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) -[см. коммит Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) - - Исключения (Exceptions). - - "Java. Эффективное программирование" Джошуа Блох: Исключения. - - Конструктор. this, super +**Коммиты:** +1. *[Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava)* + - [Исключения (Exceptions)](http://proglang.su/java/exceptions) + - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) + - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html). [this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) @@ -37,7 +38,7 @@ - **Дополнительно:** - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) -> В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON. +> В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - [Тестирование с помощью JUnit (Test Case)](http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) @@ -57,4 +58,4 @@ e.printStackTrace(); - выводит стактрайс - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` - `ArrayStorageTest` c `ArrayStorage` -как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`,а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем +> как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From 903262ab3084b83e1016266f4a6f3a881be765f5 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 22 Dec 2017 17:41:14 +0300 Subject: [PATCH 101/393] Update lesson04.md --- lesson/lesson04.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index ac8b404e..2306596d 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -22,6 +22,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) **Коммиты:** 1. *[Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava)* + +**Ресурсы:** - [Исключения (Exceptions)](http://proglang.su/java/exceptions) - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html). [this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) From 503560247cff4fc15f2e94581c80e956833da5d7 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Dec 2017 13:49:55 +0300 Subject: [PATCH 102/393] Update lesson01.md --- lesson/lesson01.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index c1a220d2..f36e2c9c 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -4,10 +4,10 @@ #### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) ## Для участия необходимо: -- Установить JDK8 (выбрать Accept License Agreement) -- Установить систему управления версиями Git (опции по умолчанию) -- Создать аккаунт на GitHub -- Установить IntelliJ IDEA Ultimate +- Установить [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) +- Установить систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) +- Создать аккаунт на [GitHub](https://github.com/) +- Установить [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) > Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев From 45954fcd1108ed0f5bec18bca3683030fe4ed87f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Dec 2017 14:06:05 +0300 Subject: [PATCH 103/393] Update lesson02.md --- lesson/lesson02.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index df451a84..2ae02650 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -3,7 +3,7 @@ > разбор HW1 будет на следующем уроке вместе с HW2 -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) - [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) (wiki) - [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) - [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) @@ -17,7 +17,7 @@ - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) @@ -32,7 +32,7 @@ - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) (youtube) @@ -43,7 +43,7 @@ - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size - 1] = null` - Еще раз прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) From a9fadeb9ce3d8ca81d3cc6181509fe2ae3f825e6 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Dec 2017 19:43:16 +0300 Subject: [PATCH 104/393] Update lesson02.md --- lesson/lesson02.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 2ae02650..166c36ab 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -1,8 +1,6 @@ # Второе занятие - > разбор HW1 будет на следующем уроке вместе с HW2 - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) - [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) (wiki) - [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) @@ -10,13 +8,11 @@ - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства / Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) - - **Дополнительно:** - [Зачем нам ООП и что это такое?](https://habrahabr.ru/post/148015/) - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) From e25901cef6a8aa7515ab1bb0cd7bfa599f30e833 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Dec 2017 19:44:28 +0300 Subject: [PATCH 105/393] Update lesson02.md --- lesson/lesson02.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 166c36ab..6eed729e 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -13,12 +13,12 @@ - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) - - **Дополнительно:** - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) @@ -34,7 +34,6 @@ - [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) (youtube) - [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) (youtube) - [Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) (youtube) - - **Дополнительно:** - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) From 33f89fe874cfd9efbc09278d10873d5a17e984ec Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 26 Dec 2017 17:03:36 +0300 Subject: [PATCH 106/393] Update lesson06.md --- lesson/lesson06.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index db154ca2..407f36fe 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -1,6 +1,5 @@ # Шестое занятие - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpUFJpRVZvNVVpeDg) **Коммиты:** 1. *[lesson06 HW05](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3)* @@ -22,7 +21,6 @@ - [Iterator / Iterable](http://www.javenue.info/post/101) - **Дополнительно:** - [Iterator in Java](https://www.journaldev.com/13460/java-iterator) - - [Вложенные классы в Java](https://habrahabr.ru/post/342090/) - [Вложенные, внутренние, локальные и анонимные классы](http://pr0java.blogspot.ru/2015/08/1.html) - [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java). From 86ebc4a240fc63982732abc54afafdf975f5196e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 26 Dec 2017 17:12:22 +0300 Subject: [PATCH 107/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f36e2c9c..96ff9d71 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -56,6 +56,7 @@ - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) ### Настройка проекта +> Для удобной навигации по файлам на GinHib рекомендуем установить расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) - Создать на GitHub репозиторий `basejava` - git занести в переменная окружения PATH, перезапустить cmd - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` From 45d1b5e4613f2fbe5935470e4cc12edacadc3fe2 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 26 Dec 2017 21:35:28 +0300 Subject: [PATCH 108/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 96ff9d71..0e4910ab 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -56,7 +56,7 @@ - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) ### Настройка проекта -> Для удобной навигации по файлам на GinHib рекомендуем установить расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) +> Для удобной навигации по файлам на GitHub рекомендуем установить расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) - Создать на GitHub репозиторий `basejava` - git занести в переменная окружения PATH, перезапустить cmd - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` From 0102af8e11a9d498a0871fd01ef11c7d3f6f614b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 27 Dec 2017 00:10:14 +0300 Subject: [PATCH 109/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 0e4910ab..31d9ec16 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -81,7 +81,7 @@ - Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставить кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменять фонт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) - - [Отладчик IntelliJ IDEA](http://learn.javajoy.net/debug-intellij-idea) + - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) From eb10e21ddbe5af4033c9c891feb988871f1f7865 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 27 Dec 2017 00:56:44 +0300 Subject: [PATCH 110/393] Update lesson05.md --- lesson/lesson05.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index d2e466ce..c843b194 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -23,3 +23,6 @@ Выбор реализации `List` и `Map` за вами. - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) > Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. + +В итоге у вас должна получиться подобная иерархия наследования классов +![image](https://user-images.githubusercontent.com/29703461/34365360-6dae30b2-eaa0-11e7-89d2-e7630ae73827.png) From 52dff76da3edae30e98eeda67aa74c232646fcd0 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 29 Dec 2017 21:41:30 +0300 Subject: [PATCH 111/393] Update lesson07.md --- lesson/lesson07.md | 50 +++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index cc4182bf..ad8b2576 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -1,36 +1,40 @@ # Седьмое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-6](https://drive.google.com/open?id=0B_4NpoQW1xfpT1BwLUNBanVfd1E) -[см. коммит Lesson07_HW06 test refactoring](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpT1BwLUNBanVfd1E) +**Коммиты:** +1. *[Lesson07_HW06 test refactoring](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage)* +1. *[Lesson07_HW06 add fullName](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680)* +1. *[Lesson07_HW06 getAllSorted](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294)* +1. *[Lesson07_HW06 mapStorage](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79)* -[см. коммит Lesson07_HW06 add fullName](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Параметризация. Стирание типов](https://drive.google.com/open?id=0B_4NpoQW1xfpbXotWEFrYVVGUWc) +**Коммиты:** +1. *[Lesson07 generic](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage)* -[см. коммит Lesson07_HW06 getAllSorted](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294) - -[см. коммит Lesson07_HW06 mapStorage](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79) - -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Параметризация. Стирание типов.](https://drive.google.com/open?id=0B_4NpoQW1xfpbXotWEFrYVVGUWc) -[см. коммит Lesson07 generic](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage) - -- Дженерики (Java, обучающая статья) -- Обобщения (Generic) -- Ограничения. +**Ресурсы:** +- [Дженерики (Java, обучающая статья)](http://www.quizful.net/post/java-generics-tutorial) +- [Обобщения (Generic)](http://developer.alexanderklimov.ru/android/java/generic.php) +- [Ограничения](http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Логирование](https://drive.google.com/open?id=0B_4NpoQW1xfpM1J5NkVqNHd1MlU) -[см. коммит Lesson07 logging](https://github.com/JavaWebinar/basejava/blob/63674b7f246bf6bc4e509cc1241c7b6340477d18/src/ru/javawebinar/basejava/storage/AbstractStorage.java) +**Коммиты:** +1. *[Lesson07 logging](https://github.com/JavaWebinar/basejava/blob/63674b7f246bf6bc4e509cc1241c7b6340477d18/src/ru/javawebinar/basejava/storage/AbstractStorage.java)* -- Log4J (Apache logging) -- Java Logging API - Tutorial -- Логирование в Java / quick start -- Ведение лога приложения -- Java Logging: история кошмара +**Ресурсы:** +- [Log4J (Apache logging)](https://logging.apache.org/) +- [Java Logging API - Tutorial](http://www.vogella.com/tutorials/Logging/article.html) +- [Логирование в Java / quick start](https://habrahabr.ru/post/130195/) +- [Ведение лога приложения](http://skipy.ru/useful/logging.html) +- [Java Logging: история кошмара](http://habrahabr.ru/post/113145/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглетон, Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) -[см. коммит Lesson07 enum](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглетон. Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) +**Коммиты:** +1. *[Lesson07 enum](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava)* -- Одиночка (шаблон проектирования) -- Перечисляемые типы (enum) в Java +**Ресурсы:** +- [Одиночка (шаблон проектирования)](https://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)) +- [Перечисляемые типы (enum) в Java](http://easy-code.ru/lesson/enum-types-java) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) Доменный объект From c37014df1e06ac383e5062216cf8ab61eaecd195 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 31 Dec 2017 02:14:51 +0300 Subject: [PATCH 112/393] Update lesson07.md --- lesson/lesson07.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index ad8b2576..fb6f6399 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -28,7 +28,7 @@ - [Ведение лога приложения](http://skipy.ru/useful/logging.html) - [Java Logging: история кошмара](http://habrahabr.ru/post/113145/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглетон. Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглтон. Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) **Коммиты:** 1. *[Lesson07 enum](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava)* @@ -37,12 +37,12 @@ - [Перечисляемые типы (enum) в Java](http://easy-code.ru/lesson/enum-types-java) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) -Доменный объект +[Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) -- Cделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации). - - Схожие по структуре и функциональности сущности делаем одним классом. - - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме. +- Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) + - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации) + - Схожие по структуре и функциональности сущности делаем одним классом + - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме - В модели резюме должны быть представлены контакты и следующие разделы: - PERSONAL("Личные качества") - OBJECTIVE("Позиция") @@ -52,13 +52,13 @@ - EDUCATION("Образование") - В секциях Достижения и Квалификация хранить список строк - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет сделано следующим образом: -обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат..). - - При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны. -- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиций).** +обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) + - При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны +- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиций)** #### Инструменты для рисования: -- Generate class diagram in IntelliJ IDEA (Help: working with Diagrams) +- [Generate class diagram in IntelliJ IDEA](http://stackoverflow.com/questions/8942751/use-intellij-to-generate-class-diagram#26926334) ([Help: working with Diagrams](https://www.jetbrains.com/help/idea/2016.1/working-with-diagrams.html?origin=old_help)) - Нарисовать и сфотографировать -- Online: www.draw.io -- yEd - Graph Editor +- [Online: www.draw.io](http://www.draw.io) +- [yEd - Graph Editor](https://www.yworks.com/) From 0108a4e54f031d3511821d1fe8cb336d41a4630c Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 31 Dec 2017 02:41:20 +0300 Subject: [PATCH 113/393] Update lesson07.md --- lesson/lesson07.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index fb6f6399..39a488c8 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -42,19 +42,19 @@ - Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации) - Схожие по структуре и функциональности сущности делаем одним классом - - Модель упрощаем для хранения только необходимой информации для вывода/ редактирования резюме - - В модели резюме должны быть представлены контакты и следующие разделы: - - PERSONAL("Личные качества") + - Модель максимально упрощаем, и храним в ней только необходимые данные, а также функционал для вывода и редактирования резюме + - В модели резюме должны быть представлены контакты и следующие секции: - OBJECTIVE("Позиция") + - PERSONAL("Личные качества") - ACHIEVEMENT("Достижения") - QUALIFICATIONS("Квалификация") - EXPERIENCE("Опыт работы") - EDUCATION("Образование") - В секциях Достижения и Квалификация хранить список строк - - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет сделано следующим образом: + - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - - При добавлении/удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` с всеми разделами (организацией, периодом работы/учебы, описанием позиций)** + - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны +- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` со всеми разделами** #### Инструменты для рисования: From 46453c54856ad2919c61f68ff2b9c747483ffdaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 2 Jan 2018 17:28:10 -0800 Subject: [PATCH 114/393] Update lesson08.md --- lesson/lesson08.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index cbd70190..0751df6f 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -24,7 +24,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpRV8xMnpDV0VBUGc) [см. коммит Lesson08 HW08 ](https://github.com/JavaWebinar/basejava/tree/126be641f9cf8202956817d26279a7af0cdf6845/src/ru/javawebinar/basejava) -- Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется -- Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -- Заполнить в `AbstractStorageTest` резюме данными -- Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. +1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется +2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) +3) Заполнить в `AbstractStorageTest` резюме данными +4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. From df7a501f0e65f281e35073ed97b11acb89c6e717 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 13:42:46 +0300 Subject: [PATCH 115/393] Update lesson01.md --- lesson/lesson01.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 31d9ec16..7c98ead7 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -3,11 +3,11 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар-презентация обучения на проекте BaseJava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) #### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) -## Для участия необходимо: -- Установить [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) -- Установить систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) -- Создать аккаунт на [GitHub](https://github.com/) -- Установить [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) +## Подготовка рабочего окружения: +- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) +- Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) +- Создайте аккаунт на [GitHub](https://github.com/) +- Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) > Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев From b34a20d3225c735226e1b5054dd7fae1c5950a0d Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 13:49:07 +0300 Subject: [PATCH 116/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 7c98ead7..8feb40c2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -35,7 +35,7 @@ ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) - [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) (wiki) -- [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [Masterjava](https://github.com/JavaWebinar/masterjava#2410-Занятие-2)) +- [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) - [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) - **Дополнительно:** - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) From 74f0907ca1a6bd8a6e20e1c17beec38206a44213 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 13:56:40 +0300 Subject: [PATCH 117/393] Update lesson01.md --- lesson/lesson01.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 8feb40c2..c9cdb11d 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -5,8 +5,10 @@ ## Подготовка рабочего окружения: - Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) -- Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) -- Создайте аккаунт на [GitHub](https://github.com/) +- Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) +- Создайте аккаунт на [GitHub](https://github.com/) +- Для удобной навигации по файлам на GitHub установите расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) + - Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) > Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев @@ -56,7 +58,6 @@ - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) ### Настройка проекта -> Для удобной навигации по файлам на GitHub рекомендуем установить расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) - Создать на GitHub репозиторий `basejava` - git занести в переменная окружения PATH, перезапустить cmd - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` From 3d427d7c8135f8205c6edd8354c39e64c825310e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 13:58:55 +0300 Subject: [PATCH 118/393] Update lesson01.md --- lesson/lesson01.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index c9cdb11d..0db90bf6 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -4,15 +4,13 @@ #### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) ## Подготовка рабочего окружения: -- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) +- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) - Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) - Создайте аккаунт на [GitHub](https://github.com/) - Для удобной навигации по файлам на GitHub установите расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) - -- Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) +- Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) > Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) - [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) From 07b367e693e8f3f563973499cfe83e89f41a725a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 14:58:54 +0300 Subject: [PATCH 119/393] Update lesson01.md --- lesson/lesson01.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 0db90bf6..f8b62574 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -3,7 +3,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар-презентация обучения на проекте BaseJava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) #### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) -## Подготовка рабочего окружения: +### Подготовка рабочего окружения - Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) - Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) - Создайте аккаунт на [GitHub](https://github.com/) @@ -39,13 +39,12 @@ - [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) - **Дополнительно:** - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) - - [Most Popular Java EE Servers](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) + - [Most popular Java application servers: 2017 edition](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) -**Ресурсы:** - [Система управления версиями](https://ru.wikipedia.org/wiki/Система_управления_версиями) (wiki) - [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) - [Git обучалка](https://githowto.com/ru) @@ -56,11 +55,11 @@ - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) ### Настройка проекта -- Создать на GitHub репозиторий `basejava` -- git занести в переменная окружения PATH, перезапустить cmd +- Создайте на GitHub репозиторий с названием `basejava` +- [Занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите cmd - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` -- Перейти в каталог проекта: `cd basejava` -- Настроить git в локальном проекте на свой проект в GitHub: +- Перейдите в каталог проекта: `cd basejava` +- Настройте git в локальном проекте на свой проект в GitHub: - `git remote -v` - `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push @@ -79,19 +78,19 @@ - Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()`: в IDEA слева на полях зеленая стрелка - Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставить кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменять фонт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) + - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) ### Optional -- Модифицировать класс `ArrayStorage`: хранить все резюме в начале storage (без дырок в виде null), чтобы не перебирать каждый раз все 10000 элементов +- Модифицируйте класс `ArrayStorage`: храните все резюме в начале storage (без дырок в виде null), чтобы не перебирать каждый раз все 10000 элементов ``` -Хранение резюме в storage (от 0 до size-1 элементов null нет): +Схема хранения резюме в storage (от 0 до size-1 элементов null нет): r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` -- Посмотреть на класс `java.util.Arrays`. Там есть полезные вещи, которые могут упростить код `ArrayStorage` -- Протестируйте реализацию, запустив MainArray.main(): в IDEA слева на полях зеленая стрелка +- Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые могут упростить код `ArrayStorage` +- Протестируйте реализацию, запустив MainArray.main() From 583303008ee8968c702cd72de7e9e039f95be8e4 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 15:09:32 +0300 Subject: [PATCH 120/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f8b62574..2fba17d2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -74,8 +74,8 @@ ![finish](https://user-images.githubusercontent.com/13649199/27245924-cab3618e-52f6-11e7-9655-4293149b4126.png) -- Реализуйте класс `ArrayStorage`: хранение резюме на основе массива (методы `clear, get, save, delete, getAll, size`) -- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()`: в IDEA слева на полях зеленая стрелка +- Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll`) +- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()` - Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) From 7ec5635e43c226c6aa5e873479ce04842bae590f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 16:56:54 +0300 Subject: [PATCH 121/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 39a488c8..6d932fe1 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -44,8 +44,8 @@ - Схожие по структуре и функциональности сущности делаем одним классом - Модель максимально упрощаем, и храним в ней только необходимые данные, а также функционал для вывода и редактирования резюме - В модели резюме должны быть представлены контакты и следующие секции: - - OBJECTIVE("Позиция") - PERSONAL("Личные качества") + - OBJECTIVE("Позиция") - ACHIEVEMENT("Достижения") - QUALIFICATIONS("Квалификация") - EXPERIENCE("Опыт работы") From 3f30dbae3dd671dadf48ed64fa88705e52be40f3 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 17:12:37 +0300 Subject: [PATCH 122/393] Update lesson08.md --- lesson/lesson08.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 0751df6f..9b6096ca 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -3,8 +3,6 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) [см. коммит Lesson08 HW07 model implementation](https://github.com/JavaWebinar/basejava/tree/8ba1997667b33253df132eb5aef1fc618298687b/src/ru/javawebinar/basejava/model) -- объектная модель резюме - ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Работа с датами и временем.](https://drive.google.com/open?id=0B_4NpoQW1xfpV3hZMk85djRfeVk) [см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/tree/f4844c291cf82387a14088ab3eed112b3102a607/src/ru/javawebinar/basejava) From d921ec15091ed1b7cd8fbd1461b452dad783374b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 17:41:34 +0300 Subject: [PATCH 123/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2fba17d2..9ca57424 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -61,8 +61,8 @@ - Перейдите в каталог проекта: `cd basejava` - Настройте git в локальном проекте на свой проект в GitHub: - `git remote -v` - - `git remote set-url origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка pull - - `git remote set-url --push origin https://github.com/[твой_GITHUB_аккаунт]/[твой_репозиторий].git` - настройка push + - `git remote set-url origin url_на_твой_basejava-репозиторий.git` - настройка pull + - `git remote set-url --push origin url_на_твой_basejava-репозиторий.git` - настройка push - `git push -u origin master` ## Домашнее задание HW1 From 4866ef12a7f8e830489c4b1ba9edcb2140519730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 8 Jan 2018 17:57:06 +0300 Subject: [PATCH 124/393] Update lesson08.md --- lesson/lesson08.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 9b6096ca..566d0412 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -4,6 +4,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-7](https://drive.google.com/open?id=0B_4NpoQW1xfpSXBDR3NndlFXSFE) [см. коммит Lesson08 HW07 model implementation](https://github.com/JavaWebinar/basejava/tree/8ba1997667b33253df132eb5aef1fc618298687b/src/ru/javawebinar/basejava/model) +- Объектная модель резюме + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Работа с датами и временем.](https://drive.google.com/open?id=0B_4NpoQW1xfpV3hZMk85djRfeVk) [см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/tree/f4844c291cf82387a14088ab3eed112b3102a607/src/ru/javawebinar/basejava) From 557327bbed40d171ba8e22736c54db7ef63fa426 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 8 Jan 2018 18:12:56 +0300 Subject: [PATCH 125/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 9ca57424..a4473b0e 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -74,7 +74,7 @@ ![finish](https://user-images.githubusercontent.com/13649199/27245924-cab3618e-52f6-11e7-9655-4293149b4126.png) -- Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll`) +- Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll` - Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()` - Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` - Изучите дополнительные материалы по IntelliJ IDEA: From 2e7506ad05b5f6f4db0e01fc5bdb336772b455cf Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 16:32:50 +0300 Subject: [PATCH 126/393] Update lesson02.md --- lesson/lesson02.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 6eed729e..ccb241a9 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -39,10 +39,10 @@ - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) -> Правка к видео: ArrayStorage.delete() - вместо `storage[i] = null` нужно `storage[size - 1] = null` - -- Еще раз прочитать, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) -- Реализовать `ArrayStorage.update` -- Сделать проверки: в `update/delete/get` - резюме есть в storage; в `save`- нет в storage: `System.out.println("Resume ...")` -- Сделать в save проверку на переполнение: `System.out.println("...")` -- Избавиться от дублирования в коде `ArrayStorage` +> Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` +` +- Еще `рз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) +- Реализуйте `ArrayStorage.update` +- Сделайте проверки: в `update/delete/get` - резюме есть в `storage`?; в `save`- резюме нет в `storage`? Выведите соответствующие предупреждения - `System.out.println("Resume ...")` +- Сделайте в `save` проверку на переполнение и выведите предупреждение - `System.out.println("...")` +- Избавьтесь от дублирования в коде `ArrayStorage` From 4fceadb7c486f95ba8cee261dd620d76c98d1893 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 16:34:00 +0300 Subject: [PATCH 127/393] Update lesson02.md --- lesson/lesson02.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index ccb241a9..6a539f27 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -40,8 +40,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` -` -- Еще `рз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) + +- Еще раз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) - Реализуйте `ArrayStorage.update` - Сделайте проверки: в `update/delete/get` - резюме есть в `storage`?; в `save`- резюме нет в `storage`? Выведите соответствующие предупреждения - `System.out.println("Resume ...")` - Сделайте в `save` проверку на переполнение и выведите предупреждение - `System.out.println("...")` From af56e485c483e936d1ad24bd879795a003d2d092 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 23:22:40 +0300 Subject: [PATCH 128/393] Update lesson03.md --- lesson/lesson03.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index a58b6075..4c2e375e 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -1,18 +1,18 @@ # Третье занятие -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) - -**Коммиты:** - 1. *[HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src)* - 1. *[Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d)* - 1. *[lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava)* +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) +**Коммиты:** + > - [HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) + > - [Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) + > - [lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) **Коммиты:** - 1. *[Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava)* - 1. *[Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage)* + > - [Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) + > - [Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) **Ресурсы:** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) @@ -24,7 +24,7 @@ - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) - [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) @@ -32,10 +32,10 @@ - **Дополнительно** - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) **Коммиты:** - 1. *[Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava)* + > - [Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) **Ресурсы:** - [Паттерн проектирования - Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) @@ -43,7 +43,7 @@ - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) -### ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются From d0402bdbd9b4511b91ffc858ebdba869fa6415a3 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 23:30:56 +0300 Subject: [PATCH 129/393] Update lesson03.md --- lesson/lesson03.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 4c2e375e..fe6a7de1 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -4,15 +4,15 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) **Коммиты:** - > - [HW1](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) - > - [Introduce package and encapsulation](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) - > - [lesson03 HW02](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) + - [`HW1`](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) + - [`Introduce package and encapsulation`](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) + - [`lesson03 HW02`](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) **Коммиты:** - > - [Lesson03 equals&hashCode, static](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) - > - [Lesson03 implements interface](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) + - [`Lesson03 equals&hashCode, static`](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) + - [`Lesson03 implements interface`](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) **Ресурсы:** - [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) @@ -35,7 +35,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) **Коммиты:** - > - [Lesson03 abstract storage & sorted storage](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) + - [`Lesson03 abstract storage & sorted storage`](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) **Ресурсы:** - [Паттерн проектирования - Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) From 22585f5ecff54846dad1133e37ed073abb226f38 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 23:47:14 +0300 Subject: [PATCH 130/393] Update lesson03.md --- lesson/lesson03.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index fe6a7de1..cee0baf8 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -15,11 +15,12 @@ - [`Lesson03 implements interface`](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) **Ресурсы:** -- [static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) -- [Object. Контракт equals / hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) +- [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) +- [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) -- [Полиморфизм, abstract](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) +- [Полиморфизм](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) - **Дополнительно:** + - [Что такое полиморфизм?](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC) - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) @@ -45,6 +46,6 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -- Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что packages в видео и коммитах - отличаются +- Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах - отличаются -- Закончить реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (`SortedArrayStorage` хранит элементы отсортированными. Сортировать весь массив не надо) +- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (В `SortedArrayStorage` хранить элементы отсортированными. Сортировать весь массив не надо) From 6ab7455953f84fe0bc2b2dcc12c2a282e5f05eec Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 9 Jan 2018 23:59:47 +0300 Subject: [PATCH 131/393] Update lesson03.md --- lesson/lesson03.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index cee0baf8..14e44711 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -16,9 +16,12 @@ **Ресурсы:** - [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) +- [10 заметок о модификаторе Static в Java](http://info.javarush.ru/translation/2014/04/15/10-заметок-о-модификаторе-Static-в-Java.html) - [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) +- [Абстрактные классы](https://www.youtube.com/watch?v=ZjiFL2Yo2fw) (youtube) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) - [Полиморфизм](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) +- [Отличия абстрактного класса от интерфейса](https://ru.stackoverflow.com/questions/235352/Отличия-абстрактного-класса-от-интерфейса-abstract-class-and-interface) - **Дополнительно:** - [Что такое полиморфизм?](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC) - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) From a086f27dd4bfa6631bbb46b080184e2fdab7a552 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 10 Jan 2018 00:17:51 +0300 Subject: [PATCH 132/393] Update lesson03.md --- lesson/lesson03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 14e44711..4ba32420 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -16,7 +16,7 @@ **Ресурсы:** - [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) -- [10 заметок о модификаторе Static в Java](http://info.javarush.ru/translation/2014/04/15/10-заметок-о-модификаторе-Static-в-Java.html) +- [10 заметок о модификаторе static в Java](http://info.javarush.ru/translation/2014/04/15/10-заметок-о-модификаторе-Static-в-Java.html) - [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Абстрактные классы](https://www.youtube.com/watch?v=ZjiFL2Yo2fw) (youtube) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) @@ -51,4 +51,4 @@ - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах - отличаются -- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (В `SortedArrayStorage` хранить элементы отсортированными. Сортировать весь массив не надо) +- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (в `SortedArrayStorage` хранить элементы отсортированными. Сортировать весь массив не надо) From e7e3916f168bdcca25402d4a2a64c24509e3369f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 10 Jan 2018 00:42:39 +0300 Subject: [PATCH 133/393] Update lesson04.md --- lesson/lesson04.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 2306596d..53abb01e 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -3,11 +3,11 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpQXVMb2xjRXJPdUU) **Коммиты:** -1. *[lesson04 HW03](https://github.com/JavaWebinar/basejava/tree/afc0cc5111434375f9da00e225ed7cbb15bbd4b7/src/ru/javawebinar/basejava/storage)* + - [`lesson04 HW03`](https://github.com/JavaWebinar/basejava/tree/afc0cc5111434375f9da00e225ed7cbb15bbd4b7/src/ru/javawebinar/basejava/storage) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Работа со строками](https://drive.google.com/open?id=0B_4NpoQW1xfpSWVLYk51M2JpRnM) **Коммиты:** -1. *[Lesson04 String](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java)* + - [`Lesson04 String`](https://github.com/JavaWebinar/basejava/blob/7f5a5d70a63fbeea40539397b1c4b2cfb3bd272f/src/ru/javawebinar/basejava/MainString.java) **Ресурсы:** - [Строки в Java](https://urvanov.ru/2016/04/20/java-8-строки/) @@ -21,18 +21,19 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) **Коммиты:** -1. *[Lesson04 Exceptions](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava)* + - [`Lesson04 Exceptions`](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) **Ресурсы:** - [Исключения (Exceptions)](http://proglang.su/java/exceptions) - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) - - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html). [this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) + - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html) + - [Ключевые слова: this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Reflection. Аннотации. Модульное тестирование](https://drive.google.com/open?id=0B_4NpoQW1xfpT0dGZWlJbnN3bU0) **Коммиты:** -1. *[Lesson04 Reflection and JUnit](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7)* + - [`Lesson04 Reflection and JUnit`](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) **Ресурсы:** - [Java 8 аннотации](https://urvanov.ru/2016/03/30/java-8-аннотации/) @@ -46,15 +47,15 @@ - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) ## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы -> В чём разница между Assert.fail(); и e.printStackTrace();? +> В чём разница между Assert.fail() и e.printStackTrace()? -Assert.fail(); - если тест дошел до этого места, то он провалился +Assert.fail() - если тест дошел до этого места, то он провалился -e.printStackTrace(); - выводит стактрайс +e.printStackTrace() - выводит [стектрейс](https://ru.stackoverflow.com/questions/510755/Что-такое-stack-trace-и-как-с-его-помощью-находить-ошибки-при-разработке-прилож) ## Домашнее задание HW4 -- Реализовать `AbstractStorageTest` и тесты `ArrayStorageTest` и `SortedArrayStorageTest` -В `MainReflection` сделать вызов метода `toString` через отражение +- Реализуйте тесты: `AbstractStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- В `MainReflection` сделайте вызов метода `toString` через отражение ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` From 71d2e1df83b5e0639f7c3ed24bb63c9c5706e905 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 10 Jan 2018 22:35:21 +0300 Subject: [PATCH 134/393] Update lesson05.md --- lesson/lesson05.md | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index c843b194..e52546be 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -1,28 +1,31 @@ # Пятое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-4](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) -[см. коммит lesson05 HW04](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) - -в коммите ошибка, в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, надо до `STORAGE_LIMIT` - -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции.](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) -[см. коммит Lesson05 Static initializer block and Collections](https://github.com/JavaWebinar/basejava/tree/6def59a3c6e1a20804d9414f95240f2b973a6ba6) - -- Контейнеры/коллекции. -- List, Set, Map, Queue, Iterator, ListIterator -- Структуры данных в картинках -- Инициализация полей в Java -- Java собеседование по коллекциям +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) +**Коммиты:** + - [`lesson05 HW04`](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) + +> В коммите содержится ошибка: в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, а надо до `STORAGE_LIMIT` + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) +**Коммиты:** + - [`Lesson05 Static initializer block and Collections`](https://github.com/JavaWebinar/basejava/tree/6def59a3c6e1a20804d9414f95240f2b973a6ba6) + +**Ресурсы:** +- [Контейнеры/коллекции](http://en.wikipedia.org/wiki/Java_collections_framework) +- [List, Set, Map, Queue, Iterator, ListIterator](http://www.intuit.ru/studies/courses/16/16/lecture/27131?page=2) +- [Структуры данных в картинках](http://habrahabr.ru/users/tarzan82/topics/) +- [Инициализация полей в Java](http://www.quizful.net/post/java-fields-initialization) +- [Java собеседование по коллекциям](http://habrahabr.ru/post/162017/) - [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) ## Домашнее задание -Выделить общий класс `AbstractStorage` и реализовать подклассы `ListStorage` и `MapStorage`, а именно вынести в `AbstractStorage` максимум кода, чтобы не было дублирования (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов). +Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов) -Выбор реализации `List` и `Map` за вами. +Выбор реализации `List` и `Map` за вами - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) -> Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. +> Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом В итоге у вас должна получиться подобная иерархия наследования классов ![image](https://user-images.githubusercontent.com/29703461/34365360-6dae30b2-eaa0-11e7-89d2-e7630ae73827.png) From 67d0c3dc27b9f1330694ae4483f60bfac9112c8d Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 11 Jan 2018 16:35:15 +0300 Subject: [PATCH 135/393] Update lesson04.md --- lesson/lesson04.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 53abb01e..33940af8 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -28,6 +28,8 @@ - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html) - [Ключевые слова: this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) + - **Дополнительно:** + - [Checked vs unchecked exception explanation](https://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation) ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) @@ -47,11 +49,11 @@ - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) ## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы -> В чём разница между Assert.fail() и e.printStackTrace()? +> В чём разница между `Assert.fail()` и `e.printStackTrace()`? -Assert.fail() - если тест дошел до этого места, то он провалился +`Assert.fail()` - если тест дошел до этого места, то он провалился -e.printStackTrace() - выводит [стектрейс](https://ru.stackoverflow.com/questions/510755/Что-такое-stack-trace-и-как-с-его-помощью-находить-ошибки-при-разработке-прилож) +`e.printStackTrace()` - выводит [стектрейс](https://ru.stackoverflow.com/questions/510755/Что-такое-stack-trace-и-как-с-его-помощью-находить-ошибки-при-разработке-прилож) ## Домашнее задание HW4 - Реализуйте тесты: `AbstractStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` From 55ba982acc3c4af4082fe9d3e1e6dbea6975b84c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 16 Jan 2018 08:28:57 -0800 Subject: [PATCH 136/393] Update lesson16.md --- lesson/lesson16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 32eea017..79ec370b 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -23,7 +23,7 @@ - Отличие Redirect от Forward ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. JSTL](https://drive.google.com/open?id=0B_4NpoQW1xfpSHdUNE9TZWNJV1k) -[см. коммит Lesson16 jstl](hhttps://github.com/JavaWebinar/basejava/blob/a909d0854c47753d8f278a9d6e930411992762ac/web/WEB-INF/jsp/list.jsp) +[см. коммит Lesson16 jstl](https://github.com/JavaWebinar/basejava/blob/a909d0854c47753d8f278a9d6e930411992762ac/web/WEB-INF/jsp/list.jsp) - JSTL - JSTL для написания JSP страниц From 9e7289eebafa84048363ccc0dfdd3ec649c86f47 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 17 Jan 2018 01:51:42 +0300 Subject: [PATCH 137/393] Update lesson06.md --- lesson/lesson06.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 407f36fe..e63ee63a 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -2,7 +2,7 @@ # Шестое занятие ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpUFJpRVZvNVVpeDg) **Коммиты:** -1. *[lesson06 HW05](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3)* +- [`lesson06 HW05`](https://github.com/JavaWebinar/basejava/tree/82748583a0454aa3dd2cbf38d83de1cb49fa3ee3) **Ресурсы:** - [Автоупаковка и распаковка в Java](https://habrahabr.ru/post/329498/) @@ -14,7 +14,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы](https://drive.google.com/open?id=0B_4NpoQW1xfpTk5YeTBYbFE4dTg) **Коммиты:** -1. *[Lesson06 Iterator, Comparator and Inner Classes](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava)* +- [`Lesson06 Iterator, Comparator and Inner Classes`](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava) **Ресурсы:** - [Паттерн проектирования Итератор](https://refactoring.guru/ru/design-patterns/iterator/java/example) @@ -33,7 +33,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) **Коммиты:** -1. *[Lesson06 Lambda](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java)* +- [`Lesson06 Lambda`](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java) **Ресурсы:** - [Нововведения в java 8](https://habrahabr.ru/post/216431/) @@ -47,7 +47,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW6](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) -- Сделать рефакторинг тестов: `saveOverflow` должно быть только для Array реализаций -- Рефакторинг: в конструктор Resume добавить второй параметр `fullName` -- Сделать рефакторинг всех реализаций `Storage`: заменить метод `Resume[] getAll()` на `List getAllSorted()` -- Реализовать до конца `MapUuidStorage`. Подумать что еще может быть search key в реализации на основе Map +- Сделайте рефакторинг тестов: `saveOverflow` должно быть только для `Array` реализаций +- Рефакторинг: в конструктор `Resume` добавьте второй параметр - `fullName` +- Сделайте рефакторинг всех реализаций `Storage`: замените метод `Resume[] getAll()` на `List getAllSorted()` +- Реализуйте до конца `MapUuidStorage`. Подумайте что еще может быть `search key` в реализации на основе `Map` From d1a11839a7947ade40988d63175296da4c364c30 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 18 Jan 2018 22:41:19 +0300 Subject: [PATCH 138/393] Update lesson07.md --- lesson/lesson07.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 6d932fe1..182817c8 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -3,14 +3,14 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpT1BwLUNBanVfd1E) **Коммиты:** -1. *[Lesson07_HW06 test refactoring](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage)* -1. *[Lesson07_HW06 add fullName](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680)* -1. *[Lesson07_HW06 getAllSorted](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294)* -1. *[Lesson07_HW06 mapStorage](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79)* +- [`Lesson07_HW06 test refactoring`](https://github.com/JavaWebinar/basejava/tree/b47cadba8f2fb2da61ef6b9f6b245f5c358ea5d8/test/ru/javawebinar/basejava/storage) +- [`Lesson07_HW06 add fullName`](https://github.com/JavaWebinar/basejava/tree/fb608dd824abda1f15bbc437e4d0d5e094fc1680) +- [`Lesson07_HW06 getAllSorted`](https://github.com/JavaWebinar/basejava/tree/bd8e5f4f4582c9f65e1d6a82da1311d6b0efe294) +- [`Lesson07_HW06 mapStorage`](https://github.com/JavaWebinar/basejava/tree/6d0dbdc64e257452662d65f76edf6d9d07328a79) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Параметризация. Стирание типов](https://drive.google.com/open?id=0B_4NpoQW1xfpbXotWEFrYVVGUWc) **Коммиты:** -1. *[Lesson07 generic](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage)* +- [`Lesson07 generic`](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage) **Ресурсы:** - [Дженерики (Java, обучающая статья)](http://www.quizful.net/post/java-generics-tutorial) @@ -19,7 +19,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Логирование](https://drive.google.com/open?id=0B_4NpoQW1xfpM1J5NkVqNHd1MlU) **Коммиты:** -1. *[Lesson07 logging](https://github.com/JavaWebinar/basejava/blob/63674b7f246bf6bc4e509cc1241c7b6340477d18/src/ru/javawebinar/basejava/storage/AbstractStorage.java)* +- [`Lesson07 logging`](https://github.com/JavaWebinar/basejava/blob/63674b7f246bf6bc4e509cc1241c7b6340477d18/src/ru/javawebinar/basejava/storage/AbstractStorage.java) **Ресурсы:** - [Log4J (Apache logging)](https://logging.apache.org/) @@ -30,7 +30,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Синглтон. Enum](https://drive.google.com/open?id=0B_4NpoQW1xfpZ3lmWVhUSXprQXc) **Коммиты:** -1. *[Lesson07 enum](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava)* +- [`Lesson07 enum`](https://github.com/JavaWebinar/basejava/tree/a1fe80b00444b6c8d8af149c5e82137c312fee22/src/ru/javawebinar/basejava) **Ресурсы:** - [Одиночка (шаблон проектирования)](https://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)) From 46f5ee5d9a0ede2213546cfedf7c10d3d17c8d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 18 Jan 2018 14:23:13 -0800 Subject: [PATCH 139/393] Update lesson13.md --- lesson/lesson13.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 7294a1da..63c42342 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -24,7 +24,7 @@ - ConnectionFactory. Реализация SqlStorage. - Ресурсы: - Книга: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL - - Работа с базами данных с помощью JDBC драйвера + - Работа с базами данных с помощью JDBC драйвера - Уроки по JDBC ### ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Домашнее задание HW13 From f152703ef63c82178085a7b4459c223939c0b798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 19 Jan 2018 19:05:02 -0800 Subject: [PATCH 140/393] Update lesson10.md --- lesson/lesson10.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index 33f7b557..62c217b4 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -21,7 +21,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. DataInputStream / DataOutputStream](https://drive.google.com/open?id=0B_4NpoQW1xfpczVtenBCSDlKWU0) [см. коммит Lesson10 DataStream](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) -- Реализация Store на основе `DataInputStream/DataOutputStream`. +- Реализация Storage на основе `DataInputStream/DataOutputStream`. ## Домашнее задание -- Сделать и протестировать реализацию `DataStreamSerializer` \ No newline at end of file +- Сделать и протестировать реализацию `DataStreamSerializer` From 172708397e5b41d3e795d901c2e106dc126952b3 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 20 Jan 2018 20:43:57 +0300 Subject: [PATCH 141/393] Update lesson09.md --- lesson/lesson09.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index c1c5c936..7da49cd6 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -15,6 +15,7 @@ - Сериализация объектов (serialization) - Реализация Storage используя сериализацию. +- Сериализация: [1](https://www.youtube.com/watch?v=dBcqizwOWLg), [2](https://www.youtube.com/watch?v=nr4_JRKCGBU) (youtube) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. NIO.](https://drive.google.com/open?id=0B_4NpoQW1xfpMzBqSWI3eEI2RGs) [см. коммит Lesson09 AbstractPathStorage ](https://github.com/JavaWebinar/basejava/commit/4b37c38fb980e315c5ec5f1b2b868fbb5935fe6d) From f7ba2c087eeacd97a01ae4ba719b6aa08e3ebc21 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 21 Jan 2018 23:20:49 +0300 Subject: [PATCH 142/393] Update lesson10.md --- lesson/lesson10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index 62c217b4..99ad45d0 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -4,7 +4,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-9](https://drive.google.com/open?id=0B_4NpoQW1xfpZDVJdGlDRlBlUEU) [см. коммит Lesson10 HW09](https://github.com/JavaWebinar/basejava/tree/cf532714164239d7d99909f92ba52cb79cb0694a) - +[Паттерн - Стратегия](https://www.youtube.com/watch?v=rsB2exGsR4I) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Формат XML. Работа с XML в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpUEtzQjhtQ0c3cFU) [см. коммит Lesson10 xml](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) From 9e188343e80d669382b22bcb9d8ca982899d860a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 23 Jan 2018 17:53:15 +0300 Subject: [PATCH 143/393] Update lesson10.md --- lesson/lesson10.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index 99ad45d0..236ef6e5 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -1,26 +1,34 @@ # Десятое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-9](https://drive.google.com/open?id=0B_4NpoQW1xfpZDVJdGlDRlBlUEU) -[см. коммит Lesson10 HW09](https://github.com/JavaWebinar/basejava/tree/cf532714164239d7d99909f92ba52cb79cb0694a) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpZDVJdGlDRlBlUEU) +**Коммиты:** +- [`Lesson10 HW09`](https://github.com/JavaWebinar/basejava/tree/cf532714164239d7d99909f92ba52cb79cb0694a) -[Паттерн - Стратегия](https://www.youtube.com/watch?v=rsB2exGsR4I) +**Ресурсы:** +- [Паттерн - Стратегия](https://www.youtube.com/watch?v=rsB2exGsR4I) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Формат XML. Работа с XML в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpUEtzQjhtQ0c3cFU) -[см. коммит Lesson10 xml](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) +**Коммиты:** +- [`Lesson10 xml`](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) +**Ресурсы:** - XML формат и технологии - Wiki: XML, XSL , DOM, SAX, StAX, JAXB - Работа с XML в Java. Реализация хранения в XML. ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. JSON](https://drive.google.com/open?id=0B_4NpoQW1xfpRUlvMU54a2hMR3c) -[см. коммит Lesson10 json](https://github.com/JavaWebinar/basejava/tree/ba409e3666f1a5086182a736784c4362a1979b7f) +**Коммиты:** +- [`Lesson10 json`](https://github.com/JavaWebinar/basejava/tree/ba409e3666f1a5086182a736784c4362a1979b7f) +**Ресурсы:** - JSON. JSON в JavaScript. REST - Работа с JSON в Java: Google GSON и Jackson. Реализация хранения в JSON. ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. DataInputStream / DataOutputStream](https://drive.google.com/open?id=0B_4NpoQW1xfpczVtenBCSDlKWU0) -[см. коммит Lesson10 DataStream](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) +**Коммиты:** +- [`Lesson10 DataStream`](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) +**Ресурсы:** - Реализация Storage на основе `DataInputStream/DataOutputStream`. ## Домашнее задание From 08b07db76af7ffa5372ccd9d69234944b6d3a2be Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 31 Jan 2018 12:37:43 +0300 Subject: [PATCH 144/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 33940af8..786cb840 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -40,6 +40,7 @@ **Ресурсы:** - [Java 8 аннотации](https://urvanov.ru/2016/03/30/java-8-аннотации/) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) + - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) - **Дополнительно:** - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) From b4f0702b7f6acb139003f0e24fa18087617f0577 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 31 Jan 2018 12:41:14 +0300 Subject: [PATCH 145/393] Update lesson07.md --- lesson/lesson07.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 182817c8..2aae36bc 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -16,6 +16,8 @@ - [Дженерики (Java, обучающая статья)](http://www.quizful.net/post/java-generics-tutorial) - [Обобщения (Generic)](http://developer.alexanderklimov.ru/android/java/generic.php) - [Ограничения](http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html) +- **Дополнительно** + - [Java Generics Example Tutorial](https://www.journaldev.com/1663/java-generics-example-method-class-interface) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Логирование](https://drive.google.com/open?id=0B_4NpoQW1xfpM1J5NkVqNHd1MlU) **Коммиты:** From c723f2521a24621bef8daf1c17c4db1e1eb548ae Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 31 Jan 2018 14:20:19 +0300 Subject: [PATCH 146/393] Update lesson10.md --- lesson/lesson10.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index 236ef6e5..b022a8ee 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -21,8 +21,9 @@ - [`Lesson10 json`](https://github.com/JavaWebinar/basejava/tree/ba409e3666f1a5086182a736784c4362a1979b7f) **Ресурсы:** -- JSON. JSON в JavaScript. REST -- Работа с JSON в Java: Google GSON и Jackson. Реализация хранения в JSON. +- JSON. JSON в JavaScript +- Работа с JSON в Java: Google GSON и Jackson. Реализация хранения в JSON +- [Введение в JSON](https://www.youtube.com/watch?v=syuIHCMHQgc) (youtube) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. DataInputStream / DataOutputStream](https://drive.google.com/open?id=0B_4NpoQW1xfpczVtenBCSDlKWU0) **Коммиты:** From 61c55f5a79f1f8ac7150a7a7bb5dce6d80f036be Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 4 Feb 2018 21:29:37 +0300 Subject: [PATCH 147/393] Update lesson11.md --- lesson/lesson11.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index e0abbf95..0854865c 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -8,6 +8,7 @@ ![Закон Мура](https://www.karlrupp.net/wp-content/uploads/2015/06/40-years-processor-trend.png) - Закон Мура - Закон Амдала +- [Фундаментальный поворот к параллелизму в программировании](https://habrahabr.ru/post/145432/) ![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) From f11079f05666babb5d236b1d0e3f08035bedbc0e Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 28 Feb 2018 15:47:15 +0300 Subject: [PATCH 148/393] Update lesson13.md --- lesson/lesson13.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 63c42342..d81354fb 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -10,6 +10,7 @@ - PostgreSQL. Надёжность - Создание базы резюме. Работа с базами данных из IDEA - IDEA Database tools. +- [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) [см. коммит Lesson13 properties](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) From ea0cd107d796f0ac3e7d21c605c1d1b56be5b7ad Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 28 Feb 2018 15:50:55 +0300 Subject: [PATCH 149/393] Update lesson13.md --- lesson/lesson13.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index d81354fb..6c669487 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -11,6 +11,7 @@ - Создание базы резюме. Работа с базами данных из IDEA - IDEA Database tools. - [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811/) +- [SQL ключи во всех подробностях](https://habrahabr.ru/company/oleg-bunin/blog/348172/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) [см. коммит Lesson13 properties](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) From 15d2a8ff12345f5dca6284dd4122b10cd210c891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 7 Mar 2018 02:38:54 +0300 Subject: [PATCH 150/393] Update lesson15.md --- lesson/lesson15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index 04106cfe..90d7be3a 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -16,7 +16,7 @@ [см. коммит Lesson15 servlets](https://github.com/JavaWebinar/basejava/tree/4d1043a3a45d27eda11fdc9c68ac46aa68fdd563) -- Создаем Servlet. Параметры. Кодировка. +- Создаем Servlet. Параметры. Кодировка. - Дополнительно: - How do servlets work? - Язык программирования Java: введение в сетевое программирование From 4feb15fd8afe6eedd6c42548ffefafc0f2f1e474 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 9 Mar 2018 11:59:40 +0300 Subject: [PATCH 151/393] Update lesson13.md --- lesson/lesson13.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 6c669487..bd07d1bb 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -12,6 +12,8 @@ - IDEA Database tools. - [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811/) - [SQL ключи во всех подробностях](https://habrahabr.ru/company/oleg-bunin/blog/348172/) +- [Книги по postgreSQL](https://postgrespro.ru/education/books) +- [Интерактивная обучалка по postgreSQL](pgexercises.com) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) [см. коммит Lesson13 properties](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) From 1268f7fcc8e17c84dd9e3f6e2a88e6afc3e7b637 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 15 Mar 2018 00:16:14 +0300 Subject: [PATCH 152/393] Update lesson13.md --- lesson/lesson13.md | 57 +++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index bd07d1bb..43031592 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -1,38 +1,47 @@ # Тринадцатое занятие ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Базы данных. Реляционные СУБД. PostgreSQL](https://drive.google.com/open?id=0B_4NpoQW1xfpOHFGQTUydzdKaFE) -[см. коммит Lesson13 Init DB](https://github.com/JavaWebinar/basejava/blob/79f4e1d3ecc9ce306504a991fcca00c81c992f8c/config/init_db.sql) - -- DB-Engines Ranking -- Реляционная СУБД -- Введение в базы данных -- Реляционные базы vs NoSQL. SQL. Денормализация. PK, FK, Cascade -- PostgreSQL. Надёжность -- Создание базы резюме. Работа с базами данных из IDEA -- IDEA Database tools. -- [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811/) -- [SQL ключи во всех подробностях](https://habrahabr.ru/company/oleg-bunin/blog/348172/) +**Коммиты:** + +- [`Lesson13 Init DB`](https://github.com/JavaWebinar/basejava/blob/79f4e1d3ecc9ce306504a991fcca00c81c992f8c/config/init_db.sql) + +**Ресурсы:** +- [DB-Engines Ranking](http://db-engines.com/en/ranking) +- [Реляционная СУБД](https://ru.wikipedia.org/wiki/Реляционная_СУБД) (wiki) +- [Введение в базы данных](http://www.codenet.ru/progr/vbasic/vb_db/1.php) +- [Реляционные базы vs NoSQL](http://habrahabr.ru/post/103021). SQL. Денормализация. PK, FK, Cascade +- [PostgreSQL: надёжность](https://ru.wikipedia.org/wiki/PostgreSQL#Качество_исходного_кода) +- [Работа с базами данных из IDEA](https://habrahabr.ru/company/JetBrains/blog/204064) +- [IDEA Database tools](https://www.jetbrains.com/datagrip/features) +- [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811) +- [SQL ключи во всех подробностях](https://habrahabr.ru/company/oleg-bunin/blog/348172) - [Книги по postgreSQL](https://postgrespro.ru/education/books) - [Интерактивная обучалка по postgreSQL](pgexercises.com) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) -[см. коммит Lesson13 properties](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) +**Коммиты:** + +[`Lesson13 properties`](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) +**Ресурсы:** -- Properties sample +- [Properties sample](https://www.mkyong.com/java/java-properties-file-examples) - Конфигурирование DB и каталога хранения ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3.Подключение DB в проект](https://drive.google.com/open?id=0B_4NpoQW1xfpWVVSOURIeDNEMUk) -[см. коммит Lesson13 SqlStorage](https://github.com/JavaWebinar/basejava/tree/62705ea7e24dda66647b47971f83f1507dd80016) +**Коммиты:** + +[`Lesson13 SqlStorage`](https://github.com/JavaWebinar/basejava/tree/62705ea7e24dda66647b47971f83f1507dd80016) + +**Ресурсы:** -- JDBC. JDBC Architecture. -- ConnectionFactory. Реализация SqlStorage. -- Ресурсы: - - Книга: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL - - Работа с базами данных с помощью JDBC драйвера - - Уроки по JDBC +- [JDBC](http://ru.wikipedia.org/wiki/Java_Database_Connectivity) +- [JDBC Architecture](http://www.developersbook.com/jdbc/interview-questions/jdbc-interview-questions-faqs.php) +- [Книга: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL](http://www.ozon.ru/context/detail/id/19383907) +- [Работа с базами данных с помощью JDBC драйвера](https://devcolibri.com/работа-с-бд-mysql-postgresql-с-помощью-jdbc-драйвера) +- [Уроки по JDBC](https://www.youtube.com/playlist?list=PLIU76b8Cjem5qdMQLXiIwGLTLyUHkTqi2) ### ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Домашнее задание HW13 -- Доделать `SqlStorage` без контактов и секций. - - Для работы с DB надо в lib и проект добавить драйвер базы данных - - Запустить `SqlStorageTest` (в `AbstractStorageTest` контакты и секции закоменченны), креденшелы к базе взять из `Config` -- Вынести общий код (`getConnection(), prepareStatement, catch SQLException`) в класс `SqlHelper`. +- Доделать `SqlStorage` без контактов и секций +- Для работы с DB надо в lib и проект добавить [драйвер базы данных](http://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.1) +- Запустить `SqlStorageTest` (в `AbstractStorageTest` контакты и секции закоменченны), креденшелы к базе взять из `Config` +- Вынести общий код (`getConnection(), prepareStatement, catch SQLException`) в класс `SqlHelper` From 0013adab702ae1acf3a1c980744c3a6740b4b735 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 15 Mar 2018 00:17:09 +0300 Subject: [PATCH 153/393] Update lesson13.md --- lesson/lesson13.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 43031592..1ba2fe82 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -22,6 +22,7 @@ **Коммиты:** [`Lesson13 properties`](https://github.com/JavaWebinar/basejava/tree/25f4dd3b23790cc74c30d3703b16fa6af09c3905) + **Ресурсы:** - [Properties sample](https://www.mkyong.com/java/java-properties-file-examples) From 0d341e0e29e367d282062de4160d0a3504a50271 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 16 Mar 2018 14:58:31 +0300 Subject: [PATCH 154/393] Update lesson02.md --- lesson/lesson02.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 6a539f27..a23ed0e8 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -37,6 +37,8 @@ - **Дополнительно:** - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) + - [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) + - [Why should one use Objects.requireNonNull()?](https://stackoverflow.com/questions/45632920/why-should-one-use-objects-requirenonnull) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` From 5a6ff53d88da9e9ce6fc3674fa53dc280e2d20f1 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 16 Mar 2018 18:06:16 +0300 Subject: [PATCH 155/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index a23ed0e8..f06160e3 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -39,6 +39,7 @@ - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) - [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) - [Why should one use Objects.requireNonNull()?](https://stackoverflow.com/questions/45632920/why-should-one-use-objects-requirenonnull) + - [Инициализация и загрузка классов](https://www.youtube.com/watch?v=TdvnGw_KcFY) (youtube) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` From c3afef52c0330f7931253dff97969884bb40e4c0 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 16 Mar 2018 18:33:18 +0300 Subject: [PATCH 156/393] Update lesson01.md --- lesson/lesson01.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index a4473b0e..c9e498cc 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -23,7 +23,6 @@ - [Интерактивный курс по SQL](http://www.sql-ex.ru/) - [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) - [Java in 2017 Survey Results](http://www.baeldung.com/java-in-2017) -- [Java Tools and Technologies Landscape Report 2016](https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/) - **Дополнительно:** - [Автоматизированная сборка проекта в Java](http://spring-projects.ru/guides/maven/) From 25a6295da08f0927dc39d7cc97c60d2956ed5416 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 17 Mar 2018 22:07:00 +0300 Subject: [PATCH 157/393] Update lesson14.md --- lesson/lesson14.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson14.md b/lesson/lesson14.md index 50959be9..8ffe1f28 100644 --- a/lesson/lesson14.md +++ b/lesson/lesson14.md @@ -7,6 +7,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. JOIN](https://drive.google.com/open?id=0B_4NpoQW1xfpT3R6WFBBbmVGXzA) [см. коммит Lesson14 JOIN](https://github.com/JavaWebinar/basejava/blob/57c5687e276d4fb3bfcf8d7b0c7b301db1a0095b/src/ru/javawebinar/basejava/storage/SqlStorage.java) - LEFT, RIGHT, INNER JOIN +- [SQL Join](https://www.youtube.com/watch?v=EHvzvwAv7RU&index=1&list=PLY7PmJJFH5nT-lbFKxfbp3rw5BBuq5Azo) (youtube) - Добавляем в `SqlStorage` контакты ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Транзакции](https://drive.google.com/open?id=0B_4NpoQW1xfpTm43Z2hnZkV4c2M) From 5af8c04a7948fc2e8389604e88deb471d7b35e30 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 19 Mar 2018 17:13:04 +0300 Subject: [PATCH 158/393] Update lesson16.md --- lesson/lesson16.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 79ec370b..7622c864 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -9,6 +9,7 @@ - Почему вы никогда не должны использовать MongoDB - Жизненный цикл сервлета - Tomcat maxThreads configuration +- [Веб-приложение с Java Servlets](https://tproger.ru/translations/building-a-web-app-with-java-servlets/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. JSP](https://drive.google.com/open?id=0B_4NpoQW1xfpQ2hYRWJ2TWd2QjA) [см. коммит Lesson16 jsp](https://github.com/JavaWebinar/basejava/tree/b29ed85e8a99432de317dcae0780ecedc37981ac) From 168164a1f5785302bf946df3dd8718ac1c66bc8f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 25 Mar 2018 16:45:39 +0300 Subject: [PATCH 159/393] Update lesson02.md --- lesson/lesson02.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index f06160e3..dc8d523b 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -46,6 +46,9 @@ - Еще раз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) - Реализуйте `ArrayStorage.update` -- Сделайте проверки: в `update/delete/get` - резюме есть в `storage`?; в `save`- резюме нет в `storage`? Выведите соответствующие предупреждения - `System.out.println("Resume ...")` -- Сделайте в `save` проверку на переполнение и выведите предупреждение - `System.out.println("...")` +- Сделайте проверки: + - в `update/delete/get` - резюме есть в `storage`? + - в `save`- резюме нет в `storage`? + - сделайте в `save` проверку на переполнение + - выведите соответствующие предупреждения для всех, указанных выше проверок - `System.out.println("Resume ...")` - Избавьтесь от дублирования в коде `ArrayStorage` From a1250e58e63dc667141718b120f2159fcc1ef7d6 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 25 Mar 2018 23:49:45 +0300 Subject: [PATCH 160/393] Update lesson04.md --- lesson/lesson04.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 786cb840..e3077bbe 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -25,10 +25,12 @@ **Ресурсы:** - [Исключения (Exceptions)](http://proglang.su/java/exceptions) + - [Статья про исключения](http://developer.alexanderklimov.ru/android/java/exception.php) - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html) - [Ключевые слова: this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) - **Дополнительно:** + - [Exceptions](https://docs.oracle.com/javase/tutorial/essential/exceptions/) - [Checked vs unchecked exception explanation](https://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation) ![image](https://cloud.githubusercontent.com/assets/18701152/15581283/4c2f5348-2374-11e6-8fd2-e4de02d2c389.png) From f821f52d0558ab344698d35a32c028d4d5d1cce2 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 31 Mar 2018 00:00:54 +0300 Subject: [PATCH 161/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index e3077bbe..5374f350 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -60,7 +60,7 @@ ## Домашнее задание HW4 - Реализуйте тесты: `AbstractStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` -- В `MainReflection` сделайте вызов метода `toString` через отражение +- В `MainReflection` сделайте вызов метода `toString` через отражение, и выведите результат ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` From 460d43e844a5bb2728fbac6eabadf4577f075124 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 3 Apr 2018 14:58:57 +0300 Subject: [PATCH 162/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 4ba32420..f78376f8 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -33,6 +33,7 @@ - [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) - [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view) +- [Бинарное дерево поиска](https://www.youtube.com/watch?time_continue=447&v=HBMlhZAOhoI) (youtube) - **Дополнительно** - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) From 843204a190b175cf50255ae63cca6727353dbefc Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 4 Apr 2018 00:49:04 +0300 Subject: [PATCH 163/393] Update lesson01.md --- lesson/lesson01.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index c9e498cc..5acfa849 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -55,7 +55,8 @@ ### Настройка проекта - Создайте на GitHub репозиторий с названием `basejava` -- [Занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите cmd +- Откройте консоль (терминал) у себя на компьютере +- [Занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите консоль - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` - Перейдите в каталог проекта: `cd basejava` - Настройте git в локальном проекте на свой проект в GitHub: @@ -65,13 +66,15 @@ - `git push -u origin master` ## Домашнее задание HW1 -- Создайте в IntelliJ IDEA новый проект, выбрав каталог basejava, который вы клонировали ранее к себе на компьютер: +- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, который вы клонировали ранее к себе на компьютер: -![newproject](https://user-images.githubusercontent.com/13649199/27245917-c66f0b5a-52f6-11e7-98dc-f88d0198b5c4.png) +![newproject](https://user-images.githubusercontent.com/29703461/38273513-d1f7ce52-3794-11e8-829c-305212c25be7.png) -![next](https://user-images.githubusercontent.com/13649199/27245921-c88b4570-52f6-11e7-83a3-e52627468be7.png) +![next](https://user-images.githubusercontent.com/29703461/38273546-e712a6fe-3794-11e8-9850-29287b46a8a0.png) -![finish](https://user-images.githubusercontent.com/13649199/27245924-cab3618e-52f6-11e7-9655-4293149b4126.png) +![next1](https://user-images.githubusercontent.com/29703461/38273584-00e07dc2-3795-11e8-9006-3109f949cf33.png) + +![finish](https://user-images.githubusercontent.com/29703461/38275669-3e621614-379b-11e8-8b3a-8e0a3ad4c65c.png) - Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll` - Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()` @@ -83,7 +86,7 @@ - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) ### Optional -- Модифицируйте класс `ArrayStorage`: храните все резюме в начале storage (без дырок в виде null), чтобы не перебирать каждый раз все 10000 элементов +- Модифицируйте класс `ArrayStorage`: храните все резюме в начале `storage` (без дырок в виде `null`), чтобы не перебирать каждый раз все 10000 элементов ``` Схема хранения резюме в storage (от 0 до size-1 элементов null нет): @@ -92,4 +95,9 @@ r1, r2, r3,..., rn, null, null,..., null <------- storage.length (10000) -------> ``` - Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые могут упростить код `ArrayStorage` -- Протестируйте реализацию, запустив MainArray.main() +- Протестируйте реализацию, запустив `MainArray.main()` + +### Вопросы по HW1 + > Не могу запустить программу, да и рядом с классами появился какой-то значок + ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) + - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` From 57d85cb574e5e61469679a62bb4b2a4cb26b00d5 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 7 Apr 2018 20:16:50 +0300 Subject: [PATCH 164/393] Update lesson13.md --- lesson/lesson13.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 1ba2fe82..432f907e 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -16,7 +16,7 @@ - [Как работает реляционная БД](https://habrahabr.ru/company/mailru/blog/266811) - [SQL ключи во всех подробностях](https://habrahabr.ru/company/oleg-bunin/blog/348172) - [Книги по postgreSQL](https://postgrespro.ru/education/books) -- [Интерактивная обучалка по postgreSQL](pgexercises.com) +- [Интерактивная обучалка по postgreSQL](https://www.pgexercises.com/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Конфигурирование данных в Java проекте](https://drive.google.com/open?id=0B_4NpoQW1xfpQUpkVTJiQnpBNnM) **Коммиты:** From e9deb18df0f11c9b6c1020d117d0b13007ad538a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 8 Apr 2018 22:10:08 +0300 Subject: [PATCH 165/393] Update lesson01.md --- lesson/lesson01.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 5acfa849..2386cb0f 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -77,16 +77,8 @@ ![finish](https://user-images.githubusercontent.com/29703461/38275669-3e621614-379b-11e8-8b3a-8e0a3ad4c65c.png) - Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll` -- Протестируйте вашу реализацию, запустив `MainTestArrayStorage.main()` -- Протестируйте вашу реализацию интерактивно с помощью `MainArray.main()` -- Изучите дополнительные материалы по IntelliJ IDEA: - - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) - - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) - - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) - - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) +- При этом храните все резюме в начале `storage` (без дырок в виде `null`), чтобы не перебирать каждый раз все 10000 элементов -### Optional -- Модифицируйте класс `ArrayStorage`: храните все резюме в начале `storage` (без дырок в виде `null`), чтобы не перебирать каждый раз все 10000 элементов ``` Схема хранения резюме в storage (от 0 до size-1 элементов null нет): @@ -94,8 +86,15 @@ r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` -- Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые могут упростить код `ArrayStorage` -- Протестируйте реализацию, запустив `MainArray.main()` + +- Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые помогут вам написать более простой и понятный код +- Протестируйте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` + +- Изучите дополнительные материалы по IntelliJ IDEA: + - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) + - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) + - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) + - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) ### Вопросы по HW1 > Не могу запустить программу, да и рядом с классами появился какой-то значок From 821c3332a8168c307d3237c38cd7df1588835490 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 8 Apr 2018 22:46:36 +0300 Subject: [PATCH 166/393] Update lesson01.md --- lesson/lesson01.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2386cb0f..84ed184b 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -78,18 +78,14 @@ - Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll` - При этом храните все резюме в начале `storage` (без дырок в виде `null`), чтобы не перебирать каждый раз все 10000 элементов - ``` -Схема хранения резюме в storage (от 0 до size-1 элементов null нет): - +Схема хранения резюме в storage (от 0 до size - 1 элементов null нет): r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` - - Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые помогут вам написать более простой и понятный код - Протестируйте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) From 44bcac894176b3d08e8ad43184754b60d1d7ac65 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 9 Apr 2018 13:22:16 +0300 Subject: [PATCH 167/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index dc8d523b..7aeee898 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -45,7 +45,7 @@ > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` - Еще раз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) -- Реализуйте `ArrayStorage.update` +- Реализуйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? - в `save`- резюме нет в `storage`? From 37f46cff2852b5ed664da9c182b5c00ae4ab6369 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Mon, 30 Apr 2018 21:00:18 +0300 Subject: [PATCH 168/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index 7da49cd6..d00ff53b 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -25,7 +25,7 @@ # ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. Основы Java 8 Stream API.](https://drive.google.com/open?id=0B_4NpoQW1xfpMHd6VDJjS28tRmM) -- Потоки +- Потоки ## Домашнее задание - Сделать рекурсивный вывод каталогов с отступом From 805c274c79236953a0b2d95fc70c8f73eb97e973 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 20 May 2018 17:00:13 +0300 Subject: [PATCH 169/393] Update lesson01.md --- lesson/lesson01.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 84ed184b..d24ef296 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -7,7 +7,7 @@ - Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) - Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) - Создайте аккаунт на [GitHub](https://github.com/) -- Для удобной навигации по файлам на GitHub установите расширение для браузера - [Octotree](https://habrahabr.ru/post/223527/) +- Для удобной навигации по файлам на GitHub установите расширение для браузера — [Octotree](https://habrahabr.ru/post/223527/) - Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) > Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев @@ -93,6 +93,16 @@ r1, r2, r3,..., rn, null, null,..., null - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) ### Вопросы по HW1 - > Не могу запустить программу, да и рядом с классами появился какой-то значок - ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) - - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` +> Не могу запустить программу, да и рядом с классами появился какой-то значок +![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) +- Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` + + ### Советы для тех, кто выполняет домашнее задание +1. Давайте осмысленные комментарии коммитам +1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) +1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания +1. Удаляйте неиспользуемые импорты +1. Не игнорируй подсказки IDEA (подсвечивает) +1. `Resume r` — давай переменным осмысленные имена, например `resume` +1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового +1. По заданию необходимо посмотреть в классе `Arrays методы`, которые помогут упростить реализацию ваших методов `clear()` и `getAll()` From 479c219a8eba11fec2e86bc1e1afdc0e72f3fdcd Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 20 May 2018 17:01:24 +0300 Subject: [PATCH 170/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index d24ef296..0f5a6a06 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -97,7 +97,7 @@ r1, r2, r3,..., rn, null, null,..., null ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` - ### Советы для тех, кто выполняет домашнее задание + ### Полезные советы 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания From 64061478ab1d8af50403291fef166a53ed8a6767 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 20 May 2018 17:12:00 +0300 Subject: [PATCH 171/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 0f5a6a06..44f6dbeb 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -8,8 +8,8 @@ - Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) - Создайте аккаунт на [GitHub](https://github.com/) - Для удобной навигации по файлам на GitHub установите расширение для браузера — [Octotree](https://habrahabr.ru/post/223527/) -- Установите [IntelliJ IDEA Ultimate](http://www.jetbrains.com/idea/download/index.html) -> Данная среда разработки является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получит ключ на 6 месяцев +- Установите [IntelliJ IDEA](http://www.jetbrains.com/idea/download/index.html) (пока нет базы данных и веб, можно работать с версией Community) +> Версия Ultimate является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получает единоразовый ключ на 6 месяцев ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) From 5b568d2f5335882dd629ee1f8b4c6866bdd02384 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 22 May 2018 22:16:20 +0300 Subject: [PATCH 172/393] Update lesson01.md --- lesson/lesson01.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 44f6dbeb..38dd4196 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -56,7 +56,7 @@ ### Настройка проекта - Создайте на GitHub репозиторий с названием `basejava` - Откройте консоль (терминал) у себя на компьютере -- [Занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите консоль +- Если необходимо, [занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите консоль - Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` - Перейдите в каталог проекта: `cd basejava` - Настройте git в локальном проекте на свой проект в GitHub: @@ -96,6 +96,10 @@ r1, r2, r3,..., rn, null, null,..., null > Не могу запустить программу, да и рядом с классами появился какой-то значок ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` + +> Что такое null? + +- [Что такое null в Java?](http://qaru.site/questions/1960/what-is-null-in-java) (оригинал: [What is null in Java?](https://stackoverflow.com/questions/2707322/what-is-null-in-java)) ### Полезные советы 1. Давайте осмысленные комментарии коммитам From a9a5c2008becfb17897b2e507d0c019d010f7b97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 22 May 2018 22:19:31 +0300 Subject: [PATCH 173/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 38dd4196..9cac5818 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -105,8 +105,8 @@ r1, r2, r3,..., rn, null, null,..., null 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания -1. Удаляйте неиспользуемые импорты +1. Удаляйте неиспользуемые импорты (`Ctrl + O`) 1. Не игнорируй подсказки IDEA (подсвечивает) -1. `Resume r` — давай переменным осмысленные имена, например `resume` +1. `Resume r` — давай переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах. 1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового 1. По заданию необходимо посмотреть в классе `Arrays методы`, которые помогут упростить реализацию ваших методов `clear()` и `getAll()` From 44df125931908ee9aad60060671c3e5e2cb5429c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 22 May 2018 22:20:27 +0300 Subject: [PATCH 174/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 9cac5818..3d6cf629 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -101,7 +101,7 @@ r1, r2, r3,..., rn, null, null,..., null - [Что такое null в Java?](http://qaru.site/questions/1960/what-is-null-in-java) (оригинал: [What is null in Java?](https://stackoverflow.com/questions/2707322/what-is-null-in-java)) - ### Полезные советы +### Замечания по выполнению HW1 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания From 7e5c6b75b075f3bff9caecd467db046f48471c8b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 22 May 2018 22:31:54 +0300 Subject: [PATCH 175/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 3d6cf629..49663b3a 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -105,8 +105,8 @@ r1, r2, r3,..., rn, null, null,..., null 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания -1. Удаляйте неиспользуемые импорты (`Ctrl + O`) +1. Удаляйте неиспользуемые импорты (`Ctrl + Alt + O`) 1. Не игнорируй подсказки IDEA (подсвечивает) -1. `Resume r` — давай переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах. +1. `Resume r` — давай переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах 1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового 1. По заданию необходимо посмотреть в классе `Arrays методы`, которые помогут упростить реализацию ваших методов `clear()` и `getAll()` From 97c271a92063623313bbe4d93a7f7bf4eac474da Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 23 May 2018 08:45:56 +0300 Subject: [PATCH 176/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 49663b3a..43b0804b 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -106,7 +106,7 @@ r1, r2, r3,..., rn, null, null,..., null 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания 1. Удаляйте неиспользуемые импорты (`Ctrl + Alt + O`) -1. Не игнорируй подсказки IDEA (подсвечивает) -1. `Resume r` — давай переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах +1. Не игнорируйте подсказки IDEA (подсвечивает) +1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах 1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового 1. По заданию необходимо посмотреть в классе `Arrays методы`, которые помогут упростить реализацию ваших методов `clear()` и `getAll()` From 672257df184d986535a21f8280e286f624a8857f Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 31 May 2018 19:49:40 +0300 Subject: [PATCH 177/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 43b0804b..8fe92865 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -14,7 +14,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) - [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) -- [Соглашения по оформлению кода [eng]](https://google.github.io/styleguide/javaguide.html) +- [Соглашения по оформлению кода](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) From 611b0f5fe56d9911360dac769af6dd94fb3eed9d Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Thu, 31 May 2018 19:50:44 +0300 Subject: [PATCH 178/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 7aeee898..dcedf9f3 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -44,7 +44,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` -- Еще раз прочитайте, [как правильно оформлять код [eng]](https://google.github.io/styleguide/javaguide.html) +- Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) - Реализуйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? From 4ad76d9b93570ce46d9c6d21a5d57c9356442a49 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Fri, 1 Jun 2018 16:55:44 +0300 Subject: [PATCH 179/393] Update lesson03.md --- lesson/lesson03.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index f78376f8..0fc44353 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -52,4 +52,8 @@ - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах - отличаются -- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` (в `SortedArrayStorage` хранить элементы отсортированными. Сортировать весь массив не надо) +- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` +- В `SortedArrayStorage` храните элементы отсортированными: + - сортировать весь массив не надо + - не используйте `Arrays.sort()` + - обратите внимание на бинарный поиск From bd0ed8b3aedee9960a25b429177e69fb9727dea7 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 9 Jun 2018 12:51:18 +0300 Subject: [PATCH 180/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 8fe92865..b9cdd98f 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -102,6 +102,7 @@ r1, r2, r3,..., rn, null, null,..., null - [Что такое null в Java?](http://qaru.site/questions/1960/what-is-null-in-java) (оригинал: [What is null in Java?](https://stackoverflow.com/questions/2707322/what-is-null-in-java)) ### Замечания по выполнению HW1 +1. При реализации метода `delete()` сортировать резюме по `uuid` не требуется 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания From e212e865f92ee761b5d3832346004b6e2fe0ab12 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 12 Jun 2018 11:29:54 +0300 Subject: [PATCH 181/393] Update lesson16.md --- lesson/lesson16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 7622c864..09ba2077 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -27,7 +27,7 @@ [см. коммит Lesson16 jstl](https://github.com/JavaWebinar/basejava/blob/a909d0854c47753d8f278a9d6e930411992762ac/web/WEB-INF/jsp/list.jsp) - JSTL -- JSTL для написания JSP страниц +- JSTL для написания JSP страниц ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. CRUD](https://drive.google.com/open?id=0B_4NpoQW1xfpak9nZS1BXzBTbEU) [см. коммит Lesson16 crud](https://github.com/JavaWebinar/basejava/tree/3e07257a33d1ba51508e315d6021aa1b78849fca) From 42dae1f220a5e910ccdc3895d5c8e321c986ea3a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Tue, 12 Jun 2018 16:07:07 +0300 Subject: [PATCH 182/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 0fc44353..20932e47 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -44,6 +44,7 @@ **Ресурсы:** - [Паттерн проектирования - Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) + - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) From 655a993331d7c7f7f530fe1e2aa43641d98693d0 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 16 Jun 2018 15:46:43 +0300 Subject: [PATCH 183/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 5374f350..dd524a3e 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -65,5 +65,6 @@ ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` - `ArrayStorageTest` c `ArrayStorage` +- тестировать правильность сортировки не надо > как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем From e231fa97774583d489952c9c86f233c47c5af733 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 16 Jun 2018 22:56:27 +0300 Subject: [PATCH 184/393] Update lesson04.md --- lesson/lesson04.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index dd524a3e..13171cc4 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -51,13 +51,6 @@ - [Тестирование с помощью JUnit (Test Case)](http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) -## ![question](https://cloud.githubusercontent.com/assets/13649199/13672858/9cd58692-e6e7-11e5-905d-c295d2a456f1.png) Ваши вопросы -> В чём разница между `Assert.fail()` и `e.printStackTrace()`? - -`Assert.fail()` - если тест дошел до этого места, то он провалился - -`e.printStackTrace()` - выводит [стектрейс](https://ru.stackoverflow.com/questions/510755/Что-такое-stack-trace-и-как-с-его-помощью-находить-ошибки-при-разработке-прилож) - ## Домашнее задание HW4 - Реализуйте тесты: `AbstractStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` - В `MainReflection` сделайте вызов метода `toString` через отражение, и выведите результат @@ -66,5 +59,7 @@ - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` - `ArrayStorageTest` c `ArrayStorage` - тестировать правильность сортировки не надо - -> как вариант, добавить конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавить конструкторы, которые будут вызывать super с нужным хранилищем +- логика реализации теста на переполнение массива (`StorageException`): + - если исключение вылетит раньше наполнения, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) + - если исключение вылетает, когда пытаемся добавить еще одно резюме в полностью заполненный массив - тест пройден +- добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From 0cd30783114011becf93131547d1073e90763051 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 16 Jun 2018 23:15:34 +0300 Subject: [PATCH 185/393] Update lesson05.md --- lesson/lesson05.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index e52546be..c0d0c262 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -21,7 +21,8 @@ - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) ## Домашнее задание -Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов) +- Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов) +- сделайте класс для тестирования `ListStorage` Выбор реализации `List` и `Map` за вами - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) From 6a713436a288564c1df02d347eaab57b5c8cd653 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 17 Jun 2018 14:26:02 +0300 Subject: [PATCH 186/393] Update lesson05.md --- lesson/lesson05.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index c0d0c262..78776894 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -19,6 +19,7 @@ - [Java собеседование по коллекциям](http://habrahabr.ru/post/162017/) - [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) +- [Collection.toArray(new T[0]) or Collection.toArray(new T[size]), that's the question](https://shipilev.net/blog/2016/arrays-wisdom-ancients) ## Домашнее задание - Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов) From ed45d603bdcd3b6eff3e034f09f444947049ef9b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 20 Jun 2018 11:47:51 +0300 Subject: [PATCH 187/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index b9cdd98f..14300041 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -103,6 +103,7 @@ r1, r2, r3,..., rn, null, null,..., null ### Замечания по выполнению HW1 1. При реализации метода `delete()` сортировать резюме по `uuid` не требуется +1. Все резюме в хранилище имеют уникальный `uuid`, что исключает повторы 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) 1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания From 6ea264f079799fe1b6d26a75033820ebffd2e12b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 20 Jun 2018 22:22:23 +0300 Subject: [PATCH 188/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index dcedf9f3..2ade3593 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -45,6 +45,7 @@ > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` - Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) +- [Настройте IDEA](https://stackoverflow.com/questions/12585253/how-to-remove-unused-imports-in-intellij-idea-on-commit) на автоматическое удаление неиспользуемых коммитов - Реализуйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? From 0827b61dfa5ccae98b293c4f613da8b1552dc19c Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Jun 2018 18:04:27 +0300 Subject: [PATCH 189/393] Update lesson06.md --- lesson/lesson06.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index e63ee63a..2cd608a8 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -47,7 +47,9 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW6](https://drive.google.com/open?id=0B_4NpoQW1xfpbm9PMXFDN0RuR1k) -- Сделайте рефакторинг тестов: `saveOverflow` должно быть только для `Array` реализаций -- Рефакторинг: в конструктор `Resume` добавьте второй параметр - `fullName` -- Сделайте рефакторинг всех реализаций `Storage`: замените метод `Resume[] getAll()` на `List getAllSorted()` -- Реализуйте до конца `MapUuidStorage`. Подумайте что еще может быть `search key` в реализации на основе `Map` +- Рефакторинг: + - метод `saveOverflow()` должен исполняться только для массивов + - в конструктор `Resume` добавьте второй параметр - `fullName` + - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` +- Реализуйте до конца `MapUuidStorage`. Подумайте, что еще может выступать в качестве `search key` в реализации на основе `Map` +- Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать From e61b607d66c2278ad8ad8d9c931be3ad0fe8f640 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sat, 23 Jun 2018 20:12:22 +0300 Subject: [PATCH 190/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 2cd608a8..f27b8bee 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,5 +51,5 @@ - метод `saveOverflow()` должен исполняться только для массивов - в конструктор `Resume` добавьте второй параметр - `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` -- Реализуйте до конца `MapUuidStorage`. Подумайте, что еще может выступать в качестве `search key` в реализации на основе `Map` +- Реализуйте до конца `MapUuidStorage`. Подумайте и реализуйте, что еще может выступать в качестве `search key` в реализации на основе `Map` - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать From 725ea32f6b71bc65e7407208cd7ee0ca70b30f2a Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 24 Jun 2018 12:57:50 +0300 Subject: [PATCH 191/393] Update lesson06.md --- lesson/lesson06.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index f27b8bee..753f6037 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -49,7 +49,9 @@ - Рефакторинг: - метод `saveOverflow()` должен исполняться только для массивов - - в конструктор `Resume` добавьте второй параметр - `fullName` + - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` -- Реализуйте до конца `MapUuidStorage`. Подумайте и реализуйте, что еще может выступать в качестве `search key` в реализации на основе `Map` +- Реализуйте до конца `MapUuidStorage` +- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать +- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск From 0d8efaf589956a9b818a4612bc9f1133a0ab6d8b Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 24 Jun 2018 16:44:42 +0300 Subject: [PATCH 192/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 2ade3593..e3cca29f 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -45,7 +45,7 @@ > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` - Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) -- [Настройте IDEA](https://stackoverflow.com/questions/12585253/how-to-remove-unused-imports-in-intellij-idea-on-commit) на автоматическое удаление неиспользуемых коммитов +- [Настройте IDEA](https://stackoverflow.com/questions/12585253/how-to-remove-unused-imports-in-intellij-idea-on-commit) на автоматическое удаление неиспользуемых импортов - Реализуйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? From 78598cb86cb6bf19bca5747e2d50983d0fa0d3d4 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Sun, 1 Jul 2018 20:14:05 +0300 Subject: [PATCH 193/393] Update lesson02.md --- lesson/lesson02.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index e3cca29f..1a74241b 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -27,6 +27,8 @@ - [JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) (youtube) - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) + +> Начиная с Java 8 область памяти `PermGen` была упразднена и заменена на [`Metaspace`](https://www.javacodegeeks.com/2013/02/java-8-from-permgen-to-metaspace.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) From 78fb092f92285f9bddf13c6a134a39f52abba6f2 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 4 Jul 2018 00:19:49 +0300 Subject: [PATCH 194/393] Update lesson03.md --- lesson/lesson03.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 20932e47..f4d5d203 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -43,17 +43,16 @@ - [`Lesson03 abstract storage & sorted storage`](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) **Ресурсы:** - - [Паттерн проектирования - Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) + - [Паттерн проектирования — Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - - Книга из известной серии Head First - [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) + - Книга из известной серии Head First — [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) -- Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах - отличаются - -- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage` +- Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах — отличаются +- Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - сортировать весь массив не надо - не используйте `Arrays.sort()` From 959a7739ba088931d0d10acdc24a5029cabcba63 Mon Sep 17 00:00:00 2001 From: Maksim Perepelitsa Date: Wed, 4 Jul 2018 00:23:55 +0300 Subject: [PATCH 195/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 1a74241b..5d9f58a6 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -48,7 +48,7 @@ - Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) - [Настройте IDEA](https://stackoverflow.com/questions/12585253/how-to-remove-unused-imports-in-intellij-idea-on-commit) на автоматическое удаление неиспользуемых импортов -- Реализуйте `ArrayStorage.update(Resume resume)` +- Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? - в `save`- резюме нет в `storage`? From 48e478c1616970baad1b9dbf425972e1a436fd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 18 Jul 2018 23:04:49 +0300 Subject: [PATCH 196/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 13171cc4..4427bebb 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -60,6 +60,6 @@ - `ArrayStorageTest` c `ArrayStorage` - тестировать правильность сортировки не надо - логика реализации теста на переполнение массива (`StorageException`): - - если исключение вылетит раньше наполнения, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) + - если исключение вылетит раньше, чем массив будет заполнен, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) - если исключение вылетает, когда пытаемся добавить еще одно резюме в полностью заполненный массив - тест пройден - добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From 3323ebee61035ab3556618f64f869a54ead68382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 21 Jul 2018 12:29:01 +0300 Subject: [PATCH 197/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 2aae36bc..59975254 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -42,7 +42,7 @@ [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) - Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - - Делать только классы, включаемые в Resume. Resume - главный класс. В него все включается (композиция - строгий вид агрегации) + - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом - Модель максимально упрощаем, и храним в ней только необходимые данные, а также функционал для вывода и редактирования резюме - В модели резюме должны быть представлены контакты и следующие секции: From b4e5aaadb84bb02c450eadac020e1196bec26e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 25 Jul 2018 16:24:50 +0300 Subject: [PATCH 198/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 14300041..fc70f4a1 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -21,6 +21,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) - [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) - [Интерактивный курс по SQL](http://www.sql-ex.ru/) +- [The State of Java in 2018](http://www.baeldung.com/java-in-2018) - [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) - [Java in 2017 Survey Results](http://www.baeldung.com/java-in-2017) - **Дополнительно:** From 1e5946df059b850fb2533a28b534a4a8ec1e01d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 25 Jul 2018 21:40:07 +0300 Subject: [PATCH 199/393] Update lesson04.md --- lesson/lesson04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 4427bebb..fe1b2e1c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -60,6 +60,7 @@ - `ArrayStorageTest` c `ArrayStorage` - тестировать правильность сортировки не надо - логика реализации теста на переполнение массива (`StorageException`): + - заполняем массив, но не вызываем у него переполнение - если исключение вылетит раньше, чем массив будет заполнен, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) - - если исключение вылетает, когда пытаемся добавить еще одно резюме в полностью заполненный массив - тест пройден + - если исключение вылетает, когда пытаемся добавить в полностью заполненный массив еще одно резюме - тест пройден - добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From ee845f6692490ae6d005474f49aa866cc8e20c39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 12 Aug 2018 21:27:57 +0300 Subject: [PATCH 200/393] Update lesson05.md --- lesson/lesson05.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 78776894..a5099106 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -22,8 +22,8 @@ - [Collection.toArray(new T[0]) or Collection.toArray(new T[size]), that's the question](https://shipilev.net/blog/2016/arrays-wisdom-ancients) ## Домашнее задание -- Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование (полностью реализацию `MapStorage` рассмотрим на след уроке, в данном ДЗ достаточно сделать заглушки для методов) -- сделайте класс для тестирования `ListStorage` +- Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование +- сделайте классы для тестирования `ListStorage` и `MapStorage` Выбор реализации `List` и `Map` за вами - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) From 5910c362770cef3624edfdc9a00d3419b2a9c6b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 5 Sep 2018 14:12:54 +0300 Subject: [PATCH 201/393] Update lesson01.md --- lesson/lesson01.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index fc70f4a1..27bc481c 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -85,7 +85,6 @@ r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` -- Посмотрите на класс `java.util.Arrays`. В нем есть полезные методы, которые помогут вам написать более простой и понятный код - Протестируйте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) @@ -112,4 +111,3 @@ r1, r2, r3,..., rn, null, null,..., null 1. Не игнорируйте подсказки IDEA (подсвечивает) 1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах 1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового -1. По заданию необходимо посмотреть в классе `Arrays методы`, которые помогут упростить реализацию ваших методов `clear()` и `getAll()` From 84fb4d10dde786f76d0027fc9acaa3411ed4ebe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 5 Sep 2018 14:15:22 +0300 Subject: [PATCH 202/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index f4d5d203..975f982a 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -52,6 +52,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах — отличаются +- Посмотрите на методы класса `java.util.Arrays`. Некоторые из них помогут упростить реализацию ваших методов `clear()` и `getAll()` - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - сортировать весь массив не надо From 99d06daf1ae573012b1205530fe62afc9e1e3f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 6 Sep 2018 22:45:43 +0300 Subject: [PATCH 203/393] Update lesson08.md --- lesson/lesson08.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 566d0412..ee8342a1 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Заполнить в `AbstractStorageTest` резюме данными +3) Создайте класс ResumeTestData, заполнив в нем резюме данными. Используйте его в классе `AbstractStorageTest`. 4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. From c3d68d1d3bcab1af31afb0b17615b75349d89d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 9 Sep 2018 19:43:39 +0300 Subject: [PATCH 204/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 27bc481c..477d7949 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -110,4 +110,4 @@ r1, r2, r3,..., rn, null, null,..., null 1. Удаляйте неиспользуемые импорты (`Ctrl + Alt + O`) 1. Не игнорируйте подсказки IDEA (подсвечивает) 1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах -1. В методе `clear()` обнуление массива предполагает именно обнуление (null), а не создание нового +1. В методе `clear()` обнуление массива предполагает обнуление (null) ячеек, где хранятся Resume, а не создание нового или присваивание ему null From 9e21a88cab90b5327ee1e55c2f26fbb0f9440503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 21 Sep 2018 00:04:18 +0300 Subject: [PATCH 205/393] Update lesson03.md --- lesson/lesson03.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 975f982a..f4d5d203 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -52,7 +52,6 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах — отличаются -- Посмотрите на методы класса `java.util.Arrays`. Некоторые из них помогут упростить реализацию ваших методов `clear()` и `getAll()` - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - сортировать весь массив не надо From 908aeaae2bedaabedcff6ecb87a1dae1643294de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 21 Sep 2018 00:04:48 +0300 Subject: [PATCH 206/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 5d9f58a6..fdf0574d 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -55,3 +55,4 @@ - сделайте в `save` проверку на переполнение - выведите соответствующие предупреждения для всех, указанных выше проверок - `System.out.println("Resume ...")` - Избавьтесь от дублирования в коде `ArrayStorage` +- Посмотрите на методы класса `java.util.Arrays`. Некоторые из них помогут упростить реализацию ваших методов `clear()` и `getAll()` From dadf2cef1eb6db4c7fff32e48b9cff02206616f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 23 Sep 2018 23:00:30 +0300 Subject: [PATCH 207/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 753f6037..c2d00689 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -52,6 +52,6 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Реализуйте до конца `MapUuidStorage` -- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде +- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск From 3570dff7b62f13ecb29e22015c2eecc0a9124e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 25 Sep 2018 11:58:49 -0700 Subject: [PATCH 208/393] Update lesson12.md --- lesson/lesson12.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index d987b3dd..e5834e0c 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -38,3 +38,11 @@ - Посмотреть на реляционные базы данных и SQL: - Введение в базы данных - Основы SQL +- Java 8 Streams: + 1) реализовать метод `int minValue(int[] values)` только через стрим +который принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно +{1,2,3,3,2,3} вернет 123 +{9,8} вернет 89 + + 2) реализовать метод `List oddOrEven(List integers)` +если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Решение должно быть в один стрим. From b59fc263546a901ff914d4589ee78b86767ccea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 25 Sep 2018 12:00:06 -0700 Subject: [PATCH 209/393] Update lesson12.md --- lesson/lesson12.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index e5834e0c..d67cef84 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -39,8 +39,8 @@ - Введение в базы данных - Основы SQL - Java 8 Streams: - 1) реализовать метод `int minValue(int[] values)` только через стрим -который принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно + 1) реализовать метод через стрим `int minValue(int[] values)`. +Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно {1,2,3,3,2,3} вернет 123 {9,8} вернет 89 From dd00a7bb3a77347606e4da859daaf3018e04a71a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 25 Sep 2018 12:01:38 -0700 Subject: [PATCH 210/393] Update lesson12.md --- lesson/lesson12.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index d67cef84..b059d4a8 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -41,7 +41,9 @@ - Java 8 Streams: 1) реализовать метод через стрим `int minValue(int[] values)`. Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно + {1,2,3,3,2,3} вернет 123 + {9,8} вернет 89 2) реализовать метод `List oddOrEven(List integers)` From 0db6c8cd6f2cb456a68c93054fde4c47c7465a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 25 Sep 2018 12:02:30 -0700 Subject: [PATCH 211/393] Update lesson12.md --- lesson/lesson12.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index b059d4a8..6adc6f26 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -40,11 +40,7 @@ - Основы SQL - Java 8 Streams: 1) реализовать метод через стрим `int minValue(int[] values)`. -Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно - -{1,2,3,3,2,3} вернет 123 - -{9,8} вернет 89 +Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно. Например {1,2,3,3,2,3} вернет 123, а {9,8} вернет 89 2) реализовать метод `List oddOrEven(List integers)` если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Решение должно быть в один стрим. From f8844dca2ec31b881b2b7879925f0f0c3620afe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 27 Sep 2018 10:02:58 +0300 Subject: [PATCH 212/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index f4d5d203..334235b6 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -56,4 +56,4 @@ - В `SortedArrayStorage` храните элементы отсортированными: - сортировать весь массив не надо - не используйте `Arrays.sort()` - - обратите внимание на бинарный поиск + - обратите внимание на бинарный поиск (Arrays.binarySearch) From 35b40124b01e29b9ce40c5a65c2636b2f5cb04f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 8 Oct 2018 12:44:45 -0700 Subject: [PATCH 213/393] Update lesson06.md --- lesson/lesson06.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index c2d00689..10062a00 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,7 +51,6 @@ - метод `saveOverflow()` должен исполняться только для массивов - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` -- Реализуйте до конца `MapUuidStorage` - Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск From 12695ca43bbe2f8dce557d4c18ab8f34cc62841a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 15 Oct 2018 23:22:54 +0300 Subject: [PATCH 214/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index fdf0574d..18b91e19 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -15,6 +15,7 @@ - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) + - [Что такое Heap и Stack память в Java?](https://javadevblog.com/chto-takoe-heap-i-stack-pamyat-v-java.html) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) From 6c604f98784f5846f71c58ffc30bba46c73b29c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 16 Oct 2018 21:01:16 +0300 Subject: [PATCH 215/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index fe1b2e1c..2f9d46a3 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -52,7 +52,7 @@ - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) ## Домашнее задание HW4 -- Реализуйте тесты: `AbstractStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- Реализуйте тесты: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` - В `MainReflection` сделайте вызов метода `toString` через отражение, и выведите результат ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 From 74c635bc1075e82301de9b86dc7a3abeb61d670e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 23 Oct 2018 18:27:38 +0300 Subject: [PATCH 216/393] Update lesson01.md --- lesson/lesson01.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 477d7949..21d70ba1 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -30,6 +30,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) - [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) (wiki) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) +- [Что такое JDK? Введение в средства разработки Java](https://topjava.ru/blog/what-is-the-jdk) +- [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) - [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) From e92b80112eadbdf715f884edc3a944c7f4471539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 26 Oct 2018 13:36:17 +0300 Subject: [PATCH 217/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 59975254..a222cfc8 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -56,7 +56,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель - сделайте объект `Resume` со всеми разделами** +- **ПРОВЕРЬТЕ свою модель: сделайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** #### Инструменты для рисования: From 1cd13abb07f6efd585e68c2511f76b9120791eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 26 Oct 2018 13:38:24 +0300 Subject: [PATCH 218/393] Update lesson08.md --- lesson/lesson08.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index ee8342a1..1c188dfe 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Создайте класс ResumeTestData, заполнив в нем резюме данными. Используйте его в классе `AbstractStorageTest`. +3) Класс ResumeTestData используйте в классе `AbstractStorageTest`. 4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. From 8f74f080a06ca32cb6abeb441229a41de1d29d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 26 Oct 2018 13:39:14 +0300 Subject: [PATCH 219/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index a222cfc8..34950e83 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -56,7 +56,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: сделайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** +- **ПРОВЕРЬТЕ свою модель: сооздайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** #### Инструменты для рисования: From 44cf8758a14ef74208761ef166c2c2f37ecc28d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 26 Oct 2018 13:40:08 +0300 Subject: [PATCH 220/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 34950e83..15a70bc8 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -56,7 +56,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: сооздайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** +- **ПРОВЕРЬТЕ свою модель: создайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** #### Инструменты для рисования: From 62a0baecccf673fe0aa6cbdb3b9f142cc3817b97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 26 Oct 2018 16:06:51 +0300 Subject: [PATCH 221/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 15a70bc8..99208beb 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -56,7 +56,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: создайте в классе ResumeTestData объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** +- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** #### Инструменты для рисования: From 76d9e22e294c416a09c8a897977d3e2e96d38a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 30 Oct 2018 10:35:26 -0700 Subject: [PATCH 222/393] Update lesson12.md --- lesson/lesson12.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index 6adc6f26..97f7def7 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -43,4 +43,5 @@ Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно. Например {1,2,3,3,2,3} вернет 123, а {9,8} вернет 89 2) реализовать метод `List oddOrEven(List integers)` -если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Решение должно быть в один стрим. +если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). +Optional - решение должно быть в один стрим. From 6d99f8373f04b8f25ffd397df611c43bcae028cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 30 Oct 2018 10:35:51 -0700 Subject: [PATCH 223/393] Update lesson12.md --- lesson/lesson12.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index 97f7def7..2317c9ac 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -44,4 +44,4 @@ 2) реализовать метод `List oddOrEven(List integers)` если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). -Optional - решение должно быть в один стрим. +Optional - решение в один стрим. From 6bcaef4d73d1f3b5b28d9603b1924cde99f716b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 31 Oct 2018 13:48:32 +0300 Subject: [PATCH 224/393] Update lesson05.md --- lesson/lesson05.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index a5099106..ded861bb 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -15,6 +15,7 @@ - [Контейнеры/коллекции](http://en.wikipedia.org/wiki/Java_collections_framework) - [List, Set, Map, Queue, Iterator, ListIterator](http://www.intuit.ru/studies/courses/16/16/lecture/27131?page=2) - [Структуры данных в картинках](http://habrahabr.ru/users/tarzan82/topics/) +- [Внутренняя работа HashMap в Java](https://habr.com/post/421179/) - [Инициализация полей в Java](http://www.quizful.net/post/java-fields-initialization) - [Java собеседование по коллекциям](http://habrahabr.ru/post/162017/) - [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) From b7e0ba6990295455f6c9e29a3fc60f270039cc91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 2 Nov 2018 09:46:14 +0300 Subject: [PATCH 225/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 10062a00..de2063c7 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -53,4 +53,4 @@ - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать -- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск +- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск. Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From b2911e4dc48f6468d2c78b6cee204a85f85f435a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 20 Nov 2018 18:10:30 +0300 Subject: [PATCH 226/393] Update lesson09.md --- lesson/lesson09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index d00ff53b..c7667805 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -28,6 +28,6 @@ - Потоки ## Домашнее задание -- Сделать рекурсивный вывод каталогов с отступом +- Сделать рекурсивный вывод каталогов и файлов с отступами - Реализовать `ObjectStreamPathStorage` (через `java.nio.file.Path`) и добавить `ObjectStreamPathStorageTest` - Сделать реализации `Storage` сохранения в файл через `File` и `Path` с возможностью выбора стратегии сериализации (посмотрите на [паттерн стратегия](https://refactoring.guru/ru/design-patterns/strategy)). Кроме сохранения через `ObjectOutputStream/ObjectInputStream` у нас будут еще несколько вариантов сериализации. Сделать тесты для тестирования сохранения через `ObjectOutputStream/ObjectInputStream` для `File` и `Path`. From 74b4b9b78d1ba28ac8eccbc0600bb1d27d77d39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 21 Nov 2018 00:08:35 +0300 Subject: [PATCH 227/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 18b91e19..0462f847 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -48,7 +48,7 @@ > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` - Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) -- [Настройте IDEA](https://stackoverflow.com/questions/12585253/how-to-remove-unused-imports-in-intellij-idea-on-commit) на автоматическое удаление неиспользуемых импортов +- [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов - Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? From 7ede8e78e3c63b23dd05374d0750bc23d9c4de95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 24 Nov 2018 13:30:15 +0300 Subject: [PATCH 228/393] Update lesson07.md --- lesson/lesson07.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 99208beb..a7206196 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -41,6 +41,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) +- Начните выполнение ДЗ с рисования UML-диаграммы и покажите ее наставнику - Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом @@ -58,7 +59,7 @@ - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны - **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** -#### Инструменты для рисования: +#### Инструменты для рисования UML-диаграмм: - [Generate class diagram in IntelliJ IDEA](http://stackoverflow.com/questions/8942751/use-intellij-to-generate-class-diagram#26926334) ([Help: working with Diagrams](https://www.jetbrains.com/help/idea/2016.1/working-with-diagrams.html?origin=old_help)) - Нарисовать и сфотографировать From ab5829cf5a957d98150c6c22e71782effc80e1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 26 Nov 2018 22:53:21 +0300 Subject: [PATCH 229/393] Update lesson11.md --- lesson/lesson11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index 0854865c..aa9b9030 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -16,7 +16,7 @@ - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Ленивая инициализация, JMM.](https://drive.google.com/open?id=0B_4NpoQW1xfpN0R6d29UVERxLWc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Ленивая инициализация, JMM.](https://drive.google.com/file/d/1kAoLlGhsHAyl_Vtak5R_VuNiQp5cYUx3) [см. коммит Lesson11](https://github.com/JavaWebinar/basejava/blob/6a626f61722af844663860d1af284c53a9adf423/src/ru/javawebinar/basejava/LazySingleton.java) - Параллелизм в Java From acde9a21a7b181255e5144734fbfb350cd72cd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 11 Dec 2018 12:23:53 +0300 Subject: [PATCH 230/393] Update lesson07.md --- lesson/lesson07.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index a7206196..54b13c67 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -58,6 +58,7 @@ обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны - **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** +- **Не размещайте в AbstractStorageTest код, связанный с заполнением резюме данными. Делайте это в ResumeTestData** #### Инструменты для рисования UML-диаграмм: From 8622655f4fff4c322d4ea581b46f8dccb1697e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 26 Dec 2018 10:00:20 +0300 Subject: [PATCH 231/393] Update lesson08.md --- lesson/lesson08.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 1c188dfe..3af2a28f 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Класс ResumeTestData используйте в классе `AbstractStorageTest`. +3) Для создания и заполнения данными резюме из класса `AbstractStorageTest` используйте `ResumeTestData`. Не делайте это в `AbstractStorageTest`! 4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. From febf224f744db037fd92afae1460921fd25ad47e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 21 Jan 2019 22:21:14 +0300 Subject: [PATCH 232/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index de2063c7..4e741884 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -12,7 +12,7 @@ - [Autoboxing and Unboxing](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html) - [Why do we use autoboxing and unboxing in Java?](https://stackoverflow.com/questions/27647407/why-do-we-use-autoboxing-and-unboxing-in-java) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы](https://drive.google.com/open?id=0B_4NpoQW1xfpTk5YeTBYbFE4dTg) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Iterator / Iterable. Вложенные, внутренние, локальные и анонимные классы](https://drive.google.com/file/d/1htZCFoU8j47a00yy-OOvnC27Ktmn1_Hz) **Коммиты:** - [`Lesson06 Iterator, Comparator and Inner Classes`](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava) From 3baa3df145a280ad6654639d6271cf66f6be327d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 24 Jan 2019 13:27:45 -0800 Subject: [PATCH 233/393] Update lesson05.md --- lesson/lesson05.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index ded861bb..724c175f 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -23,8 +23,10 @@ - [Collection.toArray(new T[0]) or Collection.toArray(new T[size]), that's the question](https://shipilev.net/blog/2016/arrays-wisdom-ancients) ## Домашнее задание -- Выделите общий класс `AbstractStorage` и реализуйте подклассы `ListStorage` и `MapStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование -- сделайте классы для тестирования `ListStorage` и `MapStorage` +домашнее задание состоит из двух частей: +1) Выделите общий класс `AbstractStorage` и реализуйте подкласс `ListStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование. + +2) Приступать только после проверки первой части наставником. Реализуйте подкласс `MapStorage`. Сделайте классы для тестирования `ListStorage` и `MapStorage`. Выбор реализации `List` и `Map` за вами - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) @@ -32,3 +34,7 @@ В итоге у вас должна получиться подобная иерархия наследования классов ![image](https://user-images.githubusercontent.com/29703461/34365360-6dae30b2-eaa0-11e7-89d2-e7630ae73827.png) + +### Замечания к выполнению домашнего задания +- int size и STORAGE_LIMIT относятся только к массивам, в списке и мапе нет необходимости их использовать, будем считать их условно безразмерными +- при поиске uuid не надо использовать методы, который сравнивают объекты резюме по equals, в следующих уроках добавим еще поля в резюме и в equals и данный вариант не подойдет From dfa261eaecf53cc4214780449de298f34dbd37f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 24 Jan 2019 13:29:50 -0800 Subject: [PATCH 234/393] Update lesson05.md --- lesson/lesson05.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 724c175f..0124f9c9 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -36,5 +36,5 @@ ![image](https://user-images.githubusercontent.com/29703461/34365360-6dae30b2-eaa0-11e7-89d2-e7630ae73827.png) ### Замечания к выполнению домашнего задания -- int size и STORAGE_LIMIT относятся только к массивам, в списке и мапе нет необходимости их использовать, будем считать их условно безразмерными -- при поиске uuid не надо использовать методы, который сравнивают объекты резюме по equals, в следующих уроках добавим еще поля в резюме и в equals и данный вариант не подойдет +- int size и STORAGE_LIMIT относятся только к массивам, в List и Map нет необходимости их использовать, будем считать их условно безразмерными +- при поиске uuid не надо использовать методы, который сравнивают объекты Resume по equals, в следующих уроках добавим еще поля в Resume и в equals и данный вариант не подойдет From 1ac504fc2e5770da642d83f9c8bb95a40c8c757d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 24 Mar 2019 19:24:30 +0300 Subject: [PATCH 235/393] Update lesson09.md --- lesson/lesson09.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index c7667805..4d05151a 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -1,30 +1,37 @@ # Девятое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-8](https://drive.google.com/open?id=0B_4NpoQW1xfpeENDOVdQbUpIWEU) -[см. коммит Lesson09 HW08](https://github.com/JavaWebinar/basejava/tree/150e15f99c35d53e0c43c9f64d7833b5e7184768) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания](https://drive.google.com/open?id=0B_4NpoQW1xfpeENDOVdQbUpIWEU) +>Для создания и заполнения данными резюме из класса AbstractStorageTest используйте ResumeTestData. Не делайте это в AbstractStorageTest! +**Коммиты:** +- [`Lesson09 HW08`](https://github.com/JavaWebinar/basejava/tree/150e15f99c35d53e0c43c9f64d7833b5e7184768) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Ввод/вывод.](https://drive.google.com/open?id=0B_4NpoQW1xfpZHk3TnYyaDRjY3M) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Ввод/вывод](https://drive.google.com/open?id=0B_4NpoQW1xfpZHk3TnYyaDRjY3M) +**Ресурсы:** - Пакет java.io - Паттерн Декоратор. - Классы Reader и Writer. -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Сериализация.](https://drive.google.com/open?id=0B_4NpoQW1xfpb0dRNjI1S2tOUjA) -[см. коммит Lesson09 ObjectStreamStorage ](https://github.com/JavaWebinar/basejava/tree/7a80d1d7feba08d433e55417bfd26ac0b3fa5298) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Сериализация](https://drive.google.com/open?id=0B_4NpoQW1xfpb0dRNjI1S2tOUjA) +**Коммиты:** +- [`Lesson09 ObjectStreamStorage`](https://github.com/JavaWebinar/basejava/tree/7a80d1d7feba08d433e55417bfd26ac0b3fa5298) +**Ресурсы:** - Сериализация объектов (serialization) - Реализация Storage используя сериализацию. - Сериализация: [1](https://www.youtube.com/watch?v=dBcqizwOWLg), [2](https://www.youtube.com/watch?v=nr4_JRKCGBU) (youtube) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. NIO.](https://drive.google.com/open?id=0B_4NpoQW1xfpMzBqSWI3eEI2RGs) -[см. коммит Lesson09 AbstractPathStorage ](https://github.com/JavaWebinar/basejava/commit/4b37c38fb980e315c5ec5f1b2b868fbb5935fe6d) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. NIO](https://drive.google.com/open?id=0B_4NpoQW1xfpMzBqSWI3eEI2RGs) +**Коммиты:** +- [`Lesson09 AbstractPathStorage`](https://github.com/JavaWebinar/basejava/commit/4b37c38fb980e315c5ec5f1b2b868fbb5935fe6d) +**Ресурсы:** - NIO Java 7 - Чтения строк из файла -# ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. Основы Java 8 Stream API.](https://drive.google.com/open?id=0B_4NpoQW1xfpMHd6VDJjS28tRmM) - +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [4. Основы Java 8 Stream API](https://drive.google.com/open?id=0B_4NpoQW1xfpMHd6VDJjS28tRmM) +**Ресурсы:** - Потоки ## Домашнее задание From 1a2585f54f12bdef7851aaef6e396fc313969bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 24 Mar 2019 19:25:01 +0300 Subject: [PATCH 236/393] Update lesson09.md --- lesson/lesson09.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson09.md b/lesson/lesson09.md index 4d05151a..761138be 100644 --- a/lesson/lesson09.md +++ b/lesson/lesson09.md @@ -3,6 +3,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания](https://drive.google.com/open?id=0B_4NpoQW1xfpeENDOVdQbUpIWEU) >Для создания и заполнения данными резюме из класса AbstractStorageTest используйте ResumeTestData. Не делайте это в AbstractStorageTest! + **Коммиты:** - [`Lesson09 HW08`](https://github.com/JavaWebinar/basejava/tree/150e15f99c35d53e0c43c9f64d7833b5e7184768) From 5a37560dd0404481f86662b634824b8719aa1a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 15 Apr 2019 16:16:48 +0300 Subject: [PATCH 237/393] Update lesson01.md --- lesson/lesson01.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 21d70ba1..555ed4f6 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -89,7 +89,6 @@ r1, r2, r3,..., rn, null, null,..., null ``` - Протестируйте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) ([поставьте кодировку UTF-8](https://github.com/JavaOPs/topjava/wiki/IDEA#Поставить-кодировку-utf-8), [поменяйте шрифт по умолчанию на DejaVu](https://github.com/JavaOPs/topjava/wiki/IDEA#Поменять-фонт-по-умолчанию-dejavu)) - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) From 48ab7ba3e16ffe9674b9d327d2540e3109e0cd1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 24 Apr 2019 21:27:54 +0300 Subject: [PATCH 238/393] Update lesson10.md --- lesson/lesson10.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index b022a8ee..62d5ade4 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -29,8 +29,5 @@ **Коммиты:** - [`Lesson10 DataStream`](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) -**Ресурсы:** -- Реализация Storage на основе `DataInputStream/DataOutputStream`. - ## Домашнее задание - Сделать и протестировать реализацию `DataStreamSerializer` From 4728eec2f04c841020051da16d640964b1503450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 3 May 2019 10:43:21 +0300 Subject: [PATCH 239/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 2f9d46a3..d4aeda0b 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -41,6 +41,7 @@ **Ресурсы:** - [Java 8 аннотации](https://urvanov.ru/2016/03/30/java-8-аннотации/) + - [Reflection для начинающих](https://youtu.be/XJQuBXWADZg) (youtube) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) - **Дополнительно:** From ec3ac1399a0301edd264976ae64a9b85e0a32351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 16 May 2019 11:45:40 -0700 Subject: [PATCH 240/393] Update lesson15.md --- lesson/lesson15.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index 90d7be3a..f5c446d7 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -25,7 +25,7 @@ - [Ссылки по HTML, JavaScript, CSS](https://github.com/JavaOPs/topjava#html-javascript-css) ## Домашнее задание HW15 -- Сделать реализацию `SqlStorage.getAll` через 2 отдельных запроса: отдельно резюме и отдельно контакты. +- Сделать реализацию `SqlStorage.getAllSorted` через 2 отдельных запроса: отдельно резюме и отдельно контакты. - Добавить в реализацию `SqlStorage` и в базу секции (кроме `OrganizationSection`). Для `ListSection` склеиваем строки через `\n`. -- Сделать отображение таблицы резюме в сервлете. +- Сделать отображение таблицы резюме в сервлете (табл resume, т.е. только uuid и fullName). - HTML таблицы From 74f5e7c1272baa12004280ff56af23205ec1d361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 15 Jun 2019 12:29:58 -0700 Subject: [PATCH 241/393] Update lesson13.md --- lesson/lesson13.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 432f907e..4ceffd85 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -46,3 +46,4 @@ - Для работы с DB надо в lib и проект добавить [драйвер базы данных](http://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.1) - Запустить `SqlStorageTest` (в `AbstractStorageTest` контакты и секции закоменченны), креденшелы к базе взять из `Config` - Вынести общий код (`getConnection(), prepareStatement, catch SQLException`) в класс `SqlHelper` +(https://dzone.com/articles/removing-duplicate-code-with-lambda-expressions) From e6a9fa2879d4424f65957882e1051b77101fa003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 13 Jul 2019 15:35:22 +0300 Subject: [PATCH 242/393] Update lesson01.md --- lesson/lesson01.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 555ed4f6..e58192da 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,7 +1,6 @@ # Первое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Вебинар-презентация обучения на проекте BaseJava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) -#### [Итоговый пример приложения, разрабатываемого в рамках данного курса (на примере резюме Григория Кислина)](https://javawebinar.github.io/) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор проекта Basejava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) ### Подготовка рабочего окружения - Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) @@ -103,11 +102,11 @@ r1, r2, r3,..., rn, null, null,..., null - [Что такое null в Java?](http://qaru.site/questions/1960/what-is-null-in-java) (оригинал: [What is null in Java?](https://stackoverflow.com/questions/2707322/what-is-null-in-java)) ### Замечания по выполнению HW1 -1. При реализации метода `delete()` сортировать резюме по `uuid` не требуется +1. При реализации метода `delete()` не используйте сортировку резюме 1. Все резюме в хранилище имеют уникальный `uuid`, что исключает повторы 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) -1. Не злоупотребляйте пустыми строками — выработай какой-то единый стиль их написания +1. Не злоупотребляйте пустыми строками — выработайте какой-то единый стиль их написания 1. Удаляйте неиспользуемые импорты (`Ctrl + Alt + O`) 1. Не игнорируйте подсказки IDEA (подсвечивает) 1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах From 09e1a4ce6d1a5129d1c8d73561dd31ed7c12d511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 13 Jul 2019 22:43:29 +0300 Subject: [PATCH 243/393] Update lesson02.md --- lesson/lesson02.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 0462f847..946581e8 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -29,7 +29,8 @@ - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) -> Начиная с Java 8 область памяти `PermGen` была упразднена и заменена на [`Metaspace`](https://www.javacodegeeks.com/2013/02/java-8-from-permgen-to-metaspace.html) +> - Начиная с Java 8 область памяти `PermGen` была упразднена и заменена на [`Metaspace`](https://www.javacodegeeks.com/2013/02/java-8-from-permgen-to-metaspace.html) +> - При загрузке класса (когда JVM встречает его коде впервые) в `Metaspace` JVM неявно создается объект `Class<Ваш_Класс>` - описание класса: его поля, методы, конструкторы. ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) From 225897a4ca99b36ee81a74c0506cee1440f24845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 14 Jul 2019 13:15:41 +0300 Subject: [PATCH 244/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 946581e8..d2342aa1 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -30,7 +30,7 @@ - [The Java Virtual Machine Specification Java SE 8 Edition](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf) > - Начиная с Java 8 область памяти `PermGen` была упразднена и заменена на [`Metaspace`](https://www.javacodegeeks.com/2013/02/java-8-from-permgen-to-metaspace.html) -> - При загрузке класса (когда JVM встречает его коде впервые) в `Metaspace` JVM неявно создается объект `Class<Ваш_Класс>` - описание класса: его поля, методы, конструкторы. +> - При загрузке класса (когда JVM встречает его коде впервые) JVM ищет этот класс в classpass и создает в `Metaspace` объект `Class<Ваш_Класс>` - описание класса: его поля, методы, конструкторы. ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) From ee880b82a1f4661d198b90d1106047d8335d1db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 28 Aug 2019 21:56:19 -0700 Subject: [PATCH 245/393] Update lesson17.md --- lesson/lesson17.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index cf15b062..9b0ccc82 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -9,6 +9,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Деплой в Heroku](https://drive.google.com/open?id=0B_4NpoQW1xfpS2JSSDByQ2xGWm8) [см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) - Deployment with the Heroku CLI +- для доступа к удаленной БД используйте следующие настройки SSL `ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) - Загрузка классов в Java From 0f98088e0206dd053ccee58b045da2057d762f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 19 Sep 2019 10:52:27 +0300 Subject: [PATCH 246/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 4e741884..f4afe6f3 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,6 +51,6 @@ - метод `saveOverflow()` должен исполняться только для массивов - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` -- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map`. Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) +- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map` (не путайте `key` и `search key` - это разные сущности). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск. Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From f1c2d187b67b363974ddefe9c8cd4261d4ba69fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 19 Sep 2019 14:46:37 +0300 Subject: [PATCH 247/393] Update lesson02.md --- lesson/lesson02.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index d2342aa1..c20a9f07 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -35,9 +35,9 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Типы данных. Пакеты](https://drive.google.com/open?id=0B_4NpoQW1xfpQzRVTHg1LVhvOEk) - [Типы данных](http://www.intuit.ru/studies/courses/16/16/lecture/27111) - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - - [Java types](https://www.youtube.com/watch?v=hqirUFitj9c&index=7&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN) (youtube) + - [Java types](https://youtu.be/JmplWN-FdMQ) (youtube) - [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) (youtube) - - [Пакеты](https://www.youtube.com/watch?v=zGKFmG-ygWQ&list=PLwwk4BHih4fgYGHmAL-2ZCymrYHXO69GN&index=9) (youtube) + - [Пакеты](https://youtu.be/a6KGNASOtK8) (youtube) - **Дополнительно:** - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) - [Primitive data types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) From 831fef534d9a5cc8b8143b8f3d363978892fcd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 19 Sep 2019 14:51:15 +0300 Subject: [PATCH 248/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index c20a9f07..e9246639 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -19,7 +19,7 @@ - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) - - [Понимаем основы Java garbage collection](http://ggenikus.github.io/blog/2014/05/04/gc) + - [Основы Java garbage collection](https://youtu.be/3TROgt7ncMo?t=51) (youtube) - **Дополнительно:** - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) From 8ce0fdfad05037a2e46befd402f84c4c4e969bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 21 Sep 2019 20:32:53 +0300 Subject: [PATCH 249/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 54b13c67..ad08efe1 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -41,7 +41,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) -- Начните выполнение ДЗ с рисования UML-диаграммы и покажите ее наставнику +- Начните выполнение ДЗ с рисования UML-диаграммы классов модели, описывающих резюме. Покажите ее наставнику - Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом From 11f0c22a67ce9c6fdc22758d20a00117602ba5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 22 Oct 2019 09:48:39 +0300 Subject: [PATCH 250/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index e9246639..b40bf3bc 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -50,6 +50,7 @@ - Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) - [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов +- Поместите классы в пакеты, как это показано в уроке - Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` - Сделайте проверки: - в `update/delete/get` - резюме есть в `storage`? From f5ba548fabff16e39c2c3d0928142d2e775431f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 20 Nov 2019 08:58:31 +0300 Subject: [PATCH 251/393] Update lesson03.md --- lesson/lesson03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 334235b6..fefc3a49 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -55,5 +55,5 @@ - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - сортировать весь массив не надо - - не используйте `Arrays.sort()` - - обратите внимание на бинарный поиск (Arrays.binarySearch) + - не используйте `Arrays.sort()` или самописные методы для сортировки + - для сортировки воспользуйтесь Arrays.binarySearch (бинарный поиск). Разберитесь с тем, какие значения он возвращает From 0bbd1ddca2f2472cee7cea005bba279f51a47485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 2 Jan 2020 09:54:41 +0300 Subject: [PATCH 252/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index fefc3a49..372a1a5d 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -27,6 +27,7 @@ - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) + - [История эволюции интерфейсов в Java](https://habr.com/ru/post/482498/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) From 83c606372efb4c95ca77b9b5fbf0b144125dc895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Wed, 26 Feb 2020 22:45:59 +0300 Subject: [PATCH 253/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index e58192da..e98f31f0 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -12,7 +12,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) -- [Размеры проектов в количестве строк кода [eng]](https://medium.freecodecamp.com/the-biggest-codebases-in-history-a128bb3eea73) +- [Размеры проектов в количестве строк кода [eng]](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) From fb625f4a025ae49bd577cbd105c1ce08018b130c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 4 Mar 2020 18:40:58 +0300 Subject: [PATCH 254/393] Update lesson01.md --- lesson/lesson01.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index e98f31f0..d0d22e24 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -111,3 +111,5 @@ r1, r2, r3,..., rn, null, null,..., null 1. Не игнорируйте подсказки IDEA (подсвечивает) 1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах 1. В методе `clear()` обнуление массива предполагает обнуление (null) ячеек, где хранятся Resume, а не создание нового или присваивание ему null +1. При реализации методов не используйте коллекции +1. Не меняйте сигнатуры методов в `ArrayStorage` From c2624eaa3d58c390308747fe20fcaa119c0439a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 5 Mar 2020 23:57:23 +0300 Subject: [PATCH 255/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index d0d22e24..db2de5f2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -41,6 +41,7 @@ - **Дополнительно:** - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) - [Most popular Java application servers: 2017 edition](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) + - [Понимаем основы Java garbage collection](http://web.archive.org/web/20180831013112/https://ggenikus.github.io/blog/2014/05/04/gc) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) From 46c6c30e0dee5ad1d62c70fedb51d110ef8d2f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sat, 14 Mar 2020 22:03:02 +0300 Subject: [PATCH 256/393] Update lesson04.md --- lesson/lesson04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index d4aeda0b..3753a92d 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -49,7 +49,8 @@ - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) > В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - - [Тестирование с помощью JUnit (Test Case)](http://www.javenue.info/post/19) + - [Junit — Что почитать по jUnit-тестам](https://i-http.ru/junit-chto-pochitat-po-junit-testam/) + - [Тестирование с помощью JUnit (Test Case)](http://web.archive.org/web/20190829153452/http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) ## Домашнее задание HW4 From 84e278977fc97809827987ef388c8ac7a96f6917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 18 Apr 2020 14:02:18 +0300 Subject: [PATCH 257/393] Update lesson08.md --- lesson/lesson08.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 3af2a28f..4f378987 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Для создания и заполнения данными резюме из класса `AbstractStorageTest` используйте `ResumeTestData`. Не делайте это в `AbstractStorageTest`! -4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах. +3) Реализуйте в `ResumeTestData` метод, который будет создавать, заполнять резюме данными и возвращать его для тестирования в `AbstractStorageTest`. Все секции резюме, используемые в тестах, должны быть заполнены +4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах From 343b7a5654d9a76ff2cd319ac609bc5893349d86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 26 Apr 2020 12:55:28 -0700 Subject: [PATCH 258/393] Update lesson15.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix href HTML таблицы --- lesson/lesson15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index f5c446d7..ff3cc099 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -28,4 +28,4 @@ - Сделать реализацию `SqlStorage.getAllSorted` через 2 отдельных запроса: отдельно резюме и отдельно контакты. - Добавить в реализацию `SqlStorage` и в базу секции (кроме `OrganizationSection`). Для `ListSection` склеиваем строки через `\n`. - Сделать отображение таблицы резюме в сервлете (табл resume, т.е. только uuid и fullName). - - HTML таблицы + - HTML таблицы From f984adfb3b9e0049d72a066cb2aee114d042cad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 27 Apr 2020 12:22:29 -0700 Subject: [PATCH 259/393] Update lesson13.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix драйвер базы данных link --- lesson/lesson13.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 4ceffd85..3a4fc3e7 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -43,7 +43,7 @@ ### ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Домашнее задание HW13 - Доделать `SqlStorage` без контактов и секций -- Для работы с DB надо в lib и проект добавить [драйвер базы данных](http://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.1) +- Для работы с DB надо в lib и проект добавить [драйвер базы данных](https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.1/) - Запустить `SqlStorageTest` (в `AbstractStorageTest` контакты и секции закоменченны), креденшелы к базе взять из `Config` - Вынести общий код (`getConnection(), prepareStatement, catch SQLException`) в класс `SqlHelper` (https://dzone.com/articles/removing-duplicate-code-with-lambda-expressions) From 379cd630775e39bc65eeb1ddd047226369b6c21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 19 May 2020 23:15:08 +0200 Subject: [PATCH 260/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index db2de5f2..2c69a26e 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -60,7 +60,7 @@ - Создайте на GitHub репозиторий с названием `basejava` - Откройте консоль (терминал) у себя на компьютере - Если необходимо, [занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите консоль -- Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git` +- **Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git`. Реализацию дз выполняйте в рамках данной копии** - Перейдите в каталог проекта: `cd basejava` - Настройте git в локальном проекте на свой проект в GitHub: - `git remote -v` From 382281a8c7fd807a6992e094562c2595901b8743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 4 Jul 2020 12:36:34 +0300 Subject: [PATCH 261/393] Update lesson06.md --- lesson/lesson06.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index f4afe6f3..71921da4 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -40,6 +40,7 @@ - [Лямбда-выражения в Java 8](https://www.youtube.com/watch?v=DNC6Lknn2AE) (youtube) - [Функциональный интерфейс](https://geekbrains.ru/posts/java_interfaces) - [Лямбды в Java 8](https://habrahabr.ru/post/224593/) +- [Комапараторы](https://www.baeldung.com/java-8-comparator-comparing) - **Дополнительно:** - [Java 8 Functional Interfaces](https://www.journaldev.com/2763/java-8-functional-interfaces) - [Lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) From 8b51f4fdea8fb92328e40d26045bb9c01493c288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 4 Jul 2020 12:37:06 +0300 Subject: [PATCH 262/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 71921da4..f8f503cb 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -40,7 +40,7 @@ - [Лямбда-выражения в Java 8](https://www.youtube.com/watch?v=DNC6Lknn2AE) (youtube) - [Функциональный интерфейс](https://geekbrains.ru/posts/java_interfaces) - [Лямбды в Java 8](https://habrahabr.ru/post/224593/) -- [Комапараторы](https://www.baeldung.com/java-8-comparator-comparing) +- [Компараторы](https://www.baeldung.com/java-8-comparator-comparing) - **Дополнительно:** - [Java 8 Functional Interfaces](https://www.journaldev.com/2763/java-8-functional-interfaces) - [Lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) From de771902adb481eaf3498e9adbad9b4fde20fb60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 29 Jul 2020 03:16:53 +0300 Subject: [PATCH 263/393] Update lesson01.md --- lesson/lesson01.md | 129 ++++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 66 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2c69a26e..f65d53a2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,116 +1,113 @@ # Первое занятие -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор проекта Basejava](https://drive.google.com/file/d/0B_4NpoQW1xfpNzdqT2hOcUJ6TGs) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) ### Подготовка рабочего окружения - Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) -- Установите систему управления версиями [Git](http://git-scm.com/downloads) (опции по умолчанию) +- Установите систему управления версиями [Git](http://git-scm.com/downloads) - Создайте аккаунт на [GitHub](https://github.com/) -- Для удобной навигации по файлам на GitHub установите расширение для браузера — [Octotree](https://habrahabr.ru/post/223527/) -- Установите [IntelliJ IDEA](http://www.jetbrains.com/idea/download/index.html) (пока нет базы данных и веб, можно работать с версией Community) -> Версия Ultimate является платным продуктом, рассчитанным на 30 дней пробного бесплатного использования. Для выполнения заданий в этой IDE каждый участник курса получает единоразовый ключ на 6 месяцев +- Для удобной навигации по файлам на GitHub установите расширение для браузера [Octotree](https://habrahabr.ru/post/223527/) +- Установите [IntelliJ IDEA Community](http://www.jetbrains.com/idea/download/index.html) (Ultimate-версия понадобится позже, при работе с базой данных и web) +> Для версии Ultimate дается 30 дней бесплатного использования. Но в качестве подарка, каждому участнику курса, мы выдаем единоразово купон на 6 месяцев ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) -- [Размеры проектов в количестве строк кода [eng]](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) -- [Соглашения по оформлению кода](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) +- [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) +- [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) +- [Соглашения по оформлению кода](https://topjava.ru/blog/google-java-style-guide) - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) -- [Bash — шпаргалка для начинающих](https://tproger.ru/translations/bash-cheatsheet) -- [Интерактивный курс по SQL](http://www.sql-ex.ru/) -- [The State of Java in 2018](http://www.baeldung.com/java-in-2018) -- [Что и почему используют Java-разработчики: опрос RebelLabs](https://jug.ru/2017/12/rebellabs-report/) -- [Java in 2017 Survey Results](http://www.baeldung.com/java-in-2017) -- **Дополнительно:** - - [Автоматизированная сборка проекта в Java](http://spring-projects.ru/guides/maven/) +- [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) +- [Java Technology Report 2020](https://www.jrebel.com/blog/2020-java-technology-report) +- [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) +- [JVM Ecosystem Report 2020](https://snyk.io/wp-content/uploads/jvm_2020.pdf) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) -- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) (wiki) -- [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) -- [Что такое JDK? Введение в средства разработки Java](https://topjava.ru/blog/what-is-the-jdk) -- [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) -- [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) -- [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) (wiki) +- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) +- Java [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) +- [Что такое JDK? Введение в средства разработки Java](https://topjava.ru/blog/what-is-the-jdk) +- [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) +- [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) +- [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) - [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) -- [Oracle Java8 Home](http://docs.oracle.com/javase/8/docs/index.html) -- **Дополнительно:** - - [Java version and vendor data analyzed 2017](https://plumbr.io/blog/java/java-version-and-vendor-data-analyzed-2017-edition) - - [Most popular Java application servers: 2017 edition](https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition) - - [Понимаем основы Java garbage collection](http://web.archive.org/web/20180831013112/https://ggenikus.github.io/blog/2014/05/04/gc) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) - - [Система управления версиями](https://ru.wikipedia.org/wiki/Система_управления_версиями) (wiki) - - [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) - - [Git обучалка](https://githowto.com/ru) - - [Интерактивная Git обучалка (в настройках выберите русский язык)](http://learngitbranching.js.org) - - [Официальная книга про Git](https://git-scm.com/book/ru/v2) - - [Working with remote repositories](https://illustrated-git.readthedocs.org/en/latest/#working-with-remote-repositories) - - [Базовый курс по обучению Git](https://www.youtube.com/playlist?list=PLIU76b8Cjem5B3sufBJ_KFTpKkMEvaTQR) (youtube) - - [Git. Быстрый старт](https://www.youtube.com/watch?v=4-NX17Ip-xQ&list=PLmRNNqEA7JoM77hOJkPrLOfJQGizCLR3P) (youtube) +- [Система управления версиями (VCS)](https://ru.wikipedia.org/wiki/Система_управления_версиями) +- [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) +- [Видео-уроки по Git](https://www.youtube.com/playlist?list=PLDyvV36pndZHkDRik6kKF6gSb0N0W995h) +- Интерактивные Git-обучалки: [1](https://githowto.com/ru), [2](http://learngitbranching.js.org) +- [Официальная книга по Git](https://git-scm.com/book/ru/v2) ### Настройка проекта - Создайте на GitHub репозиторий с названием `basejava` -- Откройте консоль (терминал) у себя на компьютере -- Если необходимо, [занесите](https://www.java.com/ru/download/help/path.xml) git в переменную окружения PATH и перезапустите консоль -- **Создайте локальную копию проекта: `git clone https://github.com/JavaOps/basejava.git`. Реализацию дз выполняйте в рамках данной копии** -- Перейдите в каталог проекта: `cd basejava` -- Настройте git в локальном проекте на свой проект в GitHub: - - `git remote -v` - - `git remote set-url origin url_на_твой_basejava-репозиторий.git` - настройка pull - - `git remote set-url --push origin url_на_твой_basejava-репозиторий.git` - настройка push - - `git push -u origin master` +- Откройте консоль у себя на компьютере (в папке, где планируете разместить проект) и выполните следующее: + - **Скачайте копию проекта с заранее заданными классами: `git clone https://github.com/JavaOps/basejava.git`. Реализацию дз выполняйте в рамках данной копии** + - Перейдите в каталог проекта: `cd basejava` + - Настройте git у себя на компьютере на свой репозиторий в GitHub: + - `git remote set-url origin url_на_ваш_basejava-репозиторий.git` — настройка pull + - `git remote set-url --push origin url_на_ваш_basejava-репозиторий.git` — настройка push + - `git remote -v` — удостоверьтесь, что команда выводит ссылки на ваш удаленный репозиторий + - `git push -u origin master` — [устанавливаем связь](https://qna.habr.com/q/118865) между локальной и удаленной веткой master ## Домашнее задание HW1 -- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, который вы клонировали ранее к себе на компьютер: +- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: -![newproject](https://user-images.githubusercontent.com/29703461/38273513-d1f7ce52-3794-11e8-829c-305212c25be7.png) +![newproject](https://user-images.githubusercontent.com/29703461/88058015-95008580-cb6b-11ea-9b7c-65843b859988.png) -![next](https://user-images.githubusercontent.com/29703461/38273546-e712a6fe-3794-11e8-9850-29287b46a8a0.png) +![next](https://user-images.githubusercontent.com/29703461/88057628-055ad700-cb6b-11ea-9c59-72bb538e2541.png) -![next1](https://user-images.githubusercontent.com/29703461/38273584-00e07dc2-3795-11e8-9006-3109f949cf33.png) +![next1](https://user-images.githubusercontent.com/29703461/88058925-d2b1de00-cb6c-11ea-9d0b-83c771899457.png) -![finish](https://user-images.githubusercontent.com/29703461/38275669-3e621614-379b-11e8-8b3a-8e0a3ad4c65c.png) +![finish](https://user-images.githubusercontent.com/29703461/88059306-579cf780-cb6d-11ea-8094-bbf87474a127.png) -- Реализуйте класс `ArrayStorage`, организовав хранение резюме на основе массива с методами `save, get, delete, size, clear, getAll` -- При этом храните все резюме в начале `storage` (без дырок в виде `null`), чтобы не перебирать каждый раз все 10000 элементов +- Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве +- Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов +- При реализации метода `delete` учитывайте, что после удаления резюме между оставшимися резюме не должно быть пустых ячеек, заполненных null ``` -Схема хранения резюме в storage (от 0 до size - 1 элементов null нет): +Схема хранения резюме в массиве storage (в элементах от 0 до size-1 отсутствуют null): + r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> ``` -- Протестируйте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` +- Проверьте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - - [Руководство пользователя IntelliJ IDEA. Отладчик](http://info.javarush.ru/idea_help/2014/01/22/Руководство-пользователя-IntelliJ-IDEA-Отладчик-.html) - - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) (youtube) - - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) (youtube) + - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) + - [Отладка Java кода в IDEA. Основные возможности отладчика](https://youtu.be/Z1BQsf0A4xY) + - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) + - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) ### Вопросы по HW1 -> Не могу запустить программу, да и рядом с классами появился какой-то значок -![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) -- Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` - -> Что такое null? + > Не могу запустить программу, да и рядом с классами появился какой-то значок -- [Что такое null в Java?](http://qaru.site/questions/1960/what-is-null-in-java) (оригинал: [What is null in Java?](https://stackoverflow.com/questions/2707322/what-is-null-in-java)) + ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) + - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` ### Замечания по выполнению HW1 -1. При реализации метода `delete()` не используйте сортировку резюме -1. Все резюме в хранилище имеют уникальный `uuid`, что исключает повторы +1. Все резюме в хранилище имеют уникальный `uuid`, что исключает повторы. Сортировка по `uuid` не требуется 1. Давайте осмысленные комментарии коммитам 1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода) -1. Не злоупотребляйте пустыми строками — выработайте какой-то единый стиль их написания -1. Удаляйте неиспользуемые импорты (`Ctrl + Alt + O`) -1. Не игнорируйте подсказки IDEA (подсвечивает) -1. `Resume r` — давайте переменным осмысленные имена, например `resume`. `r` допустимо в коротких циклах и лямбдах +1. Удаляйте в классах неиспользуемые импорты (`Ctrl + Alt + O`) +1. Не игнорируй подсказки IDEA (подсвечивает) 1. В методе `clear()` обнуление массива предполагает обнуление (null) ячеек, где хранятся Resume, а не создание нового или присваивание ему null 1. При реализации методов не используйте коллекции 1. Не меняйте сигнатуры методов в `ArrayStorage` +1. Не добавляйте в `Resume` новые поля +1. Resume r — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях + +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 5. [Вебинар "Быть программистом: от детства к зрелости"](https://www.youtube.com/watch?v=D5Hej0TyLaU) + - [Слайды вебинара](https://docs.google.com/presentation/d/1YwtCCZsaGMdl-V15kTDHiJxiS52IAl-qqheNPpiNr54/) +### Советы по обучению + - Учитесь грамотно формулировать проблему: "у меня не работает" может иметь тысячи причин. В процессе формулирования часто приходит ее решение + - Учитесь исследовать проблему. Внимательное чтение логов и умение дебажить — основные навыки разработчика. В логах необходимо читать верхнюю часть самого нижнего иксепшена. Именно там находится причина возникшей ошибки + - Грамотно распределяйте время для каждой проблемы. Не впадайте в крайности: сразу бросаться за помощью или биться над ней часами. Подходите к ее решению разумно + - Получайте в процессе решения обратную связь, что бы убедиться в правильности выбранного направления + - [Советы новичкам](http://blog.csssr.ru/2016/09/19/how-to-be-a-beginner-developer) From bf585ca2117568e8a825c87f2544ea8f1ccb2530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 29 Jul 2020 03:17:33 +0300 Subject: [PATCH 264/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f65d53a2..3bd9043a 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -11,7 +11,7 @@ > Для версии Ultimate дается 30 дней бесплатного использования. Но в качестве подарка, каждому участнику курса, мы выдаем единоразово купон на 6 месяцев ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) -- [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) (wiki) +- [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) - [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) - [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://topjava.ru/blog/google-java-style-guide) From 6707c379c0578b7ec24dcaaa98bf635bf001640e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 30 Jul 2020 17:07:35 +0300 Subject: [PATCH 265/393] Update lesson08.md --- lesson/lesson08.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 4f378987..be7329e0 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Реализуйте в `ResumeTestData` метод, который будет создавать, заполнять резюме данными и возвращать его для тестирования в `AbstractStorageTest`. Все секции резюме, используемые в тестах, должны быть заполнены +3) Реализуйте в `ResumeTestData` метод, который будет принимать uuid и fullName, создавать резюме, заполнять его данными и возвращать для тестирования в `AbstractStorageTest`. Все секции резюме, используемые в тестах, должны быть заполнены 4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах From beec7bc4741230f822712c253e0940a93a88e505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 30 Jul 2020 18:23:38 +0300 Subject: [PATCH 266/393] Update lesson07.md --- lesson/lesson07.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index ad08efe1..ca786e48 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -62,7 +62,5 @@ #### Инструменты для рисования UML-диаграмм: -- [Generate class diagram in IntelliJ IDEA](http://stackoverflow.com/questions/8942751/use-intellij-to-generate-class-diagram#26926334) ([Help: working with Diagrams](https://www.jetbrains.com/help/idea/2016.1/working-with-diagrams.html?origin=old_help)) -- Нарисовать и сфотографировать -- [Online: www.draw.io](http://www.draw.io) -- [yEd - Graph Editor](https://www.yworks.com/) +- Любой UML-редактор, например, [draw.io](http://www.draw.io), [yEd](https://www.yworks.com/) и тд +- Нарисовать на бумаге/доске и прислать фотку From fe98b6fe71b23c1a86974c2a37f84a2437ba3ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 30 Jul 2020 23:28:33 +0300 Subject: [PATCH 267/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index b40bf3bc..b585fe8a 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -48,7 +48,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW2](https://drive.google.com/open?id=0B_4NpoQW1xfpWUxUVWx5MFpCZkE) > Правка к видео: в `ArrayStorage.delete()` вместо `storage[i] = null` нужно записать `storage[size - 1] = null` -- Еще раз прочитайте, [как правильно оформлять код](https://drive.google.com/file/d/1BfVe2KaUxWCAB8R3RKSyM8tmWZBv-J-9/view?usp=sharing) +- Еще раз прочитайте, [как правильно форматировать код](https://topjava.ru/blog/google-java-style-guide) - [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов - Поместите классы в пакеты, как это показано в уроке - Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` From 2905313e720c0e52d67c355dd39c71c3fceca081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 7 Aug 2020 22:18:09 +0300 Subject: [PATCH 268/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 372a1a5d..a7e60bde 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -16,7 +16,7 @@ **Ресурсы:** - [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) -- [10 заметок о модификаторе static в Java](http://info.javarush.ru/translation/2014/04/15/10-заметок-о-модификаторе-Static-в-Java.html) +- [10 заметок о модификаторе static в Java](https://javarush.ru/groups/posts/modifikator-static-java) - [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Абстрактные классы](https://www.youtube.com/watch?v=ZjiFL2Yo2fw) (youtube) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) From 493869f05d5b3f9503cf2b08e565ce372d95f12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 15 Aug 2020 19:28:57 +0300 Subject: [PATCH 269/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 3753a92d..d4b70d90 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -55,7 +55,7 @@ ## Домашнее задание HW4 - Реализуйте тесты: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` -- В `MainReflection` сделайте вызов метода `toString` через отражение, и выведите результат +- В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` From e838010d85af2820b0604e23768ffe57683e5a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 11 Sep 2020 22:37:38 +0300 Subject: [PATCH 270/393] Update lesson02.md --- lesson/lesson02.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index b585fe8a..3f40192b 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -52,10 +52,9 @@ - [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов - Поместите классы в пакеты, как это показано в уроке - Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` -- Сделайте проверки: - - в `update/delete/get` - резюме есть в `storage`? - - в `save`- резюме нет в `storage`? - - сделайте в `save` проверку на переполнение - - выведите соответствующие предупреждения для всех, указанных выше проверок - `System.out.println("Resume ...")` -- Избавьтесь от дублирования в коде `ArrayStorage` -- Посмотрите на методы класса `java.util.Arrays`. Некоторые из них помогут упростить реализацию ваших методов `clear()` и `getAll()` +- Сделайте проверки в: + - `save`, `get`, `update`, `delete` на наличие резюме в `storage` + - `save` на переполнение `storage` +- Выводите в консоль информативные предупреждения для указанных выше проверок +- Устраните дублирование кода в `ArrayStorage` +- Выберите в классе `java.util.Arrays` подходящие методы для реализации `clear()` и `getAll()` From 9e4a735d25a042e3ba76f6fb86d016bcf080d099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 15 Sep 2020 09:14:36 +0300 Subject: [PATCH 271/393] Update lesson02.md --- lesson/lesson02.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 3f40192b..b45a59b1 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -53,8 +53,9 @@ - Поместите классы в пакеты, как это показано в уроке - Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` - Сделайте проверки в: - - `save`, `get`, `update`, `delete` на наличие резюме в `storage` - - `save` на переполнение `storage` + - `get`, `update`, `delete` на наличие резюме в `storage` + - `save` на отсутствие резюме в `storage` + - `save` на переполнение `storage` - Выводите в консоль информативные предупреждения для указанных выше проверок - Устраните дублирование кода в `ArrayStorage` - Выберите в классе `java.util.Arrays` подходящие методы для реализации `clear()` и `getAll()` From b8b37e7347db8b8e507d435030c75c881e02cb2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 22 Sep 2020 09:31:09 +0300 Subject: [PATCH 272/393] Update lesson16.md --- lesson/lesson16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 09ba2077..e1945672 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -19,7 +19,7 @@ - Что такое JSP. Wiki JSP - Predefined Variables in JSP -- Стандартные элементы action +- Стандартные элементы action - How to use relative paths in JSP - Отличие Redirect от Forward From 491e19ce5892388bbe3d00ea05cb8f64122386aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 22 Sep 2020 09:33:23 +0300 Subject: [PATCH 273/393] Update lesson16.md --- lesson/lesson16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index e1945672..8a9b90da 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -21,7 +21,7 @@ - Predefined Variables in JSP - Стандартные элементы action - How to use relative paths in JSP -- Отличие Redirect от Forward +- [Отличие Redirect от Forward](https://stackoverflow.com/questions/2047122/requestdispatcher-forward-vs-httpservletresponse-sendredirect) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. JSTL](https://drive.google.com/open?id=0B_4NpoQW1xfpSHdUNE9TZWNJV1k) [см. коммит Lesson16 jstl](https://github.com/JavaWebinar/basejava/blob/a909d0854c47753d8f278a9d6e930411992762ac/web/WEB-INF/jsp/list.jsp) From d5feee46f37442714d649311f30a2f8e65398a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 25 Sep 2020 21:06:05 +0300 Subject: [PATCH 274/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index ca786e48..497bffcd 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -57,7 +57,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io)** +- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io). Выведите все секции на консоль** - **Не размещайте в AbstractStorageTest код, связанный с заполнением резюме данными. Делайте это в ResumeTestData** #### Инструменты для рисования UML-диаграмм: From c20a3f67475c581046d907a80e2e9755aeaeb407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 2 Oct 2020 12:26:35 +0300 Subject: [PATCH 275/393] Update lesson08.md --- lesson/lesson08.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index be7329e0..992a8b8a 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -26,5 +26,5 @@ 1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется 2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) -3) Реализуйте в `ResumeTestData` метод, который будет принимать uuid и fullName, создавать резюме, заполнять его данными и возвращать для тестирования в `AbstractStorageTest`. Все секции резюме, используемые в тестах, должны быть заполнены +3) Реализуйте в `ResumeTestData` метод, который будет принимать uuid и fullName, создавать резюме, заполнять его данными (все секции резюме должны быть заполнены) и возвращать для тестирования в `AbstractStorageTest`. Используйте его для всех резюме, создаваемых в AbstractStorageTest 4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах From dda8fb30ebc1bf7242c74313cafc7653096e3354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 3 Oct 2020 12:06:54 +0300 Subject: [PATCH 276/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index a7e60bde..80245200 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -48,7 +48,7 @@ - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - - Книга из известной серии Head First — [Паттерны проектирования](https://www.ozon.ru/context/detail/id/20216992/) + - Книга из известной серии Head First — [Паттерны проектирования](https://www.ozon.ru/context/detail/id/144233005/?_bctx=CAgQver7Bg) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) From 551a75dbc758fefffe990e982e70b509285d3ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 6 Oct 2020 11:39:22 +0300 Subject: [PATCH 277/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index d4b70d90..163ff6cf 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -61,6 +61,7 @@ - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` - `ArrayStorageTest` c `ArrayStorage` - тестировать правильность сортировки не надо +- иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - если исключение вылетит раньше, чем массив будет заполнен, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) From bd36fee776ccdf3b59702c52d0227e666c000ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 15 Oct 2020 11:49:48 +0300 Subject: [PATCH 278/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index f8f503cb..7956617b 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -52,6 +52,6 @@ - метод `saveOverflow()` должен исполняться только для массивов - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` -- Подумайте, что еще, может выступать в качестве `search key` в реализации на основе `Map` (не путайте `key` и `search key` - это разные сущности). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) +- Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск. Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From 8e26f80eeef2b6c1a7d2579658a6623e3064a330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 16 Oct 2020 13:18:22 +0300 Subject: [PATCH 279/393] Update lesson04.md --- lesson/lesson04.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 163ff6cf..f15a5b45 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -64,6 +64,6 @@ - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - - если исключение вылетит раньше, чем массив будет заполнен, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) - - если исключение вылетает, когда пытаемся добавить в полностью заполненный массив еще одно резюме - тест пройден + - если при заполнении вылетит исключение, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)), т.к. оно произошло раньше времени + - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме - добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From dad3d26f81668b270bc157db637967c87ad709e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 16 Oct 2020 13:20:56 +0300 Subject: [PATCH 280/393] Update lesson04.md --- lesson/lesson04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index f15a5b45..b4ce372c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -64,6 +64,7 @@ - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - - если при заполнении вылетит исключение, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)), т.к. оно произошло раньше времени + - если при заполнении вылетит исключение, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) + - в fail() выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме - добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From e752dc5f6dfa243c8314262d2b37da7041734097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 17 Oct 2020 10:43:52 +0300 Subject: [PATCH 281/393] Update lesson03.md --- lesson/lesson03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 80245200..7ff4fb08 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -55,6 +55,6 @@ - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах — отличаются - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - - сортировать весь массив не надо - - не используйте `Arrays.sort()` или самописные методы для сортировки - для сортировки воспользуйтесь Arrays.binarySearch (бинарный поиск). Разберитесь с тем, какие значения он возвращает + - не используйте `Arrays.sort()` или самописные методы для сортировки + - сортировать весь массив не надо From 1ec9fd9a1bb3fb14b224c39f590fea43acba3dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 22 Oct 2020 21:07:20 +0300 Subject: [PATCH 282/393] Update lesson06.md --- lesson/lesson06.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 7956617b..28e88750 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -19,18 +19,16 @@ **Ресурсы:** - [Паттерн проектирования Итератор](https://refactoring.guru/ru/design-patterns/iterator/java/example) - [Iterator / Iterable](http://www.javenue.info/post/101) -- **Дополнительно:** - - [Iterator in Java](https://www.journaldev.com/13460/java-iterator) -- [Вложенные классы в Java](https://habrahabr.ru/post/342090/) -- [Вложенные, внутренние, локальные и анонимные классы](http://pr0java.blogspot.ru/2015/08/1.html) -- [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java). +- [Iterator in Java](https://www.journaldev.com/13460/java-iterator) - [Интерфейсы Comparable и Comparator](https://metanit.com/java/tutorial/5.6.php) -- [Анонимные классы в Java](https://www.youtube.com/watch?v=P3uicghNPLg) (youtube) - [Nested (static) классы в Java](https://www.youtube.com/watch?v=svOwVvSWeus) (youtube) - [Inner (non-static) классы в Java](https://www.youtube.com/watch?v=LflAy_LOwwQ) (youtube) -- **Дополнительно** - - [Вложенные, внутренние, локальные и анонимные классы [eng]](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) - +- [Анонимные классы в Java](https://www.youtube.com/watch?v=P3uicghNPLg) (youtube) +- [Вложенные классы в Java](https://habrahabr.ru/post/342090/) +- [Вложенные, внутренние, локальные и анонимные классы](http://pr0java.blogspot.ru/2015/08/1.html) +- [Локальные и анонимные классы](http://easy-code.ru/lesson/local-anonymous-nested-classes-java) +- [Вложенные, внутренние, локальные и анонимные классы [eng]](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Новое в Java 8](https://drive.google.com/open?id=0B_4NpoQW1xfpcVJFa2ljeEloTXc) **Коммиты:** - [`Lesson06 Lambda`](https://github.com/JavaWebinar/basejava/blob/7a80322a4861ccc1e1eacaef2aac078820699667/src/ru/javawebinar/basejava/storage/SortedArrayStorage.java) From ebd0c8b40850b6efdf2b415c2788e6f323d2be8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 24 Oct 2020 09:14:11 +0300 Subject: [PATCH 283/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 28e88750..7fda546e 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -52,4 +52,4 @@ - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать -- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск. Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой +- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (только для JUnit4). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From 2c70a7957af5dd94721141ec99fece52a1ee7bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 25 Oct 2020 23:03:34 +0300 Subject: [PATCH 284/393] Update lesson05.md --- lesson/lesson05.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 0124f9c9..4fcb636c 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -23,12 +23,16 @@ - [Collection.toArray(new T[0]) or Collection.toArray(new T[size]), that's the question](https://shipilev.net/blog/2016/arrays-wisdom-ancients) ## Домашнее задание -домашнее задание состоит из двух частей: -1) Выделите общий класс `AbstractStorage` и реализуйте подкласс `ListStorage`. Для этого вам необходимо вынести в `AbstractStorage` максимум кода, исключив тем самым его дублирование. -2) Приступать только после проверки первой части наставником. Реализуйте подкласс `MapStorage`. Сделайте классы для тестирования `ListStorage` и `MapStorage`. +Часть I: +- реализуйте `ListStorage` и `ListStorageTest` +- создайте новый общий класс `AbstractStorage` +- вынесите в `AbstractStorage` весь общий код из всех его наследников, исключив тем самым его дублирование -Выбор реализации `List` и `Map` за вами +Часть II (приступать только после проверки первой части наставником) +- Реализуйте подкласс `MapStorage` и `MapStorageTest` + +Выбор коллекций, которые вы будете использовать для реализации классов, за вами - [Шаблонный метод (шаблон проектирования)](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) > Поведенческий шаблон проектирования, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом From 81f17670a48de59bd5a0230967cc274e875e49d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 2 Nov 2020 10:48:03 +0300 Subject: [PATCH 285/393] Update lesson11.md --- lesson/lesson11.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index aa9b9030..b58227a4 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -15,6 +15,7 @@ ## Потоки. Синхронизация - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object +- [Жизненный цикл потока в Java](https://nuancesprog.ru/p/10254/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Ленивая инициализация, JMM.](https://drive.google.com/file/d/1kAoLlGhsHAyl_Vtak5R_VuNiQp5cYUx3) [см. коммит Lesson11](https://github.com/JavaWebinar/basejava/blob/6a626f61722af844663860d1af284c53a9adf423/src/ru/javawebinar/basejava/LazySingleton.java) From 0c5499edc9bcc1752bc371c7bbb1f9ece6784563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 10 Nov 2020 21:54:06 +0300 Subject: [PATCH 286/393] Update lesson04.md --- lesson/lesson04.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index b4ce372c..9b7abb21 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -48,8 +48,7 @@ - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) > В нашем проекте Reflection используют JUnit и будут использовать библиотеки работы с XML и JSON - - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - - [Junit — Что почитать по jUnit-тестам](https://i-http.ru/junit-chto-pochitat-po-junit-testam/) + - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - [Тестирование с помощью JUnit (Test Case)](http://web.archive.org/web/20190829153452/http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) From 12e326f3655df9125b8ba4c8593bd75c891c9087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 6 Dec 2020 13:19:33 -0800 Subject: [PATCH 287/393] Update lesson17.md --- lesson/lesson17.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 9b0ccc82..39ca21b8 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -9,6 +9,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Деплой в Heroku](https://drive.google.com/open?id=0B_4NpoQW1xfpS2JSSDByQ2xGWm8) [см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) - Deployment with the Heroku CLI +по дефолту используется java 8. +Для деплоя с др. версией надо указать jdk, например `heroku war:deploy --jdk 11 --app ` - для доступа к удаленной БД используйте следующие настройки SSL `ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) From e2e5eb9b61f51be250269877dc2d52b39d721b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 6 Dec 2020 13:21:26 -0800 Subject: [PATCH 288/393] Update lesson17.md --- lesson/lesson17.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 39ca21b8..d7ee8ade 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -10,8 +10,10 @@ [см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) - Deployment with the Heroku CLI по дефолту используется java 8. -Для деплоя с др. версией надо указать jdk, например `heroku war:deploy --jdk 11 --app ` -- для доступа к удаленной БД используйте следующие настройки SSL `ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` +Для деплоя с др. версией надо указать jdk, например +`heroku war:deploy --jdk 11 --app ` +- для доступа к удаленной БД используйте следующие настройки SSL +`ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) - Загрузка классов в Java From 9e9b358ec44132cf1f118b32f86f190163fc379f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 17 Dec 2020 17:58:18 +0300 Subject: [PATCH 289/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 3bd9043a..b6a98124 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -41,6 +41,7 @@ ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) - [Система управления версиями (VCS)](https://ru.wikipedia.org/wiki/Система_управления_версиями) +- [Введение в Git: от установки до основных команд](https://tproger.ru/translations/beginner-git-cheatsheet/) - [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) - [Видео-уроки по Git](https://www.youtube.com/playlist?list=PLDyvV36pndZHkDRik6kKF6gSb0N0W995h) - Интерактивные Git-обучалки: [1](https://githowto.com/ru), [2](http://learngitbranching.js.org) From 9c94f08c6272df11494af80d175dfdf098d10793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 27 Dec 2020 15:37:26 +0300 Subject: [PATCH 290/393] Update lesson08.md --- lesson/lesson08.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 992a8b8a..9a9437c2 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -24,7 +24,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpRV8xMnpDV0VBUGc) [см. коммит Lesson08 HW08 ](https://github.com/JavaWebinar/basejava/tree/126be641f9cf8202956817d26279a7af0cdf6845/src/ru/javawebinar/basejava) -1) Переделать модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/ учиться в разные периоды и при этом имя организации не дублируется -2) Сделать рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) +1) Переделайте модель резюме: учесть, что на одной работе (в одном учебном заведении) можно работать/учиться в разные периоды. При этом имя организации и ссылка на сайт не должны дублироваться +2) Сделайте рекурсивный обход и вывод имени файлов в каталогах и подкаталогах (корневой каталог- ваш проект) 3) Реализуйте в `ResumeTestData` метод, который будет принимать uuid и fullName, создавать резюме, заполнять его данными (все секции резюме должны быть заполнены) и возвращать для тестирования в `AbstractStorageTest`. Используйте его для всех резюме, создаваемых в AbstractStorageTest -4) Реализовать `AbstractFileStorage`, базовый класс для хранения резюме в файлах +4) Реализуйте `AbstractFileStorage`, базовый класс для хранения резюме в файлах From 1d2a719efbb2ad31c79a184ffc98ae94629431f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 2 Jan 2021 22:20:20 +0300 Subject: [PATCH 291/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 7fda546e..93ff562c 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -36,7 +36,7 @@ **Ресурсы:** - [Нововведения в java 8](https://habrahabr.ru/post/216431/) - [Лямбда-выражения в Java 8](https://www.youtube.com/watch?v=DNC6Lknn2AE) (youtube) -- [Функциональный интерфейс](https://geekbrains.ru/posts/java_interfaces) +- [Функциональный интерфейс](https://www.youtube.com/watch?v=Czkk1Kgqxjs&list=PLtNPgSbW9TX5IQAKzgrJnaayjaDoCjkio&index=11&t=217s) (youtube) - [Лямбды в Java 8](https://habrahabr.ru/post/224593/) - [Компараторы](https://www.baeldung.com/java-8-comparator-comparing) - **Дополнительно:** From 7696d64aadbf920cc214dbb126fb89ebd72c7a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 3 Jan 2021 14:16:14 +0300 Subject: [PATCH 292/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 7ff4fb08..84354de4 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -15,6 +15,7 @@ - [`Lesson03 implements interface`](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) **Ресурсы:** +- [Руководство по модификатору static в Java](https://topjava.ru/blog/rukovodstvo-po-modifikatoru-static-v-java) - [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) - [10 заметок о модификаторе static в Java](https://javarush.ru/groups/posts/modifikator-static-java) - [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) From 9ee7c25d5148d4735c358dc6cdeb34b408602829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 5 Jan 2021 17:08:56 +0300 Subject: [PATCH 293/393] Update lesson17.md --- lesson/lesson17.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index d7ee8ade..26dd08a1 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -19,7 +19,7 @@ - Загрузка классов в Java - Apache Tomcat Class Loader -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Вебинар "Осваиваем Java String/JPA Enterprise"](https://drive.google.com/file/d/0B9Ye2auQ_NsFY1ZDNXRCd1NCTG8) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Вебинар "Осваиваем Java Spring/JPA Enterprise"](https://drive.google.com/file/d/0B9Ye2auQ_NsFY1ZDNXRCd1NCTG8) - [Слайды вебинара](https://goo.gl/XNVOj4) - Из юниоров в разработчики: получаем первую работу - Java Tools and Technologies Landscape Report 2016 From e47529eff5e35fce0d1088a82ceade49806df32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 14 Jan 2021 20:25:34 +0300 Subject: [PATCH 294/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 9b7abb21..df6e5fa4 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -27,7 +27,7 @@ - [Исключения (Exceptions)](http://proglang.su/java/exceptions) - [Статья про исключения](http://developer.alexanderklimov.ru/android/java/exception.php) - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) - - [Конструктор](http://info.javarush.ru/javarush_articles/2015/12/04/Конструкторы-классов-Java-JDK-1-5-.html) + - [Руководство по конструкторам](https://topjava.ru/blog/rukovodstvo-po-konstruktoram-v-java) - [Ключевые слова: this, super](http://info.javarush.ru/grishin/2015/03/31/Разница-между-ключевыми-словами-this-и-super-в-Java.html) - **Дополнительно:** - [Exceptions](https://docs.oracle.com/javase/tutorial/essential/exceptions/) From bf6bb87ed32a0e5bf553a115900a715deac8e4c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 31 Jan 2021 21:48:18 +0300 Subject: [PATCH 295/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index b45a59b1..d04455d1 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -59,3 +59,4 @@ - Выводите в консоль информативные предупреждения для указанных выше проверок - Устраните дублирование кода в `ArrayStorage` - Выберите в классе `java.util.Arrays` подходящие методы для реализации `clear()` и `getAll()` +- В `clear()` очищайте не весь `storage`, а только те ячейки, где хранятся резюме From 2355ef81a3bb7261939fda3f62eadc44f903401a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 2 Feb 2021 07:42:41 +0300 Subject: [PATCH 296/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index df6e5fa4..5f0cdd1c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -60,6 +60,7 @@ - `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` - `ArrayStorageTest` c `ArrayStorage` - тестировать правильность сортировки не надо +- в тестах проверяйте `Resume` целиком, а не их uuid - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение From fb3724062294cb0769b758d042ddc8700be9126e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 7 Feb 2021 13:21:21 +0300 Subject: [PATCH 297/393] Update lesson04.md --- lesson/lesson04.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 5f0cdd1c..d490c1a6 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -11,8 +11,6 @@ **Ресурсы:** - [Строки в Java](https://urvanov.ru/2016/04/20/java-8-строки/) -- [Кодировка в Java](http://www.skipy.ru/technics/encodings.html) -- [Ошибки при использовании строк](http://www.skipy.ru/technics/strings.html) - [Обработка строк в Java](https://habrahabr.ru/post/260767/) - **Дополнительно:** - [StringBuilder vs StringBuffer](https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer?rq=1) From 8d8725cd481bc418f32be0896d2c5883fb5f8cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 10 Feb 2021 08:24:43 +0300 Subject: [PATCH 298/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index d490c1a6..9397fa4a 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -38,7 +38,7 @@ - [`Lesson04 Reflection and JUnit`](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) **Ресурсы:** - - [Java 8 аннотации](https://urvanov.ru/2016/03/30/java-8-аннотации/) + - [Руководство по аннотациям в Java](https://topjava.ru/blog/rukovodstvo-po-annotatsiyam-v-java-i-mekhanizmu-ikh-raboty) - [Reflection для начинающих](https://youtu.be/XJQuBXWADZg) (youtube) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) From c293b9565489c0c460d3e4c5178c2e84256b20a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 15 Feb 2021 09:42:55 +0300 Subject: [PATCH 299/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index d04455d1..3a17e2f8 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -51,7 +51,7 @@ - Еще раз прочитайте, [как правильно форматировать код](https://topjava.ru/blog/google-java-style-guide) - [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов - Поместите классы в пакеты, как это показано в уроке -- Реализуйте и протестируйте `ArrayStorage.update(Resume resume)` +- Реализуйте в `ArrayStorage` метод `update(Resume resume)`. Запустите его в `MainTestArrayStorage` - Сделайте проверки в: - `get`, `update`, `delete` на наличие резюме в `storage` - `save` на отсутствие резюме в `storage` From 40e02e4cd6c6d036e4c3f8f38af9f94a9535eb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 23 Feb 2021 12:35:11 +0300 Subject: [PATCH 300/393] Update lesson04.md --- lesson/lesson04.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 9397fa4a..f0f2dba1 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -11,6 +11,8 @@ **Ресурсы:** - [Строки в Java](https://urvanov.ru/2016/04/20/java-8-строки/) +- [Кодировка в Java](http://www.skipy.ru/technics/encodings.html) +- [Ошибки при использовании строк](http://www.skipy.ru/technics/strings.html) - [Обработка строк в Java](https://habrahabr.ru/post/260767/) - **Дополнительно:** - [StringBuilder vs StringBuffer](https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer?rq=1) From 5e5452c0afa1533d7278d8a6e7236cfe8e7e4fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 3 Mar 2021 21:27:38 +0300 Subject: [PATCH 301/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 84354de4..1cac67b8 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -46,6 +46,7 @@ **Ресурсы:** - [Паттерн проектирования — Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) + - [Руководство по Шаблонному методу в Java](https://topjava.ru/blog/pattern-shablonnyy-metod-v-java) - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** From 62e080ed40336ad0655d9b89f6ac959045c6af4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 13 Mar 2021 11:56:41 +0300 Subject: [PATCH 302/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index b6a98124..7ae19cae 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -20,7 +20,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) - [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) -- [Java Technology Report 2020](https://www.jrebel.com/blog/2020-java-technology-report) +- [Java Technology Report 2021](https://www.jrebel.com/blog/2021-java-technology-report) - [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) - [JVM Ecosystem Report 2020](https://snyk.io/wp-content/uploads/jvm_2020.pdf) From c29d561374e4b3240f168559abf69c4912b81612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 22 Mar 2021 21:30:45 +0300 Subject: [PATCH 303/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index f0f2dba1..20ebfb73 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -14,10 +14,10 @@ - [Кодировка в Java](http://www.skipy.ru/technics/encodings.html) - [Ошибки при использовании строк](http://www.skipy.ru/technics/strings.html) - [Обработка строк в Java](https://habrahabr.ru/post/260767/) +- [Руководство по String pool в Java](https://topjava.ru/blog/rukovodstvo-po-string-pool-v-java) - **Дополнительно:** - [StringBuilder vs StringBuffer](https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer?rq=1) - [String vs StringBuffer vs StringBuilder](https://www.journaldev.com/538/string-vs-stringbuffer-vs-stringbuilder) - - [String literal pool](http://java67.blogspot.ru/2014/08/difference-between-string-literal-and-new-String-object-Java.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Исключения](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1BaQjc3Y3N1MTQ) **Коммиты:** From d69a8b5fa052a626220cee52c7002ff18d4e37db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 14 Apr 2021 14:06:38 +0300 Subject: [PATCH 304/393] Update lesson05.md --- lesson/lesson05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 4fcb636c..93520888 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -15,7 +15,7 @@ - [Контейнеры/коллекции](http://en.wikipedia.org/wiki/Java_collections_framework) - [List, Set, Map, Queue, Iterator, ListIterator](http://www.intuit.ru/studies/courses/16/16/lecture/27131?page=2) - [Структуры данных в картинках](http://habrahabr.ru/users/tarzan82/topics/) -- [Внутренняя работа HashMap в Java](https://habr.com/post/421179/) +- [Подробный разбор класса HashMap](https://javarush.ru/groups/posts/2496-podrobnihy-razbor-klassa-hashmap) - [Инициализация полей в Java](http://www.quizful.net/post/java-fields-initialization) - [Java собеседование по коллекциям](http://habrahabr.ru/post/162017/) - [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) From 896a81a0250b0811b99233d90c295e5406c80e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 25 Apr 2021 21:35:23 +0300 Subject: [PATCH 305/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 3a17e2f8..310af2a2 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -17,7 +17,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Что такое Heap и Stack память в Java?](https://javadevblog.com/chto-takoe-heap-i-stack-pamyat-v-java.html) - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - - [От Java-кода к Java-куче](https://www.ibm.com/developerworks/ru/library/j-codetoheap/index.html) + - [Стек и куча в Java](https://topjava.ru/blog/stack-and-heap-in-java) - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) - [Основы Java garbage collection](https://youtu.be/3TROgt7ncMo?t=51) (youtube) - **Дополнительно:** From 15ccd9810a5079dca5c55ded68ae902d45e75479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 25 Apr 2021 21:41:18 +0300 Subject: [PATCH 306/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 20ebfb73..3e86677b 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -54,6 +54,7 @@ ## Домашнее задание HW4 - Реализуйте тесты: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- Необходимо написать тесты для всех методов, которые тестировали бы как их штатную работу, так и все выкидываемые ими икспешены - В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 From ee44f2a486d148566b6047b42ac6f05de9815459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 28 Jun 2021 19:32:02 +0300 Subject: [PATCH 307/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 7ae19cae..5995d080 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -22,7 +22,7 @@ - [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) - [Java Technology Report 2021](https://www.jrebel.com/blog/2021-java-technology-report) - [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) -- [JVM Ecosystem Report 2020](https://snyk.io/wp-content/uploads/jvm_2020.pdf) +- [JVM Ecosystem Report 2021](https://snyk.io/jvm-ecosystem-report-2021/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) From 58d73632f136b68d95507aed3ce36c57c6bf4b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 1 Jul 2021 13:22:47 +0300 Subject: [PATCH 308/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 1cac67b8..73353d24 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -57,6 +57,6 @@ - Перед тем, как приступить к ДЗ, приведите свой проект в соответствии с коммитами. Обратите внимание, что `packages` в видео и коммитах — отличаются - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - - для сортировки воспользуйтесь Arrays.binarySearch (бинарный поиск). Разберитесь с тем, какие значения он возвращает + - для их упорядочивания воспользуйтесь Arrays.binarySearch (бинарный поиск). Разберитесь с тем, какие значения он возвращает, и как их можно применить для упорядочивания резюме - не используйте `Arrays.sort()` или самописные методы для сортировки - сортировать весь массив не надо From f77a0b75259798bb518ee25771a2a82c5d27e93e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 28 Aug 2021 15:38:09 +0300 Subject: [PATCH 309/393] Update lesson16.md --- lesson/lesson16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson16.md b/lesson/lesson16.md index 8a9b90da..22fdc4aa 100644 --- a/lesson/lesson16.md +++ b/lesson/lesson16.md @@ -17,7 +17,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. include](https://drive.google.com/open?id=0B_4NpoQW1xfpRy1DbWhRVXhTbHc) [см. коммит Lesson16 include](https://github.com/JavaWebinar/basejava/tree/28f305b52abb96f237b4e30447b102f9b67d12a5/web/WEB-INF/jsp) -- Что такое JSP. Wiki JSP +- Что такое JSP. Wiki JSP - Predefined Variables in JSP - Стандартные элементы action - How to use relative paths in JSP From 2d5c0367542c96eb87bf4f4a9e2c1a3c5c8c32be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 29 Aug 2021 20:23:37 +0300 Subject: [PATCH 310/393] Update lesson15.md --- lesson/lesson15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index ff3cc099..a00bd9dc 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -6,7 +6,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. HTML, Tomcat](https://drive.google.com/open?id=0B_4NpoQW1xfpZk1pQ1h4dEJBVEE) [см. коммит Lesson15 web](https://github.com/JavaWebinar/basejava/tree/2fe01af02b7ba82c3f0c8fa29dc3effb5b575531/src/ru/javawebinar/basejava) -- Протокол HTTP. Смотрим демо приложение в Chrome -> Инструменты разработчика +- Протокол HTTP. Смотрим демо приложение в Chrome -> Инструменты разработчика - Добавление в проект Web Facet. web.xml. Постороение/cтруктура WAR. Статические ресурсы. - Настройка и деплой в Tomcat. Tomcat manager. - Запуск Tomcat из IDEA. Динамическое обновление без передеплоя. From 4e4e176380557f21960339db43ff9a39e1aaa2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 30 Aug 2021 14:08:48 +0300 Subject: [PATCH 311/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 73353d24..adffc065 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -22,7 +22,7 @@ - [Абстрактные классы](https://www.youtube.com/watch?v=ZjiFL2Yo2fw) (youtube) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) - [Полиморфизм](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) -- [Отличия абстрактного класса от интерфейса](https://ru.stackoverflow.com/questions/235352/Отличия-абстрактного-класса-от-интерфейса-abstract-class-and-interface) +- [Отличия абстрактного класса от интерфейса](https://topjava.ru/blog/razlichiya-mezhdu-abstraktnymi-klassami-i-interfeysami-v-java) - **Дополнительно:** - [Что такое полиморфизм?](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC) - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) From 0a71b0a9878d09d16d0b0f75f5456c33460f2795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 31 Aug 2021 15:05:19 +0300 Subject: [PATCH 312/393] Update lesson08.md --- lesson/lesson08.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson08.md b/lesson/lesson08.md index 9a9437c2..2488fe09 100644 --- a/lesson/lesson08.md +++ b/lesson/lesson08.md @@ -9,6 +9,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Работа с датами и временем.](https://drive.google.com/open?id=0B_4NpoQW1xfpV3hZMk85djRfeVk) [см. коммит Lesson08 DateTime api ](https://github.com/JavaWebinar/basejava/tree/f4844c291cf82387a14088ab3eed112b3102a607/src/ru/javawebinar/basejava) +- Основы API Time для Java - Класс Date, Calendar, TimeZone - Java – Convert date and time between timezone - Joda Time library From 0c4659112c838c898803554afa85378ec345039f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 19 Sep 2021 12:21:37 +0300 Subject: [PATCH 313/393] Update lesson12.md --- lesson/lesson12.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index 2317c9ac..c78ec6ac 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -10,7 +10,7 @@ - Обзор java.util.concurrent.* - Compare-and-swap - Справочник по синхронизаторам java.util.concurrent.* -- Использование ThreadLocal переменных +- Использование ThreadLocal переменных > Замечания по видео: From 17f68b66dabd7a40e7838b3e95acf38023ab8f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 18 Oct 2021 15:44:03 +0300 Subject: [PATCH 314/393] Update lesson03.md --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index adffc065..705fe06d 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -34,7 +34,7 @@ - [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) - [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) -- [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view) +- [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view?resourcekey=0-MPCuoLVdSLiSc7hlE2jefQ) - [Бинарное дерево поиска](https://www.youtube.com/watch?time_continue=447&v=HBMlhZAOhoI) (youtube) - **Дополнительно** - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) From d90d4ed4aa0ac5d2d09d3aec4a6d42b418355379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 20 Oct 2021 15:59:43 +0300 Subject: [PATCH 315/393] Update lesson04.md --- lesson/lesson04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 3e86677b..af271ade 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -51,6 +51,7 @@ - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - [Тестирование с помощью JUnit (Test Case)](http://web.archive.org/web/20190829153452/http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) + - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 - Реализуйте тесты: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` @@ -65,7 +66,7 @@ - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - - если при заполнении вылетит исключение, то тест должен провалиться (см. [`Assert.fail()`](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) + - если при заполнении вылетит исключение, то тест должен провалиться (используйте Assert.fail()) - в fail() выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме - добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From 13480723b5d0a08d1dc79844d0ebec4815c3abc3 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Fri, 26 Nov 2021 13:11:25 +0300 Subject: [PATCH 316/393] Fix HW04 (lesson05) --- lesson/lesson05.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 93520888..ba70e626 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -3,9 +3,10 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpN2J2bmxyV3dXME0) **Коммиты:** - - [`lesson05 HW04`](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) +- [`lesson05 HW04`](https://github.com/JavaWebinar/basejava/tree/4127131819b6385602017f59ca1269c8638ec892) -> В коммите содержится ошибка: в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, а надо до `STORAGE_LIMIT` +> - В коммите содержится ошибка: в методе `AbstractArrayStorageTest.saveOverflow` цикл идет до `STORAGE_LIMIT + 1` включительно, а надо до `STORAGE_LIMIT` +> - Исправил `AbstractStorageTest.updateNotExist` ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Контейнеры/коллекции](https://drive.google.com/file/d/0B_4NpoQW1xfpc21aYXY4WW9CMHc) **Коммиты:** From b85ec7541c1bd591bb312c5da5d9a7393c6eccaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Mon, 29 Nov 2021 13:46:46 +0300 Subject: [PATCH 317/393] Update lesson17.md --- lesson/lesson17.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 26dd08a1..36946da6 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -19,10 +19,16 @@ - Загрузка классов в Java - Apache Tomcat Class Loader -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Вебинар "Осваиваем Java Spring/JPA Enterprise"](https://drive.google.com/file/d/0B9Ye2auQ_NsFY1ZDNXRCd1NCTG8) -- [Слайды вебинара](https://goo.gl/XNVOj4) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3. Вебинар "Осваиваем Java Spring/JPA Enterprise"](https://drive.google.com/file/d/0B9Ye2auQ_NsFY1ZDNXRCd1NCTG8/edit?resourcekey=0-NKNOHbTWXnsZtbe5_8B6Bg) +- Слайды презентации +- [Как стать профессиональным Java разработчиком](https://www.youtube.com/watch?v=ft0Nj8Cm9kk) - Из юниоров в разработчики: получаем первую работу -- Java Tools and Technologies Landscape Report 2016 +- [Java Technology Report 2021](https://www.jrebel.com/blog/2021-java-technology-report) +- [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) +- [JVM Ecosystem Report 2021](https://snyk.io/jvm-ecosystem-report-2021/) +- [Быть программистом: от детства к зрелости](https://www.youtube.com/watch?v=D5Hej0TyLaU) +- Ссылки по темам интервью, тестовое интервью +- [Литература](https://javaops.ru/view/books) #### Java Enterprise project Topjava - Стажировка Spring/JPA Enterprise (Topjava) From 110b6cf4053b3ee044e1f9cd58434246665c354d Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Thu, 2 Dec 2021 16:48:18 +0300 Subject: [PATCH 318/393] fix free link in lesson01 --- lesson/lesson01.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 5995d080..8f421ce7 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -10,7 +10,7 @@ - Установите [IntelliJ IDEA Community](http://www.jetbrains.com/idea/download/index.html) (Ultimate-версия понадобится позже, при работе с базой данных и web) > Для версии Ultimate дается 30 дней бесплатного использования. Но в качестве подарка, каждому участнику курса, мы выдаем единоразово купон на 6 месяцев -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) - [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) - [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) @@ -18,13 +18,13 @@ - [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) - [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) - [Java Technology Report 2021](https://www.jrebel.com/blog/2021-java-technology-report) - [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) - [JVM Ecosystem Report 2021](https://snyk.io/jvm-ecosystem-report-2021/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) @@ -36,7 +36,7 @@ - [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) - [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) From 89656332b5efdf8e9874d41a39244d1b85d32e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 14 Dec 2021 11:30:47 +0300 Subject: [PATCH 319/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 93ff562c..7b0285b1 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,5 +51,5 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) -- Переделайте компаратор, учтя тот случай, что `fullName` разных людей может совпадать +- Реализуйте для getAllSorted() компаратор: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (только для JUnit4). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From f8fca93cb814f1e3c01b717b60a418576f67a2e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 24 Dec 2021 15:04:27 +0300 Subject: [PATCH 320/393] Update lesson02.md --- lesson/lesson02.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 310af2a2..a3e3ff4d 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -8,11 +8,10 @@ - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства / Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) +- [ООП в Java: четыре принципа с примерами](ttps://highload.today/oop-v-java-chetyre-printsipa-s-primerami/) - **Дополнительно:** - [Зачем нам ООП и что это такое?](https://habrahabr.ru/post/148015/) - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) - - [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html) - - [Classes and Objects](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - [Что такое Heap и Stack память в Java?](https://javadevblog.com/chto-takoe-heap-i-stack-pamyat-v-java.html) From 12239a76541eaeac5722e3a01faf0b3088c4b3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 24 Dec 2021 15:04:59 +0300 Subject: [PATCH 321/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index a3e3ff4d..e248adf7 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -8,7 +8,7 @@ - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства / Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) -- [ООП в Java: четыре принципа с примерами](ttps://highload.today/oop-v-java-chetyre-printsipa-s-primerami/) +- [ООП в Java: четыре принципа с примерами](https://highload.today/oop-v-java-chetyre-printsipa-s-primerami) - **Дополнительно:** - [Зачем нам ООП и что это такое?](https://habrahabr.ru/post/148015/) - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) From f8cfce80fc80ae8e06e235220cd7d80a7c87f74c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 25 Dec 2021 21:25:09 +0300 Subject: [PATCH 322/393] Update lesson11.md --- lesson/lesson11.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index b58227a4..d8a6b26a 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -13,6 +13,7 @@ ![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) ## Потоки. Синхронизация +- [Многопоточность в Java](https://topjava.ru/blog/mnogopotochnost-v-java-chast1) - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object - [Жизненный цикл потока в Java](https://nuancesprog.ru/p/10254/) From 39e50209498039f240374b56ff87f22eb816ca25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 29 Dec 2021 18:11:33 +0300 Subject: [PATCH 323/393] Update lesson06.md --- lesson/lesson06.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 7b0285b1..e5ab8e27 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -38,7 +38,6 @@ - [Лямбда-выражения в Java 8](https://www.youtube.com/watch?v=DNC6Lknn2AE) (youtube) - [Функциональный интерфейс](https://www.youtube.com/watch?v=Czkk1Kgqxjs&list=PLtNPgSbW9TX5IQAKzgrJnaayjaDoCjkio&index=11&t=217s) (youtube) - [Лямбды в Java 8](https://habrahabr.ru/post/224593/) -- [Компараторы](https://www.baeldung.com/java-8-comparator-comparing) - **Дополнительно:** - [Java 8 Functional Interfaces](https://www.journaldev.com/2763/java-8-functional-interfaces) - [Lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) @@ -51,5 +50,5 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) -- Реализуйте для getAllSorted() компаратор: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid +- Реализуйте для getAllSorted() [компаратор](https://www.baeldung.com/java-8-comparator-comparing): если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (только для JUnit4). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From ae70a1378f96c5903e3b5bb09001961c2b7165f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 30 Dec 2021 11:23:48 +0300 Subject: [PATCH 324/393] Update lesson07.md --- lesson/lesson07.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 497bffcd..418dee7e 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -13,6 +13,7 @@ - [`Lesson07 generic`](https://github.com/JavaWebinar/basejava/tree/1cb2a6bc0bbbb43285b8ca6b297588e9984fa84b/src/ru/javawebinar/basejava/storage) **Ресурсы:** +- [Погружаемся в Java Generics](https://habr.com/ru/company/sberbank/blog/416413/) - [Дженерики (Java, обучающая статья)](http://www.quizful.net/post/java-generics-tutorial) - [Обобщения (Generic)](http://developer.alexanderklimov.ru/android/java/generic.php) - [Ограничения](http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html) From 474f0d0a5098e592854c8de3af24da304d4af770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 11 Jan 2022 00:20:46 +0300 Subject: [PATCH 325/393] Update lesson03.md --- lesson/lesson03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 705fe06d..2c38a25a 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -33,6 +33,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) - [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) +- [Про сложность алгоритмов и Big O Notation](https://threadreaderapp.com/thread/1470666237286010881) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) - [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view?resourcekey=0-MPCuoLVdSLiSc7hlE2jefQ) - [Бинарное дерево поиска](https://www.youtube.com/watch?time_continue=447&v=HBMlhZAOhoI) (youtube) From 2151db62c5d15dfb11099395cea031ad2a573416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 21 Jan 2022 12:17:21 +0300 Subject: [PATCH 326/393] Update lesson13.md --- lesson/lesson13.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson13.md b/lesson/lesson13.md index 3a4fc3e7..1b23e1e2 100644 --- a/lesson/lesson13.md +++ b/lesson/lesson13.md @@ -26,7 +26,6 @@ **Ресурсы:** - [Properties sample](https://www.mkyong.com/java/java-properties-file-examples) -- Конфигурирование DB и каталога хранения ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [3.Подключение DB в проект](https://drive.google.com/open?id=0B_4NpoQW1xfpWVVSOURIeDNEMUk) **Коммиты:** From 3f8a0bc987b54240d7724f71e45736eb704781b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 25 Jan 2022 12:00:54 +0300 Subject: [PATCH 327/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 418dee7e..0742eb92 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -42,7 +42,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание:](https://drive.google.com/open?id=0B_4NpoQW1xfpVjhZTzhqemlYZUU) [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) -- Начните выполнение ДЗ с рисования UML-диаграммы классов модели, описывающих резюме. Покажите ее наставнику +- Начните выполнение ДЗ с рисования UML-диаграммы классов модели, описывающих резюме. Покажите ее скрин наставнику - Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом From 15b1747b725bf1435cf6720aa340c33b3e20cf66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 26 Jan 2022 18:41:09 +0300 Subject: [PATCH 328/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index af271ade..b4159a8c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -24,6 +24,7 @@ - [`Lesson04 Exceptions`](https://github.com/JavaWebinar/basejava/tree/da03245d2fdafa86d1f02ea242c072ca52e19f26/src/ru/javawebinar/basejava) **Ресурсы:** + - [Обработка ошибок. Исключения](https://youtu.be/rjjyV7YGndc) - [Исключения (Exceptions)](http://proglang.su/java/exceptions) - [Статья про исключения](http://developer.alexanderklimov.ru/android/java/exception.php) - Про исключения также можно почитать в книге Джошуа Блоха - ["Java. Эффективное программирование"](https://www.ozon.ru/context/detail/id/21724143/) From 14755fbfb5f716071bd646e1c8c385802fc5e815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 1 Feb 2022 11:34:31 +0300 Subject: [PATCH 329/393] Update lesson04.md --- lesson/lesson04.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index b4159a8c..e8e9fbb1 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -55,13 +55,13 @@ - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 -- Реализуйте тесты: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` -- Необходимо написать тесты для всех методов, которые тестировали бы как их штатную работу, так и все выкидываемые ими икспешены +- Реализуйте тестовые классы: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены - В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 -- `SortedArrayStorageTest` должен запускаться с `SortedArrayStorage` -- `ArrayStorageTest` c `ArrayStorage` +- используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем +- `SortedArrayStorageTest` должен создавать экземпляр `SortedArrayStorage`, а `ArrayStorageTest` экземпляр `ArrayStorage` - тестировать правильность сортировки не надо - в тестах проверяйте `Resume` целиком, а не их uuid - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых @@ -70,4 +70,3 @@ - если при заполнении вылетит исключение, то тест должен провалиться (используйте Assert.fail()) - в fail() выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме -- добавьте конструктор в `AbstractArrayStorageTest`, который инициализирует `Storage storage`, а в наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From 74429ea32b834c8b69da2cc9643572ed3eff1dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 11 Feb 2022 20:42:52 +0300 Subject: [PATCH 330/393] Update lesson02.md --- lesson/lesson02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index e248adf7..c2e95942 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -55,7 +55,7 @@ - `get`, `update`, `delete` на наличие резюме в `storage` - `save` на отсутствие резюме в `storage` - `save` на переполнение `storage` -- Выводите в консоль информативные предупреждения для указанных выше проверок +- Выводите в консоль информативные предупреждения, для указанных выше проверок, с указанием uuid - Устраните дублирование кода в `ArrayStorage` - Выберите в классе `java.util.Arrays` подходящие методы для реализации `clear()` и `getAll()` - В `clear()` очищайте не весь `storage`, а только те ячейки, где хранятся резюме From b1de91ea183917f32a370afc1c3bda3fde2882f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 12 Feb 2022 15:24:11 +0300 Subject: [PATCH 331/393] Update lesson04.md --- lesson/lesson04.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index e8e9fbb1..48cd5c40 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -11,8 +11,8 @@ **Ресурсы:** - [Строки в Java](https://urvanov.ru/2016/04/20/java-8-строки/) -- [Кодировка в Java](http://www.skipy.ru/technics/encodings.html) -- [Ошибки при использовании строк](http://www.skipy.ru/technics/strings.html) +- [Кодировка в Java](https://web.archive.org/web/20210515175050/http://www.skipy.ru/technics/encodings.html) +- [Ошибки при использовании строк](https://web.archive.org/web/20170608030853/http://www.skipy.ru/technics/strings.html) - [Обработка строк в Java](https://habrahabr.ru/post/260767/) - [Руководство по String pool в Java](https://topjava.ru/blog/rukovodstvo-po-string-pool-v-java) - **Дополнительно:** From 748894314fafb677600a424bcc00e46145e06e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 23 Feb 2022 20:22:21 +0300 Subject: [PATCH 332/393] Update lesson17.md --- lesson/lesson17.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 36946da6..c347432c 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -14,6 +14,7 @@ `heroku war:deploy --jdk 11 --app ` - для доступа к удаленной БД используйте следующие настройки SSL `ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` +- [Хитрости с Heroku: сделать ваше приложение доступным 24/7](https://javarush.ru/groups/posts/1987-malenjhkie-khitrosti-s-heroku) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) - Загрузка классов в Java From b1ba6f32bf2e2d6ad76a730deab09337c7fd3fa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 6 Mar 2022 21:24:35 +0300 Subject: [PATCH 333/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 48cd5c40..73a4b16c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -70,3 +70,4 @@ - если при заполнении вылетит исключение, то тест должен провалиться (используйте Assert.fail()) - в fail() выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме +- если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите Edit Configurations. В открывшейся вкладке Run/Debug Configurations, удалите в левой панели все запускаемые с JUnit классы From c6af532c08a7f2c37c8b5bd65ebabbd341a3d053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 6 Mar 2022 21:36:44 +0300 Subject: [PATCH 334/393] Update lesson04.md --- lesson/lesson04.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 73a4b16c..8cd2ecad 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -45,6 +45,7 @@ - [Reflection для начинающих](https://youtu.be/XJQuBXWADZg) (youtube) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) + - [Отличие JUnit4 от JUnit5](https://topjava.ru/blog/migratsiya-s-junit4-na-junit5) - **Дополнительно:** - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) From 1a54e34621f0fc75a71c4cc23aa62d1a3c279d9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 8 Mar 2022 11:35:29 +0300 Subject: [PATCH 335/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 8cd2ecad..3056a28d 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -64,7 +64,7 @@ - используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем - `SortedArrayStorageTest` должен создавать экземпляр `SortedArrayStorage`, а `ArrayStorageTest` экземпляр `ArrayStorage` - тестировать правильность сортировки не надо -- в тестах проверяйте `Resume` целиком, а не их uuid +- во всех тестах проверяйте `Resume` целиком. Проверки только uuid недостаточно - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение From 7949947ba3a0369d445747e50c112530c1491581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Thu, 24 Mar 2022 00:02:40 +0300 Subject: [PATCH 336/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index e5ab8e27..de0406be 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -17,7 +17,7 @@ - [`Lesson06 Iterator, Comparator and Inner Classes`](https://github.com/JavaWebinar/basejava/tree/e7531643b410435c07a998a1428fb9a4de2d30bb/src/ru/javawebinar/basejava) **Ресурсы:** -- [Паттерн проектирования Итератор](https://refactoring.guru/ru/design-patterns/iterator/java/example) +- [Паттерн проектирования Итератор](https://web.archive.org/web/20211105130819/https://refactoring.guru/ru/design-patterns/iterator/java/example) - [Iterator / Iterable](http://www.javenue.info/post/101) - [Iterator in Java](https://www.journaldev.com/13460/java-iterator) - [Интерфейсы Comparable и Comparator](https://metanit.com/java/tutorial/5.6.php) From 35f37fb53b51f8e2255e06034636ee612c16d19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 8 Apr 2022 13:45:42 +0300 Subject: [PATCH 337/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index de0406be..2db03e97 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -50,5 +50,5 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) -- Реализуйте для getAllSorted() [компаратор](https://www.baeldung.com/java-8-comparator-comparing): если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid +- Реализуйте для getAllSorted() компаратор, используя методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing): если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (только для JUnit4). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From 05ab1fc442057b5b5f821024f4e2424174fa2603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 10 Apr 2022 16:29:07 +0300 Subject: [PATCH 338/393] add a link to the new design --- lesson/lesson07.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 0742eb92..7a2b7568 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -43,7 +43,7 @@ [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) - Начните выполнение ДЗ с рисования UML-диаграммы классов модели, описывающих резюме. Покажите ее скрин наставнику -- Сделать объектную модель резюме (диаграмма и классы). [**Образец резюме**](https://javawebinar.github.io) +- Сделать объектную модель резюме (диаграмма и классы) [**Образец резюме**](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light) - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом - Модель максимально упрощаем, и храним в ней только необходимые данные, а также функционал для вывода и редактирования резюме @@ -58,7 +58,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://javawebinar.github.io). Выведите все секции на консоль** +- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light). Выведите все секции на консоль** - **Не размещайте в AbstractStorageTest код, связанный с заполнением резюме данными. Делайте это в ResumeTestData** #### Инструменты для рисования UML-диаграмм: From 362e33516dd5b7b94ce54bc206810584691d9e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 10 Apr 2022 16:32:25 +0300 Subject: [PATCH 339/393] add a link to the new design --- lesson/lesson01.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 8f421ce7..c986686a 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,5 +1,7 @@ # Первое занятие +## [Демо разрабатываемого приложения](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light) + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) ### Подготовка рабочего окружения From dd240c2d14fc2e0685dad0367a32be3618db8989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 10 Apr 2022 16:38:35 +0300 Subject: [PATCH 340/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index c986686a..0a85be6c 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,6 +1,6 @@ # Первое занятие -## [Демо разрабатываемого приложения](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light) +## [Демо разрабатываемого приложения](https://basejava.herokuapp.com/resume?theme=light) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) From 0be52866c8a7737067a04fbd87fb93ef2cb15a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 10 Apr 2022 23:03:26 +0300 Subject: [PATCH 341/393] Update lesson17.md --- lesson/lesson17.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index c347432c..e71d9407 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -6,6 +6,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-16 добавление резюме](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1d3VmN1RHA1Q1k) [см. коммит Lesson17 HW16_add_resume](https://github.com/JavaWebinar/basejava/tree/10c521a8d412b3a4b3256d3044504fb269e16a26) +> Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](https://basejava.herokuapp.com/resume?theme=light). + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Деплой в Heroku](https://drive.google.com/open?id=0B_4NpoQW1xfpS2JSSDByQ2xGWm8) [см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) - Deployment with the Heroku CLI From f5a658c4e1bd0ad5e3d1b80af4ac7d7065572c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 11 Apr 2022 11:45:00 +0300 Subject: [PATCH 342/393] Update lesson05.md --- lesson/lesson05.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index ba70e626..92d88f88 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -42,4 +42,3 @@ ### Замечания к выполнению домашнего задания - int size и STORAGE_LIMIT относятся только к массивам, в List и Map нет необходимости их использовать, будем считать их условно безразмерными -- при поиске uuid не надо использовать методы, который сравнивают объекты Resume по equals, в следующих уроках добавим еще поля в Resume и в equals и данный вариант не подойдет From c3002033407cb43b63f303651b5678f95c5e2cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 15 Apr 2022 18:09:32 +0300 Subject: [PATCH 343/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 2db03e97..40cd2f4f 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,4 +51,4 @@ - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Реализуйте для getAllSorted() компаратор, используя методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing): если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid -- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (только для JUnit4). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой +- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (по желанию для [JUnit5](https://junit.org/junit5/docs/current/user-guide/#junit-platform-suite-engine)). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From e9f7511fec03dd06ac09aa7dce8415eff634bd03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 21 May 2022 12:01:49 +0300 Subject: [PATCH 344/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 40cd2f4f..702f74b4 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -50,5 +50,5 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) -- Реализуйте для getAllSorted() компаратор, используя методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing): если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid +- Реализуйте для getAllSorted() компаратор, используя методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing) и лямбда-выражение: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (по желанию для [JUnit5](https://junit.org/junit5/docs/current/user-guide/#junit-platform-suite-engine)). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From 3dbdbfd4d048bfc5486d19eec9c2bbc5ab7cfb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 21 May 2022 12:33:51 +0300 Subject: [PATCH 345/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 702f74b4..e8d013fb 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -50,5 +50,5 @@ - в конструктор `Resume` добавьте второй параметр — `fullName` - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) -- Реализуйте для getAllSorted() компаратор, используя методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing) и лямбда-выражение: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid +- Реализуйте для getAllSorted() компаратор, **используя статические методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing) и лямбда-выражение**: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid - Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (по желанию для [JUnit5](https://junit.org/junit5/docs/current/user-guide/#junit-platform-suite-engine)). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From 12f06f364cc4e17a72381bbd0aea4a57ebe6465b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 22 May 2022 13:55:58 +0300 Subject: [PATCH 346/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index e8d013fb..32d61fa4 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -51,4 +51,4 @@ - во всех реализациях `Storage` замените метод `Resume[] getAll()` на `List getAllSorted()` - Подумайте, что еще, может выступать в качестве `search key` (в предыдущем дз это был `uuid`) в реализации на основе `Map` (не путайте `key` и `search key`: `key` - это ключ в мапе, а `search key` - используется для поиска по мапе). Выразите свои идеи в коде (в итоге у вас в проекте должны быть два класса, реализованных на основе мапы) - Реализуйте для getAllSorted() компаратор, **используя статические методы интерфейса [Comparator](https://www.baeldung.com/java-8-comparator-comparing) и лямбда-выражение**: если `fullName` разных людей совпадает, то сортируйте дополнительно по uuid -- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (по желанию для [JUnit5](https://junit.org/junit5/docs/current/user-guide/#junit-platform-suite-engine)). Форматируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой +- Из-за того, что количество тестовых классов растет, воспользуйтесь [аннотациями](http://javastudy.ru/junit/junit-suite-tests/) JUnit, которые помогут упростить их запуск (для JUnit5 (по желанию) нажмите Ctrl + Alt + Shift + S и добавьте в dependencies (add -> library -> from maven) "platform-suite"). Отформатируйте класс-запуска тестов в соответствии с [этой](https://drive.google.com/file/d/1XHFbxNLekyAWCPJROPJcxmJydjg0K3eH/view?usp=sharing) картинкой From fe7cbb7d8d28aa251e3b90755993d9fd0a8f67e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 27 Jul 2022 10:45:30 +0300 Subject: [PATCH 347/393] Update lesson10.md --- lesson/lesson10.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index 62d5ade4..f39c5b3a 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -29,5 +29,8 @@ **Коммиты:** - [`Lesson10 DataStream`](https://github.com/JavaWebinar/basejava/tree/6f699cb5d804b3d033a06cc1173cd1076b0553f9) +**Ресурсы:** +- [Руководство по switch-выражениям в Java](https://topjava.ru/blog/polnoye-rukovodstvo-po-switch-v-java) + ## Домашнее задание - Сделать и протестировать реализацию `DataStreamSerializer` From 5f1ff191df22d15dfdc95f14ea38e8191e08723b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 19 Aug 2022 20:15:51 +0300 Subject: [PATCH 348/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 0a85be6c..ce6414a9 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -37,6 +37,7 @@ - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) - [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) - [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) +- [Руководство по массивам в Java](https://topjava.ru/blog/rukovodstvo-po-massivam-v-java-ch1) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) From 368af75a2b794ee6205ffc8e0cd7c6ce4f0fcaa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 10 Sep 2022 22:34:04 +0300 Subject: [PATCH 349/393] Update lesson11.md --- lesson/lesson11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index d8a6b26a..ef8277b6 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -13,7 +13,7 @@ ![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) ## Потоки. Синхронизация -- [Многопоточность в Java](https://topjava.ru/blog/mnogopotochnost-v-java-chast1) +- Многопоточность в Java ([1](https://topjava.ru/blog/mnogopotochnost-v-java-chast1), [2](https://topjava.ru/blog/mnogopotochnost-v-java-chast-2)) - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object - [Жизненный цикл потока в Java](https://nuancesprog.ru/p/10254/) From a00c7f990e98960a03824f2d5e92de6146af385b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 2 Nov 2022 19:46:39 +0300 Subject: [PATCH 350/393] Update lesson01.md --- lesson/lesson01.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index ce6414a9..73fc4529 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -62,15 +62,9 @@ - `git push -u origin master` — [устанавливаем связь](https://qna.habr.com/q/118865) между локальной и удаленной веткой master ## Домашнее задание HW1 -- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: +- Откройте в IntelliJ IDEA ваш проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: -![newproject](https://user-images.githubusercontent.com/29703461/88058015-95008580-cb6b-11ea-9b7c-65843b859988.png) - -![next](https://user-images.githubusercontent.com/29703461/88057628-055ad700-cb6b-11ea-9c59-72bb538e2541.png) - -![next1](https://user-images.githubusercontent.com/29703461/88058925-d2b1de00-cb6c-11ea-9d0b-83c771899457.png) - -![finish](https://user-images.githubusercontent.com/29703461/88059306-579cf780-cb6d-11ea-8094-bbf87474a127.png) +![Screenshot_5](https://user-images.githubusercontent.com/29703461/199550057-fce7cf3c-7040-422f-b490-7b85b47ae952.png) - Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве - Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов From dae680e38e4c8a888d6a66cdec4479984a2fff02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 4 Dec 2022 14:28:45 +0300 Subject: [PATCH 351/393] Update lesson17.md --- lesson/lesson17.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index e71d9407..cc1f8391 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -8,15 +8,11 @@ > Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](https://basejava.herokuapp.com/resume?theme=light). -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. Деплой в Heroku](https://drive.google.com/open?id=0B_4NpoQW1xfpS2JSSDByQ2xGWm8) -[см. коммит Lesson17 DB_credentials_as_resources](https://github.com/JavaWebinar/basejava/tree/9b8552f6957ae48440685cba5a24afd592e60fba) -- Deployment with the Heroku CLI -по дефолту используется java 8. -Для деплоя с др. версией надо указать jdk, например -`heroku war:deploy --jdk 11 --app ` -- для доступа к удаленной БД используйте следующие настройки SSL -`ssl=true&sslmode=verify-ca&sslfactory=org.postgresql.ssl.NonValidatingFactory` -- [Хитрости с Heroku: сделать ваше приложение доступным 24/7](https://javarush.ru/groups/posts/1987-malenjhkie-khitrosti-s-heroku) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) Деплой на выделенный хостинг +Сервис Heroku стал платным, лучший вариант - развернуть собственный сервер, стоимость в минимальной конфигурации - от 130 руб./месяц (можно взять с запасом RAM 1 или 2GB). Вы учитесь азам администрирования Linux, что очень пригодиться на работе, можете размещать там резюме и все ваши проекты и обязательно указываете в резюме ссылки на свои задеплоенные проекты. + +- [Курс Startup](https://javaops.ru/view/startup) +- Открытое занятие: [настройка хостинга и деплой на сервер](https://github.com/JavaOPs/startup) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. Classloader](https://drive.google.com/open?id=0B_4NpoQW1xfpQnJQZ0d2ajJNWlU) - Загрузка классов в Java From 330ece0cb8c7efc8dedd61b054a577b7840eb450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 4 Dec 2022 14:29:24 +0300 Subject: [PATCH 352/393] Update lesson17.md --- lesson/lesson17.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index cc1f8391..e2f21ef4 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -8,7 +8,7 @@ > Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](https://basejava.herokuapp.com/resume?theme=light). -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) Деплой на выделенный хостинг +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. Деплой на выделенный хостинг Сервис Heroku стал платным, лучший вариант - развернуть собственный сервер, стоимость в минимальной конфигурации - от 130 руб./месяц (можно взять с запасом RAM 1 или 2GB). Вы учитесь азам администрирования Linux, что очень пригодиться на работе, можете размещать там резюме и все ваши проекты и обязательно указываете в резюме ссылки на свои задеплоенные проекты. - [Курс Startup](https://javaops.ru/view/startup) From 3638ed64fecc2981f5c2fecb16e933a501b5c93a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Sun, 4 Dec 2022 14:32:19 +0300 Subject: [PATCH 353/393] Update lesson17.md --- lesson/lesson17.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index e2f21ef4..68578cfd 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -8,7 +8,7 @@ > Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](https://basejava.herokuapp.com/resume?theme=light). -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. Деплой на выделенный хостинг +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. Настройка хостинга и деплой на сервер Сервис Heroku стал платным, лучший вариант - развернуть собственный сервер, стоимость в минимальной конфигурации - от 130 руб./месяц (можно взять с запасом RAM 1 или 2GB). Вы учитесь азам администрирования Linux, что очень пригодиться на работе, можете размещать там резюме и все ваши проекты и обязательно указываете в резюме ссылки на свои задеплоенные проекты. - [Курс Startup](https://javaops.ru/view/startup) From 0bedf30c542827d6ce2a0e58943f8aed941f7037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 7 Dec 2022 16:22:05 +0300 Subject: [PATCH 354/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 7a2b7568..1e8142ca 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -43,7 +43,7 @@ [Доменный объект](https://ru.wikipedia.org/wiki/Доменный_объект) - Начните выполнение ДЗ с рисования UML-диаграммы классов модели, описывающих резюме. Покажите ее скрин наставнику -- Сделать объектную модель резюме (диаграмма и классы) [**Образец резюме**](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light) +- Сделать объектную модель резюме (диаграмма и классы) [**Образец резюме**](http://javaops-demo.ru/basejava/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light) - Resume - главный класс. Делать только классы, включаемые в Resume (тип [отношения](https://github.com/ichimax/Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#Типы-отношений-между-классами) - композиция) - Схожие по структуре и функциональности сущности делаем одним классом - Модель максимально упрощаем, и храним в ней только необходимые данные, а также функционал для вывода и редактирования резюме From 32d4e2053d4055c1640d7f7cb4ccdccfe93f3f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 7 Dec 2022 16:23:38 +0300 Subject: [PATCH 355/393] Update lesson17.md --- lesson/lesson17.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson17.md b/lesson/lesson17.md index 68578cfd..3bb20063 100644 --- a/lesson/lesson17.md +++ b/lesson/lesson17.md @@ -6,7 +6,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор Домашнего Задания-16 добавление резюме](https://drive.google.com/open?id=0B_4NpoQW1xfpQ1d3VmN1RHA1Q1k) [см. коммит Lesson17 HW16_add_resume](https://github.com/JavaWebinar/basejava/tree/10c521a8d412b3a4b3256d3044504fb269e16a26) -> Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](https://basejava.herokuapp.com/resume?theme=light). +> Вы можете улучшить внешний вид своего приложения (это не обязательная опция - по желанию), используя готовые [css](https://github.com/JavaWebinar/basejava/tree/master/web/css). В итоге ваше приложение может выглядеть аналогично [этому](http://javaops-demo.ru/basejava/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light). ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. Настройка хостинга и деплой на сервер Сервис Heroku стал платным, лучший вариант - развернуть собственный сервер, стоимость в минимальной конфигурации - от 130 руб./месяц (можно взять с запасом RAM 1 или 2GB). Вы учитесь азам администрирования Linux, что очень пригодиться на работе, можете размещать там резюме и все ваши проекты и обязательно указываете в резюме ссылки на свои задеплоенные проекты. From ac2dffb878a7027632dbdf75897ce4c04ca383a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 8 Dec 2022 14:45:31 +0300 Subject: [PATCH 356/393] Update lesson07.md --- lesson/lesson07.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson07.md b/lesson/lesson07.md index 1e8142ca..9e3affb2 100644 --- a/lesson/lesson07.md +++ b/lesson/lesson07.md @@ -58,7 +58,7 @@ - Учесть в классах модели, что обработка резюме (вывод в html, сохранение, чтение) будет происходить следующим образом: обработка `fullName`, цикл обработки по контактам, цикл обработки по секциям (для секций использовать полиморфизм, как для фигур: круг, квадрат...) - При добавлении / удалении новых видов контактов (например домашний телефон) или разделов изменения в коде (и БД) должны быть минимальны -- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](https://basejava.herokuapp.com/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light). Выведите все секции на консоль** +- **ПРОВЕРЬТЕ свою модель: создайте класс ResumeTestData с методом main, а в нем объект `Resume` и заполните все его разделы данными, взятыми из [**Образца резюме**](http://javaops-demo.ru/basejava/resume?uuid=11111111-1111-1111-1111-111111111111&action=view&theme=light). Выведите все секции на консоль** - **Не размещайте в AbstractStorageTest код, связанный с заполнением резюме данными. Делайте это в ResumeTestData** #### Инструменты для рисования UML-диаграмм: From ff61f49324acda89b4838059fa522a385e734d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 5 Jan 2023 20:58:36 +0300 Subject: [PATCH 357/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 73fc4529..b428a169 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -1,6 +1,6 @@ # Первое занятие -## [Демо разрабатываемого приложения](https://basejava.herokuapp.com/resume?theme=light) +## [Демо разрабатываемого приложения](http://javaops-demo.ru/basejava/resume?theme=light) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) From d4fe2e786a0b32ec881483dc65905f195acd23ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Tue, 28 Feb 2023 23:21:47 +0300 Subject: [PATCH 358/393] Update lesson06.md --- lesson/lesson06.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson06.md b/lesson/lesson06.md index 32d61fa4..29ccf173 100644 --- a/lesson/lesson06.md +++ b/lesson/lesson06.md @@ -19,7 +19,7 @@ **Ресурсы:** - [Паттерн проектирования Итератор](https://web.archive.org/web/20211105130819/https://refactoring.guru/ru/design-patterns/iterator/java/example) - [Iterator / Iterable](http://www.javenue.info/post/101) -- [Iterator in Java](https://www.journaldev.com/13460/java-iterator) +- [Iterator in Java](https://techjitendra.wordpress.com/2019/09/16/java-iterator/) - [Интерфейсы Comparable и Comparator](https://metanit.com/java/tutorial/5.6.php) - [Nested (static) классы в Java](https://www.youtube.com/watch?v=svOwVvSWeus) (youtube) - [Inner (non-static) классы в Java](https://www.youtube.com/watch?v=LflAy_LOwwQ) (youtube) From 5a27d6df9f48195c99bc642f9fbd3f7c727f5352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 16 Aug 2023 09:43:36 +0300 Subject: [PATCH 359/393] Update lesson01.md --- lesson/lesson01.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index b428a169..6c2f6331 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -5,7 +5,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) ### Подготовка рабочего окружения -- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) +- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (или более свежую версию) - Установите систему управления версиями [Git](http://git-scm.com/downloads) - Создайте аккаунт на [GitHub](https://github.com/) - Для удобной навигации по файлам на GitHub установите расширение для браузера [Octotree](https://habrahabr.ru/post/223527/) @@ -17,7 +17,8 @@ - [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) - [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://topjava.ru/blog/google-java-style-guide) -- [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) +- Методологии разработки ПО: [Agile, Scrum](https://youtu.be/cDvZaXzQezs), [Kanban](https://youtu.be/1_Zti9v5ugA) +- [Методологии разработки и их влияние на качество](https://youtu.be/y4B2Hv3HgpE) - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) @@ -108,4 +109,4 @@ r1, r2, r3,..., rn, null, null,..., null - Учитесь исследовать проблему. Внимательное чтение логов и умение дебажить — основные навыки разработчика. В логах необходимо читать верхнюю часть самого нижнего иксепшена. Именно там находится причина возникшей ошибки - Грамотно распределяйте время для каждой проблемы. Не впадайте в крайности: сразу бросаться за помощью или биться над ней часами. Подходите к ее решению разумно - Получайте в процессе решения обратную связь, что бы убедиться в правильности выбранного направления - - [Советы новичкам](http://blog.csssr.ru/2016/09/19/how-to-be-a-beginner-developer) + - [Советы новичкам](https://blog.csssr.com/ru/article/how-to-be-a-beginner-developer/) From 6ce41bdf7a36a7708f3e282d7a641c8942ba8ff0 Mon Sep 17 00:00:00 2001 From: boyev_evgeniy Date: Wed, 20 Sep 2023 16:51:40 +0200 Subject: [PATCH 360/393] update link --- lesson/lesson03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 2c38a25a..00dc27ab 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -27,7 +27,7 @@ - [Что такое полиморфизм?](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC) - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) - - [Разбираемся с hashCode() и equals()](https://habrahabr.ru/post/168195/) + - [Разбираемся с hashCode() и equals()](https://www.pvsm.ru/java/26304) - [История эволюции интерфейсов в Java](https://habr.com/ru/post/482498/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) From ae42545902d09c6b580b116d43459a8b6cf8cb33 Mon Sep 17 00:00:00 2001 From: YevhenBoiev <82458464+yevhenboiev@users.noreply.github.com> Date: Sun, 2 Jun 2024 16:11:38 +0300 Subject: [PATCH 361/393] Update lesson11.mdc --- lesson/lesson11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index ef8277b6..1bdf9808 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -24,7 +24,7 @@ - Параллелизм в Java - Реализация Singleton в JAVA - Double checked locking -- Java Memory Model. final, volatile +- Java Memory Model. final, volatile - Initialization-on-demand holder idiom ### Ресурсы From e62b1ffec268cebc6e82eb9bf1eda310cf67aeb6 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Thu, 15 Aug 2024 13:37:46 +0300 Subject: [PATCH 362/393] Update lesson10 --- lesson/lesson10.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index f39c5b3a..eb86fe38 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -11,11 +11,19 @@ **Коммиты:** - [`Lesson10 xml`](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) +>В коде проекта используется JDK 8. Если у вас JDK9+, в проект необходимо включить [дополнительные Java EE зависимости, исключенные в JDK 9](https://openjdk.org/jeps/320) +> - [jaxb-api](https://repo1.maven.org/maven2/one/gfw/jaxb-api/2.3.1/jaxb-api-2.3.1.jar) +> - [jaxb-impl](https://repo1.maven.org/maven2/one/gfw/jaxb-impl/4.0.2/jaxb-impl-4.0.2.jar) +> - [javax.activation-api](https://repo1.maven.org/maven2/one/gfw/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar) +> - [istack-commons-runtime](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/4.2.0/istack-commons-runtime-4.2.0.jar) +> +>Подключение библиотек к проекту есть в видео-уроке + **Ресурсы:** - XML формат и технологии - Wiki: XML, XSL , DOM, SAX, StAX, JAXB - Работа с XML в Java. Реализация хранения в XML. - + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [2. JSON](https://drive.google.com/open?id=0B_4NpoQW1xfpRUlvMU54a2hMR3c) **Коммиты:** - [`Lesson10 json`](https://github.com/JavaWebinar/basejava/tree/ba409e3666f1a5086182a736784c4362a1979b7f) From d44686c9fb950f43cfb3aa38073233ebdff7ac8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 21 Oct 2024 13:23:32 +0300 Subject: [PATCH 363/393] Update lesson02.md --- lesson/lesson02.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index c2e95942..adce8014 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -21,8 +21,6 @@ - [Основы Java garbage collection](https://youtu.be/3TROgt7ncMo?t=51) (youtube) - **Дополнительно:** - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) - - [Permanent область памяти](http://www.javaspecialist.ru/2011/04/permanent.html) - - [Java thread stack](http://www.javaspecialist.ru/2011/04/java-thread-stack.html) - [Размер Java объектов](http://habrahabr.ru/post/134102/) - [JVM - краткий курс общей анатомии](https://www.youtube.com/watch?v=-fcj6EL9rc4) (youtube) - [What and where are the stack and heap?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266) From e27facc73e78f385e6d68ab2aa6b4421d7270acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 11 Dec 2024 10:48:22 +0300 Subject: [PATCH 364/393] Update lesson05.md --- lesson/lesson05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index 92d88f88..ca79df46 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -17,7 +17,7 @@ - [List, Set, Map, Queue, Iterator, ListIterator](http://www.intuit.ru/studies/courses/16/16/lecture/27131?page=2) - [Структуры данных в картинках](http://habrahabr.ru/users/tarzan82/topics/) - [Подробный разбор класса HashMap](https://javarush.ru/groups/posts/2496-podrobnihy-razbor-klassa-hashmap) -- [Инициализация полей в Java](http://www.quizful.net/post/java-fields-initialization) +- [Инициализация полей в Java](https://web.archive.org/web/20211205113623/http://www.quizful.net/post/java-fields-initialization) - [Java собеседование по коллекциям](http://habrahabr.ru/post/162017/) - [Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java](http://info.javarush.ru/translation/2013/10/08/Часто-задаваемые-на-собеседованиях-вопросы-по-классам-коллекциям-в-Java-Часть-2-.html#1) - [Собеседование по Java — коллекции](http://javastudy.ru/interview/collections/) From eed200b5f09b39f83b44f73bb017bc7987a1c482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 31 Jan 2025 16:12:39 +0300 Subject: [PATCH 365/393] Update lesson01.md --- lesson/lesson01.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 6c2f6331..8d632bd0 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -10,7 +10,6 @@ - Создайте аккаунт на [GitHub](https://github.com/) - Для удобной навигации по файлам на GitHub установите расширение для браузера [Octotree](https://habrahabr.ru/post/223527/) - Установите [IntelliJ IDEA Community](http://www.jetbrains.com/idea/download/index.html) (Ultimate-версия понадобится позже, при работе с базой данных и web) -> Для версии Ultimate дается 30 дней бесплатного использования. Но в качестве подарка, каждому участнику курса, мы выдаем единоразово купон на 6 месяцев ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) From ac0c33a5183cc6dd8d6e711982ea7d38766c344d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 28 May 2025 10:15:58 +0300 Subject: [PATCH 366/393] Update lesson02.md --- lesson/lesson02.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index adce8014..bf3d84ca 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -34,6 +34,7 @@ - [Классы-обертки](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=2) - [Java types](https://youtu.be/JmplWN-FdMQ) (youtube) - [Модификаторы доступа](https://www.youtube.com/watch?v=e14xUIUc6y0) (youtube) + - [Руководство по пакетам в Java](https://topjava.ru/blog/rukovodstvo-po-paketam-v-java) - [Пакеты](https://youtu.be/a6KGNASOtK8) (youtube) - **Дополнительно:** - [Packages](https://docs.oracle.com/javase/tutorial/java/package/index.html) From 12894be6de71940ab3818d4f18299caaef3a69d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 28 May 2025 10:18:18 +0300 Subject: [PATCH 367/393] Update lesson05.md --- lesson/lesson05.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson05.md b/lesson/lesson05.md index ca79df46..234dd483 100644 --- a/lesson/lesson05.md +++ b/lesson/lesson05.md @@ -15,6 +15,7 @@ **Ресурсы:** - [Контейнеры/коллекции](http://en.wikipedia.org/wiki/Java_collections_framework) - [List, Set, Map, Queue, Iterator, ListIterator](http://www.intuit.ru/studies/courses/16/16/lecture/27131?page=2) +- [Рекомендации Oracle по выбору между ArrayList и LinkedList](https://topjava.ru/blog/vybor-mezhdu-arraylist-i-linkedlist) - [Структуры данных в картинках](http://habrahabr.ru/users/tarzan82/topics/) - [Подробный разбор класса HashMap](https://javarush.ru/groups/posts/2496-podrobnihy-razbor-klassa-hashmap) - [Инициализация полей в Java](https://web.archive.org/web/20211205113623/http://www.quizful.net/post/java-fields-initialization) From 06db71fe7a9ebe70605e4ab961ae3a477a381386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 12 Aug 2025 23:01:58 +0300 Subject: [PATCH 368/393] Update lesson01.md --- lesson/lesson01.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 8d632bd0..9d713f20 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -5,11 +5,11 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) ### Подготовка рабочего окружения -- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (или более свежую версию) +- Установите последнюю версию [JDK](https://www.oracle.com/java/technologies/downloads/) - Установите систему управления версиями [Git](http://git-scm.com/downloads) - Создайте аккаунт на [GitHub](https://github.com/) -- Для удобной навигации по файлам на GitHub установите расширение для браузера [Octotree](https://habrahabr.ru/post/223527/) -- Установите [IntelliJ IDEA Community](http://www.jetbrains.com/idea/download/index.html) (Ultimate-версия понадобится позже, при работе с базой данных и web) +- Установите [боковую панель](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka#8) для удобной навигации по файлам на GitHub +- Установите [IntelliJ IDEA Community](https://www.jetbrains.com/idea/download/) (Ultimate-версия понадобится позже, при работе с базой данных и web) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) @@ -21,10 +21,9 @@ - [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) -- [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) -- [Java Technology Report 2021](https://www.jrebel.com/blog/2021-java-technology-report) -- [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) -- [JVM Ecosystem Report 2021](https://snyk.io/jvm-ecosystem-report-2021/) +- [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) +- [State of Developer Ecosystem Report 2024](https://www.jetbrains.com/lp/devecosystem-2024/) +- [Java Trends Report 2024](https://www.infoq.com/articles/java-trends-report-2024/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) From 248f928603f9b67117563a75eb195cc7fb683786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 13 Aug 2025 23:13:13 +0300 Subject: [PATCH 369/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 9d713f20..7527f24e 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -63,7 +63,7 @@ ## Домашнее задание HW1 - Откройте в IntelliJ IDEA ваш проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: -![Screenshot_5](https://user-images.githubusercontent.com/29703461/199550057-fce7cf3c-7040-422f-b490-7b85b47ae952.png) +![Screenshot_5](https://github.com/user-attachments/assets/554c3119-85cc-41be-9ef0-087f360577f4) - Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве - Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов From b635aa25b446cbdcde835499121450cf1aecf96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 17 Aug 2025 12:48:23 +0300 Subject: [PATCH 370/393] Update lesson01.md --- lesson/lesson01.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 7527f24e..bfafe1bf 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -78,14 +78,14 @@ r1, r2, r3,..., rn, null, null,..., null - Проверьте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) - - [Отладка Java кода в IDEA. Основные возможности отладчика](https://youtu.be/Z1BQsf0A4xY) + - Отладка Java кода в IDEA: [1](https://youtu.be/Z1BQsf0A4xY?si=E8RtUNE1Pm3xP_w9), [2](https://youtu.be/V5iQ1FyRtBo), [3](https://blog.jetbrains.com/idea/2025/04/debugging-java-code-in-intellij-idea/) - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) ### Вопросы по HW1 - > Не могу запустить программу, да и рядом с классами появился какой-то значок + > Не могу запустить программу, да и иконки рядом с классами изменились - ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) + ![badsrc](https://github.com/user-attachments/assets/00db6e0a-59df-46d4-9ddd-abba0e52a7c9) - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` ### Замечания по выполнению HW1 @@ -98,7 +98,7 @@ r1, r2, r3,..., rn, null, null,..., null 1. При реализации методов не используйте коллекции 1. Не меняйте сигнатуры методов в `ArrayStorage` 1. Не добавляйте в `Resume` новые поля -1. Resume r — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях +1. `Resume r` — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 5. [Вебинар "Быть программистом: от детства к зрелости"](https://www.youtube.com/watch?v=D5Hej0TyLaU) - [Слайды вебинара](https://docs.google.com/presentation/d/1YwtCCZsaGMdl-V15kTDHiJxiS52IAl-qqheNPpiNr54/) From b896116a76137465072c0939c68ee4a08ba8af9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 17 Aug 2025 13:32:11 +0300 Subject: [PATCH 371/393] Update lesson01.md --- lesson/lesson01.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index bfafe1bf..e7e1b898 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -10,6 +10,7 @@ - Создайте аккаунт на [GitHub](https://github.com/) - Установите [боковую панель](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka#8) для удобной навигации по файлам на GitHub - Установите [IntelliJ IDEA Community](https://www.jetbrains.com/idea/download/) (Ultimate-версия понадобится позже, при работе с базой данных и web) +- Установите плагин для [Checkstyle](https://topjava.ru/blog/nastroyka-checkstyle-v-intellij-idea) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) - [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) @@ -67,13 +68,15 @@ - Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве - Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов -- При реализации метода `delete` учитывайте, что после удаления резюме между оставшимися резюме не должно быть пустых ячеек, заполненных null +- При реализации метода `delete` учитывайте: + - после удаления резюме между оставшимися резюме не должно быть пустых (null) ячеек + - резюме должны размещаться в ячейках под индексами `< size`. В противном случае обнуляйте их ``` -Схема хранения резюме в массиве storage (в элементах от 0 до size-1 отсутствуют null): +Схема хранения резюме в массиве storage (в элементах от 0 до size - 1 отсутствуют null): r1, r2, r3,..., rn, null, null,..., null <----- size -----> -<------- storage.length (10000) -------> +<------- storage.length (10_000) ------> ``` - Проверьте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: From f9feffc0ab7c82c506a8d7d8c1db0fa4694558e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 21 Aug 2025 17:38:36 +0300 Subject: [PATCH 372/393] Update lesson01.md --- lesson/lesson01.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index e7e1b898..f25e0257 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -13,13 +13,13 @@ - Установите плагин для [Checkstyle](https://topjava.ru/blog/nastroyka-checkstyle-v-intellij-idea) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) -- [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) -- [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) +- [Мифический человеко-месяц](https://habr.com/ru/companies/raiffeisenbank/articles/533216/) +- [Подборка книг для руководителей в сфере IT](https://habr.com/ru/companies/skyeng/articles/465215/) - [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://topjava.ru/blog/google-java-style-guide) - Методологии разработки ПО: [Agile, Scrum](https://youtu.be/cDvZaXzQezs), [Kanban](https://youtu.be/1_Zti9v5ugA) - [Методологии разработки и их влияние на качество](https://youtu.be/y4B2Hv3HgpE) -- [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) +- [Ещё раз про семь основных методологий разработки](https://habr.com/ru/companies/edison/articles/269789/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) - [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) @@ -30,25 +30,29 @@ ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) -- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) +- [Java](http://ru.wikipedia.org/wiki/Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) - Java [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) - [Что такое JDK? Введение в средства разработки Java](https://topjava.ru/blog/what-is-the-jdk) +- [Что такое JVM? Знакомство с виртуальной машиной Java](https://topjava.ru/blog/what-is-the-jvm) - [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) -- [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) -- [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) +- [Programming languages TIOBE Index](https://www.tiobe.com/tiobe-index/) +- [Java Microbenchmark JMH](https://openjdk.org/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) - [Руководство по массивам в Java](https://topjava.ru/blog/rukovodstvo-po-massivam-v-java-ch1) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) -- [Система управления версиями (VCS)](https://ru.wikipedia.org/wiki/Система_управления_версиями) +- [Введение в Git/GitHub: установка и настройка](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka) +- [Введение в Git/GitHub: базовые команды](https://topjava.ru/blog/vvedeniye-v-git-github-bazovyye-komandy) +- [Введение в Git/GitHub: ошибки использования](https://topjava.ru/blog/vvedeniye-v-git-oshibki-ispolzovaniya-ch-9) - [Введение в Git: от установки до основных команд](https://tproger.ru/translations/beginner-git-cheatsheet/) -- [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) +- [Сравнение разных VCS](https://dzen.ru/a/Z0Z0Ry7VD0gfPV5X) - [Видео-уроки по Git](https://www.youtube.com/playlist?list=PLDyvV36pndZHkDRik6kKF6gSb0N0W995h) - Интерактивные Git-обучалки: [1](https://githowto.com/ru), [2](http://learngitbranching.js.org) - [Официальная книга по Git](https://git-scm.com/book/ru/v2) +- [GitHub for beginners](https://github.blog/tag/github-for-beginners/) ### Настройка проекта - Создайте на GitHub репозиторий с названием `basejava` @@ -67,7 +71,7 @@ ![Screenshot_5](https://github.com/user-attachments/assets/554c3119-85cc-41be-9ef0-087f360577f4) - Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве -- Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов +- Храните все резюме в начале `storage` (без пустот в виде null), чтобы не перебирать каждый раз 10_000 элементов - При реализации метода `delete` учитывайте: - после удаления резюме между оставшимися резюме не должно быть пустых (null) ячеек - резюме должны размещаться в ячейках под индексами `< size`. В противном случае обнуляйте их From 494051b6daf6b744795ed91d0e9ca20554602cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Thu, 21 Aug 2025 21:27:55 +0300 Subject: [PATCH 373/393] Update lesson01.md --- lesson/lesson01.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index f25e0257..c6b2dcd2 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -44,10 +44,10 @@ ![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) -- [Введение в Git/GitHub: установка и настройка](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka) -- [Введение в Git/GitHub: базовые команды](https://topjava.ru/blog/vvedeniye-v-git-github-bazovyye-komandy) -- [Введение в Git/GitHub: ошибки использования](https://topjava.ru/blog/vvedeniye-v-git-oshibki-ispolzovaniya-ch-9) -- [Введение в Git: от установки до основных команд](https://tproger.ru/translations/beginner-git-cheatsheet/) +- [Введение в Git: установка и настройка](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka) +- [Введение в Git: базовые команды](https://topjava.ru/blog/vvedeniye-v-git-github-bazovyye-komandy) +- [Введение в Git: ошибки использования](https://topjava.ru/blog/vvedeniye-v-git-oshibki-ispolzovaniya-ch-9) +- [Git: от установки до основных команд](https://tproger.ru/translations/beginner-git-cheatsheet/) - [Сравнение разных VCS](https://dzen.ru/a/Z0Z0Ry7VD0gfPV5X) - [Видео-уроки по Git](https://www.youtube.com/playlist?list=PLDyvV36pndZHkDRik6kKF6gSb0N0W995h) - Интерактивные Git-обучалки: [1](https://githowto.com/ru), [2](http://learngitbranching.js.org) From 805f7a31992ad2c7c2108f61f2054a6ebd235d92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 22 Oct 2025 08:22:59 +0300 Subject: [PATCH 374/393] Update lesson03.md --- lesson/lesson03.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lesson/lesson03.md b/lesson/lesson03.md index 00dc27ab..60ee5777 100644 --- a/lesson/lesson03.md +++ b/lesson/lesson03.md @@ -31,14 +31,12 @@ - [История эволюции интерфейсов в Java](https://habr.com/ru/post/482498/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) -- [Временная сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма) (wiki) -- [Вычислительная сложность](https://ru.wikipedia.org/wiki/Вычислительная_сложность) (wiki) - [Про сложность алгоритмов и Big O Notation](https://threadreaderapp.com/thread/1470666237286010881) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) - [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view?resourcekey=0-MPCuoLVdSLiSc7hlE2jefQ) - [Бинарное дерево поиска](https://www.youtube.com/watch?time_continue=447&v=HBMlhZAOhoI) (youtube) - **Дополнительно** - - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.ozon.ru/context/detail/id/139296295/) + - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.litres.ru/book/aditya-bhargava/grokaem-algoritmy-71518519/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) @@ -46,12 +44,11 @@ - [`Lesson03 abstract storage & sorted storage`](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) **Ресурсы:** - - [Паттерн проектирования — Шаблонный метод](https://ru.wikipedia.org/wiki/Шаблонный_метод_(шаблон_проектирования)) (wiki) - [Руководство по Шаблонному методу в Java](https://topjava.ru/blog/pattern-shablonnyy-metod-v-java) - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - - Книга из известной серии Head First — [Паттерны проектирования](https://www.ozon.ru/context/detail/id/144233005/?_bctx=CAgQver7Bg) + - Книга из известной серии Head First — [Паттерны проектирования](https://www.litres.ru/book/elizabet-robson/head-first-patterny-proektirovaniya-39123671/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) From 3eca0a2fad5e2f127eda13534ce997553a51e316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 15 Nov 2025 21:32:39 +0300 Subject: [PATCH 375/393] Update lesson02.md --- lesson/lesson02.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index bf3d84ca..5f58b14a 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -49,12 +49,12 @@ - Еще раз прочитайте, [как правильно форматировать код](https://topjava.ru/blog/google-java-style-guide) - [Настройте IDEA](https://stackoverflow.com/a/30634421) на автоматическое удаление неиспользуемых импортов - Поместите классы в пакеты, как это показано в уроке -- Реализуйте в `ArrayStorage` метод `update(Resume resume)`. Запустите его в `MainTestArrayStorage` +- Реализуйте в `ArrayStorage` метод `update(Resume resume)`. Проверьте его на работоспособность в `MainTestArrayStorage` +- Метод `update` должен обновлять резюме целиком - Сделайте проверки в: - `get`, `update`, `delete` на наличие резюме в `storage` - - `save` на отсутствие резюме в `storage` - - `save` на переполнение `storage` -- Выводите в консоль информативные предупреждения, для указанных выше проверок, с указанием uuid + - `save` на переполнение `storage` и на отсутствие резюме в `storage` +- Выводите в консоль информативные предупреждения, для указанных выше проверок, с указанием `uuid` - Устраните дублирование кода в `ArrayStorage` - Выберите в классе `java.util.Arrays` подходящие методы для реализации `clear()` и `getAll()` - В `clear()` очищайте не весь `storage`, а только те ячейки, где хранятся резюме From 9d7e519917848c722cbc74983e07b3e94746f133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 23 Nov 2025 18:07:45 +0300 Subject: [PATCH 376/393] Update lesson02.md --- lesson/lesson02.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lesson/lesson02.md b/lesson/lesson02.md index 5f58b14a..90291ccc 100644 --- a/lesson/lesson02.md +++ b/lesson/lesson02.md @@ -2,22 +2,16 @@ # Второе занятие > разбор HW1 будет на следующем уроке вместе с HW2 ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Принципы ООП](https://drive.google.com/open?id=0B_4NpoQW1xfpOHpyYWhOMGQ4VXc) - - [Объектно-ориентированное программирование](https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование) (wiki) - - [Объектно-ориентированное программирование (перевод статьи)](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) +- [Объектно-ориентированное программирование](http://info.javarush.ru/translation/2016/01/28/Объектно-ориентированное-программирование-перевод-статьи-.html) - [Основы Объектно-Ориентированного Программирования (ООП)](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md) - [Наследование, агрегация, композиция, ассоциация](https://ru.wikipedia.org/wiki/Диаграмма_классов#Взаимосвязи) (wiki) - [Типы отношений между классами](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=4) - [Достоинства / Недостатки ООП](http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=5) - [ООП в Java: четыре принципа с примерами](https://highload.today/oop-v-java-chetyre-printsipa-s-primerami) -- **Дополнительно:** - - [Зачем нам ООП и что это такое?](https://habrahabr.ru/post/148015/) - - [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) +- [Николай Алименков — Парадигмы ООП](https://www.youtube.com/watch?v=G6LJkWwZGuc) (youtube) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Структура памяти: куча, стек, регистры, константы](https://drive.google.com/open?id=0B_4NpoQW1xfpZHRnTEhNWmk5Xzg) - - [Что такое Heap и Stack память в Java?](https://javadevblog.com/chto-takoe-heap-i-stack-pamyat-v-java.html) - - [Стек](https://ru.wikipedia.org/wiki/Стек) (wiki) - [Стек и куча в Java](https://topjava.ru/blog/stack-and-heap-in-java) - - [Java Heap Space vs Stack – Memory Allocation in Java](https://www.journaldev.com/4098/java-heap-space-vs-stack-memory) - [Основы Java garbage collection](https://youtu.be/3TROgt7ncMo?t=51) (youtube) - **Дополнительно:** - [Из каких частей состоит память java процесса](http://habrahabr.ru/post/117274/) From 1f3dee176a2db2d9cd3b3a5858039db1de27ea7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 3 Dec 2025 09:36:30 +0300 Subject: [PATCH 377/393] Update lesson10.md --- lesson/lesson10.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index eb86fe38..b0ded19d 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -12,12 +12,13 @@ - [`Lesson10 xml`](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) >В коде проекта используется JDK 8. Если у вас JDK9+, в проект необходимо включить [дополнительные Java EE зависимости, исключенные в JDK 9](https://openjdk.org/jeps/320) -> - [jaxb-api](https://repo1.maven.org/maven2/one/gfw/jaxb-api/2.3.1/jaxb-api-2.3.1.jar) -> - [jaxb-impl](https://repo1.maven.org/maven2/one/gfw/jaxb-impl/4.0.2/jaxb-impl-4.0.2.jar) -> - [javax.activation-api](https://repo1.maven.org/maven2/one/gfw/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar) +> - [jakarta.activation-api](https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/2.1.4/jakarta.activation-api-2.1.4.jar) +> - [jakarta.xml.bind-api](https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.4/jakarta.xml.bind-api-4.0.4.jar) +> - [jaxb-core](https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-core/4.0.6/jaxb-core-4.0.6.jar) > - [istack-commons-runtime](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/4.2.0/istack-commons-runtime-4.2.0.jar) -> ->Подключение библиотек к проекту есть в видео-уроке +> - [istack-commons-runtime](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/4.2.0/istack-commons-runtime-4.2.0.jar) + +Подключение библиотек к проекту есть в видео-уроке **Ресурсы:** - XML формат и технологии From e713dcf2e1b6680a05071158b4b551dbbf6e919d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 3 Dec 2025 09:39:46 +0300 Subject: [PATCH 378/393] Update lesson10.md --- lesson/lesson10.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lesson/lesson10.md b/lesson/lesson10.md index b0ded19d..9febd7e9 100644 --- a/lesson/lesson10.md +++ b/lesson/lesson10.md @@ -12,10 +12,10 @@ - [`Lesson10 xml`](https://github.com/JavaWebinar/basejava/tree/c36b41e468df8a82bb1e8ba668f3d00e76989fd9) >В коде проекта используется JDK 8. Если у вас JDK9+, в проект необходимо включить [дополнительные Java EE зависимости, исключенные в JDK 9](https://openjdk.org/jeps/320) -> - [jakarta.activation-api](https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/2.1.4/jakarta.activation-api-2.1.4.jar) -> - [jakarta.xml.bind-api](https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.4/jakarta.xml.bind-api-4.0.4.jar) +> - [jaxb-impl](https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl/4.0.6/jaxb-impl-4.0.6.jar) > - [jaxb-core](https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-core/4.0.6/jaxb-core-4.0.6.jar) -> - [istack-commons-runtime](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/4.2.0/istack-commons-runtime-4.2.0.jar) +> - [jakarta.xml.bind-api](https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.4/jakarta.xml.bind-api-4.0.4.jar) +> - [jakarta.activation-api](https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/2.1.4/jakarta.activation-api-2.1.4.jar) > - [istack-commons-runtime](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/4.2.0/istack-commons-runtime-4.2.0.jar) Подключение библиотек к проекту есть в видео-уроке From da38d065ef441873eaba9cb733e1e1c79b40f2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 6 Dec 2025 10:25:14 +0300 Subject: [PATCH 379/393] Update lesson11.md --- lesson/lesson11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index 1bdf9808..3d621b0f 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -13,7 +13,7 @@ ![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) ## Потоки. Синхронизация -- Многопоточность в Java ([1](https://topjava.ru/blog/mnogopotochnost-v-java-chast1), [2](https://topjava.ru/blog/mnogopotochnost-v-java-chast-2)) +- [Многопоточность в Java](https://topjava.ru/blog/mnogopotochnost-v-java-chast1) - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object - [Жизненный цикл потока в Java](https://nuancesprog.ru/p/10254/) From 7fd6015fca88e58d618ad84a43d450daa0ded3f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sat, 6 Dec 2025 10:25:53 +0300 Subject: [PATCH 380/393] Update lesson11.md --- lesson/lesson11.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson11.md b/lesson/lesson11.md index 3d621b0f..963c00b5 100644 --- a/lesson/lesson11.md +++ b/lesson/lesson11.md @@ -13,7 +13,7 @@ ![Concurrent vs Parallel](https://joearms.github.io/images/con_and_par.jpg) ## Потоки. Синхронизация -- [Многопоточность в Java](https://topjava.ru/blog/mnogopotochnost-v-java-chast1) +- [Многопоточность в Java](https://topjava.ru/blog/mnogopotochnost-v-java-chast1) (цикл статей) - Потоки выполнения. Синхронизация. - Методы wait(), notify(), notifyAll() класса Object - [Жизненный цикл потока в Java](https://nuancesprog.ru/p/10254/) From d43e0b3a42835e92ffbc45dbd242616767ed322e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 9 Dec 2025 12:04:06 +0300 Subject: [PATCH 381/393] Update lesson12.md --- lesson/lesson12.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index c78ec6ac..0dc80694 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -38,10 +38,11 @@ - Посмотреть на реляционные базы данных и SQL: - Введение в базы данных - Основы SQL -- Java 8 Streams: - 1) реализовать метод через стрим `int minValue(int[] values)`. -Метод принимает массив цифр от 1 до 9, надо выбрать уникальные и вернуть минимально возможное число, составленное из этих уникальных цифр. Не использовать преобразование в строку и обратно. Например {1,2,3,3,2,3} вернет 123, а {9,8} вернет 89 - - 2) реализовать метод `List oddOrEven(List integers)` -если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). -Optional - решение в один стрим. +- **Java 8 Streams**: + - реализуйте метод `int minValue(int[] nums)` через стрим + + Метод принимает массив цифр от 1 до 9. Он должен вернуть число, состоящее из уникальных цифр. Например, для {1, 2, 3, 3, 2, 3} вернет 123, а для {9, 8} вернет 89. Не используйте преобразование в строку и обратно. + + - реализуйте метод `List oddOrEven(List nums)` + + Используйте массив из предыдущего метода. Если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). С помощью Optional - решение в один стрим From 3178b3bd7a3dfb52c9b72539c3cda7038e422982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Tue, 9 Dec 2025 12:16:44 +0300 Subject: [PATCH 382/393] Update lesson12.md --- lesson/lesson12.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson12.md b/lesson/lesson12.md index 0dc80694..dcc2ee05 100644 --- a/lesson/lesson12.md +++ b/lesson/lesson12.md @@ -45,4 +45,4 @@ - реализуйте метод `List oddOrEven(List nums)` - Используйте массив из предыдущего метода. Если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). С помощью Optional - решение в один стрим + В качестве исходных данных используйте массив из предыдущего метода. Если сумма всех чисел нечетная - удалить все нечетные, если четная - удалить все четные. Сложность алгоритма должна быть O(N). С помощью Optional - решение в один стрим From 7973686f705bc5aa9a2b49e79f085529a15eb129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 17 Dec 2025 10:45:59 +0300 Subject: [PATCH 383/393] Update lesson04.md --- lesson/lesson04.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 3056a28d..6094548c 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -41,7 +41,7 @@ - [`Lesson04 Reflection and JUnit`](https://github.com/JavaWebinar/basejava/tree/c77bb7c73022fa411262c1da56953f3ef3ca3cc7) **Ресурсы:** - - [Руководство по аннотациям в Java](https://topjava.ru/blog/rukovodstvo-po-annotatsiyam-v-java-i-mekhanizmu-ikh-raboty) + - [Руководство по аннотациям в Java](https://topjava.ru/blog/rukovodstvo-po-annotatsiyam-v-java-i-mekhanizmu-ikh-raboty) (`для общего знакомства. Не сидите долго на этой теме`) - [Reflection для начинающих](https://youtu.be/XJQuBXWADZg) (youtube) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) @@ -58,7 +58,7 @@ ## Домашнее задание HW4 - Реализуйте тестовые классы: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` - Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены -- В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль +- В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль (`освойте основы рефлексии на уровне, достаточном для выполнения задания - сильно не углубляйтесь`) ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 - используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем From 7150e9a25d9800c433b9e39f2389e86da418370d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 19 Dec 2025 11:23:32 +0300 Subject: [PATCH 384/393] Update lesson04.md --- lesson/lesson04.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 6094548c..5546b2f7 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -56,7 +56,8 @@ - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 -- Реализуйте тестовые классы: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- Добавьте зависимости для JUnit 5: нажмите Ctrl + Alt + Shift + S и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите + -> Library... -> From Maven...). +- Реализуйте тестовые классы с помощью JUnit 5: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` - Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены - В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль (`освойте основы рефлексии на уровне, достаточном для выполнения задания - сильно не углубляйтесь`) @@ -64,11 +65,11 @@ - используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем - `SortedArrayStorageTest` должен создавать экземпляр `SortedArrayStorage`, а `ArrayStorageTest` экземпляр `ArrayStorage` - тестировать правильность сортировки не надо -- во всех тестах проверяйте `Resume` целиком. Проверки только uuid недостаточно +- во всех тестах проверяйте `Resume` целиком. Проверки только `uuid` недостаточно - иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - - если при заполнении вылетит исключение, то тест должен провалиться (используйте Assert.fail()) - - в fail() выводите сообщение о том, что переполнение произошло раньше времени + - если при заполнении вылетит исключение, то тест должен провалиться (используйте [Assert.fail()](https://www.baeldung.com/junit-fail)) + - в `fail()` выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме -- если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите Edit Configurations. В открывшейся вкладке Run/Debug Configurations, удалите в левой панели все запускаемые с JUnit классы +- если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите `Edit Configurations`. В открывшейся вкладке `Run/Debug Configurations`, удалите в левой панели все запускаемые с JUnit классы From 46777abd13ebdae64e0edf931349970b9c3724bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 19 Dec 2025 11:24:13 +0300 Subject: [PATCH 385/393] Update lesson04.md --- lesson/lesson04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 5546b2f7..7b738e43 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -56,7 +56,7 @@ - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 -- Добавьте зависимости для JUnit 5: нажмите Ctrl + Alt + Shift + S и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите + -> Library... -> From Maven...). +- Добавьте зависимости для JUnit 5: нажмите Ctrl + Alt + Shift + S и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите `+ -> Library... -> From Maven...`). - Реализуйте тестовые классы с помощью JUnit 5: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` - Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены - В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль (`освойте основы рефлексии на уровне, достаточном для выполнения задания - сильно не углубляйтесь`) From e5db24f10ce0639959ce1148cb9e908f094c927b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 19 Dec 2025 11:39:20 +0300 Subject: [PATCH 386/393] Update lesson04.md --- lesson/lesson04.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 7b738e43..4f5b47e2 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -56,20 +56,26 @@ - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 -- Добавьте зависимости для JUnit 5: нажмите Ctrl + Alt + Shift + S и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите `+ -> Library... -> From Maven...`). -- Реализуйте тестовые классы с помощью JUnit 5: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +Часть I: +- В `MainReflection` вызовите у `Resume`, через отражение, метод `toString`. Выведите результат на консоль (освойте основы рефлексии на уровне, достаточном для выполнения задания - сильно не углубляйтесь) +- Реализуйте тестовые классы с помощью `JUnit 4`: `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` +- Тестовые классы поместите в пакет `junut4` - Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены -- В `MainReflection` вызовите у Resume, через отражение, метод `toString`. Выведите результат на консоль (`освойте основы рефлексии на уровне, достаточном для выполнения задания - сильно не углубляйтесь`) + +Часть II (приступайте только после проверки первой части наставником): +- Адаптируйте классы `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` под `JUnit 5` +- Добавьте зависимости для `JUnit 5`: нажмите `Ctrl + Alt + Shift + S` и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите `+ -> Library... -> From Maven...`) +- Тестовые классы поместите в пакет `junut5` ## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW4 -- используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем +- Используйте в `AbstractArrayStorageTest` конструктор для инициализации поля `Storage storage`, а в его наследниках добавьте конструкторы, которые будут вызывать `super()` с нужным хранилищем - `SortedArrayStorageTest` должен создавать экземпляр `SortedArrayStorage`, а `ArrayStorageTest` экземпляр `ArrayStorage` -- тестировать правильность сортировки не надо -- во всех тестах проверяйте `Resume` целиком. Проверки только `uuid` недостаточно -- иерархия наследования тестовых классов должна совпадать с иерархией тестируемых -- логика реализации теста на переполнение массива (`StorageException`): +- Тестировать правильность сортировки не надо +- Во всех тестах проверяйте `Resume` целиком. Проверки только `uuid` недостаточно +- Иерархия наследования тестовых классов должна совпадать с иерархией тестируемых +- Логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - если при заполнении вылетит исключение, то тест должен провалиться (используйте [Assert.fail()](https://www.baeldung.com/junit-fail)) - в `fail()` выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме -- если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите `Edit Configurations`. В открывшейся вкладке `Run/Debug Configurations`, удалите в левой панели все запускаемые с JUnit классы +- Если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите `Edit Configurations`. В открывшейся вкладке `Run/Debug Configurations`, удалите в левой панели все запускаемые с JUnit классы From 50619f25c8b272777c27b3a79e3b6404dd120633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Fri, 19 Dec 2025 11:46:03 +0300 Subject: [PATCH 387/393] Update lesson04.md --- lesson/lesson04.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lesson/lesson04.md b/lesson/lesson04.md index 4f5b47e2..c975b16f 100644 --- a/lesson/lesson04.md +++ b/lesson/lesson04.md @@ -45,7 +45,6 @@ - [Reflection для начинающих](https://youtu.be/XJQuBXWADZg) (youtube) - [Руководство по Java Reflection API](http://javadevblog.com/polnoe-rukovodstvo-po-java-reflection-api-refleksiya-na-primerah.html) - [Java Reflection Example Tutorial](https://www.journaldev.com/1789/java-reflection-example-tutorial) - - [Отличие JUnit4 от JUnit5](https://topjava.ru/blog/migratsiya-s-junit4-na-junit5) - **Дополнительно:** - [The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/) - [What is reflection and why is it useful?](https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful) @@ -53,7 +52,6 @@ - [Фреймворк для модульного тестирования JUnit](http://junit.org/) - [Тестирование с помощью JUnit (Test Case)](http://web.archive.org/web/20190829153452/http://www.javenue.info/post/19) - [Тестирование кода Java с помощью фреймворка JUnit](https://www.youtube.com/watch?v=z9jEVLCF5_w) (youtube) - - Использование Assert.fail() при тестировании: [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case) ## Домашнее задание HW4 Часть I: @@ -63,7 +61,7 @@ - Необходимо написать тесты для всех public-методов, которые проверяли бы как их штатную работу, так и все выкидываемые ими икспешены Часть II (приступайте только после проверки первой части наставником): -- Адаптируйте классы `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` под `JUnit 5` +- [Адаптируйте](https://topjava.ru/blog/migratsiya-s-junit4-na-junit5) классы `AbstractArrayStorageTest`, `ArrayStorageTest` и `SortedArrayStorageTest` под `JUnit 5` - Добавьте зависимости для `JUnit 5`: нажмите `Ctrl + Alt + Shift + S` и добавьте в `Modules` актуальную версию `junit-jupiter` (во вкладке `Dependencies` нажмите `+ -> Library... -> From Maven...`) - Тестовые классы поместите в пакет `junut5` @@ -75,7 +73,7 @@ - Иерархия наследования тестовых классов должна совпадать с иерархией тестируемых - Логика реализации теста на переполнение массива (`StorageException`): - заполняем массив, но не вызываем у него переполнение - - если при заполнении вылетит исключение, то тест должен провалиться (используйте [Assert.fail()](https://www.baeldung.com/junit-fail)) + - если при заполнении вылетит исключение, то тест должен провалиться (используйте `Assert.fail()` [1](https://www.baeldung.com/junit-fail), [2](https://stackoverflow.com/questions/3869954/whats-the-actual-use-of-fail-in-junit-test-case)) - в `fail()` выводите сообщение о том, что переполнение произошло раньше времени - тест считается успешно пройденным, когда переполнение происходит при попытке добавить в полностью заполненный массив еще одно резюме - Если при запуске тестового класса возникает ошибка `Test class should have exactly one public zero-argument constructor`, то нажмите два раза Shift и напишите `Edit Configurations`. В открывшейся вкладке `Run/Debug Configurations`, удалите в левой панели все запускаемые с JUnit классы From f3e355f98cd07ed3fabc441532eb6586d54f4883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:19:17 +0300 Subject: [PATCH 388/393] Update lesson01.md --- lesson/lesson01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index c6b2dcd2..fd691987 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -23,8 +23,8 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) - [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) -- [State of Developer Ecosystem Report 2024](https://www.jetbrains.com/lp/devecosystem-2024/) -- [Java Trends Report 2024](https://www.infoq.com/articles/java-trends-report-2024/) +- [State of Developer Ecosystem Report 2025](https://devecosystem-2025.jetbrains.com/ru) +- [Java Trends Report 2025](https://www.infoq.com/articles/java-trends-report-2025/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) From e590e01a041c9dfa376b3cff7180deab8553f58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:22:39 +0300 Subject: [PATCH 389/393] Update lesson01.md --- lesson/lesson01.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index fd691987..fc741dfe 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -37,7 +37,6 @@ - [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) - [Programming languages TIOBE Index](https://www.tiobe.com/tiobe-index/) -- [Java Microbenchmark JMH](https://openjdk.org/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) - [Руководство по массивам в Java](https://topjava.ru/blog/rukovodstvo-po-massivam-v-java-ch1) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) From 3a8e4ea19a6a81f6876ecea8d7406e27175d3b89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:36:03 +0300 Subject: [PATCH 390/393] Update lesson01.md --- lesson/lesson01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index fc741dfe..2dc70d9c 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -25,6 +25,7 @@ - [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) - [State of Developer Ecosystem Report 2025](https://devecosystem-2025.jetbrains.com/ru) - [Java Trends Report 2025](https://www.infoq.com/articles/java-trends-report-2025/) +- Рейтинги языков программирования: [TIOBE](https://www.tiobe.com/tiobe-index/), [PYPL](https://pypl.github.io/PYPL.html), [IEEE](https://spectrum.ieee.org/tag/top-programming-languages) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) @@ -36,7 +37,6 @@ - [Что такое JVM? Знакомство с виртуальной машиной Java](https://topjava.ru/blog/what-is-the-jvm) - [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) -- [Programming languages TIOBE Index](https://www.tiobe.com/tiobe-index/) - [Руководство по массивам в Java](https://topjava.ru/blog/rukovodstvo-po-massivam-v-java-ch1) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) From 343176d44608bcebbdf5446d9f5dd201b54b72cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:41:07 +0300 Subject: [PATCH 391/393] Update lesson01.md --- lesson/lesson01.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 2dc70d9c..233f0b48 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -25,6 +25,7 @@ - [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) - [State of Developer Ecosystem Report 2025](https://devecosystem-2025.jetbrains.com/ru) - [Java Trends Report 2025](https://www.infoq.com/articles/java-trends-report-2025/) +- [The 2025 Developer Survey](https://survey.stackoverflow.co/2025) - Рейтинги языков программирования: [TIOBE](https://www.tiobe.com/tiobe-index/), [PYPL](https://pypl.github.io/PYPL.html), [IEEE](https://spectrum.ieee.org/tag/top-programming-languages) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) From a49e4810f1bc3ddfaab0bf5abfecb4f59563ca61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:48:49 +0300 Subject: [PATCH 392/393] Update lesson01.md --- lesson/lesson01.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson/lesson01.md b/lesson/lesson01.md index 233f0b48..aa5a34c0 100644 --- a/lesson/lesson01.md +++ b/lesson/lesson01.md @@ -42,8 +42,6 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) -![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) - - [Введение в Git: установка и настройка](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka) - [Введение в Git: базовые команды](https://topjava.ru/blog/vvedeniye-v-git-github-bazovyye-komandy) - [Введение в Git: ошибки использования](https://topjava.ru/blog/vvedeniye-v-git-oshibki-ispolzovaniya-ch-9) From 2ad779a9b24082db05d5b1de17343c6ab7e03199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Sun, 21 Dec 2025 09:55:53 +0300 Subject: [PATCH 393/393] Update lesson15.md --- lesson/lesson15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson/lesson15.md b/lesson/lesson15.md index a00bd9dc..c618959f 100644 --- a/lesson/lesson15.md +++ b/lesson/lesson15.md @@ -6,7 +6,7 @@ ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [1. HTML, Tomcat](https://drive.google.com/open?id=0B_4NpoQW1xfpZk1pQ1h4dEJBVEE) [см. коммит Lesson15 web](https://github.com/JavaWebinar/basejava/tree/2fe01af02b7ba82c3f0c8fa29dc3effb5b575531/src/ru/javawebinar/basejava) -- Протокол HTTP. Смотрим демо приложение в Chrome -> Инструменты разработчика +- Протокол HTTP. Смотрим [демо приложение](https://javaops-demo.ru/topjava/login) в Chrome -> Инструменты разработчика - Добавление в проект Web Facet. web.xml. Постороение/cтруктура WAR. Статические ресурсы. - Настройка и деплой в Tomcat. Tomcat manager. - Запуск Tomcat из IDEA. Динамическое обновление без передеплоя.