Skip to content

Commit ff8c982

Browse files
committed
Update read.me
1 parent 56825e0 commit ff8c982

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

README.md

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
- используя асинхронные сервлеты 3.0
1919
- сохранение данных в PostgreSQL используя [jDBI](http://jdbi.org/)
2020
- миграция базы [LiquiBase](http://www.liquibase.org/)
21-
- использование в проекте [Guava](https://github.com/google/guava/wiki), [Thymleaf](http://www.thymeleaf.org/), [Lombook](https://projectlombok.org/), [StreamEx](https://github.com/amaembo/streamex),
21+
- использование в проекте [Guava](https://github.com/google/guava/wiki), [Thymleaf](http://www.thymeleaf.org/), [Lombok](https://projectlombok.org/), [StreamEx](https://github.com/amaembo/streamex),
2222
[Typesafe Config](https://github.com/typesafehub/config), [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh)
2323

2424
### Требование к участникам
@@ -38,13 +38,16 @@
3838
> В видео в `LazySingleton` ошибка: должно быть как в коде проекта `instance == null`
3939
4040
### Структура памяти: куча, стек, permanent/metaspace
41-
- <a href="https://www.slideshare.net/solit/jvm-16948708">JVM изнутри - оптимизация и профилирование</a>.
41+
- <a href="https://documents.tips/technology/jvm-.html">JVM изнутри - оптимизация и профилирование</a>.
4242
- <a href="http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap#24171266">Stack and Heap</a>
4343
- Дополнительно:
4444
- <a href="http://habrahabr.ru/post/117274/">Из каких частей состоит память java процесса</a>.
4545
- <a href="http://www.javaspecialist.ru/2011/04/permanent.html">Permanent область памяти</a>
4646
- <a href="http://www.javaspecialist.ru/2011/04/java-thread-stack.html">Java thread stack </a>
4747
- <a href="http://habrahabr.ru/post/134102/">Размер Java объектов</a>
48+
- Оптимизация памяти
49+
- [Escape analysis и скаляризация: Пусть GC отдохнет](https://habr.com/company/jugru/blog/322348)
50+
- [Условия для размещения объекта в стеке](https://stackoverflow.com/a/43002529/548473)
4851

4952
### Ленивая инициализация
5053
- <a href="https://habrahabr.ru/post/27108/">Реализация Singleton в JAVA</a>
@@ -64,6 +67,7 @@
6467
- <a href="http://articles.javatalks.ru/articles/17">Использование ThreadLocal переменных</a>
6568
- <a href="https://www.youtube.com/watch?v=8piqauDj2yo">Николай Алименков — Прикладная многопоточность</a>
6669
- <a href="http://stackoverflow.com/questions/20163056/in-java-can-thread-switching-happen-in-the-synchronized-block">Can thread switching happen in the synchronized block?</a>
70+
- [Реактивное программирование - как, зачем и стоит ли?](https://habr.com/ru/company/oleg-bunin/blog/543386/)
6771

6872
#### Tproger: Многопоточное программирование в Java 8
6973
- <a href="https://tproger.ru/translations/java8-concurrency-tutorial-1/">1. Параллельное выполнение кода с помощью потоков</a>
@@ -73,10 +77,16 @@
7377
## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. <a href="https://www.youtube.com/watch?v=AEhIh2qd-FM">Реализация многопоточной отправки писем. Execution Framework</a>
7478
> правка к видео: `22: completionService.submit(..)`
7579
76-
### ![](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Все изменения в проекте будут делаться на основе патчей
77-
#### Скачайте [1_1_MailService.patch](https://drive.google.com/open?id=0B9Ye2auQ_NsFTE5ZV3pzWElxTWM), положите его в проект, правой мышкой на нем сделайте Apply Patch ...
80+
Вычекать этот проект:
81+
```git clone https://github.com/JavaOPs/masterjava.git```
82+
83+
> - [Настройка git на свой репозиторий](https://github.com/JavaOPs/basejava/blob/master/lesson/lesson1.md#настройка-проекта)
84+
> - [Правила работы с патчами на проекте](https://github.com/JavaOPs/topjava/wiki/Git)
85+
86+
#### Все изменения в проекте будут делаться на основе патчей: скачайте [1_1_MailService.patch](https://drive.google.com/open?id=0B9Ye2auQ_NsFTE5ZV3pzWElxTWM), положите его в проект, правой мышкой на нем сделайте Apply Patch ...
7887

7988
----------------------------
89+
- [Как сделать Java код проще и нагляднее](https://habrahabr.ru/company/wrike/blog/349652/)
8090

8191
### Ресурсы (основы)
8292
- Intuit, <a href="http://www.intuit.ru/studies/courses/16/16/lecture/27127">Потоки выполнения. Синхронизация</a>
@@ -85,23 +95,20 @@
8595
- Computer Science Center, курс <a href="https://compscicenter.ru/courses/hp-course/2016-spring">Параллельное программирование</a>
8696
- Юрий Ткач, курс <a href="https://www.youtube.com/playlist?list=PL6jg6AGdCNaXo06LjCBmRao-qJdf38oKp">Advanced Java - Concurrency</a>
8797
- Головач, курс <a href="https://www.youtube.com/playlist?list=PLoij6udfBncgVRq487Me6yQa1kqtxobZS">Java Multithreading</a>
88-
98+
- [Перевод «Java Memory Model»](https://habr.com/ru/post/510454/)
8999
---
90100
## ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Задание первого занятия
91101

92-
Вычекать этот проект:
93-
```git clone https://github.com/JavaOPs/masterjava.git```
94-
95102
- Применить <a href="https://habrahabr.ru/post/114797/">оптимизацию</a> к MatrixUtil.singleThreadMultiply
96103
- Реализовать метод `MatrixUtil.concurrentMultiply`, позволяющий многопоточно <a href="https://ru.wikipedia.org/wiki/Умножение_матриц">перемножать квадратные матрицы N*N</a>.
97104
- Количество дочерних потоков ограничено `MainMatrix.THREAD_NUMBER`.
98105
- Добиться того, чтобы на матрице 1000*1000 многопоточная реализация была быстрее однопоточной
99106

100107
-----
101108
## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Подсказки по HW1
102-
- не делайте 1000 000 тасок, лучше их сделать крупнее
103-
- у меня разница между 4 и 1000 тасками по времени незаметна, поэтому делайте просто и не делайте сложно
104-
- наконец: можно не считать значение элемента результирующей матрицы C за раз, а накапливать (`concurrentMultiply3`). Мои результаты:
109+
- 1: не делайте 1000 000 тасок, лучше их сделать крупнее
110+
- 2: у меня разница между 4 и 1000 тасками по времени незаметна, поэтому делайте просто и не делайте сложно
111+
- 3: наконец: можно не считать значение элемента результирующей матрицы C за раз, а накапливать (`concurrentMultiply3`). Тогда трансформация B не нужна. Мои результаты:
105112
```
106113
Benchmark (matrixSize) Mode Cnt Score Error Units
107114
MatrixBenchmark.singleThreadMultiplyOpt 1000 ss 100 837,867 ± 25,530 ms/op
@@ -134,14 +141,14 @@ MatrixBenchmark.concurrentMultiply3 1000 ss 100 186,827 ± 11,882
134141
- Maven. Поиск и разрешение конфликтов зависимостей
135142
- Подключаем логирование с общими настройкам
136143
- Библиотеки и фреймворки для работы с JDBC.
137-
- Модуль persist
144+
- Модуль persistence
138145

139146
## Занятие 5
140147
- Разбор ДЗ
141148
- Сохранение в базу в batch-моде с обработкой конфликтов
142149
- Вставка в несколько потоков
143150
- Конфигурирование приложения (<a href="https://github.com/typesafehub/config">Typesafe config</a>)
144-
- Lombook
151+
- Lombok
145152

146153
## Занятие 6
147154
- Разбор ДЗ (доработка модели и модуля export)

0 commit comments

Comments
 (0)