Що дасть вам цей курс
Освоєння розробки серверних додатків на Java.
Розуміння бібліотеки Java, особливостей мови та платформи Java.
Знання основних підходів програміста до проектування додатків, роботи з базами, файлами, веб-фронтендом.
Володіння низькорівневими і високорівневими підходами до створення багатопотокових і багатопроцесорних додатків.
програма курсу
1.1 Підготовка до курсу
Введення. Огляд і завдання курсу. Налаштування оточення: система контролю версій git, система контролю залежностей maven, середовище розробки Intellij IDEA. Збірка і запуск java додатків.
ДЗ 01. Збірка і запуск проекту створити проект під управлінням maven в Intellij IDEA. Додати залежність на Google Guava/Apache Commons/бібліотеку на ваш вибір. Використовувати бібліотечні класи для обробки вхідних даних. Задати ім'я проекту (project_name) в pom.xml зібрати project_name.jar містить всі залежності. Перевірити, що додаток можна запустити з командного рядка. Викласти проект на github. Створити гілку "obfuscation" змінити в ній pom.xml, так щоб збірка містила стадію обфускації байткоду.
1.2 Байт код
Байт код. Зміст .class. Декомпіляція. Обфускація. Історія змін мови Java від версії до версії. Розбір ДЗ.
2.1 поглиблені основи
Поглиблені основи. Завантаження КЛАСІВ. Види і завдання class loader-ів. Клас Class. Примітивні типи, рядки, масиви. Пам'ять, яку займають об'єкти.
ДЗ 02. Вимірювання пам'яті напишіть стенд для визначення розміру об'єкта. Передавайте для вимірювання в стенд фабрику об'єктів. Визначте розмір порожнього рядка та порожніх контейнерів. Визначте зростання розміру контейнера від кількості елементів в ньому. Якщо Ви знайомі з інструментуванням, порівняйте результати вимірювань.
2.2 Remote debug Hot swap.
Remote debug. Збирач сміття. Instrumentation. Розбір прикладів і ДЗ.
3.1 контейнери та алгоритми Generics. Контейнери та алгоритми. Огляд пристрою та роботи контейнерів з java.util. Порівняння контейнерів. Карти на основі хеш функції і на основі дерева. Розбір алгоритмів з java.util.Collections.
ДЗ 03. MyArrayList написати свою реалізацію ArrayList на основі масиву. class MyArrayList implements List{...} Перевірити, що на ній працюють методи addAll (Collection c, T... elements) static void copy(list dest, List src) static void sort (List list, Comparator c) з java.util.Collections
3.2 інструменти для перетворення контейнерів Інструменти для перетворення контейнерів. Apache Commons. Google Guava. Розбір прикладів і ДЗ.
4.1 збирач сміття параметри запуску VM.
Збирач сміття. Види збірок. Поділ пам'яті під різні покоління об'єктів. Види збирачів. JMX. Управління додатком з jconsole. OutOfMemory. dump пам'яті. Дослідження thread dump і heap dump.
ДЗ 04. Вимірювання активності GC написати додаток, яке стежить за збірками сміття і пише в лог кількість збірок кожного типу (young, old) і час яке пішло на збірки в хвилину. Домогтися OutOfMemory в цьому додатку через повільне підтікання по пам'яті (наприклад додавати елементи в List і видаляти тільки половину). Налаштувати додаток (можна додавати Thread.sleep(...)) так щоб воно падало з OOM приблизно через 5 хвилин після початку роботи. Зібрати статистику (кількість збірок, час на сборркі) за різними типами GC. Зробити висновки.
4.2 QA і Тестування QA, Тестування. Види тестів. "Заглушка". Testing frameworks: junit, mockito. Розбір прикладів і ДЗ.
5.1 Анотації Анотації. Стандартні анотації. Застосування анотацій. Типи анотацій. Синтаксис. Створення своїх аннтатаций. Reflection. 31 Січня, 20:00 — 21: 30
ДЗ 05. Тестовий фреймворк на анотаціях написати свій тестовий фреймворк. Підтримати свої анотації Test, @Before, @after. Запускати викликом статичного методу з ім'ям класу з тестами.
5.2 Java 8 елементи функціонального програмування.
Streams. Lambdas. Приклад.
6.1 типи посилань.
Кешування типи посилань в Java. Системи кешування. Ehcache.
7 лютого, 20:00 — 21:30
ДЗ-06: my cache engine напишіть свій cache engine з soft references.
6.2 Логгирование java.util.logging, log4j, slf4j. розбір прикладів і ДЗ.
...
зміст складчини (файли і папки)
01 Підготовка до курсу
01 Підготовка до курсу. mp4 [2G 30m 714k 25]
L1.1.pdf [31k 118]
L1.1-about.pdf [217k 47]
L1.1-git.pdf [40k 986]
L1.1-maven-intro.pdf [84k 659]
L1.1-regulations.pdf [29k 753]
L1.1-tools.pdf [49k 380]
ДЗА.txt [282]
02 Байт код
02 Байт код.mp4 [587m 153K 222]
L1.2-bytecode.pdf [39k 678]
L1.2-java-versions.pdf [46k 445]
03 поглиблені основи
03 поглиблені основи. mp4 [994m 646k 427]
L2.1.pdf [28k 245]
L2.1-arrays-strings.pdf [42k 809]
L2.1-class-loaders.pdf [32k 848]
L2.1-memory-for-objects.pdf [140k 578]
L2.1-primitives.pdf [88k 964]
ДЗА.txt [205]
04 Remote debug
04 Remote debug.mp4 [1g 357m 450k 304]
05 контейнери та алгоритми
05 контейнери та алгоритми.mp4 [1G 911m 429k 536]
L3.1.pdf [26k 127]
L3.1-Collections.pdf [97k 840]
L3.1-Generics.pdf [72k 772]
L3.1-Maps.pdf [90k 398]
06 інструменти для перетворення контейнерів
06 інструменти для перетворення контейнерів. mp4 [523m 176k 255]
1.pdf [25k 438]
2.pdf [64k 366]
3.pdf [28k 952]
4.pdf [29k 566]
07 збирач сміття
07 збирач сміття. mp4 [170M 236k 804]
1.pdf [27k 529]
2.pdf [146k 127]
3.pdf [29k 883]
4.pdf [41k 38]
ДЗА.txt [258]
08 QA та тестування
08 QA та тестування. mp4 [299m 297k 880]
1.pdf [74k 948]
09 анотації
09 анотації. mp4 [231m 307k 69]
1.pdf [26k 623]
2.pdf [87k 974]
3.pdf [33k 294]
ДЗА.txt [263]
10 Java 8
10 Java 8.mp4 [295m 342k 738]
Nurse Di framework live development.mp4 [131m 524k 617]
11 Основи дизайну
1.pdf [27k 137]
11 Основи дизайну. mp4 [153m 675k 245]
2.pdf [61k 779]
3.pdf [75k 214]
4.pdf [92k 240]
ДЗА.txt [279]
12 Behavioral patterns
12 Behavioral patterns.mp4 [221m 83k 768]
Репозиторій.txt [31]
13 Structural patterns
1.pdf [25k 964]
13 Structural patterns.mp4 [180m 78k 402]
2.pdf [158k 418]
3.pdf [97k 829]
4.pdf [131k 774]
ДЗА.txt [298]
Репозиторій.txt [80]
14 Creational patterns
14 Creational patterns.mp4 [213m 923k 334]
15 серіалізація
1.pdf [27k 235]
15 серіалізація. mp4 [391m 141k 515]
2.pdf [123k 646]
3.pdf [96k 139]
4.pdf [99k 852]
5.pdf [27k 864]
ДЗА.txt [243]
Репозиторій.txt [74]
16 XML
16 XML.mp4 [272m 747k 608]
17 JDBC
1.pdf [31k 529]
17 JDBC.mp4 [196m 168k 309]
2.pdf [173k 297]
3.pdf [114k 504]
4.pdf [136k 978]
ДЗА.txt [493]
Репозиторій.txt [76]
18 myBatis
18 myBatis.mp4 [250m 193k 158]
2-mybatis.pdf [85k 149]
19 Hibernate
1.pdf [31k 712]
1-01-orm.pdf [45k 496]
1-02-hibernate.pdf [100k 414]
1-03-jpa-annotations.pdf [56k 449]
1-04-dbservice.pdf [76k 479]
19 Hibernate.mp4 [222m 353k 700]
ДЗА.txt [515]
Репозиторій.txt [53]
20 JPQL
20 JPQL.mp4 [276m 439k 126]
2-jpql.pdf [53k 310]
2-pools.pdf [62k 304]
Репозиторій.txt [76]
21 системи кешування
1.pdf [24k 833]
1-cache-engine.pdf [87k 343]
1-ehcache.pdf [79k 306]
1-references.pdf [38k 454]
21 системи кешування. mp4 [190M 290k 804]
ДЗА.txt [138]
22 No SQL
2.pdf [18k 444]
22 No SQL.mp4 [181m 180k 603]
2-hibercache.pdf [94k 419]
2-mongo.pdf [82k 360]
2-nosql.pdf [49k 418]
23 Web сервер
1.pdf [25k 766]
1-01-web.pdf [87k 301]
1-02-jetty.pdf [53k 765]
1-03-servlet.pdf [47k 212]
1-04-template-engine.pdf [32k 425]
23 Web сервер.mp4 [183m 126k 169]
ДЗА.txt [179]
24 Asynchronous Web applications
24 Asynchronous Web applications.mp4 [611m 454k 733]
2-ajax.pdf [89k 415]
2-long-polling.pdf [63k 865]
Репозиторій.txt [75]
25 Dependency injection
1.01-resource.pdf [32k 228]
1.02-jetty-external.pdf [63k 669]
1.03-war.pdf [57k 40]
1.04-injection.pdf [31k 941]
1.05-spring-ioc.pdf [80k 410]
1.pdf [36k 191]
25 Dependency injection.mp4 [194m 467k 614]
ДЗА.txt [180]
26 Логгирование
26 Логгирование.mp4 [561m 617k 677]
2-logging.pdf [393k 603]
27 Thread
1.01-threads.pdf [97k 763]
1.02-definitions.pdf [55k 756]
1.03-jmm.pdf [130k 116]
1.pdf [24k 755]
27 Thread.mp4 [146m 260k 738]
ДЗА.txt [137]
28 JMM
14.2-JMM.pdf [593k 801]
28 JMM.mp4 [281m 264k 145]
29 Message System
1.pdf [25k 732]
1-01-cooperation.pdf [29k 126]
1-02-concurrent-collections.pdf [58k 57]
1-03-message-system.pdf [154k 809]
29 Message System.mp4 [166m 830k 487]
ДЗА.txt [201]
30 Executors
2-juc.pdf [429k 616]
30 Executors.mp4 [283m 663k 22]
31 багатопроцесорні програми
1.pdf [28k 96]
1-01-process-builder.pdf [52k 291]
Байт код. Зміст .class. Декомпіляція. Обфускація. Історія змін мови Java від версії до версії. Розбір ДЗ.
2.1 поглиблені основи
Поглиблені основи. Завантаження КЛАСІВ. Види і завдання class loader-ів. Клас Class. Примітивні типи, рядки, масиви. Пам'ять, яку займають об'єкти.
ДЗ 02. Вимірювання пам'яті напишіть стенд для визначення розміру об'єкта. Передавайте для вимірювання в стенд фабрику об'єктів. Визначте розмір порожнього рядка та порожніх контейнерів. Визначте зростання розміру контейнера від кількості елементів в ньому. Якщо Ви знайомі з інструментуванням, порівняйте результати вимірювань.
2.2 Remote debug Hot swap.
Remote debug. Збирач сміття. Instrumentation. Розбір прикладів і ДЗ.
3.1 контейнери та алгоритми Generics. Контейнери та алгоритми. Огляд пристрою та роботи контейнерів з java.util. Порівняння контейнерів. Карти на основі хеш функції і на основі дерева. Розбір алгоритмів з java.util.Collections.
ДЗ 03. MyArrayList написати свою реалізацію ArrayList на основі масиву. class MyArrayList implements List{...} Перевірити, що на ній працюють методи addAll (Collection c, T... elements) static void copy(list dest, List src) static void sort (List list, Comparator c) з java.util.Collections
3.2 інструменти для перетворення контейнерів Інструменти для перетворення контейнерів. Apache Commons. Google Guava. Розбір прикладів і ДЗ.
4.1 збирач сміття параметри запуску VM.
Збирач сміття. Види збірок. Поділ пам'яті під різні покоління об'єктів. Види збирачів. JMX. Управління додатком з jconsole. OutOfMemory. dump пам'яті. Дослідження thread dump і heap dump.
ДЗ 04. Вимірювання активності GC написати додаток, яке стежить за збірками сміття і пише в лог кількість збірок кожного типу (young, old) і час яке пішло на збірки в хвилину. Домогтися OutOfMemory в цьому додатку через повільне підтікання по пам'яті (наприклад додавати елементи в List і видаляти тільки половину). Налаштувати додаток (можна додавати Thread.sleep(...)) так щоб воно падало з OOM приблизно через 5 хвилин після початку роботи. Зібрати статистику (кількість збірок, час на сборркі) за різними типами GC. Зробити висновки.
4.2 QA і Тестування QA, Тестування. Види тестів. "Заглушка". Testing frameworks: junit, mockito. Розбір прикладів і ДЗ.
5.1 Анотації Анотації. Стандартні анотації. Застосування анотацій. Типи анотацій. Синтаксис. Створення своїх аннтатаций. Reflection. 31 Січня, 20:00 — 21: 30
ДЗ 05. Тестовий фреймворк на анотаціях написати свій тестовий фреймворк. Підтримати свої анотації Test, @Before, @after. Запускати викликом статичного методу з ім'ям класу з тестами.
5.2 Java 8 елементи функціонального програмування.
Streams. Lambdas. Приклад.
6.1 типи посилань.
Кешування типи посилань в Java. Системи кешування. Ehcache.
7 лютого, 20:00 — 21:30
ДЗ-06: my cache engine напишіть свій cache engine з soft references.
6.2 Логгирование java.util.logging, log4j, slf4j. розбір прикладів і ДЗ.
...
зміст складчини (файли і папки)
01 Підготовка до курсу
01 Підготовка до курсу. mp4 [2G 30m 714k 25]
L1.1.pdf [31k 118]
L1.1-about.pdf [217k 47]
L1.1-git.pdf [40k 986]
L1.1-maven-intro.pdf [84k 659]
L1.1-regulations.pdf [29k 753]
L1.1-tools.pdf [49k 380]
ДЗА.txt [282]
02 Байт код
02 Байт код.mp4 [587m 153K 222]
L1.2-bytecode.pdf [39k 678]
L1.2-java-versions.pdf [46k 445]
03 поглиблені основи
03 поглиблені основи. mp4 [994m 646k 427]
L2.1.pdf [28k 245]
L2.1-arrays-strings.pdf [42k 809]
L2.1-class-loaders.pdf [32k 848]
L2.1-memory-for-objects.pdf [140k 578]
L2.1-primitives.pdf [88k 964]
ДЗА.txt [205]
04 Remote debug
04 Remote debug.mp4 [1g 357m 450k 304]
05 контейнери та алгоритми
05 контейнери та алгоритми.mp4 [1G 911m 429k 536]
L3.1.pdf [26k 127]
L3.1-Collections.pdf [97k 840]
L3.1-Generics.pdf [72k 772]
L3.1-Maps.pdf [90k 398]
06 інструменти для перетворення контейнерів
06 інструменти для перетворення контейнерів. mp4 [523m 176k 255]
1.pdf [25k 438]
2.pdf [64k 366]
3.pdf [28k 952]
4.pdf [29k 566]
07 збирач сміття
07 збирач сміття. mp4 [170M 236k 804]
1.pdf [27k 529]
2.pdf [146k 127]
3.pdf [29k 883]
4.pdf [41k 38]
ДЗА.txt [258]
08 QA та тестування
08 QA та тестування. mp4 [299m 297k 880]
1.pdf [74k 948]
09 анотації
09 анотації. mp4 [231m 307k 69]
1.pdf [26k 623]
2.pdf [87k 974]
3.pdf [33k 294]
ДЗА.txt [263]
10 Java 8
10 Java 8.mp4 [295m 342k 738]
Nurse Di framework live development.mp4 [131m 524k 617]
11 Основи дизайну
1.pdf [27k 137]
11 Основи дизайну. mp4 [153m 675k 245]
2.pdf [61k 779]
3.pdf [75k 214]
4.pdf [92k 240]
ДЗА.txt [279]
12 Behavioral patterns
12 Behavioral patterns.mp4 [221m 83k 768]
Репозиторій.txt [31]
13 Structural patterns
1.pdf [25k 964]
13 Structural patterns.mp4 [180m 78k 402]
2.pdf [158k 418]
3.pdf [97k 829]
4.pdf [131k 774]
ДЗА.txt [298]
Репозиторій.txt [80]
14 Creational patterns
14 Creational patterns.mp4 [213m 923k 334]
15 серіалізація
1.pdf [27k 235]
15 серіалізація. mp4 [391m 141k 515]
2.pdf [123k 646]
3.pdf [96k 139]
4.pdf [99k 852]
5.pdf [27k 864]
ДЗА.txt [243]
Репозиторій.txt [74]
16 XML
16 XML.mp4 [272m 747k 608]
17 JDBC
1.pdf [31k 529]
17 JDBC.mp4 [196m 168k 309]
2.pdf [173k 297]
3.pdf [114k 504]
4.pdf [136k 978]
ДЗА.txt [493]
Репозиторій.txt [76]
18 myBatis
18 myBatis.mp4 [250m 193k 158]
2-mybatis.pdf [85k 149]
19 Hibernate
1.pdf [31k 712]
1-01-orm.pdf [45k 496]
1-02-hibernate.pdf [100k 414]
1-03-jpa-annotations.pdf [56k 449]
1-04-dbservice.pdf [76k 479]
19 Hibernate.mp4 [222m 353k 700]
ДЗА.txt [515]
Репозиторій.txt [53]
20 JPQL
20 JPQL.mp4 [276m 439k 126]
2-jpql.pdf [53k 310]
2-pools.pdf [62k 304]
Репозиторій.txt [76]
21 системи кешування
1.pdf [24k 833]
1-cache-engine.pdf [87k 343]
1-ehcache.pdf [79k 306]
1-references.pdf [38k 454]
21 системи кешування. mp4 [190M 290k 804]
ДЗА.txt [138]
22 No SQL
2.pdf [18k 444]
22 No SQL.mp4 [181m 180k 603]
2-hibercache.pdf [94k 419]
2-mongo.pdf [82k 360]
2-nosql.pdf [49k 418]
23 Web сервер
1.pdf [25k 766]
1-01-web.pdf [87k 301]
1-02-jetty.pdf [53k 765]
1-03-servlet.pdf [47k 212]
1-04-template-engine.pdf [32k 425]
23 Web сервер.mp4 [183m 126k 169]
ДЗА.txt [179]
24 Asynchronous Web applications
24 Asynchronous Web applications.mp4 [611m 454k 733]
2-ajax.pdf [89k 415]
2-long-polling.pdf [63k 865]
Репозиторій.txt [75]
25 Dependency injection
1.01-resource.pdf [32k 228]
1.02-jetty-external.pdf [63k 669]
1.03-war.pdf [57k 40]
1.04-injection.pdf [31k 941]
1.05-spring-ioc.pdf [80k 410]
1.pdf [36k 191]
25 Dependency injection.mp4 [194m 467k 614]
ДЗА.txt [180]
26 Логгирование
26 Логгирование.mp4 [561m 617k 677]
2-logging.pdf [393k 603]
27 Thread
1.01-threads.pdf [97k 763]
1.02-definitions.pdf [55k 756]
1.03-jmm.pdf [130k 116]
1.pdf [24k 755]
27 Thread.mp4 [146m 260k 738]
ДЗА.txt [137]
28 JMM
14.2-JMM.pdf [593k 801]
28 JMM.mp4 [281m 264k 145]
29 Message System
1.pdf [25k 732]
1-01-cooperation.pdf [29k 126]
1-02-concurrent-collections.pdf [58k 57]
1-03-message-system.pdf [154k 809]
29 Message System.mp4 [166m 830k 487]
ДЗА.txt [201]
30 Executors
2-juc.pdf [429k 616]
30 Executors.mp4 [283m 663k 22]
31 багатопроцесорні програми
1.pdf [28k 96]
1-01-process-builder.pdf [52k 291]
https://privatelink.de/?https://otus.ru/lessons/razrabotchik-java/