Notes about Java 🌴
197 subscribers
41 photos
1 video
3 files
76 links
vk.com/notes_about_java
Научим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с нуля!
1. Π’ΠΈΠ΄Π΅ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² ΠΊΠΎΠ΄Π΅
2. ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
3. ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΡƒΡ€ΠΎΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠΌ
4. ΠŸΠΎΠ½ΡΡ‚Π½Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ
5. МоТно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ занятий
@max_urusoff
Download Telegram
#ForkJoinPool #FixedThreadPool #parallelStream #stream
ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ работая Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ FixedThreadPool ΠΏΡ€ΠΈ поднятии parallelStream(), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ создаст Π²Π½ΡƒΡ‚Ρ€ΠΈ стрима Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ForkJoinPool - ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ полная каша.
К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли ΠΆΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ стрим стартуСт Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚ΠΈΠΏΠ° fork join, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π΅ происходит, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ стартС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ стрима ΠΎΠ½ ΠΏΠΎΠΉΠΌΠ΅Ρ‚ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ForkJoinPool ΠΈ стрим Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.
На скринС Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° плохая ситуация ΠΈ Π²ΠΈΠ΄Π½Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ (Π½Π΅ fork join) ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² стрим ΠΈ создали Π² этом мСстС fork join ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎ количСству доступных ядСр для элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
Π’ΠΎΡ‚ Ρ‚Π°ΠΊ.
Π­Ρ‚ΠΈ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π΅ "ΡƒΠ·Π½Π°ΡŽΡ‚" Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… стримах.
Π’ΠΈΠΏΠ° "эй Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰, Ρ‚Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‘ΡˆΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ стрим Π²Π½ΡƒΡ‚Ρ€ΠΈ многопоточности ΠΈ Π½Π΅Ρ‡Π΅Π³ΠΎ Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π² сСбС".
❀1🀯1
#coffee #javastory #java
ΠšΠΎΡ„Π΅ с Тивописного острова Π―Π²Π° (Java).

ΠšΠΎΡ„Π΅ Π±Ρ‹Π» Π·Π°Π²Π΅Π·Π΅Π½ Π² ИндонСзию голландскими колонистами Π² ΠΊΠΎΠ½Ρ†Π΅ 17 Π²Π΅ΠΊΠ°. ΠšΠΎΡ„Π΅ΠΉΠ½Ρ‹Π΅ сСмСна Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΉΠ½ΠΎ Π²Ρ‹Π²Π΅Π·Π΅Π½Ρ‹ ΠΈΠ· Π™Π΅ΠΌΠ΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 100 Π»Π΅Ρ‚ Ρ€Π°Π½ΡŒΡˆΠ΅. К слову, смСсь ИндонСзии Π―Π²Ρ‹ ΠΈ Π™Π΅ΠΌΠ΅Π½Π° Мокки стала ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΡ„Π΅ΠΉΠ½ΠΎΠΉ смСсью Π² истории чСловСчСства, которая Ρ‚Π°ΠΊ ΠΈ Π½Π°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ β€” «Мокка Π―Π²Π°Β».
#StringBuilder #concat #String
StringBuilder для склСйки стрингов вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° "+" ΠΈΠ»ΠΈ .concat().
Π Π°Π·Π½ΠΈΡ†Π° Π² пСрформансС отличаСтся - Π² Ρ€Π°Π·Ρ‹.
- Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ… "Effective Java" стр. 279
#ThreadName #setName #ThreadIndex
Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊ ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
На скринС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ - ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‚ΡŒ имя для ForkJoin ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² с Π΄ΠΎΠ±Π°Π²ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎ индСксу Π² ΠΏΡƒΠ»Π΅.
Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡƒΠ΄Π° (ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ThreadPool) этот ΠΏΠΎΡ‚ΠΎΠΊ ΠΈ наглядно ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎ сСбС Π² Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.
πŸ”₯1
function_init_apply.JPG
46.6 KB
#Function
Π’ Π΄Π°Π½Π½ΠΎΠΌ контСкстС Function<Table, Boolean> checkPortionLoad - это ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.
Удобство использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° checkPortionLoad.apply() Π½Π° Π²Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Boolean) прям Π² Ρ‚ΠΎΠΌ классС Π³Π΄Π΅ Π½Π°Π΄ΠΎ.
ΠŸΡ€ΠΈ этом сам Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ "снаруТи" класса.
πŸ€”1
#Git #Commit
https://uncaughtexception.ru/posts/2017/03/22/kogda-nuzhno-delat-kommit/

Бтолкнулся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° дСлаСшь ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ попросту Ρ‡Π°Ρ‰Π΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π½ΡƒΠΆΠ½ΠΎΠΉ части ΠΈ Π½Π΅ копишь большой снСТный ΠΊΠΎΠΌ, Ρ‚ΠΎ Π΄Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²ΠΈΠ΄Π΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ понятных для тСбя ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π»Π΅Π³Ρ‡Π΅. Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π° Ρ‚Π΅ΠΌΡƒ прикладываСтся.
А ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹?
ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ‚ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π° ΠΏΠΎΡ‚ΠΎΠΌ - всС Π² ΠΎΠ΄ΠΈΠ½ большой?
πŸ‘2
#CompletableFuture #Thread #Future #ThreadSafe
Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ выполнСния Thread ΠΏΠΎΡ‚ΠΎΠΊΠ°?
А Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΏΠ°Π»ΠΎ ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΈ Π³Π΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСрвиса Π½Π° Π±Π°Π·Π΅ многопоточности Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ оТидания ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ»Ρ…ΠΎΠ·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»ΠΎΠ²ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ - ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ бСзопаснСС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ CompletableFuture.

О CompletableFuture ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь - https://annimon.com/article/3462.

На Π΄Π°Π½Π½ΠΎΠΌ ΠΆΠ΅ кускС ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ CompletableFuture Π·Π°Π΄Π°Ρ‡ΠΈ (строка 53) ΠΈ ΠΊΠ°ΠΊ эти ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚Π΄Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ "нСотходя ΠΎΡ‚ кассы" (строка 59) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get().
Под Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Runnable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π³Π»Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ свои Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈ ΠΏΠΎ ядрам процСссора.
#Component #Repository #Service #Spring
ΠšΠ°ΠΊΡƒΡŽ Spring Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π΄ классом, @Component ΠΈΠ»ΠΈ @Repository? А ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ @Service?

Π‘Ρ‚Π°Ρ‚ΡŒΡ для понимания Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π° Ρ‚Π΅ΠΌΡƒ:
https://coderlessons.com/articles/java/raznitsa-mezhdu-component-service-controller-i-repository-v-spring

Π’ контСкстС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° аннотация @Repository ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Spring Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это класс пСрсистСнтного слоя.
А для Π±ΠΎΠ»Π΅Π΅ ясной Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния - слуТит основой для хранСния ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
Богласны с Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ?
#Maven #DependencyScope #Scope #pom #dependencyManagement
#provided

ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎ Maven.
Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия зависимости "Dependency scope"?
И ΠΊΠ°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅?
<scope>?</scope>

ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия scope опрСдСляСт этап ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ссылкС:
https://java-online.ru/maven-dependency.xhtml#scope
#AtomicReference #ThreadSafe
ΠŸΡ€ΠΈΠ²Π΅Ρ‚.
А ΠΊΠ°ΠΊ Π²Ρ‹ опрСдСляСтС "Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ" Π² Java?
ΠœΠΎΠΆΠ΅Ρ‚ это Ρ‚ΠΎΠΆΠ΅ самоС Ρ‡Ρ‚ΠΎ ΠΈ синхронизация?

На ΠΌΠΎΠΉ взгляд Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ "нСдСлимости" ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
Π’ΠΎ Π΅ΡΡ‚ΡŒ дСйствиС Π»ΠΈΠ±ΠΎ выполняСтся Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ - это ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚) Π»ΠΈΠ±ΠΎ дСйствиС ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ расколбасило Π² Π΅Π³ΠΎ состоянии.

Бсылка Π½Π° бСсСду ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:
https://ru.stackoverflow.com/questions/616278/%D0%90%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%B8-%D0%BD%D0%B5%D0%B0%D1%82%D0%BE%D0%BC%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-java
#StreamAPI #Map #groupingBy #mapping
Java Stream API Ρ€ΡƒΠ»ΠΈΡ‚.

Волько Ρ‡Ρ‚ΠΎ воспользовался ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ» для сСбя удобство стримов.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ - Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° списка Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΠΎ ΠΈΡ… долТности, ΠΏΡ€ΠΈ этом нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π°:

Map<String, Set<String>> map4 = workers.stream().collect(

Collectors.groupingBy(Worker::getPosition,

Collectors.mapping(Worker::getName,Collectors.toSet())));


https://habr.com/ru/post/348536/
πŸ‘2
#mockbean #spybean #springboottest #ioc
Π”Π΅Π»Π°Π» я Ρ‚ΡƒΡ‚ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ тСстов ΠΏΡ€ΠΈ бСгствС ΠΎΡ‚ ΠΌΠΎΠ΄Π½ΠΎΠ³ΠΎ SpringBoot Π² Ρ…ΡƒΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ spring-context...

И понял Ρ‡Ρ‚ΠΎ оказываСтся Π² SpringBoot Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ интСрСсныС Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ JUnit тСстов ΠΊΠ°ΠΊ @SpyBean ΠΈ @MockBean, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ со Spring IoC ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ зависимости Π² контСкстС тСстовых классов.

Π”Π°Π΄ΠΈΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ опрСдСлСния:
- @MockBean - ΠΌΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ (Mockito Mock) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ спринга.
- @SpyBean - Π΄Π΅Π»Π°Π΅Ρ‚ шпиона (Mockito Spy) ΠΈΠ· спринг Π±ΠΈΠ½Π°.

SpringBoot ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠΈΡ€Π½Ρ‹ΠΉ, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ приятныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ эти Π΄Π²Π΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ Π² составС.

Для ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ:
https://java-ru-blog.blogspot.com/2020/04/spring-boot-testing-mock-spy.html
πŸ€”1
#superBuilder #builder #lombok

Как извСстно аннотация Lombok @Builder ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ, особСнно ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ мноТСства ΠΏΠΎΠ»Π΅ΠΉ Π² классС.

А ΠΊΠ°ΠΊ насчСт Π±ΠΈΠ»Π΄Π΅Ρ€Π° для абстрактного класса ΠΈ наслСдников?
Для этого Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - аннотация @SuperBuilder!

ΠžΠ±Ρ‰Π°Ρ схСма примСнСния Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π²ΠΊΡƒΠΏΠ΅ с наслСдниками:
@SuperBuilder
public abstract class Parent {
// Π½Π°Ρ‡ΠΈΠ½ΠΊΠ°...
}


@SuperBuilder
public class Son extends Parent {
// вкусная Π½Π°Ρ‡ΠΈΠ½ΠΊΠ°...
}

@SuperBuilder
public class GrandSon extends Son {

// Π½Π°Ρ‡ΠΈΠ½ΠΊΠ° Π΅Ρ‰Π΅ вкуснСй...
}

Π’Π°ΠΆΠ½ΠΎ - @SuperBuilder нСльзя ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ с @Builder Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ссылкС:
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
πŸ‘1
#builder #lombok

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ builder ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ссли аннотация Π²Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° конструктор Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈ Π½Π° конструктор наслСдника?

На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° - компилятор ругаСтся Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ builder ΠΏΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.

РСшСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ своС имя Π±ΠΈΠ»Π΄Π΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для наслСдника:
@Builder(builderMethodName = "sunnyBuilder")

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ссылкС Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ "2.3. БосущСствованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Builders".
https://javascopes.com/lombok-builder-inheritance-bce31ecd/
πŸ‘1
#mutable #immutable #cuncurrency

https://youtu.be/f8nEQ5zDsOQ

На ΠΌΠΎΠΉ взгляд настоящСС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° особСнно Π² контСкстС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡ΠΊΠΈ - это Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‚Π΅ΠΌΠ°.

Π’ этом Π²ΠΈΠ΄Π΅ΠΎ Π°Π²Ρ‚ΠΎΡ€ ΠΊΡ€Π°Ρ‚ΠΊΠΎ раскрываСт вопрос ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ - это Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ!
πŸ€”1