Java Geek
Kanalga Telegramβda oβtish
ΠΡΠ°ΠΊΡΠΈΡΠ½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ, Π»Π°ΠΉΡΡ Π°ΠΊΠΈ ΠΈ ΠΊΠΎΠ΄ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΡ β ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ»ΡΠ·Π°. Π£ΡΠΈΠΌ Java Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . ΠΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ @evgenycarter
Ko'proq ko'rsatish2 380
Obunachilar
-124 soatlar
-127 kunlar
-3530 kunlar
Postlar arxiv
2 380
ΠΠ΅Π½ΠΈΠ²Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΈΠ½ΠΎΠ² Π² Spring Boot 3.
ΠΠ±ΡΡΠ½ΠΎ Π²ΡΠ΅ Π±ΠΈΠ½Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΠΌΠΎΠ·ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΡΠΆΡΠ»ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ ΠΊ ΠΠ ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ).
π ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ Π»Π΅Π½ΠΈΠ²ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ
Π±ΠΈΠ½ΠΎΠ²:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.setLazyInitialization(true);
app.run(args);
}
}
ΠΠ»ΠΈ ΡΠ΅ΡΠ΅Π· application.properties:
spring.main.lazy-initialization=true
π‘ Π’ΠΎΠ³Π΄Π° Π±ΠΈΠ½Ρ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Π° Π½Π΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅.
β οΈ ΠΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
- ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΠ° Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ β Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅Π±ΠΈΠ»Π΄ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ.
β οΈ ΠΠΎΠ³Π΄Π° Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ:
- Π ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, Π³Π΄Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠΉΠΌΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ³Π΄Π° Π½ΡΠΆΠ½Π° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΡΡΠ°ΡΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
π§ ΠΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΠ΅ΡΠ½ΠΎ:
@Component
@Lazy
public class HeavyService {
// ΠΠΎΠ΄Π½ΠΈΠΌΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ
}
π @java_geek2 380
ΠΠ°ΠΊΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠ΅ equals() ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΠΈ?
βοΈ Π Π΅ΡΠ»Π΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ: Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x, x.equals(x) Π²Π΅ΡΠ½Π΅Ρ true;
βοΈ Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΡΡΡ: Π΄Π»Ρ Π»ΡΠ±ΡΡ
ΡΡΡΠ»ΠΎΠΊ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ x ΠΈ y, x.equals(y) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ true, ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° y.equals(x) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true.
βοΈ Π’ΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΠΎΡΡΡ: Π΄Π»Ρ Π»ΡΠ±ΡΡ
ΡΡΡΠ»ΠΎΠΊ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ x, y ΠΈ z, Π΅ΡΠ»ΠΈ x.equals(y) ΠΈ y.equals(z) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ true, ΡΠΎΠ³Π΄Π° ΠΈ x.equals(z) Π²Π΅ΡΠ½ΡΡ true;
βοΈ ΠΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΡΡΡ: Π΄Π»Ρ Π»ΡΠ±ΡΡ
ΡΡΡΠ»ΠΎΠΊ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ
ΠΈ Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π²ΡΠ·Π²Π°ΡΡ Ρ
.equals(y), ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ»Π°ΡΡ.
ΠΠ»Ρ Π»ΡΠ±ΠΎΠΉ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ
.equals(null) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ false.
π @java_geek
2 380
π ΠΠΎΠ΄Π±ΠΎΡΠΊΠ° Telegram ΠΊΠ°Π½Π°Π»ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, DevOps π
https://t.me/bash_srv Bash Π‘ΠΎΠ²Π΅ΡΡ
https://t.me/win_sysadmin Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Windows
https://t.me/sysadmin_girl ΠΠ΅Π²ΠΎΡΠΊΠ° Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½
https://t.me/srv_admin_linux ΠΠ΄ΠΌΠΈΠ½ΡΠΊΠΈΠ΅ ΡΠ³ΠΎΠ΄ΡΡ
https://t.me/linux_srv Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½
https://t.me/devopslib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π΅Π²ΠΎΠΏΡΠ° | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/devops_star DevOps Star (ΠΠ²Π΅Π·Π΄Π° ΠΠ΅Π²ΠΎΠΏΡΠ°)
https://t.me/i_linux Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/tipsysdmin Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½ (ΡΠΎΡΠΎ ΠΆΠ΅Π»Π΅Π·Π°, Π±ΡΠ»ΠΎ/ΡΡΠ°Π»ΠΎ)
https://t.me/sysadminof ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
https://t.me/i_odmin ΠΡΠ΅ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
https://t.me/i_odmin_book ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
https://t.me/i_odmin_chat Π§Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ²
https://t.me/i_DevOps DevOps: ΠΠΈΡΠ΅ΠΌ ΠΎ Docker, Kubernetes ΠΈ Π΄Ρ.
https://t.me/sysadminoff ΠΠΎΠ²ΠΎΡΡΠΈ ΠΠΈΠ½ΡΠΊΡ Linux
1C ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/odin1C_rus CΡΠ°ΡΡΠΈ, ΠΊΡΡΡΡ, ΡΠΎΠ²Π΅ΡΡ, ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ΄Π° 1Π‘
https://t.me/DevLab1C 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8
https://t.me/razrab_1C 1C Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ
https://t.me/buh1C_prog 1C ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ | ΠΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΡ ΠΈ Π£ΡΡΡ
https://t.me/rabota1C_rus ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² 1Π‘
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ C++π
https://t.me/cpp_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° C/C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/cpp_knigi ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² C/C++
https://t.me/cpp_geek Π£ΡΠΈΠΌ C/C++ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Python π
https://t.me/pythonofff Python Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ.
https://t.me/BookPython ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/python_real Python ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠΈ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ
https://t.me/python_360 ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Python
Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/BookJava ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/java_360 ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Java Rus
https://t.me/java_geek Π£ΡΠΈΠΌ Java Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
GitHub Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ π
https://t.me/Githublib ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠ· GitHub
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ
(Data Base) π
https://t.me/database_info ΠΡΠ΅ ΠΏΡΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°: iOS, Android π
https://t.me/developer_mobila ΠΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
https://t.me/kotlin_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΏΠΎ Kotlin
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/frontend_1 ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ frontend ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
https://t.me/frontend_sovet Frontend ΡΠΎΠ²Π΅ΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°!
https://t.me/React_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎ React js ΠΈ Π²ΡΠ΅ ΡΡΠΎ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³Ρ π
https://t.me/game_devv ΠΡΠ΅ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ³Ρ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ π
https://t.me/book_for_dev ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Rus
https://t.me/programmist_of ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
https://t.me/proglb ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
https://t.me/bfbook ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ΠΠΈΠ³ΠΠ°ΡΠ°, ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ π
https://t.me/bigdata_1 Big Data, Machine Learning
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ π
https://t.me/bookflow ΠΠ΅ΠΊΡΠΈΠΈ, Π²ΠΈΠ΄Π΅ΠΎΡΡΠΎΠΊΠΈ, Π΄ΠΎΠΊΠ»Π°Π΄Ρ Ρ IT ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ
https://t.me/rust_lib ΠΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Rust
https://t.me/golang_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Go (Golang) ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/itmozg ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡ, Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ· ΠΌΠΈΡΠ° IT
https://t.me/php_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PHP ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° π¨πΌβπ»π©βπ»
https://t.me/nodejs_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎ Node js ΠΈ Π²ΡΠ΅ ΡΡΠΎ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ
https://t.me/ruby_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ruby ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
https://t.me/lifeproger ΠΠΈΠ·Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. ΠΠ²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΠ°Π½Π°Π».
QA, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ π
https://t.me/testlab_qa ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
Π¨ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² π
https://t.me/itumor Π¨ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ΠΠ°ΡΠΈΡΠ°, Π²Π·Π»ΠΎΠΌ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ π
https://t.me/thehaking ΠΠ°Π½Π°Π» ΠΎ ΠΊΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
https://t.me/xakep_2 Π₯Π°ΠΊΠ΅Ρ Free
ΠΠ½ΠΈΠ³ΠΈ, ΡΡΠ°ΡΡΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² π
https://t.me/ux_web Π‘ΡΠ°ΡΡΠΈ, ΠΊΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ²
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° π
https://t.me/Pomatematike ΠΠ°Π½Π°Π» ΠΏΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅
https://t.me/phis_mat ΠΠ±ΡΡΠ°ΡΡΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Π€ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅
https://t.me/matgeoru ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° | ΠΠ΅ΠΎΠΌΠ΅ΡΡΠΈΡ | ΠΠΎΠ³ΠΈΠΊΠ°
Excel Π»Π°ΠΉΡΡ
Π°ΠΊπ
https://t.me/Excel_lifehack
https://t.me/mir_teh ΠΠΈΡ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ (Technology World)
ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ π
https://t.me/sysadmin_rabota Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/progjob ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Π² IT
2 380
π§ ΠΡΠΎΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Spring Boot: ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΡΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Spring Boot β ΠΌΠΎΡΠ½Π°Ρ ΡΡΡΠΊΠ°, Π½ΠΎ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°ΡΡ ΡΠΎΠ½Π½Ρ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠ°, ΠΎΠ±ΡΡΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π΄Π°ΠΆΠ΅ security.
π ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ΅?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ
@SpringBootApplication(exclude = {...})
ΠΡΠΈΠΌΠ΅Ρ:
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
SecurityAutoConfiguration.class
})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
π‘ ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΡΡΡ β Π²ΠΊΠ»ΡΡΠΈ Π΄Π΅Π±Π°Π³ Π»ΠΎΠ³Π³Π΅Ρ:
logging:
level:
org.springframework.boot.autoconfigure: DEBUG
ΠΠ½ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ, ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΈΠ»ΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π½Ρ.
β οΈ ΠΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉ Π²ΡΠ»Π΅ΠΏΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½ΡΠΆΠ½Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡ ΠΈΠΌΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ.
π§° ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ spring.factories ΠΈΠ»ΠΈ @EnableAutoConfiguration Π²ΡΡΡΠ½ΡΡ (ΡΠ°ΡΠ΅ β Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
).
π ΠΡΠΎΠ³: ΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π°Π²ΡΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ = Π±ΡΡΡΡΠ΅Π΅, Π»Π΅Π³ΡΠ΅, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅.
π @java_geek2 380
Π Java ΠΎΡΠΈΠ±ΠΊΠΈ
NoClassDefFoundError ΠΈ NoSuchMethodError ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ runtime ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΌ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
β NoClassDefFoundError
π₯ ΠΡΠΈΡΠΈΠ½Π°:
JVM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Ρ
ΠΎΡΡ ΠΎΠ½ Π±ΡΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
π Π§Π°ΡΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
1. ΠΠ»Π°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² classpath Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°.
- ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π±ΡΠ»Π° Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² JAR ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² runtime classpath.
2. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° (ExceptionInInitializerError).
- ΠΡΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΠ»Π°ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Β«Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΒ».
3. Π Π°Π·Π½ΡΠ΅ classloaders.
- Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ²Π»Π΅ΡΡ, Spring, OSGi), ΡΠ°Π·Π½ΡΠ΅ classloader'Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ.
4. Π£Π΄Π°Π»ΡΠ½/ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΠΊΠ»Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
β NoSuchMethodError
π₯ ΠΡΠΈΡΠΈΠ½Π°:
JVM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
π Π§Π°ΡΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
1. ΠΠ΅ΡΠΎΠ΄ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ½ ΠΏΠΎΡΠ»Π΅:
- ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΠ»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°, ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ.
2. ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π²Π΅ΡΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
- ΠΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π° Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° Π΄ΡΡΠ³Π°Ρ Π²Π΅ΡΡΠΈΡ (Π±Π΅Π· Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°).
3. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠΎΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
β
ΠΠ°ΠΊ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΠ°ΡΡ
1. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ classpath:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ -verbose:class ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ JVM, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΎΡΠΊΡΠ΄Π° Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΊΠ»Π°ΡΡΡ.
2. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ mvn dependency:tree ΠΈΠ»ΠΈ gradle dependencies ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²ΡΡΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ.
3. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ jar-ΡΠ°ΠΉΠ»Ρ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ²/ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
- Π Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ jar: jar tf your-lib.jar
- ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ javap.
4. ΠΠ·Π±Π΅Π³Π°ΠΉ ΡΠ΅Π½Π΅Π²ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (shadow dependencies).
5. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ dependency management:
- ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Maven Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· <dependencyManagement>.
π @java_geek2 380
π§© ΠΠ°ΡΠ΅ΠΌ Π² Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
EnumSet Π²ΠΌΠ΅ΡΡΠΎ Set<Enum>?
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΡΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ Π²Π°ΡΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ°Π·Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ enum.
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°ΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΈΡΠ΅Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
Set<Day> days = new HashSet<>();
ΠΠΎ Π² Java Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ β EnumSet, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ null.
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
EnumSet<Day> days = EnumSet.of(Day.MONDAY, Day.WEDNESDAY);
π‘ ΠΠΎΡΠ΅ΠΌΡ EnumSet Π»ΡΡΡΠ΅:
- ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° β ΡΡΠΏΠ΅ΡΠ±ΡΡΡΡΠΎ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠΉ HashSet.
- ΠΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² EnumSet Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ enum-ΡΠΈΠΏΠ° β ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ² ΠΎΡΠΈΠ±ΠΈΡΡΡΡ.
- null ΡΡΠ΄Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ β ΠΌΠ΅Π½ΡΡΠ΅ Π±Π°Π³ΠΎΠ².
π ΠΡΠΈΠΌΠ΅Ρ:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY
}
EnumSet<Day> workDays = EnumSet.range(Day.MONDAY, Day.FRIDAY);
System.out.println(workDays); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
ΠΡΠ»ΠΈ ΡΡ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ EnumSet, ΡΠΎΠ²Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½Ρ-ΠΊΡΠΈΡΠΈΡΠ½ΡΡ
Π·Π°Π΄Π°ΡΠ°Ρ
β ΡΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ.
π @java_geek2 380
ΠΠΎΠ΄Π±ΠΎΡΠΊΠ° Telegram ΠΊΠ°Π½Π°Π»ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
https://t.me/bash_srv Bash Π‘ΠΎΠ²Π΅ΡΡ
https://t.me/win_sysadmin Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Windows
https://t.me/lifeproger ΠΠΈΠ·Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. ΠΠ²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΠ°Π½Π°Π».
https://t.me/devopslib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π΅Π²ΠΎΠΏΡΠ° | DevOps, SRE, Sysadmin
https://t.me/rabota1C_rus ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² 1Π‘
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ π
https://t.me/sysadmin_girl ΠΠ΅Π²ΠΎΡΠΊΠ° Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½
https://t.me/srv_admin_linux ΠΠ΄ΠΌΠΈΠ½ΡΠΊΠΈΠ΅ ΡΠ³ΠΎΠ΄ΡΡ
https://t.me/linux_srv Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½
https://t.me/linux_odmin Linux: Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/devops_star DevOps Star (ΠΠ²Π΅Π·Π΄Π° ΠΠ΅Π²ΠΎΠΏΡΠ°)
https://t.me/i_linux Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/tipsysdmin Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½ (ΡΠΎΡΠΎ ΠΆΠ΅Π»Π΅Π·Π°, Π±ΡΠ»ΠΎ/ΡΡΠ°Π»ΠΎ)
https://t.me/sysadminof ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
https://t.me/i_odmin ΠΡΠ΅ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
https://t.me/i_odmin_book ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
https://t.me/i_odmin_chat Π§Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ²
https://t.me/i_DevOps DevOps: ΠΠΈΡΠ΅ΠΌ ΠΎ Docker, Kubernetes ΠΈ Π΄Ρ.
https://t.me/sysadminoff ΠΠΎΠ²ΠΎΡΡΠΈ ΠΠΈΠ½ΡΠΊΡ Linux
1C ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/odin1C_rus CΡΠ°ΡΡΠΈ, ΠΊΡΡΡΡ, ΡΠΎΠ²Π΅ΡΡ, ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ΄Π° 1Π‘
https://t.me/DevLab1C 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ C++π
https://t.me/cpp_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° C/C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/cpp_knigi ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² C/C++
https://t.me/cpp_geek Π£ΡΠΈΠΌ C/C++ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Python π
https://t.me/pythonofff Python Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ. Π£ΡΠΈ Python Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎπ
https://t.me/BookPython ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/python_real Python ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠΈ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ
https://t.me/python_360 ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Python Rus
Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/BookJava ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/java_360 ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Java Rus
https://t.me/java_geek Π£ΡΠΈΠΌ Java Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
GitHub Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ π
https://t.me/Githublib ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠ· GitHub
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ
(Data Base) π
https://t.me/database_info ΠΡΠ΅ ΠΏΡΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°: iOS, Android π
https://t.me/developer_mobila ΠΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
https://t.me/kotlin_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΏΠΎ Kotlin
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° π
https://t.me/frontend_1 ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ frontend ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
https://t.me/frontend_sovet Frontend ΡΠΎΠ²Π΅ΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°!
https://t.me/React_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎ React js ΠΈ Π²ΡΠ΅ ΡΡΠΎ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³Ρ π
https://t.me/game_devv ΠΡΠ΅ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ³Ρ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ π
https://t.me/book_for_dev ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Rus
https://t.me/programmist_of ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
https://t.me/proglb ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
https://t.me/bfbook ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
https://t.me/books_reserv ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ΠΠΈΠ³ΠΠ°ΡΠ°, ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ π
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ π
https://t.me/bookflow ΠΠ΅ΠΊΡΠΈΠΈ, Π²ΠΈΠ΄Π΅ΠΎΡΡΠΎΠΊΠΈ, Π΄ΠΎΠΊΠ»Π°Π΄Ρ Ρ IT ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ
https://t.me/coddy_academy ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
https://t.me/rust_lib ΠΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Rust
https://t.me/golang_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Go (Golang) ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
https://t.me/itmozg ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡ, Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ· ΠΌΠΈΡΠ° IT
https://t.me/php_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PHP ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° π¨πΌβπ»π©βπ»
https://t.me/nodejs_lib ΠΠΎΠ΄Π±ΠΎΡΠΊΠΈ ΠΏΠΎ Node js ΠΈ Π²ΡΠ΅ ΡΡΠΎ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ
https://t.me/ruby_lib ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ruby ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
QA, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ π
https://t.me/testlab_qa ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
Π¨ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² π
https://t.me/itumor Π¨ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ΠΠ°ΡΠΈΡΠ°, Π²Π·Π»ΠΎΠΌ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ π
https://t.me/thehaking ΠΠ°Π½Π°Π» ΠΎ ΠΊΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
https://t.me/xakep_2 Π₯Π°ΠΊΠ΅Ρ Free
ΠΠ½ΠΈΠ³ΠΈ, ΡΡΠ°ΡΡΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² π
https://t.me/ux_web Π‘ΡΠ°ΡΡΠΈ, ΠΊΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ²
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° π
https://t.me/Pomatematike ΠΠ°Π½Π°Π» ΠΏΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅
https://t.me/phis_mat ΠΠ±ΡΡΠ°ΡΡΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Π€ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅
Excel Π»Π°ΠΉΡΡ
Π°ΠΊπ
https://t.me/Excel_lifehack
https://t.me/tikon_1 ΠΠΎΠ²ΠΎΡΡΠΈ Π²ΡΡΠΎΠΊΠΈΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π°ΡΠΊΠΈ ΠΈ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈπ‘
https://t.me/mir_teh ΠΠΈΡ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ (Technology World)
ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ π
https://t.me/sysadmin_rabota Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
https://t.me/progjob ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ Π² IT
2 380
π§ͺ Java: ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ equals() ΠΈ hashCode() ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ
ΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΏΠΈΡΠ΅Ρ Java-ΠΊΠΎΠ΄: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ equals() ΠΈ hashCode().
ΠΠΎΠ³Π΄Π° ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Entity ΠΈΠ»ΠΈ DTO), Π²Π°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΡ
. ΠΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΈΡΡ Π±Π°Π³, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ.
π§° ΠΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ EqualsVerifier β ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ Π²ΡΡ Π³ΡΡΠ·Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π½Π°Ρ:
import nl.jqno.equalsverifier.EqualsVerifier;
public class PersonTest {
@Test
void equalsContract() {
EqualsVerifier.forClass(Person.class).verify();
}
}
π ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ:
- Set, Map, List.contains() ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
- EqualsVerifier ΠΏΡΠΎΠ²Π΅ΡΠΈΡ: ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡ, ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΠΎΡΡΡ, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ, null ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
- ΠΠ½ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» final ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅.
π§ Π‘ΠΎΠ²Π΅ΡΡ:
- ΠΠ΅ ΠΏΠΈΡΠΈ equals() Π²ΡΡΡΠ½ΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Objects.equals() ΠΈ Objects.hash().
- ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ Lombok, ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Ρ @EqualsAndHashCode.
ΠΠΈΡΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°Ρ
, ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Π»ΠΈ ΡΡ Ρ Π±Π°Π³Π°ΠΌΠΈ ΠΈΠ·-Π·Π° equals()`/`hashCode()? ΠΠ°ΠΊ ΡΡ ΠΈΡ
Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»?
π @java_geek2 380
π ΠΡΠΊΡΡΡΡΠΉ ΡΡΠΎΠΊ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Scala
ΠΠ° ΠΎΡΠΊΡΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ 1 Π°ΠΏΡΠ΅Π»Ρ Π² 20:00 ΠΌΡΠΊ ΠΌΡ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠΌΡΡ Π² ΠΌΠΈΡ Π±ΡΠΊΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Scala.
π Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
β Π£Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Scala;
β ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
;
β ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ CRUD-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ².
Π‘ΠΏΠΈΠΊΠ΅Ρ: ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΎΡΠΎΠ½Π΅Ρ β ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π΅ΠΏΠ°ΡΡΠ°ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Naumen, ΡΠΊΡΠΏΠ΅ΡΡ Ρ 14-Π»Π΅ΡΠ½ΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉΡΡ Π½Π° Scala ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
π Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠ΅
https://vk.cc/cKbrfD
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
2 380
π§© ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ Optional Π² Java ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΠ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ
ΠΎΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΠΏΠΎΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² Java β
Optional. Π§Π°ΡΡΠΎ Π²ΠΈΠΆΡ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ "Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠ΅", Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡ, Π° Π²Π΅Π΄Ρ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ΅ΠΉΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
π ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Optional?
1. Π ΡΠΈΠ³Π½Π°ΡΡΡΠ°Ρ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ:
public Optional<User> findUserById(String id)
2. ΠΠ»Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ:
Optional.ofNullable(user)
.map(User::getProfile)
.map(Profile::getAddress)
.ifPresent(System.out::println);
3. ΠΠΌΠ΅ΡΡΠΎ null ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ β ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ.
π« ΠΠΎΠ³Π΄Π° ΠΠ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Optional:
- Π ΠΏΠΎΠ»ΡΡ
ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ DTO β Optional Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
- Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β ΡΡΠΎ Π»ΠΎΠΌΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ Π½Π΅ Π΄Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ.
- ΠΠ½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ²/Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΡΠ°ΡΡΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ β Optional ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° GC.
- ΠΡΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ β ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Jackson ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ.
π‘ ΠΠ°ΠΉΡΡ
Π°ΠΊ: Π΅ΡΠ»ΠΈ ΡΡ Π²ΡΡ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ Optional, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ orElse, orElseGet ΠΈ orElseThrow β Ρ Π½ΠΈΡ
Π΅ΡΡΡ Π½ΡΠ°Π½ΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°ΡΡΠΎ Π·Π°Π±ΡΠ²Π°ΡΡ.
π @java_geek2 380
π― ΠΠ°ΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Lombok ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π²ΡΡ Π΅ΡΡ Π½Π΅ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡ ΠΎΡ Π½Π΅Π³ΠΎ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ
ΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ ΠΊ Lombok. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π²ΠΎΠΊΡΡΠ³ Π½Π΅Π³ΠΎ Π΄Π°Π²Π½ΠΎ ΠΈΠ΄ΡΡ ΡΠΏΠΎΡΡ, Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Π² ΡΡΠ΄Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² β ΠΈ Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ.
β
ΠΠ΄Π΅ ΠΎΠ½ ΡΠΌΠ΅ΡΡΠ΅Π½
- DTO, VO, Entity ΠΊΠ»Π°ΡΡΡ β Π·Π΄Π΅ΡΡ Lombok ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (
@Getter, @Setter, @ToString, @EqualsAndHashCode ΠΈ Ρ.Π΄.).
- Π ΡΠ΅ΡΡΠ°Ρ
β Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Builder ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
β ΠΠ΄Π΅ ΠΈΠ·Π±Π΅Π³Π°Ρ
- Π Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅. Π― ΡΡΠ°ΡΠ°ΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ
ΠΈ core-ΡΠ»ΠΎΡΡ
.
- Π ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
API β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°/ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
π ΠΠΎΡΠ΅ΠΌΡ Π½Π΅ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ
ΠΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Lombok Π½Π° record, Java 21+ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ IDE-Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ. ΠΠΎ:
- Lombok ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ².
- Π‘ Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ legacy-ΠΊΠΎΠ΄.
- ΠΠ½ΠΎΠ³Π΄Π° ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ°ΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΡ
ΠΌΠΎΠ΄Π΅Π»ΡΡ
.
π‘ ΠΠΎΠΉ ΡΠΎΠ²Π΅Ρ: ΡΡΠ°Π²ΡΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Generated (ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ) Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π½ Lombok, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΎΡΠΊΡΠ΄Π° ΡΡΠΎ Π²Π·ΡΠ»ΠΎΡΡ. Π Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ β ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ MapStruct + ΡΡΡΠ½ΡΠ΅ ΠΌΠ°ΠΏΠΏΠ΅ΡΡ.
π @java_geek2 380
ΠΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ ΠΊΠ»Π°ΡΡΠ° Reader Π²Ρ Π·Π½Π°Π΅ΡΠ΅, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ?
β’ Reader β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄;
β’ BufferedReader β Π±ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ;
β’ CharArrayReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°;
β’ FileReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΈΡΠ°ΡΡΠΈΠΉ ΡΠ°ΠΉΠ»;
β’ FilterReader β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ²-Π½Π°Π΄ΡΡΡΠΎΠ΅ΠΊ;
β’ InputStreamReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠΈΠΉ Π±Π°ΠΉΡΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ;
β’ LineNumberReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΡΠΎΠΊΠΈ;
β’ PipedReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Π½Π°Π»;
β’ PushbackReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΏΠΎΡΠΎΠΊ;
β’ StringReader β Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΈΡΠ°ΡΡΠΈΠΉ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ.
π @java_geek
2 380
π οΈ Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ `Optional` Π² Java: ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ
Optional Π² Java β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ NullPointerException ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ, ΠΈ Ρ Optional Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½ΡΠ°Π½ΡΡ.
πΉ ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Optional?
β
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ null, Π»ΡΡΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ Optional<T>, ΡΡΠΎΠ±Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ.
_ΠΡΠΈΠΌΠ΅Ρ:_
public Optional<String> findUsernameById(int id) {
return id == 1 ? Optional.of("user123") : Optional.empty();
}
β
ΠΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (`Stream API`)
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡ Optional ΠΈ Stream, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
_ΠΡΠΈΠΌΠ΅Ρ:_
Optional<String> username = users.stream()
.filter(user -> user.getId() == 1)
.map(User::getUsername)
.findFirst();
β
ΠΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, Π½ΠΎ Π½ΡΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ifPresent() Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
_ΠΡΠΈΠΌΠ΅Ρ:_
optionalUser.ifPresent(user -> System.out.println("ΠΡΠΈΠ²Π΅Ρ, " + user.getUsername()));
π» ΠΠΎΠ³Π΄Π° Optional Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
β Π ΠΏΠΎΠ»ΡΡ
ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ (DTO, Entity, POJO)
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Optional Π² ΠΏΠΎΠ»ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎ ΠΈ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ null ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
β Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
ΠΠ΅ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Optional Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎ Π½Π΅ Π΄Π°Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΊΠΎΠ΄.
_β Π’Π°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ:_
public void process(Optional<User> user) { ... }
_β
ΠΡΡΡΠ΅:_
public void process(User user) { ... }
ΠΡΠ²ΠΎΠ΄ π
β
Optional β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΡ.
Π ΠΊΠ°ΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Optional Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
? ΠΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
! π
π @java_geek2 380
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Java Virtual Machine (JVM)? ΠΠ°ΠΊ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
Java Virtual Machine (JVM) β ΡΡΠΎ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Π³Π΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° JVM. ΠΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Java-ΠΊΠΎΠ΄Π° ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
JVM ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Java-ΠΊΠΎΠ΄ (Π±Π°ΠΉΡ-ΠΊΠΎΠ΄) ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ Ρ. Π΄.
ΠΠΎΠ³Π΄Π° Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° JVM, ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±ΠΎΠ³Π°ΡΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Java, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ JVM Java ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ
Π½Π°Π΄Π΅ΠΆΠ½ΡΡ
ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ
ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π @java_geek
2 380
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°?
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π² .java ΡΠ°ΠΉΠ»Π΅ Π±ΡΠ» Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΈ ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π»ΠΎ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°.
Protected ΠΈ private ΠΊΠ»Π°ΡΡΠΎΠ² Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π° Π²ΠΎΡ Π½Π° package-protected ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠ΄ΠΎΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π° (ΠΈΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ°, Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π’Π°ΠΊ ΡΡΠΎ ΠΎΡΠ²Π΅Ρ β ΠΌΠΎΠΆΠ΅Ρ.
π @java_geek
2 380
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°?
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° β ΡΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΠΏΠΈΡΠΊΠ° Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΈ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π΅.
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠΈΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ, Π½ΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ°.
π @java_geek
2 380
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½?
ΠΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ β Π΄Π°. ΠΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ β 2 ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΠΏΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ°Π΅ΡΡΡ.
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ β Π½Π΅Ρ. ΠΡΠ±ΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΡΠ°Π½Π½Π΅ΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ (Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Ρ
ΠΎΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° β ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ.
Π ΡΠ΅Π»ΠΎΠΌ, ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°, Π° Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ.
π @java_geek
2 380
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ»Π°ΡΡ Object? ΠΠ°ΠΊΠΈΠ΅ Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ?
Object β ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Java. ΠΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Object ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ:
public boolean equals(Object obj) β ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ;
int hashCode() β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ hash ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
String toString() β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
Class getClass() β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;
protected Object clone() β ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
void notify() β Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡ;
void notifyAll() β Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡ;
void wait() β ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ·Π²Π°Π²ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ notify() ΠΈΠ»ΠΈ notifyAll() Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
void wait(long timeout) β ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ·Π²Π°Π²ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ notify() ΠΈΠ»ΠΈ notifyAll() Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
void wait(long timeout, int nanos) β ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ·Π²Π°Π²ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ notify() ΠΈΠ»ΠΈ notifyAll() Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
protected void finalize() β ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ°.
π @java_geek2 380
Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ Β«ΡΡΡΠΏΠΈΡΡΒ» ΠΏΠΎΡΠΎΠΊ?
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΡΠ·Π²Π°Π² Π² Ρ
ΠΎΠ΄Π΅ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄
Thread.sleep() ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
. ΠΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΈΠ· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ interrupt() Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ InterruptedException.
π @java_geek2 380
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ HashMap?
HashMap ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Β«ΠΊΠΎΡΠ·ΠΈΠ½Β» (bucket). Π‘ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Β«ΠΊΠΎΡΠ·ΠΈΠ½ΡΒ» β ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΡΠ°Π½ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΡ Β«ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β» Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Ρ
ΡΡ-ΠΊΠΎΠ΄ ΠΊΠ»ΡΡΠ°, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΊΠΎΡΠ·ΠΈΠ½Ρ (Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°), Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ ΠΊΠΎΡΠ·ΠΈΠ½Π° ΠΏΡΡΡΠ°Ρ, ΡΠΎ Π² Π½Π΅Π΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π²Π½ΠΎΠ²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΡΠ°ΠΌ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅, Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ
ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈ ΡΡΠ°Π²ΠΈΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π²Π½ΠΎΠ²Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ Π±ΡΠ» Π½Π°ΠΉΠ΄Π΅Π½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠΎ ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
π @java_geek
