uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi πŸ‘‰ Belgini koβ€˜rmoqchi boβ€˜lsangiz, obuna boβ€˜ling

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Kanalga Telegram’da oβ€˜tish

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ ΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π² ΠΌΠΈΡ€ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Бвязь: @devmangx РКН: https://clck.ru/3H4WUg

Ko'proq ko'rsatish

πŸ“ˆ Telegram kanali Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ analitikasi

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (@java_iibrary) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 11 912 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 465-o'rinni va Rossiya mintaqasida 53 914-o'rinni egallagan.

πŸ“Š Auditoriya koβ€˜rsatkichlari va dinamika

Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΎ sanasidan buyon loyiha tez oβ€˜sib, 11 912 obunachiga ega boβ€˜ldi.

30 Oktabr, 2026 dagi oxirgi ma’lumotlarga koβ€˜ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 290 ga, soβ€˜nggi 24 soatda esa -1 ga oβ€˜zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya oβ€˜rtacha 10.90% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.28% ini tashkil etuvchi reaksiyalarni toβ€˜playdi.
  • Post qamrovi: Har bir post oβ€˜rtacha 1 299 marta koβ€˜riladi; birinchi sutkada odatda 748 ta koβ€˜rish yigβ€˜iladi.
  • Reaksiyalar va oβ€˜zaro ta’sir: Auditoriya faol: har bir postga oβ€˜rtacha 3 ta reaksiya keladi.
  • Tematik yoβ€˜nalishlar: Kontent boot, string, void, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, resttemplate kabi asosiy mavzularga jamlangan.

πŸ“ Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
β€œΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ ΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π² ΠΌΠΈΡ€ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Бвязь: @devmangx РКН: https://clck.ru/3H4WUg”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 31 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli boβ€˜lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini koβ€˜rsatadi.

11 912
Obunachilar
-124 soatlar
-67 kun
+29030 kun
Postlar arxiv
ДороТная ΠΊΠ°Ρ€Ρ‚Π° ΠΏΠΎ Spring Framework πŸ”ΈPrerequisites β€’ Java Fundamentals. ООП, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ β€’ Maven ΠΈ Gradle. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями β€’ XML ΠΈ Annotations. Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€’ Basic SQL. β€’ JDBC. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ соСдинСния β€’ HTTP ΠΈ Web Basics. REST, JSON, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ πŸ”ΈSpring Core β€’ Inversion of Control. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Spring β€’ Dependency Injection. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€, сСттСр, field injection β€’ Application Context. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°ΠΌΠΈ β€’ Bean Lifecycle. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€’ Bean Scopes. Singleton, prototype, request, session β€’ Configuration. XML, Java-config, Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ πŸ”ΈCore Annotations β€’ @Component. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€’ @Service. Π‘Π»ΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ β€’ @Repository. Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ β€’ @Controller. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° запросов β€’ @Autowired. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй β€’ @Configuration. ΠšΠ»Π°ΡΡΡ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€’ @Bean. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π° πŸ”ΈSpring Boot Basics β€’ Auto-Configuration. Автонастройка Π½Π° зависимостях β€’ Spring Boot Starters. ΠŸΡ€Π΅Π΄Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ β€’ Application Properties. properties ΠΈ YAML β€’ @SpringBootApplication. Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° β€’ Embedded Servers. Tomcat, Jetty, Undertow β€’ Spring Boot CLI. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки πŸ”ΈSpring Web MVC β€’ DispatcherServlet. Π€Ρ€ΠΎΠ½Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ β€’ @RequestMapping. ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ β€’ @GetMapping ΠΈ @PostMapping. HTTP-Ρ…Π΅Π½Π΄Π»Π΅Ρ€Ρ‹ β€’ @RequestParam. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса β€’ @PathVariable. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡƒΡ‚ΠΈ β€’ Model and View. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ MVC πŸ”ΈREST APIs β€’ @RestController. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ REST β€’ @ResponseBody. Π’Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° β€’ HTTP Status Codes. β€’ Content Negotiation. Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ JSON ΠΈ XML β€’ Exception Handling. @ControllerAdvice ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ β€’ CORS. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° совмСстного использования πŸ”ΈSpring Data JPA β€’ JPA Entities. @Entity, @Table, @Id, Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ β€’ Repository Pattern. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ β€’ JpaRepository. CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€’ Query Methods. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹-запросы ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ β€’ @Query Annotation. JPQL ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ запросы β€’ Relationships. @OneToMany, @ManyToOne, @ManyToMany β€’ Pagination ΠΈ Sorting. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ страниц ΠΈ сортировки πŸ”ΈSpring Security β€’ Authentication. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€’ Authorization. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа ΠΏΠΎ ролям β€’ Security Configuration. Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° бСзопасности β€’ Password Encoding. Π­Π½ΠΊΠΎΠ΄Π΅Ρ€Ρ‹ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ β€’ JWT Tokens. БтатлСс-аутСнтификация β€’ OAuth2. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ β€’ Method Security. @PreAuthorize, @Secured πŸ”ΈAspect-Oriented Programming β€’ Cross-cutting Concerns. Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€’ @Aspect. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ аспСктов β€’ Pointcuts. Π’ΠΎΡ‡ΠΊΠΈ срСза β€’ Advice Types. @Before, @After, @Around β€’ JoinPoints. ΠœΠ΅ΡΡ‚Π°, ΠΊΡƒΠ΄Π° вплСтаСтся аспСкт πŸ”ΈTesting β€’ @SpringBootTest. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты β€’ @WebMvcTest. ВСстированиС Π²Π΅Π±-слоя β€’ @DataJpaTest. ВСстированиС JPA β€’ MockMvc. ВСсты ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π±Π΅Π· сСрвСра β€’ @MockBean. Π—Π°Π³Π»ΡƒΡˆΠΊΠΈ Π² контСкстС Spring β€’ TestRestTemplate. ВСстированиС REST πŸ”ΈSpring Actuator β€’ Health Endpoints. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ состояния β€’ Metrics. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ прилоТСния β€’ Custom Endpoints. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ эндпоинты β€’ Info Endpoint. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ сборкС β€’ Environment Properties. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ πŸ”ΈMicroservices β€’ Spring Cloud. Набор для микросСрвисов β€’ Service Discovery. Eureka ΠΈ Consul β€’ API Gateway. Spring Cloud Gateway β€’ Circuit Breaker. Resilience4j ΠΈ Hystrix β€’ Configuration Server. ЦСнтрализованная конфигурация β€’ Distributed Tracing. Sleuth ΠΈ Zipkin πŸ”ΈAdvanced Topics β€’ Reactive Programming. Project Reactor β€’ Spring Native. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² native-image β€’ Custom Auto-Configuration. Π‘Π²ΠΎΠΈ Π°Π²Ρ‚ΠΎΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€’ Event-Driven Architecture. Бобытийная модСль β€’ Caching. Абстракция ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ β€’ Profiles. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ πŸ”ΈDeployment β€’ Docker Containerization. ΠžΠ±Ρ€Π°Π·Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ β€’ Kubernetes Deployment. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Ρ‹ ΠΈ Helm β€’ Cloud Platforms. AWS, GCP, Azure β€’ CI/CD Pipelines. Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² β€’ Production Monitoring. APM ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ πŸ”ΈBest Practices β€’ Project Structure. Π‘Π»ΠΎΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€’ Configuration Management. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ β€’ Error Handling. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ β€’ Logging. SLF4J ΠΈ структурированныС Π»ΠΎΠ³ΠΈ β€’ Performance Optimization. Кэш, ΠΏΡƒΠ» соСдинСний, lazy-loading β€’ Security Hardening. Настройки для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° πŸ‘‰ Java Portal

⌨ Мок-ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ с ΠΌΠ΅Π½Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· Π˜Π½Π½ΠΎΡ‚Π΅Ρ…Π°, Π‘Π±Π΅Ρ€Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ³Ρ‚Π΅Ρ…ΠΎΠ² Π·Π° 900 Ρ€ΡƒΠ±Π»Π΅ΠΉ πŸ‘¨β€πŸ’»Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π³Ρ€Π΅ΠΉΠ΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ„Ρ„Π΅Ρ€ ΠΏΡ€ΠΎ
⌨ Мок-ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ с ΠΌΠ΅Π½Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· Π˜Π½Π½ΠΎΡ‚Π΅Ρ…Π°, Π‘Π±Π΅Ρ€Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ³Ρ‚Π΅Ρ…ΠΎΠ² Π·Π° 900 Ρ€ΡƒΠ±Π»Π΅ΠΉ πŸ‘¨β€πŸ’»Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π³Ρ€Π΅ΠΉΠ΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ„Ρ„Π΅Ρ€ просто Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ достаточно. Π’Ρ‹ дСлаСшь Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π° Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ повысит Ρ‚Π²ΠΎΠΉ Π³Ρ€Π΅ΠΉΠ΄ Π›ΡƒΡ‡ΡˆΠΈΠΉ способ вырасти β€” это ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½ развития ΠΎΡ‚ Senior-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° ΠΈΠ· Π‘ΠΈΠ³Π’Π΅Ρ…Π°. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: 1⃣ Мок-ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ: Π·Π° час 1-Π½Π°-1 ΠΌΠ΅Π½Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ собСс Π½Π° Ρ‚ΠΎΡ‚ Π³Ρ€Π΅ΠΉΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ 2⃣ ЧСстный Ρ„ΠΈΠ΄Π±Π΅ΠΊ: созвонимся ΠΈ расскаТСм Ρ‚Π²ΠΎΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ роста, ΠΎΡ†Π΅Π½ΠΈΠΌ Π³Ρ€Π΅ΠΉΠ΄ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ 3βƒ£ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½ развития: Π½Π΅ просто Β«ΡƒΡ‡ΠΈΡ‚Π΅ алгосы», Π° Ρ€ΠΎΠ°Π΄ΠΌΠ°ΠΏ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Ρ‚Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ тСбя ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡƒ Π³Ρ€Π΅ΠΉΠ΄Ρƒ ΠΈΠ»ΠΈ ΠΎΡ„Ρ„Π΅Ρ€Ρƒ πŸ“ˆ Π”Π°, ΠΈ всС это Π·Π° 900 Ρ€ΡƒΠ±Π»Π΅ΠΉ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ дСшСво? ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π² Π΄Π΅Π»Π΅ наш сСрвис, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΌ своС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. ΠœΡ‹ Π² ШОРВКАВС ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ 1000 Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠΊ-ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ†Π΅Π½ΠΊΡƒ 4.9 ΠΈΠ· 5, поэтому Π·Π½Π°Π΅ΠΌ ΠΎ Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈ Π² нашСго Π±ΠΎΡ‚Π° ΠΈ Π·Π°Π±ΠΈΡ€Π°ΠΉ свой ΠΌΠΎΠΊ Π·Π° 900 Ρ€ΡƒΠ±Π»Π΅ΠΉ β†’ @shortcut_sh_bot Π Π΅ΠΊΠ»Π°ΠΌΠ°. О Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°Ρ‚Π΅Π»Π΅.

Π£ тСбя нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²-ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»Π°Π΄ΡƒΡ‚ элСмСнты Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²-ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π·Π°
Π£ тСбя нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²-ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»Π°Π΄ΡƒΡ‚ элСмСнты Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²-ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚. Если ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ полная, ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Ρ‹ ΠΆΠ΄ΡƒΡ‚. Если ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ пустая, ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€Ρ‹ ΠΆΠ΄ΡƒΡ‚. Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ? На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π·Π°Π΄Π°Ρ‡Π° простая, Π½ΠΎ Π½Π° Π΄Π΅Π»Π΅ ΠΎΠ½Π° провСряСт, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‚Ρ‹ понимаСшь ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠžΡ‚Π²Π΅Ρ‚ ΠœΡ‹ Π΄Π΅Ρ€ΠΆΠΈΠΌ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±ΡƒΡ„Π΅Ρ€ (Deque). ΠŸΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ put ΠΆΠ΄ΡƒΡ‚, Ссли Π±ΡƒΡ„Π΅Ρ€ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½. ΠšΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ take ΠΆΠ΄ΡƒΡ‚, Ссли Π±ΡƒΡ„Π΅Ρ€ пуст. Когда ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€ ΠΊΠ»Π°Π΄Ρ‘Ρ‚ элСмСнт, ΠΎΠ½ сигналит ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€Ρƒ. Когда ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнт, ΠΎΠ½ сигналит ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Ρƒ. ОТиданиС всСгда дСлаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ while, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊ послС пробуТдСния ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» условиС. Π€Π»Π°Π³ close Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ вставки ΠΈ Π±ΡƒΠ΄ΠΈΡ‚ всСх, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReentrantLock. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ synchronized, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с большим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ нСсколько Ρ€Π°Π· Π±Π΅Π· Π΄Π΅Π΄Π»ΠΎΠΊΠ°. Он позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Condition-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” это ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ оТидания, привязанныС ΠΊ Π·Π°ΠΌΠΊΡƒ. Π—Π΄Π΅ΡΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ завСсти Π΄Π²Π΅: notFull ΠΈ notEmpty, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€Ρ‹ ΠΆΠ΄Π°Π»ΠΈ ΠΈ сигналили Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎ ситуации. πŸ‘‰ Java Portal

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Domain-Driven Design Domain-Driven Design, ΠΈΠ»ΠΈ DDD, это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ слоТныС
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Domain-Driven Design Domain-Driven Design, ΠΈΠ»ΠΈ DDD, это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ слоТныС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ области Π² Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΆΠΈΠ²ΠΎΠ΅ ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС. Он Π½ΡƒΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° трСбования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ слоТныС. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ сформулировал Π­Ρ€ΠΈΠΊ Эванс, Π°Π²Ρ‚ΠΎΡ€ Β«Π‘ΠΈΠ½Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈΒ». ВСхничСская Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ DDD Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, насыщСнный ΠΈ инкапсулированный ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ. Π•Π΄ΠΈΠ½Ρ‹ΠΉ язык это ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ вмСстС с экспСртами. Когда язык согласован, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ событиями ΠΈ понятиями бизнСса. Бущности это Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΆΠ½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: User, Job, Vinyl, Post, Comment. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ сущностСй ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это UUID ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-значСния Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ идСнтичности. Π­Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ сущностСй. НапримСр, Name ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρƒ User. АгрСгат это Π½Π°Π±ΠΎΡ€ сущностСй, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π½Π΅ΠΌ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π°. ΠšΠΎΡ€Π΅Π½ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π° это Ρ‚ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ поискС ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‡Ρ‚ΠΎ проходят всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€Π°Π½ΠΈΡ† Π°Π³Ρ€Π΅Π³Π°Ρ‚Π°. Π’Π°ΠΊ сохраняСтся ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ. МодСль ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π² DDD опираСтся Π½Π° смыслы Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² domain ΠΈ model. Π”ΠΎΠΌΠ΅Π½ это Π΄Π΅Ρ‚Π°Π»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΠΎ бизнСсС, опСрациях, Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…, цСлях ΠΈ ограничСниях. ПониманиС этого опрСдСляСт саму ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ Ρ€Π°ΠΌΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π”ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сСрвисы это мСсто для Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, которая Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ контСкст это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ DDD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ. Он ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ большиС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Код рСализуСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ контСкста послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄ΠΎΠΌΠ΅Π½ ΠΈ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Ρ‹. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ контСксты Π·Π°Π΄Π°ΡŽΡ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· слоя хранСния. Π‘ ΠΎΠΏΠΎΡ€ΠΎΠΉ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доступ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° in-memory Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для тСстов. Π€Π°Π±Ρ€ΠΈΠΊΠ° Π½ΡƒΠΆΠ½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠΌΠ΅Π½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Ρ„Π°Π±Ρ€ΠΈΠΊΠΎΠΉ ΠΈΠ· сырых строк SQL, сырого JSON ΠΈΠ»ΠΈ ΠΈΠ· Active Record, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π½ΡƒΠ» ваш ORM инструмСнт Π²Ρ€ΠΎΠ΄Π΅ Sequelize ΠΈΠ»ΠΈ TypeORM. πŸ‘‰ Java Portal

πŸ‘©β€πŸ’» Π˜Ρ‰Π΅ΠΌ Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π Π΅Π»ΠΎΠΊΠ΅ΠΉΡ‚, ΡƒΠ΄Π°Π»Ρ‘Π½ΠΊΠ°, ΠΏΠ»Π°Ρ‚ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ! Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Вас, собираСм Π»ΡƒΡ‡ΡˆΠΈΠ΅ вакансии, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с прямыми ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ Π² Telegram! πŸ‘©β€πŸ’» Java πŸ‘£ Go πŸ‘©β€πŸ’» C# πŸ‘©β€πŸ’» Python πŸ–ΌοΈ PHP πŸ‘©β€πŸ’» Node.js πŸ‘©β€πŸ’» DevOps πŸ€– ML & DS πŸ”Ž QA πŸ–₯ SQL πŸ‘©β€πŸ’» UX/UI πŸ‘©β€πŸ’» Frontend πŸ‘©β€πŸ’» Mobile πŸ‘©β€πŸ’» Analyst πŸ’Ό 1C Подпишись Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ свой шанс ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ„Ρ„Π΅Ρ€!

Π—Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ == Π² Java Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΎΠ΄Π½ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Integer, Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” Π½Π΅Ρ‚? Π”Π΅Π»ΠΎ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°
Π—Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ == Π² Java Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΎΠ΄Π½ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Integer, Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” Π½Π΅Ρ‚? Π”Π΅Π»ΠΎ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Integer Caching. JVM ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Integer Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -128 Π΄ΠΎ 127. Когда Π²Ρ‹ присваиваСтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, Java ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· кэша. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ числом Π² этом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ссылку, ΠΈ == Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true Но Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для 128 ΠΈΠ»ΠΈ 1000, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Бсылки Ρ€Π°Π·Π½Ρ‹Π΅, поэтому == Π²Π΅Ρ€Π½Π΅Ρ‚ false, Π΄Π°ΠΆΠ΅ Ссли значСния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ стоит Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ: == сравниваСт ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π½Π΅ сами значСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ числа, всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .equals() Π­Ρ‚ΠΎΡ‚ Ρ‚Ρ€ΡŽΠΊ с ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Byte, Short, Character (Π΄ΠΎ 127) ΠΈ Long (ΠΎΡ‚ -128 Π΄ΠΎ 127) πŸ‘‰ Java Portal

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€ ΠΏΠΎ CPU-Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Java, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигналов, устройст
Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€ ΠΏΠΎ CPU-Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Java, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигналов, устройство ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΈ асинхронноС сэмплированиС. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², скрытых Π·Π° кулисами. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ здСсь ПослС ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π² Π½ΠΎΠ²ΠΎΠΌ CPU-Ρ‚Π°ΠΉΠΌ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Π΅ Java 25 устроСна ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для запросов Π½Π° сэмплинг: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ для баланса ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ сэмплов ΠΈ расходом памяти, ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ JVM Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ этот Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² зависимости ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° сэмплинга. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅: Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ πŸ‘‰ Java Portal

Π’ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Π° для собСсСдования ΠΏΠΎ Java Π£ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠΎΡ‚ΠΎΠΊ 1 ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ числа. ΠŸΠΎΡ‚ΠΎΠΊ 2 ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ числа. К
Π’ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Π° для собСсСдования ΠΏΠΎ Java Π£ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠΎΡ‚ΠΎΠΊ 1 ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ числа. ΠŸΠΎΡ‚ΠΎΠΊ 2 ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ числа. Как ΠΈΡ… ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ всСгда ΡˆΡ‘Π» ΠΏΠΎ порядку: 1 2 3 4 5… Π—Π²ΡƒΡ‡ΠΈΡ‚ просто, Π½ΠΎ заставляСт Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠžΡ‚Π²Π΅Ρ‚ Π‘Π°ΠΌΡ‹ΠΉ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ способ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСмафоры. Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ управляСт Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²). ΠŸΠΎΡ‚ΠΎΠΊ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ acquire, Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΈ Ссли Π΅Π³ΠΎ Π½Π΅Ρ‚ β€” ΠΆΠ΄Ρ‘Ρ‚. ΠŸΠΎΡ‚ΠΎΠΊ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ release, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ Π±ΡƒΠ΄ΠΈΡ‚ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ. ΠœΡ‹ создаём Π΄Π²Π° сСмафора: ΠΎΠ΄ΠΈΠ½ для Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ…, Π΄Ρ€ΡƒΠ³ΠΎΠΉ для Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ…. Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€ для Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ… ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ 1 Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠ³ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ, Π° для Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ… β€” 0, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΆΠ΄Π°Π». ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ число, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ release для Ρ‡Ρ‘Ρ‚Π½ΠΎΠ³ΠΎ. Π§Ρ‘Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ acquire, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚, ΠΈ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠΌΡƒ. Π’Π°ΠΊΠΎΠ΅ Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 1 2 3 4 … Π±Π΅Π· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ оТидания, Π±Π΅Π· sleep ΠΈ Π±Π΅Π· Π³ΠΎΠ½ΠΎΠΊ. πŸ‘‰ Java Portal

Π’Ρ‹ΡˆΠ»Π° нСплохая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΎ Big O Big O ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡƒΡ‚ сСбя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°ΠΆΠ΅ с ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π΅ΡΡ‚ΡŒ наглядныС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ² ΠΈ простыС объяснСния. πŸ‘‰ Java Portal

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ числа Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но Π² Java Π΅ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‚Π΅Ρ€Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚
Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ числа Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но Π² Java Π΅ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‚Π΅Ρ€Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ автоматичСски. Одно ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°. Π’ БША это Π±ΡƒΠ΄Π΅Ρ‚ 12,000.75. Π’ΠΎ Π€Ρ€Π°Π½Ρ†ΠΈΠΈ β€” 12 000,75. Π’ Индии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π»Π°ΠΊΡ…Π°ΠΌ ΠΈ ΠΊΡ€ΠΎΡ€. Π’ России β€” 12 000,75. А Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС число станСт 12K Π½Π° английском ΠΈΠ»ΠΈ 12 ΰ€Ήΰ€œΰ€Όΰ€Ύΰ€° Π½Π° Ρ…ΠΈΠ½Π΄ΠΈ. И всё это доступно ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартныС API Java. πŸ‘‰ Java Portal

Как Π²Π°ΠΌ эта дТавовская ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒ: - Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ enum, Π° Π½Π΅ строковыС константы - - компилятор сам ΠΏΠΎΠΉΠΌΠ°Π΅Ρ‚ ошибки. - НС создавай ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ - - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ executors. - ВсСгда Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉ JDBC-рСсурсы - - ΠΈΠ½Π°Ρ‡Π΅ Π±Π°Π·Π° останСтся Π±Π΅Π· коннСкшСнов. - НС Π³Π»ΠΎΡ‚Π°ΠΉ checked-ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ - - хотя Π±Ρ‹ Π»ΠΎΠ³ΠΈΡ€ΡƒΠΉ ΠΈΡ…. - НС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠΉ InterruptedException - - это Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². - НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ SimpleDateFormat Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ - - ΠΎΠ½ Π½Π΅ потокобСзопасСн. - ΠšΡΡˆΠΈΡ€ΡƒΠΉ prepared statements - - ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ SQL ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· слишком Π΄ΠΎΡ€ΠΎΠ³ΠΎ. - Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ тСбя Π½Π° этапС компиляции - - Π½Π΅ ΡƒΠ±ΠΈΠ²Π°ΠΉ ΠΈΡ…, приводя ΠΊ Object πŸ‘‰ Java Portal

Как Java ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ сСти ΠΈΠ»ΠΈ сохраняСт ΠΈΡ… для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования? Для этого Π΅ΡΡ‚ΡŒ сСриализация. Она ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·Ρƒ
Как Java ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ сСти ΠΈΠ»ΠΈ сохраняСт ΠΈΡ… для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования? Для этого Π΅ΡΡ‚ΡŒ сСриализация. Она ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π½Π°Π±ΠΎΡ€ Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ опСрация β€” дСсСриализация, которая восстанавливаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· этих Π±Π°ΠΉΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Serializable, ΠΈΠΌΠ΅Π΅Ρ‚ serialVersionUID. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии. ΠŸΡ€ΠΈ дСсСриализации Java провСряСт, совпадаСт Π»ΠΈ UID Π² Π΄Π°Π½Π½Ρ‹Ρ… с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² классС. Если совпадаСт β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ принимаСтся. Если Π½Π΅Ρ‚ β€” выбрасываСтся InvalidClassException. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли класс измСнился послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ сСриализованы? - Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ β†’ старыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (0, null, false). - Π£Π΄Π°Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ β†’ старыС Π΄Π°Π½Π½Ρ‹Π΅ для Π½Π΅Π³ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. - Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ Ρ‚ΠΈΠΏ поля β†’ ломаСтся. - Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ UID β†’ ломаСтся. Если UID Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ явно, JVM сгСнСрируСт Π΅Π³ΠΎ автоматичСски Π½Π° основС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ класса (поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹). Π”Π°ΠΆΠ΅ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ поля, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ UID ΠΈ сдСлаСт старыС Π΄Π°Π½Π½Ρ‹Π΅ нСсовмСстимыми. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ всСгда Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ serialVersionUID Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ избавляСт ΠΎΡ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ошибок. πŸ‘‰ Java Portal

КакиС языки программирования самыС Β«Π·Π΅Π»Ρ‘Π½Ρ‹Π΅Β»? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ языка ΠΌΡ‹ смотрим Π½Π° синтаксис, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ простот
КакиС языки программирования самыС Β«Π·Π΅Π»Ρ‘Π½Ρ‹Π΅Β»? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ языка ΠΌΡ‹ смотрим Π½Π° синтаксис, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ простоту обучСния. Но нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎΡ€Ρ‚ΡƒΠ³Π°Π»ΡŒΡΠΊΠΈΡ… исслСдоватСлСй ΠΈΠ·ΡƒΡ‡ΠΈΠ»Π° энСргопотрСблСниС 27 популярных языков программирования, измСряя врСмя выполнСния, энСргозатраты ΠΈ ΠΏΠΈΠΊΠΎΠ²ΠΎΠ΅ использованиС памяти. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ компромиссы: быстрый ΠΊΠΎΠ΄ Π½Π΅ всСгда самый энСргоэффСктивный, Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ сильно влияСт Π½Π° энСргопотрСблСниС. Π­Ρ‚ΠΈ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ языка, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΡΠ½Π΅Ρ€Π³ΠΎΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ исслСдования: CΠΈ оказался самым энСргоэффСктивным языком. Python ΠΈ Perl β€” Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ экологичныС языки программирования. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ πŸ‘‰ Java Portal

Наткнулся Π½Π° Ρ‚Π°ΠΊΠΎΠΉ пост ΠΎΡ‚ ΡΠ΅Π½ΡŒΠΎΡ€Π°, ΠΏΡ€ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия для System Design:
1. ПониманиС Ρ†Π΅Π»ΠΈ Π Π°Π·Π±Π΅Ρ€ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡˆΡŒ, ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ для Ρ‡Π΅Π³ΠΎ это Π½ΡƒΠΆΠ½ΠΎ. 2. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (read-heavy vs write-heavy) Если систСма Π² основном Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ (ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅), Π΄Π΅Π»Π°ΠΉ ΡƒΠΏΠΎΡ€ Π½Π° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ для чтСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Netflix, ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Amazon. Если Π² основном ΠΏΠΈΡˆΡƒΡ‚ (ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΏΠ»ΠΎΠ°Π΄ΠΎΠ², входящих Π΄Π°Π½Π½Ρ‹Ρ…), ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, пакСтная запись, eventual consistency. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: сообщСния WhatsApp, Π΄Π°Π½Π½Ρ‹Π΅ IoT-Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². 3. ΠšΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ vs Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Бтрогая ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Π° Ρ‚Π°ΠΌ, Π³Π΄Π΅ ошибка нСдопустима (Π±Π°Π½ΠΊΠΈ, Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅). Eventual consistency ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΆΠΈΡ‚ΡŒ с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Instagram, Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°). 4. ВрСбования ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π Π΅Π°Π»Ρ‚Π°ΠΉΠΌ β€” оптимизация ΠΏΠΎΠ΄ Π½ΠΈΠ·ΠΊΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· кэш ΠΈΠ»ΠΈ прСдвычислСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: Π³Π΅ΠΉΠΌΠΈΠ½Π³, Zoom, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ. Асинхронно β€” ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: e-mail рассылка, гСнСрация ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ². 5. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π—Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉ рост Γ—10. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Google Docs начинался малСньким, Π½ΠΎ сСйчас ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΏΡ€Π°Π²ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Uber β€” тысячи ΠΏΠΎΠ΅Π·Π΄ΠΎΠΊ Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ stateless-сСрвисы ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. 6. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ доступа ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉ ΠΏΠΎΠ΄ Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠ°ΠΊ часто Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ: поиск ΠΏΠΎ Π³Π΅ΠΎ/Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ (geo-hash + ElasticSearch), быстрый доступ ΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ID (Redis/Memcached). 7. Рост Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°ΠΉ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ Π·Π°Ρ€Π°Π½Π΅Π΅ (ΠΏΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π³Π΅ΠΎ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ YouTube ΡˆΠ°Ρ€Π΄ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ID Π²ΠΈΠ΄Π΅ΠΎ. Π₯ΠΎΠ»ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сТимай ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠΉ (Gmail, Google Drive). 8. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ² Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ€Π΅Ρ‚Ρ€Π°ΠΈ, фоллбэки, circuit breakers. Если API ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ β†’ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ + настройка Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Amazon payment retry). Если кэш нСдоступСн β†’ фоллбэк Π² Π‘Π” (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Reddit Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ· Π‘Π”). 9. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ авторизация Авторизация: OAuth / JWT (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π»ΠΎΠ³ΠΈΠ½ Ρ‡Π΅Ρ€Π΅Π· Google ΠΈΠ»ΠΈ Spotify). Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Π±ΡƒΠ·ΠΎΠ² ΠΈ Π±ΠΎΡ‚ΠΎΠ²: rate limiting, CAPTCHA (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Gmail signup, Ρ„ΠΎΡ€ΠΌΡ‹). 10. НуТно Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ всё самому? НСкритичныС Ρ„ΠΈΡ‡ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ вынСсти Π² SaaS ΠΈΠ»ΠΈ сторонниС API: ΠŸΠ»Π°Ρ‚Π΅ΠΆΠΈ β€” Stripe, PayPal. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ° β€” Cloudinary, S3. УвСдомлСния β€” Firebase, SendGrid.
πŸ‘‰ Java Portal

Π’Ρ‚ΠΎΡ€ΠΎΠΉ пост Π² Π±Π»ΠΎΠ³Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ· популярных Python-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Java ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Ρƒ
Π’Ρ‚ΠΎΡ€ΠΎΠΉ пост Π² Π±Π»ΠΎΠ³Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ· популярных Python-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Java ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Embabel. БСгодня Π² фокусС: Pydantic AI β€” Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ πŸ‘‰ Java Portal

Boolean-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Java Stream API ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со Stream API часто Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, подходят Π»ΠΈ элСмСнты ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ условиС. Для этого Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ true ΠΈΠ»ΠΈ false. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: 1. anyMatch(Predicate) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π΅ΡΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.
List<String> names = List.of("Alice", "Bob", "Anna");
boolean hasShortName = names.stream()
    .anyMatch(name -> name.length() < 4);
// β†’ true (ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ "Bob")
2. allMatch(Predicate) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли всС элСмСнты ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.
List<String> names = List.of("Alice", "Bob", "Anna");
boolean allStartWithA = names.stream()
    .allMatch(name -> name.startsWith("A"));
// β†’ false
3. noneMatch(Predicate) Π”Π°Ρ‘Ρ‚ true, Ссли Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.
List<String> names = List.of("Alice", "Bob", "Anna");
boolean noneEmpty = names.stream()
    .noneMatch(String::isEmpty);
// β†’ true
πŸ‘‰ Java Portal

JavaCV Π­Ρ‚ΠΎ Java-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° ΠΊ OpenCV, FFmpeg ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Ρ‡Π΅Ρ€Π΅Π· JavaCPP Presets. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·
JavaCV Π­Ρ‚ΠΎ Java-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° ΠΊ OpenCV, FFmpeg ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Ρ‡Π΅Ρ€Π΅Π· JavaCPP Presets. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π°ΡƒΠ΄ΠΈΠΎ Π½Π° JVM. Π£ΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Ρ…Π²Π°Ρ‚ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, интСграция с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ OpenCV, FFmpeg, Tesseract, librealsense ΠΈ Π΄Ρ€. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows, macOS, Linux ΠΈ Android. ΠŸΠ°ΠΊΠ΅Ρ‚ Π΅ΡΡ‚ΡŒ Π² Maven Central. Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€ΠΈ подтянутся автоматичСски. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с Π΄Π΅ΠΌΠΎ Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с дСталями ΠΏΡ€ΠΎ JavaCPP ΠΈ прСсСты πŸ‘‰ Java Portal

ИВ-спСциалисты ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π°, ΠΎΠ±Ρ‰ΠΈΠΉ сбор 6 ΠΈ 7 сСнтября ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ИВ-Ρ„Π΅ΡΡ‚ΠΈΠ²Π°Π»ΡŒ Β«Π‘Π΅Π·ΠΎΠ½ ΠΊΠΎΠ΄Π°Β» для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ML-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎ
ИВ-спСциалисты ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π°, ΠΎΠ±Ρ‰ΠΈΠΉ сбор  6 ΠΈ 7 сСнтября ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ИВ-Ρ„Π΅ΡΡ‚ΠΈΠ²Π°Π»ΡŒ Β«Π‘Π΅Π·ΠΎΠ½ ΠΊΠΎΠ΄Π°Β» для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ML-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², спСциалистов ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ИВ-спСциалистов. Π‘ΠΏΠΈΠΊΠ΅Ρ€Ρ‹ ΠΈΠ· Π’-Π‘Π°Π½ΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Π·ΠΎΠ²ΡƒΡ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ. РазвлСчСния ΠΈ ΠΌΡƒΠ·Ρ‹ΠΊΠ° Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚.  Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь: β€” Π Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ систСм, надСТности ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.  β€” Π£Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ бизнСса. β€” ΠŸΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ΄Π΅ΠΈ становятся инструмСнтами ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ дСнь:  β€” Π£ΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. β€” Π£Π·Π½Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎ backend-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эффСктивнСС. β€” Π£Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ LLM ΠΈ ΠΊΡƒΠ΄Π° всС это двиТСтся. Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ посСтитС ΠΎΠ±Π°. ВстрСча ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π² Π½ΠΎΠ²ΠΎΠΌ ИВ-Ρ…Π°Π±Π΅ Π’-Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π΅. УспСйтС Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 5 сСнтября

Spring Boot с AOP: Spring Boot позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ вынСсти ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈ
Spring Boot с AOP: Spring Boot позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ вынСсти ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. МоТно Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски Π½Π°Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, сохраняя ΠΊΠΎΠ΄ чистым ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ 1. Боздаётся аннотация @LogExecutionTime
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime {}
Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π²Π΅ΡΠΈΡ‚ΡŒ Π½Π° любой ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. 2. АспСкт LoggingAspect
@Aspect
@Component
public class LoggingAspect {
    @Around("@annotation(LogExecutionTime)")
    public Object logExecution(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();

        Object result = joinPoint.proceed(); // Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄

        long timeTaken = System.currentTimeMillis() - start;
        System.out.println(joinPoint.getSignature() + " executed in " + timeTaken + " ms");

        return result;
    }
}
- ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ @LogExecutionTime - БохраняСт врСмя старта β†’ выполняСт ΠΌΠ΅Ρ‚ΠΎΠ΄ β†’ считаСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ β†’ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π»ΠΎΠ³. 3. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ TestController
@RestController
public class TestController {

    @GetMapping("/hello")
    @LogExecutionTime
    public String hello() throws InterruptedException {
        Thread.sleep(500); // имитация Ρ€Π°Π±ΠΎΡ‚Ρ‹
        return "Hello, World!";
    }
}
- ΠœΠ΅Ρ‚ΠΎΠ΄ hello() ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ @LogExecutionTime - ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС Π½Π° /hello ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π·Π°ΠΌΠ΅Ρ€ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. AOP здСсь ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ System.currentTimeMillis() Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, всё вынСсСно Π² ΠΎΠ΄ΠΈΠ½ аспСкт. πŸ‘‰ Java Portal

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - Telegram kanali @java_iibrary statistikasi va tahlili