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

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

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

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Π§Π΅ΠΌ отличаСтся final finally finalize?

Π’Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это Π΄Π°ΠΆΠ΅ синтаксичСски Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. Как ΠΈ вопрос ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Object, это способ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€.

finalize – ΠΌΠ΅Ρ‚ΠΎΠ΄-Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈΠ· Object.

final – ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСтся ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, полям, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ классам. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ становится нСизмСняСмым ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² наслСдниках. Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ наслСдников Π²ΠΎΠΎΠ±Ρ‰Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ API ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

Когда Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ локальная пСрСмСнная внСшнСй области видимости, ΠΎΠ½Π° обязана Π±Ρ‹Ρ‚ΡŒ
effectively final. Π’ этом случаС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всё Ρ€Π°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.

finally – Ρ‡Π°ΡΡ‚ΡŒ языковой конструкции try-catch-finally.

Π›ΡŽΠ±ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° try ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ исполнСниС Π² самый ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ catch (ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ). Π­Ρ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ catch Π² строгом порядкС, ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ-наслСдника, ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ. Π’ случаС multicatch Ρ‚ΠΎΡ‚ ΠΆΠ΅ порядок Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ catch.
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎ порядок.

ПослС выполнится Π±Π»ΠΎΠΊ finally. ВыполняСтся ΠΎΠ½ Π² любом случаС, Π±Ρ‹Π»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС – освобоТдСниС рСсурсов, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ дСйствия.

Для Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ классов («рСсурсов») добавляСтся интСрфСйс AutoCloseable, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° final выносится Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ close ΠΈ вызываСтся нСявно Π² ΠΊΠΎΠ½Ρ†Π΅
try-with-resources. Если Π² этой конструкции присутствуСт ΠΈ явный final, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ послС.

Java GuruπŸ€“ #java
❀6πŸ‘4πŸ”₯4
Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ checked ΠΈ unchecked ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ?

Вопрос Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΡΡƒΡ‚ΡŒ вопроса – объяснСниС ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Ρ‹Π²Π°ΡŽΡ‚ checked ΠΈ unchecked. Checked трСбуСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² сигнатурС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ throws; ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² throws Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. Unchecked ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π°ΠΆΠ΅ Ссли ΡƒΠΊΠ°Π·Π°Π½Π° Π² throws.

πŸ”˜Throwable – Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для всСго Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ throw ΠΈ Π² конструкции try-catch
πŸ”˜RuntimeException – Β«Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅Β» unchecked-ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
πŸ”˜Error – unchecked ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Β«ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹Β» прилоТСния. НС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ (хотя тСхничСски ΠΌΠΎΠΆΠ½ΠΎ). ВСорСтичСски JVM ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΌ состоянии ΠΈ Π½Π΅ Π΄Π°Π²Π°Ρ‚ΡŒ большС Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ
πŸ”˜Exception (ΠΊΡ€ΠΎΠΌΠ΅ RuntimeException) – checked ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

@javatasks #java
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ”₯4πŸ‘3
Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово default?

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ (с Java 1.5) это слово использовалось для объявлСния Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ значСния элСмСнтов Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ.

Π’ Java 8 вмСстС с лямбдами ΠΈ стримами появилась острая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ стандартныС интСрфСйсы Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Никто СстСствСнно Π½Π΅ собирался Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈ Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова default ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ интСрфСйса позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Ρ‚Π΅Π»ΠΎ. ВсС Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ старых интСрфСйсов ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ΡΡ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅Π³ΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ вызываСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ синтаксисом, Ρ‡Ρ‚ΠΎ ΠΈ внСшний класс ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ: InterfaceName.super.methodName().

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ подошли Π΅Ρ‰Π΅ Π½Π° шаг ΠΊ ввСдСнию Π² Java бСспроблСмной вСрсии мноТСствСнного наслСдования – примСсям (mixin). Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ состояния, поэтому ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ примСси всё Π΅Ρ‰Ρ‘ нСдоступны.


@javatasks #java
πŸ‘7πŸ”₯4❀1
Π’ ΠΊΠ°ΠΊΠΎΠΌ порядкС ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹?

ΠŸΡ€Π°Π²ΠΈΠ»Π° примСнСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² поля описаны Π² JLS 8.3.1:
πŸ”˜ΠΠ΅Π»ΡŒΠ·Ρ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄Π²Π°ΠΆΠ΄Ρ‹;
πŸ”˜ΠΠ΅Π»ΡŒΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ указания Π²ΠΎΠΎΠ±Ρ‰Π΅ свободный, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:
@Аннотации, доступ,
static final transient volatile


ВрСбования для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° находятся Π² JLS 8.4.3:
πŸ”˜Π’Π΅ ΠΆΠ΅ трСбования, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊ полю;
πŸ”˜Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ с abstract ΠΊΡ€ΠΎΠΌΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ protected ΠΈΠ»ΠΈ public;
πŸ”˜native ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ strictfp.

И Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ трСбуСтся, Π½ΠΎ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ порядок:
@Аннотации, доступ,
abstract static final synchronized native strictfp

Java GuruπŸ€“ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘10πŸ”₯6❀1
πŸ“ŽΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ѐасад (Facade)

Ѐасад β€” это структурный ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ слоТных подсистСм. Он скрываСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС с Π½Π΅ΠΉ, прСдоставляя Π±ΠΎΠ»Π΅Π΅ простой ΠΈ понятный API для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ИспользованиС:

🟑 Когда систСма состоит ΠΈΠ· мноТСства классов, ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ.
🟑 Когда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими подсистСмами.
🟑 Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ слоТной систСмой, скрыв Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

1️⃣ Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС с комплСксной систСмой, прСдоставляя ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс.
2️⃣ Π‘Π½ΠΈΠΆΠ°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов подсистСм, облСгчая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ тСстированиС.
3️⃣ Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ взаимодСйствия с систСмой, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹.

НСдостатки:

1️⃣ ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ограничивая возмоТности систСмы.
2️⃣ Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство ΠΊΠΎΠ΄Π° Π·Π° счёт добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ фасадного класса.
3️⃣ Если фасад слишком абстрактСн, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ слоТным для понимания ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

πŸ“Œ ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ѐасад ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько подсистСм ΠΏΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, дСлая систСму Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ простой для использования. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌΠΈ слоТной настройки, ΠΈΠ»ΠΈ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ взаимодСйствиС с мноТСством ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ. Ѐасад ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с систСмой.

βœ… Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° #java
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯10❀6πŸ‘2
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ логичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°?

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ || ΠΈ && Π»Π΅Π²ΠΎ-ассоциативны, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. Если ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ оказалось true Π² || ΠΈΠ»ΠΈ false Π² && – ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Ρ€Π΅ΡˆΠ΅Π½, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅. Π’ этом случаС происходит Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Β«ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅Β» (short-circuiting) – ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ вычисляСтся Π·Π° Π½Π΅Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ.

Π­Ρ‚Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° null Π² ΠΎΠ΄Π½Ρƒ строку:
return param != null && param.getBoolMember();


Но ΠΈΠ½ΠΎΠ³Π΄Π° такая ситуация Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅ Π±Π°Π³ΠΈ, Ссли Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ – Π½Π΅ пСрСмСнная, Π° функция с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом. Для этой ситуации Π²Π²Π΅Π΄Π΅Π½Ρ‹ вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π΅Π· ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ замыкания: | ΠΈ &. Π­Ρ‚ΠΎ логичСскиС Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Β«Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΒ» ΠΈ Β«Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈΒ».

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ доступСн ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ»ΠΈΒ» ^. Он ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ эквивалСнтСн Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятному !=. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для логичСских Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² нСдоступны.


Java GuruπŸ€“ #java
❀8πŸ‘4πŸ”₯1
πŸ‘©β€πŸ’» 31 июля стартуСт курс Β«Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ» ΠΎΡ‚ OTUS β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² 2025

🦾 Вас ΠΆΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ кСйсы: настройка окруТСния, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, синтаксис Java, Spring ΠΈ Docker. ΠœΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΈΠΏΠ»ΠΎΠΌ OTUS цСнят HR Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… компаниях.

Если Π²Ρ‹ сисадмин, тСстировщик, Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ ΠΈΠ»ΠΈ просто Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля β€” этот курс для вас.
ΠœΡ‹ Π½Π°ΡƒΡ‡ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сСрвСрныС Π²Π΅Π±-прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PostgreSQL, Kafka ΠΈ Kubernetes, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡŽΠΌΠ΅ ΠΏΠΎΠ΄ Middle-Java-Dev.

🎁 Π”Π°Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ скидку Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ - JAVA7

πŸ‘‰ ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ заявку ΠΈ ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅: https://vk.cc/cNTt7j

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❀4πŸ‘2πŸ”₯2
ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ цСлочислСнныС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, стоит ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ знания ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ прСдставлСнии Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… чисСл. Π’ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ two's complement – для значСния 0 всС Π±ΠΈΡ‚Ρ‹ Π½ΡƒΠ»ΠΈ, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ максимального значСния Π½Π° 1 получаСтся минимальноС.

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ &, | ΠΈ ^ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ «И», Β«Π˜Π›Π˜Β» ΠΈ Β«ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜Β» (XOR) соотвСтствСнно. Π—Π΄Π΅ΡΡŒ особСнно интСрСсСн XOR:

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Β«ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ»ΠΈΒ» с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π΄Π²Π° Ρ€Π°Π·Π° Π΄Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π—Π° счСт этого Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ выступит ΠΊΠ»ΡŽΡ‡ΠΎΠΌ;
Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ XOR рСализуСтся XOR-ΠΎΠ±ΠΌΠ΅Π½ – Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° значСниями ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти ΠΈ Π±Π΅Π· риска пСрСполнСния. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· популярных вопросов для собСсСдования.

Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ отрицания (дополнСния) ~. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π΅Π½ Β«ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ»ΠΈΒ» с самим собой – всС Π±ΠΈΡ‚Ρ‹ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ~x эквивалСнтно -x-1. ~0 == -1.
Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги: Π»Π΅Π²Ρ‹ΠΉ << ΠΏΡ€Π°Π²Ρ‹ΠΉ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ >> ΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ >>>. Π›Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ – Ρ‡Ρ‚ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ, ΠΏΡ€Π°Π²Ρ‹ΠΉ – Π½Π° сколько Π±ΠΈΡ‚ΠΎΠ².

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, дистанция сдвига, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ большС доступных разрядов – 31 для int ΠΈ 63 для long. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ младшиС 5 ΠΈ 7 Π±ΠΈΡ‚ΠΎΠ² соотвСтствСнно. Π’ΠΎ Π΅ΡΡ‚ΡŒ для int ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x << 33 эквивалСнтно x << 2.

a << b эквивалСнтно ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ a Π½Π° 2 Π² стСпСни b.
a >> b совпадаСт с Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° 2 Π² стСпСни b, с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΠΈΠ·. Для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… a Ρ‚ΠΎ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ a/pow(2,b). Для Π½Π΅ дСлящихся Π½Π°Ρ†Π΅Π»ΠΎ Π½Π° pow(2,b) ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… это a/pow(2,b)-1.

Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ число Π½Π΅ ΠΊΠ°ΠΊ two's complement, Π° ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Integer.MIN_VALUE Π±ΡƒΠ΄Π΅Ρ‚ сдвинут Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это сдвигаСтся число Π½Π° 1 большСС Ρ‡Π΅ΠΌ Integer.MAX_VALUE.

Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ сдвига Π²Π»Π΅Π²ΠΎ Π½Π΅ сущСствуСт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ совпадал Π±Ρ‹ со Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ сдвигом, ΠΈ Π±Ρ‹Π» Π±Ρ‹ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ.


Java GuruπŸ€“ #java
πŸ”₯6❀4πŸ‘3
πŸ”Π’Π΅ΡΡ‚ΠΎΠ²ΠΎΠ΅ собСсСдованиС с Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΈΠ· Oracle Π·Π°Π²Ρ‚Ρ€Π°

23 июля(ΡƒΠΆΠ΅ Π·Π°Π²Ρ‚Ρ€Π°!) Π² 19:00 ΠΏΠΎ мск ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ собСсСдованиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° настоящСС ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ Π½Π° Middle Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Как это Π±ΡƒΠ΄Π΅Ρ‚:
πŸ“‚ АлСксСй Π£ΡˆΠ°Ρ€ΠΎΠ²ΡΠΊΠΈΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Oracle ΠΈ EPAM, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ вопросы ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ-Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΡ†Ρƒ
πŸ“‚ АлСксСй Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ рСспондСнта, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Π΅Π³ΠΎ ΠΎΡ‚ вас ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ
πŸ“‚ Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ любой вопрос АлСксСю

Π­Ρ‚ΠΎ бСсплатно. Π­Ρ„ΠΈΡ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… мСнторской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ ШОРВКАВ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свой Π³Ρ€Π΅ΠΉΠ΄, Π—ΠŸ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ скиллы.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈ Π² нашСго Π±ΠΎΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° эфир β†’ @shortcut_sh_bot

Π Π΅ΠΊΠ»Π°ΠΌΠ°.
О Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°Ρ‚Π΅Π»Π΅
Please open Telegram to view this post
VIEW IN TELEGRAM
❀3πŸ‘2πŸ”₯2
Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ A ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ B?

Π’ Java доступны Ρ‚Ρ€ΠΈ способа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ². Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Ρ€Π°Π·Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ порядкС убывания быстродСйствия:

instanceof – Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, самый быстрый ΠΈ самый ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ. Если Π΅ΡΡ‚ΡŒ экзСмпляр A ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ B явно, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ. Если A (Ρ‚ΠΎΡ‡Π½Π΅Π΅ Ρ‚ΠΈΠΏ хранящСй экзСмпляр A ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΠΈ B Π½Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ наслСдования – экзСмпляр Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ B ΠΈ компиляция ΡƒΠΏΠ°Π΄Π΅Ρ‚ с ошибкой inconvertible types.

Class::isInstance – ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° A. Π•Π³ΠΎ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° экзСмпляр A Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, Π½ΠΎ B – нСизвСстный Π½Π° этапС компиляции Ρ‚ΠΈΠΏ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… A a ΠΈ Class bClass, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ bClass.isInstance(a).

Class::isAssignableFrom – ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Class<A>. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ остаСтся, Ссли экзСмпляра A Π½Π΅Ρ‚. bClass.isAssignableFrom(aClass).

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ способ – имСя экзСмпляр Ρ‚ΠΈΠΏΠ° A привСсти Π΅Π³ΠΎ ΠΊ B. Если Ρ‚ΠΈΠΏΡ‹ Π±Ρ‹Π»ΠΈ нСсовмСстимы, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ выбросит ClassCastException. Π­Ρ‚ΠΎ Π²ΠΎ всСх смыслах ΠΏΠ»ΠΎΡ…ΠΎΠΉ способ, ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π½Π΅Ρ‚ оправдания. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ аргумСнтация описана Π² Effective Java Item 57.


Java GuruπŸ€“ #java
❀6πŸ‘5πŸ”₯3
Π§Π΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс отличаСтся ΠΎΡ‚ лямбды?

Лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ лСгковСсный синтаксис. НС Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ лямбда Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ – ΠΎΠ½ автоматичСски вывСдСтся ΠΈΠ· контСкста. Лямбда-выраТСния Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² язык Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΊΠ°ΠΊ синтаксичСский сахар.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρƒ класса Π΅ΡΡ‚ΡŒ поля. ЭкзСмпляр Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса сохраняСт своС состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, ΠΈ мСняСт Π΅Π³ΠΎ ΠΏΡ€ΠΈ нСобходимости. Для лямбды доступСн лишь Π·Π°Ρ…Π²Π°Ρ‚ ΠΈ effectively final использованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Лямбдой рСализуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс – это Ρ‚ΠΈΠΏ с СдинствСнным абстрактным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Анонимным классом ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ любой Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΉ класс ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс с Π»ΡŽΠ±Ρ‹ΠΌ количСством абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Анонимный класс создаСт Π½ΠΎΠ²Ρ‹ΠΉ скоуп, лямбда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ снаруТи, Π² лямбдС Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции Β«variable is already definedΒ», Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС скроСт (shadowing) внСшнюю ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JVM, для лямбды Π½Π΅ создаСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ .class Ρ„Π°ΠΉΠ»Π°, ΠΊΠ°ΠΊ это происходит для Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса. БоотвСтствСнно, Π½Π΅ происходит ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ класса. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ invokedynamic ΠΈ класс гСнСрируСтся Π½Π° Π»Π΅Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LambdaMetafactory. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ лямбда-выраТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстрСС.


Java GuruπŸ€“ #java
πŸ”₯12❀4πŸ‘4🌭1
Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-массив. Π’ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ любоС количСство элСмСнтов. Π•Ρ‰Π΅ с Java 5 для этого случая добавился синтаксичСский сахар: Variable-length argument (vararg). Π’Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ... ставятся ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ становится ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ упаковывая ΠΈΡ… Π² массив.

На ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массива ΠΈ Π²Π°Ρ€Π°Ρ€Π³Π° Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ: vararg-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Foo... прСвращаСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Foo[], Π½Π° этапС Π²Ρ‹Π·ΠΎΠ²Π° подставляСтся нСявноС инстанцированиС ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСоднозначностСй, Π½Π° vararg Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ послСдний Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Vararg, ΠΊΠ°ΠΊ массив, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым. Иногда это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΌΡƒ повСдСнию. Допустим, ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ int... ΠΈ float.... Π’Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с int, ΠΊΠ°ΠΊ с Π±ΠΎΠ»Π΅Π΅ спСцифичным Ρ‚ΠΈΠΏΠΎΠΌ. НаличиС ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ с нСсовмСстимыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int... ΠΈ boolean..., ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊ ошибкС компиляции Β«Ambiguous method callΒ».

Когда Ρ‚ΠΈΠΏΠΎΠΌ Π²Π°Ρ€Π°Ρ€Π³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ generic-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ warning Β«Possible heap pollution from parameterized vararg typeΒ». Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π² Ρ‡Π΅ΠΌ этот риск, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ heap pollution, ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΎΠ± этом компилятор Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ
@SafeVarargs.

Java GuruπŸ€“ #java
πŸ‘10❀3πŸ”₯2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ /api/customers/{5}, Ссли записи c id 5 Π½Π΅Ρ‚
πŸ‘6πŸ”₯3
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ /api/customers/{5}, Ссли записи c id 5 Π½Π΅Ρ‚
Anonymous Quiz
27%
HTTP 404 (Not Found) с Ρ‚Π΅Π»ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° null
52%
HTTP 200 (OK) с Ρ‚Π΅Π»ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° null
6%
NullPointerException
8%
HTTP 500 (Internal Server Error)
7%
HTTP 400 (Bad Request)
πŸ”₯6πŸ‘5❀1
This media is not supported in your browser
VIEW IN TELEGRAM
Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚Ρ‹ Π½Π° Yandex Robotics Day ΡƒΠΆΠ΅ 16 августа!

На складах ΠœΠ°Ρ€ΠΊΠ΅Ρ‚Π°, Π›Π΅ΠΌΠ°Π½Ρ‹ ΠŸΡ€ΠΎ, ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚ΠΊΠ°, Π›Π°Π²ΠΊΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ€ΠΎΠ±ΠΎΡ‚Ρ‹ ЯндСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ быстро ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹, ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ посылки ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ быстро ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ, спСциалисты ЯндСкс Роботикс постоянно ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΈΡ….

16 августа Π² МосквС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΌΠΈΡ‚Π°ΠΏ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ расскаТут, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°ΡŽΡ‚:
β€” Π‘Π΅Ρ€Ρ‘ΠΆΠ° Π‘Ρ‚Π°Ρ€ΠΈΠΊΠΎΠ² выступит с Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡ€ΠΎ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Yandex Robotics ΠΈ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Yandex RMS
β€” Π”ΠΈΠΌΠ° ΠœΠΎΠ²Ρ‡Π°Π½ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт ΡƒΠΌΠ½ΡƒΡŽ Ρ€ΠΎΠ±ΠΎΡ€ΡƒΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ imitation learning ΠΈ RL
β€” Максим Пшибло расскаТСт, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Yandex Robotics Management System ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколькими Ρ€ΠΎΠ±ΠΎΡ‚Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ этой систСмС

ΠšΡ€ΠΎΠΌΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСзСнтация Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π°, выставка Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ вовсю Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° складах, Π½Π΅Ρ‚Π²ΠΎΡ€ΠΊΠΈΠ½Π³ ΠΈ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π°Ρ„Ρ‚Π΅ΠΏΠ°Ρ‚ΠΈ с экспСртами ЯндСкс Роботикс.

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈ Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ»Π»Π΅Π³!

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО "Π―ΠΠ”Π•ΠšΠ‘ ΠœΠΠ ΠšΠ•Π’". ИНН 9704254424.
❀5πŸ‘1
Π§Ρ‚ΠΎ Ссли Π±Π»ΠΎΠΊ finally выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅?

Π‘Π»ΠΎΠΊ finally выполняСтся Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π»ΠΎ Π»ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ try ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Когда ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² try, Π½ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² finally, Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного. Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ стСку Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ попадСтся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ catch.

Вопрос ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ случай, ΠΊΠΎΠ³Π΄Π° исполнСниС ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² finally Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выброса ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ· try. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· finally Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ собой ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· try ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ стСку вмСсто Π½Π΅Π³ΠΎ. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ попросту Π·Π°Π±Ρ‹Ρ‚Π°.

Вакая маскировка ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ услоТняСт ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΅Ρ‘. НапримСр IntelliJ IDEA Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ throw Π²Π½ΡƒΡ‚Ρ€ΠΈ finally.


Java GuruπŸ€“ #java
❀6πŸ‘6πŸ”₯2
Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив?

Object.clone()
ΠΈ System.arraycopy(). НативныС способы копирования, самыС быстрыС ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ…. УнаслСдованный ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса clone() ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ вСсь массив Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². arraycopy(), Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, максимально Π³ΠΈΠ±ΠΊΠΈΠΉ – позволяСт ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ массива ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ массив, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Arrays.copyOf(), Arrays.copyOfRange() ΠΈ всС ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ спСциализированныС способы копирования. Π’Π½ΡƒΡ‚Ρ€ΠΈ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ System.arraycopy().

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· стрим.
Arrays.stream(sourceArray).toArray(). Π£Π΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ удобства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², привСдСния Ρ‚ΠΈΠΏΠΎΠ², ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ – класс SerializationUtils ΠΈΠ· Apache Commons.

ВсС пСрСчислСнныС способы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΡƒΡŽ копию – ΠΎΠ±Π° массива Π² ΠΈΡ‚ΠΎΠ³Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ копию – Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new создаСтся пустой массив Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ заполняСтся копиями элСмСнтов. Stream API здСсь ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ многопоточности.

Π‘Π°ΠΌΡ‹ΠΉ быстрый, Π½ΠΎ уТасный ΠΏΠΎ эффСктивности способ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ копирования массива Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ копирования ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов – сСриализация+дСсСриализация. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΠ»ΠΎΡ…ΠΎΠΌΡƒ способу для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π°, Π½ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ быстрого ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°, ΠΈΠ»ΠΈ для тСстового ΠΊΠΎΠ΄Π°.


Java GuruπŸ€“ #java
πŸ‘9❀3πŸ”₯3
πŸš€ Apache Kafka β€” Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… микросСрвисных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€! Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ 80% Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ отказоустойчивый ΠΎΠ±ΠΌΠ΅Π½ сообщСниями?

πŸ“… 30 июля Π² 19:00 МБК β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€!

На мСроприятии ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ:
πŸ”Ή ВзаимодСйствиС Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€ΠΎΠΊΠ΅Ρ€ сообщСний
πŸ”Ή ΠšΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ порядок доставки
πŸ”Ή Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ использования Kafka

Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ отказоустойчивых систСм ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ пропускной способности.

🎟 Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас β€” Π²Π΅Π±ΠΈΠ½Π°Ρ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса Β«Apache KafkaΒ», ΠΈ всС участники ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ скидку Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: https://vk.cc/cO4kns

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
❀4πŸ‘2πŸ”₯2πŸ₯±1
Π§Π΅ΠΌ отличаСтся Closeable ΠΎΡ‚ AutoCloseable?

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ AutoCloseable прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ рСсурса, ΠΏΠΎΠΊΠ° Ρ‚ΠΎΡ‚ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚. Π’ СдинствСнном Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ close() ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° закрытия этого рСсурса. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ – дСскриптор ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (ObjectOutputStream).

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ этого интСрфСйса Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² языковой конструкции try-with-resource. Всё это появилось Π² Java вСрсии 7.

Π”ΠΎ Java 7 ΡƒΠΆΠ΅ сущСствовал ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ интСрфСйс – Closeable. Бмысл Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅. Он всё Π΅Ρ‰Π΅ доступСн Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, Π½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AutoCloseable. Π§Ρ‚ΠΎΠ±Ρ‹ экзСмпляры старого Closeable Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² try-with-resource, Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° старого интСрфСйса Closeable Π±Ρ‹Π»Π° Π² узости Ρ‚ΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ close(). ΠšΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ интСрфСйсС AutoCloseable с IOException Π΄ΠΎ Exception.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ – ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° close(). Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Closeable Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ идСмпотСнтности, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ AutoCloseable Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты.


Java GuruπŸ€“ #java
πŸ‘13πŸ”₯5
Какая строка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС?
πŸ‘3πŸ”₯2