Java Guru πŸ€“
13.2K subscribers
890 photos
17 videos
759 links
Канал с вопросами ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с собСсСдований!

По сотрудничСству ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @NadikaKir

Канал Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ РКН: https://vk.cc/cJrSQZ

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ coupling ΠΈ cohesion? Π§Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… (ΠΈΠ»ΠΈ ΠΎΠ±Π°) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ (высоким) ΠΈ/ΠΈΠ»ΠΈ слабым (Π½ΠΈΠ·ΠΊΠΈΠΌ)?

Coupling (Π—Π°Ρ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅) β€” ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π”ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΠΉ.

Cohesion (Π‘Π²ΡΠ·Π½ΠΎΡΡ‚ΡŒ) β€” ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сфокусированности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса. Π”ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ высокой.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ
Ρ‚ΡƒΡ‚ Π½Π° русском.
πŸ‘25❀‍πŸ”₯3🌚2⚑1
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ‘9
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
24%
NullPointerException
12%
ClassCastException
16%
Integer
47%
Код Π½Π΅ скомпилируСтся
πŸ‘19πŸŽ„5
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΡƒΠ± ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ?

ΠšΡƒΠ± ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ (scale cube, ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ The Art of Scalability) являСтся наглядным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Ρ‘Ρ… ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… способов увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния: sharding, mirrorring ΠΈ microservices.

β€’
Sharding (data partioning) β€” Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ.
β€’
Mirroring (horizontal duplication) β€” Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°.
β€’
Microservices β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы ΠΏΠΎ бизнСс-Π·Π°Π΄Π°Ρ‡Π°ΠΌ.
πŸ‘18πŸ”₯3
Π§Π΅ΠΌ сСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° отличаСтся ΠΎΡ‚ микросСрвисной?

БСрвис-ориСнтированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (SOA) β€” нСзависимый ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° основС распрСдСлённых, слабосвязанных замСняСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ интСрфСйсами ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ взаимодСйствия. ΠžΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΡ…Π²Π°Ρ‚Π° SOA β€” это всё прСдприятиС, Π³Π΄Π΅ происходит взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями. SOA Π΄Π΅Π»Π°Π΅Ρ‚ ставку Π½Π° доступ ΠΊ бизнСс-функциям прСдприятия Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ интСрфСйсы.
БСрвис Π² Π΄Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅:
β€’ прСдставляСт бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ (ΠΌΠ½ΠΎΠ³ΠΎ отвСтствСнностСй, связанных Π΅Π΄ΠΈΠ½ΠΎΠΉ бизнСс-ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, Ρ†Π΅Π»ΡŒΡŽ, смыслом ΠΈ Ρ‚.ΠΏ.);
β€’ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвисов ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½ΠΈΡ…;
β€’ являСтся "Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΌ ящиком" для своих ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².
Как ΠΈ всС ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ‡Π΅ΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ свой
манифСст

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (MSA) β€” частный случай SOA, ΠΏΠΎΠ±ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ взаимодСйствиС насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, слабосвязанных, Π»Π΅Π³ΠΊΠΎ измСняСмых ΠΈ взаимозамСняСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (микросСрвисов). MSA ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π° структуру ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния.
ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ:
β€’ выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ достаточно ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΡƒΡŽ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (Unix way β€” СдинствСнная ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ);
β€’ дСплоится ΠΈ разрабатываСтся нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… микросСрвисов;
β€’ являСтся нСзависимым ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… микросСрвисов (Π² Ρ‚ΠΎΠΌ числС максимальная минимизация ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°);
β€’ являСтся "Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΌ ящиком" для своих ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

МоТно Π½Π°ΠΉΡ‚ΠΈ нСсколько источников, Π³Π΄Π΅ MSA прСдставляСтся ΠΊΠ°ΠΊ Π½Π΅Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅, Π° SOA β€” староС ΠΈ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‰Π΅Π΅. Часто это Π΅Ρ‰Ρ‘ ΠΈ подаётся ΠΏΠΎΠ΄ соусом Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ИМΠ₯О β€” это большС маркСтинговая Ρ‚ΡƒΡ„Ρ‚Π°, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ сравнСниС. MSA ΠΈ SOA Π½Π΅ завязаны Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π² ΠΈΡ… использовании. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ с пользой для бизнСса.
πŸ‘19πŸ”₯10❀1β˜ƒ1
КакиС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄ΡƒΡ‚ Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ main?
πŸ‘12
КакиС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄ΡƒΡ‚ Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ main?
Anonymous Quiz
38%
IndexOutOfBoundsException
29%
Код Π½Π΅ скомпилируСтся
21%
NullPointerException
12%
ClassCastException
πŸ‘16πŸ‘Œ6🌭2
КакиС Π΅ΡΡ‚ΡŒ ограничСния Ρƒ микросСрвисов? НазовитС достоинства ΠΈ нСдостатки микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹

Достоинства:
β€’ МСньшС ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (микросСрвис) -> ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ инструмСнтов (Π² Ρ‚ΠΎΠΌ числС Π½Π° Π½ΠΎΠ²Ρ‹Π΅)
β€’ МСньшС ΠΊΠΎΠΌΠ°Π½Π΄Π° -> мСньшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΌΡ‘Ρ€ΠΆΠ΅ ΠΈ совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅
β€’ ΠŸΡ€ΠΎΡ‰Π΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
β€’ БыстрСС ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΠ°ΠΊ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ

НСдостатки:
β€’ Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ (микросСрвисами) β€” ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ выполняСтся ΠΏΠΎ сСти со всСм Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌ (сСриализация/дСсСриализация, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Ρ‚.Π΄.)
β€’ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ появлСниС нСобходимости распрСдСлённых Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
β€’ Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² логирования ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°
β€’ Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
β€’ Π‘Π»ΠΎΠΆΠ½Π΅Π΅ Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ошибки
β€’ НуТно Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΈ способным ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° любой ΠΈΠ· микросСрвисов отвалится
β€’ ΠžΠ±Ρ‰Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ растёт с количСством микросСрвисов
πŸ‘38πŸ€”2
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ‘7
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
17%
Exception
22%
ArithmeticExceptionFinally
29%
Код Π½Π΅ скомпилируСтся
31%
ExceptionFinally
🌚12πŸ‘8πŸ†3🌭2
Π§Π΅ΠΌ композиция отличаСтся ΠΎΡ‚ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ?

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ (composition)
β€” ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ" (HAS-A Relationship), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π»ΠΎΠ΅ явно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ врСмя ΠΆΠΈΠ·Π½ΠΈ своСй составной части.

АгрСгация (aggregation) β€” ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ" (HAS-A Relationship), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π»ΠΎΠ΅ Ρ…ΠΎΡ‚ΡŒ ΠΈ содСрТит свою ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, врСмя ΠΈΡ… ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ связано.
πŸ‘27🀯4πŸ€”3❀‍πŸ”₯1🀣1
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ‘16⚑5
КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ тСстовыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ)? Π§Π΅ΠΌ стаб отличаСтся ΠΎΡ‚ ΠΌΠΎΠΊΠ°?

ВСстовый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Test Double) β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² тСстах для ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй тСстируСмого ΠΊΠΎΠ΄Π°.

Π’ΠΈΠΏΡ‹ тСстовых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:
β€’ Dummy β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. НапримСр: Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², часто это просто null
β€’ Fake β€” Π·Π°Π³Π»ΡƒΡˆΠΊΠ°, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, Π½ΠΎ с ΡƒΡ€Π΅Π·Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. НапримСр: in-memory Π‘Π” (fake database)
β€’ Stub β€” Π·Π°Π³Π»ΡƒΡˆΠΊΠ° с ТСстко Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ Π½Π° Π²Ρ‹Π·ΠΎΠ²Ρ‹ со стороны тСстируСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (system under test β€” SUT) Π²ΠΎ врСмя тСста
β€’ Spy β€” это Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Stub, которая записываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΌ с Π½Π΅ΠΉ, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈ сколько Ρ€Π°Π·, ΠΊΠ°ΠΊ измСнилось состояниС ΠΈ Ρ‚.ΠΏ.
β€’ Mock β€” Π·Π°Π³Π»ΡƒΡˆΠΊΠ° с оТиданиями ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π° Π½Π΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² Ρ…ΠΎΠ΄Π΅ тСста

Из Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π·Π°Π³Π»ΡƒΡˆΠ΅ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Mock ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ повСдСния, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ состояния тСстируСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
πŸ”₯18πŸ‘12β˜ƒ1
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ‘8
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
33%
1
10%
2
41%
3
15%
4
πŸ‘15😱15β˜ƒ14🐳5🀨5
Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ

Π’Π΅Ρ€ΠΌΠΈΠ½ β€œΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌβ€ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ сСмСйство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ участок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… контСкстах.
ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ²:

1. Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Он подраздСляСтся Π½Π°:
β€’
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” описываСт вычислСния Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡΡΡŒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌΠΈ (Generic).
β€’ ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (inclusive) β€” описываСт вычислСния Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ для ΠΈ всСх Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ². ΠžΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚
ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Π‘Π°Ρ€Π±Π°Ρ€Ρ‹ Лисков.
2.
Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (ΠΈΠ»ΠΈ ad-hoc) β€” диспСтчСризация (ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅) ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким функциям для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Из Π½Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹:
β€’
ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° (overloading) позволяСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΈΡ… количСством (Π°Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ).
β€’
НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, описанным Π² стандартС языка, ΠΈ выполняСмоС компилятором.
πŸ‘25😱2🌭2πŸŽ‰1🍾1
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ‘10😒6
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
22%
falsetrue
33%
truetrue
14%
falsefalse
31%
ΠŸΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка компиляции
πŸ‘18
Какими коллСкциями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ
Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π²Ρ‹Π·Π²Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π΅ Ρ‚ΠΈΠΏΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Collections.synchronized*(). Π‘Π°ΠΌΡ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΈ самый ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ, создаСт ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ с синхронизациСй всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ synchronized.

Если Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ состоит Π² основном ΠΈΠ· чтСния, Π»ΡƒΡ‡ΡˆΠ°Ρ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° – CopyOnWriteArrayList, ΠΈ содСрТащий Π΅Π³ΠΎ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CopyOnWriteArraySet. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ достигаСтся ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива ΠΏΡ€ΠΈ любой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ массив остаСтся immutable. Program order достигаСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ volatile Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ массивС.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – использованиС Concurrent-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ:
β€’ ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ConcurrentSkipListMap, ConcurrentHashMap ΠΈ ConcurrentSkipListSet (Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² основС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ)
β€’ ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ConcurrentLinkedQueue ΠΈ ConcurrentLinkedDeque
β€’ Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ
πŸ‘27