en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

Π§Π°ΡˆΠ΅Ρ‡ΠΊΠ° Java

Π§Π°ΡˆΠ΅Ρ‡ΠΊΠ° Java

Open in Telegram

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Java Π½Π° русском ΠΈ английском Π Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ: @tproger_sales_bot ΠŸΡ€Π°Π²ΠΈΠ»Π° общСния: https://tprg.ru/rules Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ‹: @tproger_channels

Show more
8 314
Subscribers
-624 hours
-227 days
-6330 days
Posts Archive
Hibernate Validator 9.2: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π΅Ρ‚Π΅ Hibernate Validator 9.2 появились @PasswordStrength,
Hibernate Validator 9.2: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π΅Ρ‚Π΅ Hibernate Validator 9.2 появились @PasswordStrength, @NotCompromised ΠΈ @PasswordPolicy. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ пароля, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² извСстных ΡƒΡ‚Π΅Ρ‡ΠΊΠ°Ρ… ΠΈ соблюдСниС Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ». Π’ описании Ρ€Π΅Π»ΠΈΠ·Π° Π΅ΡΡ‚ΡŒ ваТная ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ: Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ†Π΅Π½Ρ‰ΠΈΠΊΠ° стойкости ΠΈ сСрвиса ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ прСдоставляСт. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ свои Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ PasswordStrengthEstimator ΠΈ CompromisedPasswordChecker. ВсС Ρ‚Ρ€ΠΈ ограничСния ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ null допустимым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ @NotNull ΠΈΠ»ΠΈ @NotBlank. PasswordPolicy ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ класс. КаТдоС Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ создаёт ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ трСбования Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Π­Ρ‚ΠΎ Π±Π΅Ρ‚Π°; ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ API Π΅Ρ‰Ρ‘ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сСрвисов Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ стоит Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ основу для знакомства с интСрфСйсами. #java #hibernate

ΠŸΠΎΡ‡Π΅ΠΌΡƒ javac Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Integer ΠΈΠ· Set ΠœΠ΅Ρ‚ΠΎΠ΄ remove(Object) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ компилируСтся, Π½
ΠŸΠΎΡ‡Π΅ΠΌΡƒ javac Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Integer ΠΈΠ· Set<Short> ΠœΠ΅Ρ‚ΠΎΠ΄ remove(Object) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ компилируСтся, Π½ΠΎ оставляСт элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ:
Set<Short> values = new HashSet<>();
values.add((short) 1);
values.remove(1);
Π’ послСднСй строкС 1 упаковываСтся Π² Integer. Π’ Π½Π°Π±ΠΎΡ€Π΅ Π»Π΅ΠΆΠΈΡ‚ Short, ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ. Π’ Ρ€Π°Π·Π±ΠΎΡ€Π΅ Error Prone ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ компиляции. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ javac ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свСдСния ΠΎ Ρ‚ΠΈΠΏΠ°Ρ…: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CollectionIncompatibleType Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ нСсовмСстимый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” YYYY вмСсто yyyy Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄Π°Ρ‚Ρ‹: Π³ΠΎΠ΄ Π½Π΅Π΄Π΅Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ дСкабря. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° MisusedWeekYear ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ ΠΈ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Для ΠΏΡ€Π°Π²ΠΈΠ» своСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ BugChecker, Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Java-шаблонами Refaster. #java #инструмСнты

Π’ JavaDoc ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Π³ для ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ использованию ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π²Π½Ρƒ
Π’ JavaDoc ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Π³ для ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ использованию ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ описания. Для JDK 28 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ‚Π΅Π³ @note, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выдСляСт Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ OpenJDK Quality Outreach ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: встроСнная Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° с Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ полосой ΠΈ блочная с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Caution:
/**
 * {@note (header='Caution:') Verify untrusted input!}
 */
Атрибуты kind ΠΈ id ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ CSS-класс ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ HTML-элСмСнта. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ прСдусматриваСт настройку собствСнных Ρ‚Π΅Π³ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ javadoc. Пока это ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ измСнСния для JDK 28. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для знакомства с Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ синтаксис Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° JDK 27 Ρ€Π°Π½ΠΎ. #java #докумСнтация

Π§Ρ‚ΠΎ мСняСтся Π² TLS 1.3 с JDK 27 JDK 27 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ: Π³Ρ€ΡƒΠΏΠΏΠ° X25519MLKEM768 ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΡ€
Π§Ρ‚ΠΎ мСняСтся Π² TLS 1.3 с JDK 27 JDK 27 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ: Π³Ρ€ΡƒΠΏΠΏΠ° X25519MLKEM768 ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΡ€ΠΈΠ²ΡƒΡŽ X25519 ΠΈ постквантовый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ML-KEM. Она Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ для Π΅Ρ‘ использования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Π΅ стороны соСдинСния. Π’ ΠΎΠ±Π·ΠΎΡ€Π΅ Java Security Sean Mullan ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния TLS. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ сСртификатов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ со сТатиСм zlib, Π° Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ffdhe6144 ΠΈ ffdhe8192 ΡƒΠ±Ρ€Π°Π½Ρ‹ ΠΈΠ· списка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для настройки Π³Ρ€ΡƒΠΏΠΏ Π΅ΡΡ‚ΡŒ свойство jdk.tls.namedGroups ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ SSLParameters.setNamedGroups(). Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠ· стандартного списка Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ явно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ссли ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ для совмСстимости. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ соСдинСния с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСрами. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π² JDK Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС Π΅Ρ‘ согласуСт: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ зависит ΠΈ ΠΎΡ‚ возмоТностСй Π²Ρ‚ΠΎΡ€ΠΎΠΉ стороны. #java #tls

Lathe: конфигурация Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Maven-сборки Maven собираСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½
Lathe: конфигурация Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Maven-сборки Maven собираСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… прСдставлСниях ΠΎ module path, зависимостях ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ. Alexey Gavrilov ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Java language server Lathe. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Maven записываСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции ΠΈ тСстов ΠΈΠ· самой сборки. Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ этот снимок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ подсказки, диагностику, запуск ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ сборка обновляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. Для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ:
mvn clean test -Dlathe.capture.only=true
ΠŸΠ°ΠΏΠΊΡƒ .lathe/ Π°Π²Ρ‚ΠΎΡ€ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² .gitignore. Запуски ΠΈ тСсты Π·Π°Ρ‚Π΅ΠΌ воспроизводятся ΠΏΠΎ сохранённым настройкам Π±Π΅Π· Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Maven. НуТны Java 21+ ΠΈ Maven 3.x. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΠ° ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ: Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ для Neovim, Emacs Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Eglot, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° VS Code находится Π² ΠΏΠ»Π°Π½Π°Ρ…. #java #maven

Как ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Swing-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· JVM Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Quarkus Desktop ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° AWT ΠΈΠ»ΠΈ Swing Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ
Как ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Swing-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· JVM Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Quarkus Desktop ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° AWT ΠΈΠ»ΠΈ Swing Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ рСгистрируСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ классы, рСсурсы ΠΈ JNI-Π²Ρ‹Π·ΠΎΠ²Ρ‹ для GraalVM, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JDK Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ рядом с Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠΌ. Π’ руководствС Π°Π²Ρ‚ΠΎΡ€Π° ΠΎΠΊΠ½ΠΎ становится CDI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. Оно ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ зависимости Ρ‡Π΅Ρ€Π΅Π· @Inject ΠΈ открываСтся ΠΏΠΎ DesktopStartupEvent Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий Swing β€” EDT. Π”ΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ executor, Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ интСрфСйса Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½Π° EDT Ρ‡Π΅Ρ€Π΅Π· EdtExecutor. Для ΠΎΠΊΠΎΠ½ подходят области @Singleton ΠΈ @Dependent: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ CDI-прокси для Swing-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° создаёт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Нативная сборка выполняСтся ΠΏΠΎΠ΄ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ОБ. Для macOS Π½ΡƒΠΆΠ½Ρ‹ Quarkus 4.0 ΠΈ GraalVM 25.1 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅; Π½Π° Windows arm64 доступСн Ρ€Π΅ΠΆΠΈΠΌ JVM. ДинамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ нСизвСстныС ΠΏΡ€ΠΈ сборкС классы Π² Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ нСльзя. #java #swing

Java Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅: Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π’ ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ строку Java ΠΈ сразу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒ
Java Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅: Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π’ ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ строку Java ΠΈ сразу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Petr Pravda ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° React ΠΈ Vite, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ компиляция выполняСтся Π½Π° устройствС читатСля. TeaVM ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π² JavaScript ΠΈΠ»ΠΈ WebAssembly. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΠΌΠ΅Π½ΡΡ‚ΡŒ исходник, Π°Π²Ρ‚ΠΎΡ€ добавляСт teavm-javac: Java-компилятор Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Web Worker ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ страницС, сохраняя ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π’ Π΄Π΅ΠΌΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Compile Java ΠΈ Run Java. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считаСт простыС числа, рисуСт нСбольшой Ρ„Ρ€Π°ΠΊΡ‚Π°Π» ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ доступныС систСмныС свойства. Запрос ΠΊ сСрвСру для компиляции Π½Π΅ Π½ΡƒΠΆΠ΅Π½. Π‘Ρ€Π΅Π΄Π° отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ JVM: доступна Ρ‡Π°ΡΡ‚ΡŒ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° ΠΊΠΎΠ΄ с JNI, динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ классов ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ рСфлСксиСй ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ посСтитСля Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚. #java #webassembly

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HashMap стало быстрСС Π² JDK 27 ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ putAll() ΠΊΠ°Ρ€Ρ‚Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‡ΠΈΡ‚Π°Π»Π° элСмСнты источника Ρ‡Π΅Ρ€Π΅Π· интСрфСйс
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HashMap стало быстрСС Π² JDK 27 ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ putAll() ΠΊΠ°Ρ€Ρ‚Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‡ΠΈΡ‚Π°Π»Π° элСмСнты источника Ρ‡Π΅Ρ€Π΅Π· интСрфСйс Map: создавала ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ значСния, снова вычисляла Ρ…Π΅ΡˆΠΈ. НСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Map Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС Π²Ρ‹Π·ΠΎΠ²Π° услоТняли ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для JIT. Π’ JDK 27 Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ для источника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΈΠΌΠ΅Π½Π½ΠΎ HashMap, ΠΈ для нСизмСняСмой ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ Π½Π°Π΄ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ. РСализация ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ, ΡƒΠΆΠ΅ сохранённый Π² ΡƒΠ·Π»Π΅. Π­Ρ‚ΠΎ касаСтся ΠΈ конструктора HashMap(Map). Π’ Ρ€Π°Π·Π±ΠΎΡ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ JDK 27 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ JMH-Π·Π°ΠΌΠ΅Ρ€Ρ‹ Π½Π° AWS Graviton: Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… сцСнариях врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π½Π° 61–86%. Π­Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠ±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ². Для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² исходной Map остаётся ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ. ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ сСрвиса ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ Π½Π° своих Π΄Π°Π½Π½Ρ‹Ρ…: Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΡ‹ источников Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. #java #ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Spring Boot ΠΈ PostgreSQL: Π΄Π΅Π΄Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² транзакциях ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ 40P01? Π­Ρ‚ΠΎ PostgreSQL ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρ†ΠΈΠΊΠ» ΠΎΠΆΠΈ
Spring Boot ΠΈ PostgreSQL: Π΄Π΅Π΄Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² транзакциях ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ 40P01? Π­Ρ‚ΠΎ PostgreSQL ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρ†ΠΈΠΊΠ» оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Π° Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Java-ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Достаточно Π΄Π²ΡƒΡ… строк: транзакция A ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ ΠΆΠ΄Ρ‘Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ, B β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’Π°ΠΊΠΈΠ΅ Π΄Π΅Π΄Π»ΠΎΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π°ΠΆΠ΅ Π±Π΅Π· явного LOCK TABLE, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ строки Ρ‚ΠΎΠΆΠ΅ Π±Π΅Ρ€Ρ‘Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. PostgreSQL ΠΏΡ€Π΅Ρ€Π²Ρ‘Ρ‚ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Какая станСт ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠΉ, Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ нСльзя. Π’ локальной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π΄Π²ΡƒΡ… сСссий ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ deadlock detected с SQLSTATE 40P01. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Π° β€” Π±Ρ€Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² согласованном порядкС Π²ΠΎ всСх путях прилоТСния. Если всё ΠΆΠ΅ повторяСтС запрос послС Π΄Π΅Π΄Π»ΠΎΠΊΠ°, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднюю ΡƒΠΏΠ°Π²ΡˆΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π”Π΅Π΄Π»ΠΎΠΊΠΈ ΠΈ порядок Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ #spring #java

Π Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎΠ΅ пояснСниС: 1. Боздаётся session, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ AutoCloseable: ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠ½ выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с сообщСниСм close. 2. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с сообщСниСм send, поэтому Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° прСрываСтся. 3. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ catch конструкция try с рСсурсами автоматичСски Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ session; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚ΠΎΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. 4. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ основноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π² Ρ‚Π΅Π»Π΅ try, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ закрытия добавляСтся Π² список ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ основного. Оно Π½Π΅ замСняСт ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ сбоя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ. 5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ catch ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ основноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: пСрвая строка Π²Ρ‹Π²ΠΎΠ΄Π° β€” send, вторая β€” 1, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ список ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ содСрТит ΠΎΠ΄ΠΈΠ½ элСмСнт. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ Π—Π°Π΄Π°Ρ‡Π° провСряСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами Π² Java SE. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с соСдинСниями ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ошибка закрытия ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ исходный сбой. Если ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСниС основного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° останСтся Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ; для диагностики Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ВспомнитС послСдний Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ИИ сдСлал для вас Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ΠΊΠΎΠ΄, тСсты, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ трСбования. Как Π²Ρ‹ Π΅Π³ΠΎ провСряли?
Anonymous voting

Showboat ΠΈ Rodney ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ИИ-Π°Π³Π΅Π½Ρ‚Π° Π‘Π°ΠΉΠΌΠΎΠ½ Уиллисон собираСт дСмонстрации ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… своих инструмС
Showboat ΠΈ Rodney ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ИИ-Π°Π³Π΅Π½Ρ‚Π° Π‘Π°ΠΉΠΌΠΎΠ½ Уиллисон собираСт дСмонстрации ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… своих инструмСнтов. Showboat выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ записываСт ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Rodney управляСт Chrome ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ интСрфСйса. uvx showboat --help Π­Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π°Π³Π΅Π½Ρ‚Ρƒ: Π² справкС Π΅ΡΡ‚ΡŒ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ создал Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с дСмонстрациСй Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Уиллисон Π·Π°ΠΌΠ΅Ρ‡Π°Π» ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°: Π°Π³Π΅Π½Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΡ‚ тСкст ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°. Π’ΠΎΠ³Π΄Π° записанный Π²Ρ‹Π²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ запуском. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ дСмонстрации Ρ‚ΠΎΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. #ΠΈΠΈ #инструмСнты

Spring Boot Actuator: свои ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ ΠΈ доступ ΠΊ диагностикС Π’ Spring Boot 4 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ liveness ΠΈ readiness Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎ
Spring Boot Actuator: свои ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ ΠΈ доступ ΠΊ диагностикС Π’ Spring Boot 4 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ liveness ΠΈ readiness Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ пСрСзапуск; вторая опрСдСляСт, Π³ΠΎΡ‚ΠΎΠ²ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ состояниС запуска ΠΈ остановки прилоТСния, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏΡ‹. Π’ руководствС ΠΏΠΎ настройкС Actuator ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой HealthIndicator, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ просмотр Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ с Ρ€ΠΎΠ»ΡŒΡŽ admin. Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ статус Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ слуТит ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ дСмонстрациСй, Π° Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ сСрвиса. Π”Π΅Ρ‚Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π‘Π£Π‘Π”. Автор ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΡ… ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. #spring #java

Π₯Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΠΎΠΌΠΎΠ³ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² тСстС JFR Π’ январском Ρ€Π°Π·Π±ΠΎΡ€Π΅ ЙоханнСс Π‘Π΅Ρ…Π±Π΅Ρ€Π³Π΅Ρ€ исслСдовал JDK-8366486: тСст CPU-
Π₯Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΠΎΠΌΠΎΠ³ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² тСстС JFR Π’ январском Ρ€Π°Π·Π±ΠΎΡ€Π΅ ЙоханнСс Π‘Π΅Ρ…Π±Π΅Ρ€Π³Π΅Ρ€ исслСдовал JDK-8366486: тСст CPU-time sampling ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ», хотя послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ записи останавливал ΠΏΠΎΡ‚ΠΎΠΊ, создававший Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Вторая запись ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ событиС ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° JFR Periodic Tasks. Π­Ρ‚ΠΎ маскировало ΠΎΡˆΠΈΠ±ΠΊΡƒ самого тСста. Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π», Ρ‡Ρ‚ΠΎ провСряСтся Π½ΡƒΠΆΠ½Ρ‹ΠΉ сцСнарий. Автор использовал concurrency-fuzz-scheduler: написанный Π½Π° Java ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Linux мСняСт расписаниС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² случайными ΠΏΠ°ΡƒΠ·Π°ΠΌΠΈ. Π‘ Π½ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти быстрСС, Π° ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ запусками. Π­Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ кСйс ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, Π° Π½Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Π³ΠΎΠ½ΠΎΠΊ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π°Π²Ρ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° оказалась ошибкой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π° Π½Π΅ просто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ синхронизации. Π Π°Π·Π±ΠΎΡ€ Π‘Π΅Ρ…Π±Π΅Ρ€Π³Π΅Ρ€Π° ΠΈ устройство тСста #java #jvm

Π Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎΠ΅ пояснСниС: 1. Spring создаёт OrderService с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ singleton: этот экзСмпляр сСрвиса Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° запроса. 2. Для Π²Ρ‹Π·ΠΎΠ²Π° конструктора Spring Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ReportBuilder ΠΈ создаёт Π΅Ρ‘ экзСмпляр с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ prototype. 3. OrderService сохраняСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ; ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· конструктор выполняСтся ΠΏΡ€ΠΈ создании сСрвиса. 4. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запрос Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€Ρ‘Π½Π½Ρ‹ΠΉ ReportBuilder. 5. Π’Ρ‚ΠΎΡ€ΠΎΠΉ запрос Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСрвис с Ρ‚ΠΎΠΉ ΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. ΠžΠ±Π»Π°ΡΡ‚ΡŒ prototype ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра ΠΏΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ запросС зависимости Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сСрвиса Ρ‚Π°ΠΊΠΎΠ³ΠΎ запроса Π½Π΅ выполняСт. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСрвис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ экзСмпляр ReportBuilder ΠΏΡ€ΠΈ ΠΎΠ±ΠΎΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ…. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ Π—Π°Π΄Π°Ρ‡Π° провСряСт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ областСй дСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ зависимостСй Π² Spring. Если ReportBuilder Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами, нСсмотря Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ prototype. Когда Π½ΡƒΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, сСрвис ΠΌΠΎΠΆΠ΅Ρ‚ явно ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ObjectProvider.

Π’ Spring сСрвис OrderService с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ singleton ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ReportBuilder с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ prototype Ρ‡Π΅Ρ€Π΅Π· конструктор, Π±Π΅Π· прокси. Π”Π²Π° запроса ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ этот сСрвис. Бколько экзСмпляров ReportBuilder ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈ этих Π²Ρ‹Π·ΠΎΠ²Π°Ρ…?
Anonymous voting

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Jackson 3 Π² Spring Boot 4: настройка JsonMapper ΠΈ измСнСния JSON Spring Boot 4 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Jackson 3. ΠŸΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Jackson 3 Π² Spring Boot 4: настройка JsonMapper ΠΈ измСнСния JSON Spring Boot 4 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Jackson 3. ΠŸΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: ObjectMapper ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π» Π² tools.jackson, Π½ΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ @JsonProperty ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² com.fasterxml Ρ€Π°Π΄ΠΈ совмСстимости. Π’ Ρ€Π°Π·Π±ΠΎΡ€Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° JsonMapper Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Builder ΠΈ JsonMapperBuilderCustomizer. Новый mapper ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Optional ΠΈ LocalDateTime Π±Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π° вмСсто провСряСмых ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ выбрасываСт нСпровСряСмыС JacksonException. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ измСнСния повСдСния: null для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π΄Π°Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π±Π΅Π· Unix-ΠΌΠ΅Ρ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° поля JSON ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ. ПослСднСС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ тСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ порядка ΠΏΠΎΠ»Π΅ΠΉ. #spring #java

πŸ§‘β€πŸ’» КакиС Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π²Π°ΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² 2026 Π³ΠΎΠ΄Ρƒ? Π§Ρ‚ΠΎ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅? Π’ ΠΊΠ°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ИИ, Π° Π³Π΄Π΅ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ? ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ€Π΅Ρ‚ соврСмСнного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° β€” ΠΈ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ вас ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. РасскаТитС, ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ИИ. Если ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ стороной, Π½Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠžΠΏΡ€ΠΎΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ ΠΈ Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΌΠΈΠ½ΡƒΡ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Π² ΠΎΠ±Ρ‰Π΅ΠΌ большом исслСдовании. πŸ‘‰ ΠŸΡ€ΠΎΠΉΡ‚ΠΈ опрос

АварийныС ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ HotSpot: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ hs_err ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ JVM ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ оставляСт Ρ„Π°ΠΉΠ» hs_err с ошибк
АварийныС ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ HotSpot: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ hs_err ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ JVM ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ оставляСт Ρ„Π°ΠΉΠ» hs_err с ошибкой ΠΈ состояниСм процСсса. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ мСсто сбоя ΠΈ вСрсии JVM ΠΈ ОБ, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” стСк Java- ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π Π°Π·Π±ΠΎΡ€ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ состояниС памяти, события компиляции ΠΈ сборки мусора, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ классов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ JVM Π΄Π΅Π»Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ. Для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ jhserr: ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ хостов, ΠΏΡƒΡ‚ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния прямо Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π•ΡΡ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для VSCode с подсвСткой ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°. #jvm #java

Π§Π°ΡˆΠ΅Ρ‡ΠΊΠ° Java - Statistics & analytics of Telegram channel @a_cup_of_java