Π§Π°ΡΠ΅ΡΠΊΠ° Java
Open in Telegram
ΠΡΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ Java Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @tproger_sales_bot ΠΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π½ΠΈΡ: https://tprg.ru/rules ΠΡΡΠ³ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ: @tproger_channels
Show more8 314
Subscribers
-624 hours
-227 days
-6330 days
Posts Archive
8 313
Hibernate Validator 9.2: ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±Π΅ΡΠ΅ Hibernate Validator 9.2 ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ
@PasswordStrength, @NotCompromised ΠΈ @PasswordPolicy. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠΎΠΉΠΊΠΎΡΡΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΡΡΠ΅ΡΠΊΠ°Ρ
ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΏΡΠ°Π²ΠΈΠ».
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅Π»ΠΈΠ·Π° Π΅ΡΡΡ Π²Π°ΠΆΠ½Π°Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡ: Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ΅Π½ΡΠΈΠΊΠ° ΡΡΠΎΠΉΠΊΠΎΡΡΠΈ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅ΡΠ΅ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ PasswordStrengthEstimator ΠΈ CompromisedPasswordChecker.
ΠΡΠ΅ ΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΈΡΠ°ΡΡ null Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ @NotNull ΠΈΠ»ΠΈ @NotBlank.
PasswordPolicy ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°ΡΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ.
ΠΡΠΎ Π±Π΅ΡΠ°; ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²ΡΠ΅ API Π΅ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΡΡΠ°ΡΡΠ΅ ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ.
#java #hibernate8 313
ΠΠΎΡΠ΅ΠΌΡ 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 #ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ8 313
Π JavaDoc ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ
Π‘ΠΎΠ²Π΅Ρ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΠ΅ΡΡΡΡ Π²Π½ΡΡΡΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠ»Ρ JDK 28 ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ΅Π³
@note, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π Π·Π°ΠΌΠ΅ΡΠΊΠ΅ OpenJDK Quality Outreach ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π·Π°ΠΌΠ΅ΡΠΊΠ° Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΎΡΠΎΠΉ ΠΈ Π±Π»ΠΎΡΠ½Π°Ρ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Caution:
/**
* {@note (header='Caution:') Verify untrusted input!}
*/
ΠΡΡΠΈΠ±ΡΡΡ kind ΠΈ id ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ CSS-ΠΊΠ»Π°ΡΡ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ΅Π³ΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ javadoc.
ΠΠΎΠΊΠ° ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ JDK 28. ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ Π±ΡΠ΄ΡΡΠΈΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ; ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° JDK 27 ΡΠ°Π½ΠΎ.
#java #Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ8 313
Π§ΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² 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 #tls8 313
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 #maven8 313
ΠΠ°ΠΊ ΡΠΎΠ±ΡΠ°ΡΡ 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 #swing8 313
Java Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅: ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ
Π ΡΡΠ΅Π±Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΡΡΠΎΠΊΡ Java ΠΈ ΡΡΠ°Π·Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Petr Pravda ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° React ΠΈ Vite, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΡΠΈΡΠ°ΡΠ΅Π»Ρ.
TeaVM ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Java-Π±Π°ΠΉΡΠΊΠΎΠ΄ Π² JavaScript ΠΈΠ»ΠΈ WebAssembly. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΌΠ΅Π½ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊ, Π°Π²ΡΠΎΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ teavm-javac: Java-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. Web Worker ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°.
Π Π΄Π΅ΠΌΠΎ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Compile Java ΠΈ Run Java. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΠ°Π΅Ρ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π°, ΡΠΈΡΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°ΠΊΡΠ°Π» ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΏΡΠΎΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π΅ Π½ΡΠΆΠ΅Π½.
Π‘ΡΠ΅Π΄Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ JVM: Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π° ΠΊΠΎΠ΄ Ρ JNI, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΠΎΠΆΠ΅ Π½Π΅Ρ.
#java #webassembly
8 313
ΠΠΎΡΠ΅ΠΌΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ HashMap ΡΡΠ°Π»ΠΎ Π±ΡΡΡΡΠ΅Π΅ Π² JDK 27
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅
putAll() ΠΊΠ°ΡΡΠ° ΡΠ°Π½ΡΡΠ΅ ΡΠΈΡΠ°Π»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Map: ΡΠΎΠ·Π΄Π°Π²Π°Π»Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΠ»ΡΡΠ°Π»Π° ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ½ΠΎΠ²Π° Π²ΡΡΠΈΡΠ»ΡΠ»Π° Ρ
Π΅ΡΠΈ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Map Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ»ΠΎΠΆΠ½ΡΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ JIT.
Π JDK 27 Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ Π΄Π»Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ HashMap, ΠΈ Π΄Π»Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΠΈ Π½Π°Π΄ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΡΡΠΎΠΉ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Ρ
Π΅Ρ, ΡΠΆΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ½Π½ΡΠΉ Π² ΡΠ·Π»Π΅. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° HashMap(Map).
Π ΡΠ°Π·Π±ΠΎΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ JDK 27 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ JMH-Π·Π°ΠΌΠ΅ΡΡ Π½Π° AWS Graviton: Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΡΡ
Π²ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ Π½Π° 61β86%. ΠΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
ΠΌΠΈΠΊΡΠΎΠ±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ².
ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΠΈΠΏΠΎΠ² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Map ΠΎΡΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΏΡΡΡ. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ
Π΄Π°Π½Π½ΡΡ
: ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ ΡΠΈΠΏΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
#java #ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ8 313
Spring Boot ΠΈ PostgreSQL: Π΄Π΅Π΄Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎ ΠΎΡΠΈΠ±ΠΊΡ
40P01? ΠΡΠΎ PostgreSQL ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΠΈΠΊΠ» ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, Π° Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Java-ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π²ΡΡ
ΡΡΡΠΎΠΊ: ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ A ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π° ΠΏΠ΅ΡΠ²ΡΡ ΠΈ ΠΆΠ΄ΡΡ Π²ΡΠΎΡΡΡ, B β Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠΈΠ΅ Π΄Π΅Π΄Π»ΠΎΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ LOCK TABLE, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΎΠΆΠ΅ Π±Π΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
PostgreSQL ΠΏΡΠ΅ΡΠ²ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ. ΠΠ°ΠΊΠ°Ρ ΡΡΠ°Π½Π΅Ρ ΠΆΠ΅ΡΡΠ²ΠΎΠΉ, Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π΅Π»ΡΠ·Ρ. Π Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π΄Π²ΡΡ
ΡΠ΅ΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ deadlock detected Ρ SQLSTATE 40P01.
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΈΠΊΠ»Π° β Π±ΡΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΏΡΡΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²ΡΡ ΠΆΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΡΠ»Π΅ Π΄Π΅Π΄Π»ΠΎΠΊΠ°, ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΏΠ°Π²ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ΅Π΄Π»ΠΎΠΊΠΈ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
#spring #java8 313
Π Π°Π·Π²ΡΡΠ½ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅:
1. Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ session, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ AutoCloseable: ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΎΠ½ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ close.
2. ΠΠ½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ send, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ.
3. ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΎΠΌ ΠΊ catch ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ try Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ session; Π·Π°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
4. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π² ΡΠ΅Π»Π΅ try, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΡΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½ΡΡ
ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ. ΠΠ½ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ±ΠΎΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ.
5. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ catch ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π²ΡΠ²ΠΎΠ΄Π° β send, Π²ΡΠΎΡΠ°Ρ β 1, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½ΡΡ
ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ
ΠΠ°Π΄Π°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π² Java SE. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΠΎΡΠΈΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ±ΠΎΠΉ. ΠΡΠ»ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠΉ; Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
8 313
Repost from ΠΠ΅ΠΉΡΠΎΠΊΠ°Π½Π°Π»
ΠΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΠ ΡΠ΄Π΅Π»Π°Π» Π΄Π»Ρ Π²Π°Ρ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΊΠΎΠ΄, ΡΠ΅ΡΡΡ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ Π²Ρ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ?
8 313
Repost from ΠΠ΅ΠΉΡΠΎΠΊΠ°Π½Π°Π»
Showboat ΠΈ Rodney ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΠ-Π°Π³Π΅Π½ΡΠ°
Π‘Π°ΠΉΠΌΠΎΠ½ Π£ΠΈΠ»Π»ΠΈΡΠΎΠ½ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ
ΡΠ²ΠΎΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². Showboat Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ
Π²ΡΠ²ΠΎΠ΄ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Rodney ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Chrome ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
uvx showboat --help
ΠΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°Π²ΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π°ΡΡ Π°Π³Π΅Π½ΡΡ: Π² ΡΠΏΡΠ°Π²ΠΊΠ΅ Π΅ΡΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π» Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π£ΠΈΠ»Π»ΠΈΡΠΎΠ½ Π·Π°ΠΌΠ΅ΡΠ°Π» ΠΈ ΠΎΠ±Ρ
ΠΎΠ΄ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°: Π°Π³Π΅Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΡΠ°Π²ΠΈΡ ΡΠ΅ΠΊΡΡ ΠΎΡΡΡΡΠ°. Π’ΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡ
ΠΎΠ΄ΠΈΡΡΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π·Π°ΠΏΡΡΠΊΠΎΠΌ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
#ΠΈΠΈ #ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ8 313
Spring Boot Actuator: ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π΄ΠΎΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ΅
Π Spring Boot 4 ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ liveness ΠΈ readiness Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π½ΡΠΆΠ΅Π½ Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ; Π²ΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π³ΠΎΡΠΎΠ²ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΈΡ
Π³ΡΡΠΏΠΏΡ.
Π ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Actuator ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ HealthIndicator, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² Π³ΡΡΠΏΠΏΡ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Ρ ΡΠΎΠ»ΡΡ admin. Π‘Π»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΡΠ°ΡΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ»ΡΠΆΠΈΡ ΡΡΠ΅Π±Π½ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ, Π° Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ΅ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π‘Π£ΠΠ. ΠΠ²ΡΠΎΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΊΡΡΡΡ ΠΈΡ
ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ.
#spring #java
8 313
Π₯Π°ΠΎΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ΅ΡΡΠ΅ JFR
Π ΡΠ½Π²Π°ΡΡΠΊΠΎΠΌ ΡΠ°Π·Π±ΠΎΡΠ΅ ΠΠΎΡ
Π°Π½Π½Π΅Ρ ΠΠ΅Ρ
Π±Π΅ΡΠ³Π΅Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π» JDK-8366486: ΡΠ΅ΡΡ CPU-time sampling ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠ», Ρ
ΠΎΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π» ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠ·Π΄Π°Π²Π°Π²ΡΠΈΠΉ Π½Π°Π³ΡΡΠ·ΠΊΡ.
ΠΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
JFR Periodic Tasks. ΠΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. Π£ΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΠΎΠ½ Π΅ΡΡ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π», ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½ΡΠΆΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ.
ΠΠ²ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» concurrency-fuzz-scheduler: Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Java ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Linux ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ·Π°ΠΌΠΈ. Π‘ Π½ΠΈΠΌ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ Π²Π΅ΡΠΊΡ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π±ΡΡΡΡΠ΅Π΅, Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ β ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΠΌΠΈ.
ΠΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ΅ΠΉΡ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π° Π½Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΎΠΊ. Π ΡΡΠ°ΡΡΠ΅ Π°Π²ΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΈΡΠΈΠ½Π° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π°Π·Π±ΠΎΡ ΠΠ΅Ρ
Π±Π΅ΡΠ³Π΅ΡΠ° ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ΡΡΠ°
#java #jvm8 313
Π Π°Π·Π²ΡΡΠ½ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅:
1. Spring ΡΠΎΠ·Π΄Π°ΡΡ OrderService Ρ ΠΎΠ±Π»Π°ΡΡΡΡ singleton: ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±Π° Π·Π°ΠΏΡΠΎΡΠ°.
2. ΠΠ»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Spring ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ReportBuilder ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Ρ ΠΎΠ±Π»Π°ΡΡΡΡ prototype.
3. OrderService ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ; ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°.
4. ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½Π΅Π΄ΡΡΠ½Π½ΡΠΉ ReportBuilder.
5. ΠΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΡΠ²ΠΈΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ. ΠΠ±Π»Π°ΡΡΡ prototype ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΏΡΠΈ Π½ΠΎΠ²ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π° Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ReportBuilder ΠΏΡΠΈ ΠΎΠ±ΠΎΠΈΡ
Π²ΡΠ·ΠΎΠ²Π°Ρ
.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ
ΠΠ°Π΄Π°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Spring. ΠΡΠ»ΠΈ ReportBuilder Ρ
ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΡΡΠ°, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΡΡ prototype. ΠΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ObjectProvider.
8 313
Π Spring ΡΠ΅ΡΠ²ΠΈΡ OrderService Ρ ΠΎΠ±Π»Π°ΡΡΡΡ singleton ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ReportBuilder Ρ ΠΎΠ±Π»Π°ΡΡΡΡ prototype ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π±Π΅Π· ΠΏΡΠΎΠΊΡΠΈ. ΠΠ²Π° Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ReportBuilder ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈ ΡΡΠΈΡ
Π²ΡΠ·ΠΎΠ²Π°Ρ
?
8 313
ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° 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 #java8 313
Repost from Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ
π§βπ» ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²Π°ΠΌ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π² 2026 Π³ΠΎΠ΄Ρ?
Π§ΡΠΎ Π²Ρ ΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π² ΡΠ°Π±ΠΎΡΠ΅? Π ΠΊΠ°ΠΊΠΈΡ
Π·Π°Π΄Π°ΡΠ°Ρ
ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΠ, Π° Π³Π΄Π΅ ΠΏΡΠΎΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ?
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠΎΡΡΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° β ΠΈ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π²Π°Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ. Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ Π²Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΈ ΠΊΠ°ΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΠ. ΠΡΠ»ΠΈ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ, Π½Π°ΠΌ ΡΠΎΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΡΠ΅ΠΌΡ.
ΠΠΏΡΠΎΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΈ Π·Π°ΠΉΠΌΡΡ ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΌΠΈΠ½ΡΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π² ΠΎΠ±ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ.
π ΠΡΠΎΠΉΡΠΈ ΠΎΠΏΡΠΎΡ
8 313
ΠΠ²Π°ΡΠΈΠΉΠ½ΡΠ΅ ΠΎΡΡΡΡΡ HotSpot: ΡΡΠ΅Π½ΠΈΠ΅ hs_err ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ JVM ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΉΠ» hs_err Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ΅ΡΡΠΎ ΡΠ±ΠΎΡ ΠΈ Π²Π΅ΡΡΠΈΠΈ JVM ΠΈ ΠΠ‘, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΡΠΎΠΊΠ° β ΡΡΠ΅ΠΊ Java- ΠΈ Π½Π°ΡΠΈΠ²Π½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ².
Π Π°Π·Π±ΠΎΡ ΠΎΡΡΡΡΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ JVM Π΄Π΅Π»Π°Π»Π° ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠ»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ Π°Π²ΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ jhserr: ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Ρ
ΠΎΡΡΠΎΠ², ΠΏΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ VSCode Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΎΠΉ ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ ΠΎΡΡΡΡΠ°.
#jvm #java
