Skip to content

Commit f1e2b00

Browse files
authored
Update README.md
1 parent d6be8cd commit f1e2b00

1 file changed

Lines changed: 85 additions & 88 deletions

File tree

README.md

Lines changed: 85 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,149 +1,148 @@
11
# Курс BaseJava (обновленный и переработанный)
22

3-
## Разработка Web приложения "База данных резюме"
4-
- используем: Java 8, <a href="https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016-trends/#java-ides-adoption">IntelliJ IDEA</a>,
5-
<a href="https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016-trends/#java-vcs-adoption">GitHib/Git</a>, Сервлеты, JSP, JSTL, Tomcat, JUnit, PostgreSQL, GSON, JAXB
6-
- хранение резюме
7-
- в памяти на основе массива, отсортированного массива, списка и ассоциированного массива (Map)
8-
- в файловой системе (File API и <a href="http://www.quizful.net/post/java-nio-tutorial">Java 7 NIO File API</a>)
3+
## Разработка web-приложения "База данных резюме"
4+
5+
В данном курсе вы создадите с нуля web-приложение, реализуя разные способы хранения резюме. Проект включает в себя следующее:
6+
- **Технологии:** Java 8, GitHub/Git, JUnit, Logging, GSON, JAXB, SQL, PostgreSQL, Сервлеты, HTML, JSP, JSTL, Tomcat, Maven и многое другое
7+
- **Различные способы реализации хранения резюме:**
8+
- в сортированном и не сортированном массиве
9+
- в коллекциях (List, Map)
10+
- в файловой системе:
11+
- с использованием File и Path API
912
- в стандартной и кастомной сериализации Java
10-
- в формате JSON (<a href="https://github.com/google/gson">Google Gson</a>)
11-
- в формате XML (<a href="https://ru.wikipedia.org/wiki/Java_Architecture_for_XML_Binding">JAXB</a>)
12-
- в реляционной базе <a href="https://ru.wikipedia.org/wiki/PostgreSQL">PostgreSQL</a>
13-
- деплой веб приложения
14-
- в контейнер сервлетов <a href="http://tomcat.apache.org/">Tomcat</a>
15-
- в облачный сервис <a href="https://www.heroku.com/">Heroku</a>
13+
- в формате JSON ([Google Gson](https://en.wikipedia.org/wiki/Gson))
14+
- в формате XML ([JAXB](https://ru.wikipedia.org/wiki/Java_Architecture_for_XML_Binding))
15+
- в реляционной базе [PostgreSQL](https://ru.wikipedia.org/wiki/PostgreSQL)
16+
- **Установку (деплой) web-приложения:**
17+
- в контейнер сервлетов [Tomcat](https://ru.wikipedia.org/wiki/Apache_Tomcat)
18+
- в облачный сервис [Heroku](https://ru.wikipedia.org/wiki/Heroku)
1619

17-
> Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться.
20+
> Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться
1821
19-
*— Илон Маск
22+
— Илон Маск
2023

21-
## Программа
22-
23-
### [Занятие 1](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson01.md)
24+
## Программа курса
25+
26+
#### [Занятие 1](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson01.md)
2427
- Обзор курса и методики обучения
2528
- Подготовка и настройка рабочего окружения
2629
- Подходы, применяемые при разработке ПО
2730
- Обзор инструментов и технологий, используемых Java-разработчиками
28-
- Введение в язык Java: история создания, JVM, JIT-компиляция
31+
- Введение в язык Java: история создания, JDK, JVM, JRE, JIT-компиляция
2932
- Системы управления версиями. Git
3033
- Домашнее задание
3134

32-
### [Занятие 2](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson02.md)
35+
#### [Занятие 2](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson02.md)
36+
- Типы данных
3337
- Введение в объектно-ориентированное программирование
3438
- Принципы ООП
35-
- Модификаторы доступа
36-
- Классы-обертки
3739
- Классы и объекты
40+
- Классы-обертки
41+
- Модификаторы доступа
42+
- Конструктор
3843
- Структура памяти java-программы: Heap (куча), Stack (стек)
39-
- Типы данных
40-
- Пакетная организация файлов
44+
- Пакеты
4145
- Домашнее задание
4246

43-
### [Занятие 3](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson03.md)
47+
#### [Занятие 3](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson03.md)
4448
- Разбор домашнего задания
4549
- Обзор суперкласса Object
4650
- Связь между equals() и hashCode()
4751
- Статические методы и переменные
4852
- Программирование с помощью интерфейсов
4953
- Абстрактные классы
5054
- Сложность алгоритмов
51-
- Паттерн проектирования Шаблонный метод
55+
- Паттерн проектирования Template Method
5256
- Домашнее задание
5357

54-
### [Занятие 4](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson04.md)
58+
#### [Занятие 4](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson04.md)
5559
- Разбор домашнего задания
60+
- Конструктор
5661
- Работа со строками: String, StringBuilder, StringBuffer
5762
- String literal pool
5863
- Исключения (Exceptions)
59-
- Конструктор
6064
- Ключевые слова: this, super
6165
- Reflection
62-
- Аннотации в Java 8
66+
- Аннотации
6367
- Введение в модульное тестирование. JUnit
6468
- Домашнее задание
6569

66-
### [Занятие 5](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson05.md)
70+
#### [Занятие 5](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson05.md)
6771
- Разбор домашнего задания
68-
- Иерархия классов Коллекций
72+
- Коллекций. Иерархия классов
6973
- Списки (List)
7074
- Множества (Set)
7175
- Ассоциативные массивы (Map)
7276
- Введение в Iterator
73-
- Тестирование коллекций
7477
- Домашнее задание
7578

76-
### [Занятие 6](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson06.md)
79+
#### [Занятие 6](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson06.md)
7780
- Разбор домашнего задания
78-
- Autoboxing and Unboxing
79-
- Паттерн проектирования Итератор
81+
- Паттерн проектирования Iterator
82+
- Autoboxing и Unboxing
8083
- Вложенные классы
8184
- Внутренние классы
8285
- Локальные классы
8386
- Анонимные классы
84-
- Введение в лямбды
87+
- Введение в лямбда-выражения
8588
- Функциональный интерфейс
8689
- Домашнее задание
8790

88-
### [Занятие 7](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson07.md)
91+
#### [Занятие 7](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson07.md)
8992
- Разбор домашнего задания
9093
- Дженерики (Generic)
91-
- Введение в логирование. Log4J
92-
- Стандартный логер - Java Logging API
93-
- Паттерн проектирования - Синглтон
94-
- Перечисляемые типы (Enum)
94+
- Введение в логирование. Log4J, Java Logging API
95+
- Паттерн проектирования Singleton
96+
- Перечисления (Enum)
9597
- Объектная модель
9698
- Домашнее задание
9799

98-
### [Занятие 8](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson08.md)
100+
#### [Занятие 8](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson08.md)
99101
- Разбор домашнего задания
100102
- Классы работы с датами: Date, Calendar, TimeZone
101-
- Дата и время в Java 8
102-
- Внешние библиотеки: Joda Time library
103-
- Работа с файловой системой: класс File
104-
- try-with-resources
103+
- Дата и время в Java 8+
104+
- File API
105+
- Освобождение ресурсов: try-with-resources
105106
- Домашнее задание
106107

107-
### [Занятие 9](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson09.md)
108+
#### [Занятие 9](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson09.md)
108109
- Разбор домашнего задания
109110
- Обзор пакета java.io
110-
- Классы чтения/записи потоков: InputStream/OutputStream
111-
- Паттерн проектирования Декоратор
112-
- Работа с классами чтения/записи символов: Reader и Writer
113-
- Сериализация
111+
- Классы чтения/записи потоков: InputStream и OutputStream
112+
- Паттерн проектирования Decorator
113+
- Классы чтения/записи символов: Reader и Writer
114+
- Сериализация объектов
114115
- Обзор пакета java.nio
115-
- Введение в Java 8 Stream API
116+
- Введение в Java 8+ Stream API
116117
- Домашнее задание
117118

118-
### [Занятие 10](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson10.md)
119+
#### [Занятие 10](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson10.md)
119120
- Разбор домашнего задания
120-
- Паттерн проектирования Стратегия
121-
- Работа с XML
122-
- Работа с JSON: Google GSON и Jackson
123-
- Введение в REST
124-
- DataInputStream/DataOutputStream
125-
- Домашнее задание
126-
127-
### [Занятие 11](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson11.md)
128-
- Процессы и потоки
129-
- Синхронизация методов и блоков
130-
- Закон Мура
131-
- Закон Амдала
121+
- Паттерн проектирования Strategy
122+
- Работа с XML (JAXB)
123+
- Работа с JSON (GSON)
124+
- Классы чтения/записи примитивных типов: DataInputStream и DataOutputStream
125+
- Домашнее задание
126+
127+
#### [Занятие 11](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson11.md)
128+
- Многопоточность
129+
- Закон Мура и Амдала
130+
- Потоки. Синхронизация доступа
132131
- Обзор методов класса Object
133132
- Ленивая инициализация
134133
- Java Memory Model
135-
- Взаимная блокировка
134+
- Deadlock
136135
- Домашнее задание
137136

138-
### [Занятие 12](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson12.md)
137+
#### [Занятие 12](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson12.md)
139138
- Разбор домашнего задания
140-
- Обзор java.util.concurrent
139+
- Обзор классов java.util.concurrent
141140
- Синхронизаторы
142-
- ThreadLocal переменные
141+
- ThreadLocal-переменные
143142
- Сравнение с обменом (Compare-and-swap)
144143
- Домашнее задание
145144

146-
### [Занятие 13](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson13.md)
145+
#### [Занятие 13](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson13.md)
147146
- Разбор домашнего задания
148147
- Введение в реляционные базы данных
149148
- Язык SQL
@@ -155,7 +154,7 @@
155154
- Обзор JDBC-архитектуры
156155
- Домашнее задание
157156

158-
### [Занятие 14](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson14.md)
157+
#### [Занятие 14](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson14.md)
159158
- Разбор домашнего задания
160159
- Операции соединения таблиц. JOIN
161160
- Транзакции
@@ -164,40 +163,38 @@
164163
- Установка и настройка контейнера сервлетов Tomcat
165164
- Домашнее задание
166165

167-
### [Занятие 15](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson15.md)
166+
#### [Занятие 15](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson15.md)
168167
- Разбор домашнего задания
169168
- Введение в HTML
170169
- Основы протокола HTTP
171170
- Настройка web.xml
172-
- Развертывание (деплой) web-приложения в Tomcat
171+
- Деплой web-приложения в Tomcat
173172
- Сервлеты
174173
- Домашнее задание
175174

176-
### [Занятие 16](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson16.md)
175+
#### [Занятие 16](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson16.md)
177176
- Разбор домашнего задания
178177
- Жизненный цикл сервлета
179178
- Создание динамических страниц. JSP
180-
- Расширенные возможности JSP: JSTL
179+
- Расширенные возможности JSP. JSTL
181180
- Redirect и Forward
182-
- CRUD
181+
- CRUD-операции
183182
- Домашнее задание
184183

185-
### [Занятие 17](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson17.md)
184+
#### [Занятие 17](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson17.md)
186185
- Разбор домашнего задания
187186
- Деплой приложения в облачный сервис Heroku
188187
- Загрузка классов в Java. Classloader
189188
- Домашнее задание
190189

191190
## Рекомендуемые книги
192-
- <a href="http://myflex.org/books/java4kids/java4kids.htm">YAKOV FAIN: Программирование на Java для начинающих</a>
193-
- <a href="https://habrahabr.ru/post/153373/">Книги по Java: от новичка до профессионала</a>
194-
- <a href="http://scanlibs.com/java-effektivnoe-programmirovanie-2-e-izdanie">Джошуа Блох: Java. Эффективное программирование, 2-е издание</a>
195-
- <a href="http://www.labirint.ru/books/87603/">Гамма, Хелм, Джонсон: Приемы объектно-ориентированного проектирования. Паттерны проектирования</a>
196-
- <a href="http://www.bookvoed.ru/book?id=639284">Редмонд Э.: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL.</a>
197-
198-
## Ресуры в сети
199-
- [EduTools плагин от JetBrains для изучения Kotlin, Java, Python, Scala, ...](http://javaops.ru/view/story/story21#edutools)
200-
- [Руководство по Java Core](http://proselyte.net/tutorials/java-core/)
201-
- [Java. Базовый курс (доступен также через плагин JetBrains EduTools)](https://stepik.org/course/Java-Базовый-курс-187)
202-
- <a href="http://www.intuit.ru/studies/courses/16/16/info">intuit: Программирование на Java</a>
203-
- <a href="http://sernam.ru/book_java.php">Основы программирования на Java: учебное пособие</a>
191+
- [Яков Файн, "Программирование на Java для начинающих"](http://myflex.org/books/java4kids/java4kids.htm)
192+
- [Книги по Java: от новичка до профессионала](https://proglib.io/p/java-books-2019/)
193+
- [Джошуа Блох, "Java. Эффективное программирование, 3-е издание"](https://www.ozon.ru/context/detail/id/148627191/)
194+
- [Роберт Мартин, "Чистый код"](https://www.ozon.ru/context/detail/id/142429922/)
195+
- [Серия Head First, "Паттерны проектирования"](https://www.ozon.ru/context/detail/id/144233005/)
196+
- [Вайсфельд Мэтт, "Объектно-ориентированный подход"](https://www.ozon.ru/context/detail/id/166375103/?stat=YW5fMQ%3D%3D)
197+
198+
## Ресурсы в сети
199+
- [EduTools плагин от JetBrains для изучения Kotlin, Java, Python, Scala и других языков](http://javaops.ru/view/story/story21#edutools)
200+
- [JetBrains Academy — интерактивный учебный курс по Java](https://www.jetbrains.com/ru-ru/academy/)

0 commit comments

Comments
 (0)