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

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

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

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ?

Π£Π·Π½Π°ΠΉΡ‚Π΅ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ Β«ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²Β» 16 сСнтября Π² 20:00 мск, Π³Π΄Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ:

- основы ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²;
- ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ примСнСния SOLID для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°;
- ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡:
- ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ПО, слСдуя SOLID.

Π£Ρ€ΠΎΠΊ для backend ΠΈ fullstack-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ПО ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов.

ВстрСчаСмся Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса «АрхитСктура ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования». ВсС участники Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅!

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС.
❀5πŸ‘2πŸ”₯2
Когда стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ char[] вмСсто String?

ΠŸΠ΅Ρ€Π²Π°Ρ, очСвидная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° – оптимизация. Если Π²Π°ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅ извСстСн Ρ€Π°Π·ΠΌΠ΅Ρ€ строки, ΠΈ ΠΎΠ½ фиксирован, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ массив. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с нСизмСняСмыми подстроками, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ offset-ΠΎΠ² ΠΎΠ±Ρ‰Π΅Π³ΠΎ массива (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ сдСлано Ρ€Π°Π½ΡŒΡˆΠ΅ Π² самом String).

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ осознанно ΠΈ своСврСмСнно. JVM Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ усилия ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ строк (Π²Ρ€ΠΎΠ΄Π΅ интСрнирования), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ эффСктивнСС Π²Π°ΡˆΠΈΡ….

Вторая, ΠΌΠ΅Π½Π΅Π΅ очСвидная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° – Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Java ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сохраняСтС ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ° String, физичСски ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· памяти ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сборщик мусора.

БущСствуСт способ алгоритмичСской Π°Ρ‚Π°ΠΊΠΈ Π½Π° систСму, ΠΊΠΎΠ³Π΄Π° Ρ…Π°ΠΊΠ΅Ρ€ своими дСйствиями Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти, ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ информация ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² heap dump.

Если ΠΏΠ°Ρ€ΠΎΠ»ΡŒ хранится Π² массивС, программист ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Β«Π·Π°Π½ΡƒΠ»ΠΈΡ‚ΡŒΒ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС использования.
πŸ‘13πŸ”₯5
Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kafka Streams для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ?

ВсСго Π·Π° ΠΏΠ°Ρ€Ρƒ часов Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DSL, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ основныС процСссоры для прСобразования, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, логирования ΠΈ раздСлСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с состояниСм ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими партициями.

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρƒ 19 сСнтября Π² 20:00 мск!

Π£Ρ€ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Kafka с использованиСм kafka-streams.

Π‘ΠΏΠΈΠΊΠ΅Ρ€ Π•Π²Π³Π΅Π½ΠΈΠΉ НСпомнящий β€” ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ.

ВстрСчаСмся Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса Β«Apache KafkaΒ». ВсС участники Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅!

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС: https://vk.cc/cAPZwD

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
❀5πŸ‘2πŸ”₯2
Под ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?

Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ соврСмСнных вСрсий Java для этих Ρ†Π΅Π»Π΅ΠΉ Π΅ΡΡ‚ΡŒ Π΄Π²Π° класса:

Period – ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄Π½Π΅ΠΉ, мСсяцСв ΠΈ Π»Π΅Ρ‚. Одним Π΄Π½Π΅ΠΌ здСсь считаСтся дСнь Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ZonedDateTime.

Duration – Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ наносСкунд, сСкунд, ΠΌΠΈΠ½ΡƒΡ‚, часов, ΠΈ Ρ‚ΠΎΠΆΠ΅ Π΄Π½Π΅ΠΉ. Π—Π΄Π΅ΡΡŒ ΠΎΠ΄ΠΈΠ½ дСнь – Ρ€ΠΎΠ²Π½ΠΎ 24 часа.

Оба класса Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс TemporalAmount – ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅. Оба ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹, ΠΈ ΠΊΠ°ΠΊ слСдствиС, потокобСзопасны. Π›ΡŽΠ±Π°Ρ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ опСрация Π²Ρ€ΠΎΠ΄Π΅ plusX() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

ЭкзСмпляры ΠΎΠ±ΠΎΠΈΡ… классов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ between, ΠΈΠ»ΠΈ ΠΈΠ· строки. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅ прСдставлСниС Duration: "P2DT3H4M", Period: "P1Y2M3D".

Π”ΠΎ Java 8 основным способом хранСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π±Ρ‹Π»ΠΈ числовыС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹. Π’ этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ нСдостатков, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π² Java 8+ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ числом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ between() Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта Π΅Π½Π°ΠΌΠ° ChronoUnit.
πŸ‘11πŸ”₯2
Если JAVA, SPRING, API для тСбя Π½Π΅ просто Π½Π°Π±ΠΎΡ€ сСктантских Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€, ΠΆΠ΄Ρ‘ΠΌ тСбя Π½Π° нашСм JAVA ΠΌΠΈΡ‚Π°ΠΏΠ΅!
27 сСнтября Axenix ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΌΠΈΡ‚Π°ΠΏ для всСх java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ.
πŸ“… Π”Π°Ρ‚Π°: 27 сСнтября, 18:30
πŸ“ ΠœΠ΅ΡΡ‚ΠΎ провСдСния: Π³. Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, АптСкарский проспСкт Π΄. 4, ΠΊ.2, стр. 1, (АмфитСатр Π›Π΅Π½ΠΏΠΎΠ»ΠΈΠ³Ρ€Π°Ρ„ΠΌΠ°ΡˆΠ°).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: 

πŸ”ΆΠ’Π°Π»Π΅Ρ€ΠΈΠΉ Π’ΠΎΡ€ΠΎΠΏΠΎΠ², Β«Π§Ρ‚ΠΎ Π·Π° фокусник Ρ‚Π°ΠΊΠΎΠΉ Spring-Data-RedisΒ».  
πŸ”ΆΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΎΠ½Π΄Π°Ρ€Π΅Π½ΠΊΠΎ, Β«ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ логирования ΠΈ маскирования». 
πŸ”ΆΠΠ½Ρ‚ΠΎΠ½ Π‘ΠΎΠ³ΡƒΠ½, Β«Prometheus: ΠΊΠ°ΠΊ Π‘ΠΎΠ³ огня стал Π‘ΠΎΠ³ΠΎΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°Β». 

πŸ”₯Для всСх гостСй ΠΌΠΈΡ‚Π°ΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° пивная дСгустация ΠΈ ΠΊΠ΅ΠΉΡ‚Π΅Ρ€ΠΈΠ½Π³! 
Π—ΠΎΠ²ΠΈ Π΄Ρ€ΡƒΠ·Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈ сам, количСство мСст ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ! УспСй Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ!
πŸ‘3πŸ”₯2😁2
Π§Ρ‚ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
πŸ”₯8πŸ‘2
πŸ“ Знакомимся с Java Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³Π°

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java, Π΄Π°ΠΆΠ΅ Ссли Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ?

Π–Π΄Π΅ΠΌ вас Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ 24 сСнтября Π² 20:00 мск, Π³Π΄Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ:

- Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ язык Java;
- ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ с нуля Π½Π° Java;
- ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π² Java.

Π£Ρ€ΠΎΠΊ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Java с нуля ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ прилоТСния.

Π‘ΠΏΠΈΠΊΠ΅Ρ€ АлСксандр Ѐисунов β€” Senior Kotlin Developer Π² SSP Software Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π’Π’Π‘, ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ тСхничСских Π½Π°ΡƒΠΊ.

ВстрСчаСмся Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса «БпСциализация Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ».
ВсС участники Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅!

πŸ‘‰ Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС: https://vk.cc/cASVPo

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4❀2πŸ”₯2
new String("Hello_42") == "Hello_" + 42?

Π’Π°ΠΊΠΈΠ΅ вопросы ΠΎ сравнСнии строковых ΠΈ числовых констант ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ знания ΠΎ понятии ΠΏΡƒΠ»ΠΎΠ² Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² (literal pool). НС слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΏΡƒΠ»ΠΎΠΌ констант класса. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ класса, Ссли Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ Π² ΠΊΡƒΡ‡Π΅. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ "Hello" == "Hello" истинно, Π½Π΅ смотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ String – ссылочный Ρ‚ΠΈΠΏ. Вакая оптимизация Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° благодаря свойству нСизмСняСмости (immutable) класса String, ΠΈ называСтся ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк.

ΠšΡ€ΠΎΠΌΠ΅ самих Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ примСняСтся ΠΊΠΎ всСм константным выраТСниям. К Ρ‚Π°ΠΊΠΈΠΌ выраТСниям Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ относятся нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ числа 42 ΠΊ строкС ΠΈ конкатСнация констант. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ истинным "Hello_42" == "Hello_" + 42.

ΠŸΡƒΠ» Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° явно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ new String("Hello_42") == "Hello_" + 42 Π»ΠΎΠΆΠ½ΠΎ.
❀13πŸ‘5πŸ”₯3
Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ быстрСС ΠΈ эффСктивнСС?

Π£Π·Π½Π°ΠΉΡ‚Π΅ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ 18 сСнтября Π² 20:00 мск, Π³Π΄Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ:

- ΠΊΠ°ΠΊ ProGuard/R8 ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈ ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄;
- сравнСниС эффСктивности ProGuard ΠΈ R8;
- ΠΊΠ°ΠΊ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ProGuard/R8 Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π£Ρ€ΠΎΠΊ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ для Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚ 1 Π³ΠΎΠ΄Π°.

ВстрСчаСмся Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса «БпСциализация Android DeveloperΒ». ВсС участники Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅!

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС.
πŸ‘4❀2πŸ”₯2
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Java ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ?

Π­Ρ‚ΠΎΡ‚ вопрос ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ корнями Π² C++ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅ (скорСС всСго ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠ΅Ρ€Π°), это тСрминология ΠΈΠ· C++. Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² этой Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Π’ C++ ссылка – это пСрСмСнная-псСвдоним для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. МСняя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ссылки, помСняСтся ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». Π’ Java Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ это ΠΏΠΎΠ΄ΡƒΠΌΠ°Π² Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎ ссылкС Π½Π° int.

Бсылка Π² Java – это Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² памяти. ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² C++ называСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ – это ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. По ссылкС – ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ссылки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ сути использованиС Ρ‚ΠΎΠΉ ΠΆΠ΅ самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’ Java ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° – всСгда копия. Π—Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ всСгда ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, просто это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Код Π²Ρ‹ΡˆΠ΅ это дСмонстрируСт.
πŸ‘17πŸ”₯3
КакиС Π² Java Π±Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΈΠ΄Ρ‹ ссылок?

ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ТСсткой ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ссылок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сборщиком мусора особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π­Ρ‚ΠΎ наслСдники класса java.lang.ref.Reference. ВсС ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° слабыС ссылки. ВСхничСски это ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ доступСн ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ get(), ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ сборщиком мусора ΠΏΠΎΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ΄Π°Π»Π΅Π½. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ для экономии памяти, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кэшСй, для Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов. НапримСр Π² Android слабыС ссылки ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΡƒΡ‚Π΅Ρ‡ΠΊΠΎΠΉ Activity.

Π’ΠΈΠ΄Ρ‹ ссылок Π² порядкС убывания «ТСсткости»:

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ ТСсткая ссылка – любая пСрСмСнная ссылочного Ρ‚ΠΈΠΏΠ°. ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡΡ сборщиком мусора Π½Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ станСт Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ (пСрСстанСт Π±Ρ‹Ρ‚ΡŒ доступной ΠΈΠ· GC roots, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… постах).
SoftReference – мягкая ссылка. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ станСт ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ израсходования всСй памяти – Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Π΄ΠΎ возникновСния OutOfMemoryError. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сборщика мусора.
WeakReference – слабая ссылка. Π‘Π»Π°Π±Π΅Π΅ мягкой. НС прСпятствуСт ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, сборщик мусора ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ссылки.
PhantomReference – фантомная ссылка. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для «прСдсмСртной» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ доступСн послС Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π΅Π½ сборщиком мусора.
πŸ‘15❀4πŸ”₯3
Бколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?

Π Π°Π·ΠΌΠ΅Ρ€ экзСмпляров ссылочных Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JVM ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΅Π΅ запуска. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² вопросС подразумСваСтся самая популярная машина – HotSpot ΠΎΡ‚ Oracle.

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠ»Π΅ΠΉ-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π±Ρ‹Π²Π°ΡŽΡ‚ большС Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² цСлях выравнивания (alignment). Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ выравнивания ΠΌΠ΅ΠΆΠ΄Ρƒ полями Π² памяти ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ пустоты.

Как Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ссылка Π² Java – Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² C++, это Π½Π΅ адрСс Π² памяти. Из-Π·Π° этого Ρ€Π°Π·ΠΌΠ΅Ρ€ поля-ссылки ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ машинного слова, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ³Π΄Π° HotSpot ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ «сТатиС ссылок» (Compressed OOP).

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² HotSpot начинаСтся с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° – runtime-ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡ‚ 8 Π΄ΠΎ 16 Π±Π°ΠΉΡ‚.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° строго большС суммы Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° измСряСтся срСдствами инструмСнтации.
πŸ‘15❀4πŸ”₯4
На ΠΊΠ°ΠΊΠΈΠ΅ области дСлится ΠΏΠ°ΠΌΡΡ‚ΡŒ JVM?

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ особСнности HotSpot (ΠΈ Π΅Ρ‘ opensource-вСрсии OpenJDK). Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Android) всё ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠžΠ±Π»Π°ΡΡ‚ΠΈ-поколСния ΠΊΡƒΡ‡ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ зависят ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сборки мусора, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Stack – мСсто ΠΏΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΈ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½ΠΎ Π½Π΅ сами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹). Π₯Ρ€Π°Π½ΠΈΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ хранятся ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠΊΠ° Ρ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π² стСкС – GC roots. ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ΡΡ сразу Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΡƒ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ указываСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ -Xss, Π½ΠΎ ΠΏΡ€ΠΈ создании ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.
PermGen – Π’ этой области хранятся Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ классы (экзСмпляры класса Class<T>). Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ с Java 7 хранится ΠΏΡƒΠ» строк. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° -XX:PermSize, растСт динамичСски Π΄ΠΎ -XX:MaxPermSize. НС считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΡƒΡ‡ΠΈ.
Metaspace – с Java 8 замСняСт permanent generation. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ metaspace ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ доступной Π½Π° машинС памяти, Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ PermGen ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -XX:MaxMetaspaceSize.
Heap – ΠΊΡƒΡ‡Π°, вся managed-ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ВсС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ – части ΠΊΡƒΡ‡ΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ -Xms, -Xmn ΠΈ -Xmx ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ…ΠΈΠΏΠ° соотвСтствСнно.
Eden, New Generation, Old Generation ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – спСцифичныС для сборщика мусора части ΠΊΡƒΡ‡ΠΈ, поколСния. ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅, Π½ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сохраняСтся: Π΄ΠΎΠ»Π³ΠΎ ΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ постСпСнно двигаСтся Π²ΠΎ всё Π±ΠΎΠ»Π΅Π΅ староС ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅; сборка мусора Π² Ρ€Π°Π·Π½Ρ‹Ρ… поколСниях происходит Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ; Ρ‡Π΅ΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΡΡ‚Π°Ρ€ΡˆΠ΅, Ρ‚Π΅ΠΌ сборка Π² Π½Ρ‘ΠΌ Ρ€Π΅ΠΆΠ΅, Π½ΠΎ ΠΈ Π΄ΠΎΡ€ΠΎΠΆΠ΅.

Π₯отя устройство памяти – это Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° знания ΠΎ Π½ΠΈΡ… нСсут ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. Π­Ρ‚ΠΈ знания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² JVM, Ρ‡Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ спасаСт ΠΎΡ‚ просадок ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ GC ΠΈ остановок с OutOfMemoryError.
πŸ‘17⚑3
Вакансия:Java Developer
Π“Ρ€Π΅ΠΉΠ΄: Miiddle+/Senior/Lead


Компания BSS β€” российский Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π”Π‘Πž ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² сфСрС голосовых Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ услуг ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ спСциалистов Π½Π° IT ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.
БСйчас ΠΌΡ‹ Π² поискС ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для нашСго Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° - ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉΡΡ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² мобильной связи. Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ трСбуСтся Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ созданию соврСмСнной Π±ΠΈΠ»Π»ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ систСмы ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· российских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² связи.

Π’Π΅Ρ….стСк:
Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:
- Jira
- Confluence
Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:
Java 11+, , Spring (web, data jpa, security, boot 2.5), Oracle 19, PostgreSQL, SQL, Camunda, Kafka, RabbitMQ, Gradle, Maven

ΠžΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΠΈ:
β€’ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Java;
β€’ ΠžΡ†Π΅Π½ΠΊΠ° ΠΈ дСкомпозиция Π·Π°Π΄Π°Ρ‡;
β€’ Π£ΠΌΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ/ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ/ тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ;
β€’ Π£ΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΈ Π² составС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹;
β€’ Багфикс, написаниС unit-tests;
β€’ Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ ПО, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ статус ΠΈ описаниС Π·Π°Π΄Π°Ρ‡ Π² Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ΠΎΠ²Ρ‹Ρ… систСмах Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии;
β€’ Π‘Π²ΠΎΠ΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚Π°Ρ… Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ Π·Π°Π΄Π°Ρ‡.

ВрСбования:
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 3+ Π³ΠΎΠ΄Π°;
β€’ Π£ΠΌΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ
β€’ Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ПО;
β€’ Π£Π²Π΅Ρ€Π΅Π½Π½ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Java 8; Java 11
β€’ ПониманиС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Spring ΠΈ SpringBoot;
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ;
β€’ Π Π°Π±ΠΎΡ‚Π° с микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ;
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с message brokers (RabbitMQ, Kafka);
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈ Unit-тСстов;
β€’ ! ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½ Π²ΠΎΠ΅Π½Π½Ρ‹ΠΉ Π±ΠΈΠ»Π΅Ρ‚ ΠΈΠ»ΠΈ приписноС ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ (для воСннообязанных)
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с API (REST, SOAP - Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ);
β€’ Π£ΠΌΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ debug’ом (Π² Ρ‚ΠΎΠΌ числС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ);
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Jira Atlassian;

Π‘ΡƒΠ΄Π΅Ρ‚ плюсом:
β€’ Π£ΠΌΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Code Review;
β€’ ΠžΠΏΡ‹Ρ‚ с JPA Specification;
β€’ ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SQL-запросов (Oracle);
β€’ ΠžΠΏΡ‹Ρ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ развёртывания прилоТСния Π² Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€;
β€’ ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Linux (CLI).
β€’ Π Π°Π±ΠΎΡ‚Π° с GitLab, слСдованиС git-flow.

Условия:
β€’ Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Π Π€, Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² МосквС/ПСнзС обязатСлСн (1-2 Ρ€Π°Π·Π° Π² нСдСлю Π² офисС);
β€’ Π Π°Π±ΠΎΡ‚Π° Π½Π° ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с соврСмСнными тСхнологиями Π² Π°ΠΊΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²Π°Π½Π½ΠΎΠΉ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ;
β€’ ПолноС соблюдСниС ВК Π Π€ ΠΈ своСврСмСнная Π²Ρ‹ΠΏΠ»Π°Ρ‚Π° Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹;
β€’ Π”ΠœΠ‘ для вас ΠΈ сСмьи;
β€’ Π‘Ρ‚Ρ€Π°Ρ…ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½ΠΈ;
β€’ ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹;
β€’ ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Performance Review.

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹:
@olga_sourcer
πŸ‘6❀3πŸ”₯1
Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
πŸ‘8πŸ”₯2🀯1
βœŠΠ Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ свой стСк ΠΈ Π°ΠΏΠ½ΠΈΡ‚Π΅ΡΡŒ Π² Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π΅!

πŸ‘‰ΠΠ°Ρ‡Π½ΠΈΡ‚Π΅ Π½Π° бСсплатном Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ ΠΎΠ½Π»Π°ΠΉΠ½-курса Β«Greenplum для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ²Β» - Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Greenplum ΠΈ Π΅Ρ‘ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΡƒΒ»: рСгистрация

На Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ структурС систСмы, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ. Π’ практичСской части Π±ΡƒΠ΄ΡƒΡ‚ продСмонстрированы ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с запросами ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π¦Π΅Π»ΠΈ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π°:
1. ΠžΡΠ½ΠΎΠ²Ρ‹: ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ участников с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Greenplum ΠΈ Π΅Ρ‘ концСпциями.
2. РаспрСдСлСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ прСимущСства MPP (Massively Parallel Processing).
3. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°: ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы.
4. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅: Π Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ отличия ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π”, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PostgreSQL.

πŸ€ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡΡ ΡƒΡ€ΠΎΠΊ β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° курсС ΠΏΠΎ спСццСнС ΠΈ Π΄Π°ΠΆΠ΅ Π² рассрочку!

erid: LjN8K1J6X
πŸ‘4πŸ”₯3
Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

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

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

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

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

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

ΠŸΡ€ΠΎΠΉΠ΄ΠΈ тСст ΠΏΠΎ Java ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ свои знания, Π³ΠΎΡ‚ΠΎΠ² Π»ΠΈ Ρ‚Ρ‹ ΠΊ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ Π½Π° курсС.

ΠžΡ‚Π²Π΅Ρ‚ΠΈΡˆΡŒ β€” ΠΏΡ€ΠΎΠΉΠ΄Π΅ΡˆΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ курс "Java Developer. Professional" ΠΎΡ‚ OTUS ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅Π½Π΅ + ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ доступ ΠΊ записям ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΡƒΡ€ΠΎΠΊΠΎΠ² курса курса

➑️ ΠŸΠ ΠžΠ™Π’Π˜ Π’Π•Π‘Π’: https://vk.cc/cBhLkN

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
❀3πŸ‘3πŸ”₯2πŸŽ‰1
Как Π² лямбдС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ внСшнюю Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ?

Π­Ρ‚ΠΎ нСльзя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π»ΠΎΠ±. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ захвачСнная локальная пСрСмСнная обязана Π±Ρ‹Ρ‚ΡŒ effectively final. Π’Π°ΠΊΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ исходит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная хранится Π½Π° стСкС, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ врСмя Π΅Π΅ ΠΆΠΈΠ·Π½ΠΈ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… элСмСнтов Ρ…ΠΈΠΏΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ скоупом ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. Но экзСмпляр лямбды, Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ²ΡˆΠΈΠΉ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΌΠΎΠ³ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π½Π°Ρ€ΡƒΠΆΡƒ ΠΈ использован для доступа ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² лямбду копируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Вакая копия ΠΆΠΈΠ²Π΅Ρ‚ нСзависимо, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ дольшС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. Но это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ слоТному повСдСнию ΠΈΠ·-Π·Π° возмоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ – копия ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» станут двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ – нСизмСняСмо.

Поля экзСмпляра ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² этом случаС выступаСт effectively final Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this.

Если Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ всё ΠΆΠ΅ хочСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ – ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ Π² ΠΊΡƒΡ‡Ρƒ. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любого Ρ€ΠΎΠ΄Π° ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ: одноэлСмСнтный массив, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-atomic, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданный класс с этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ΠΌ.

Π₯Π°ΠΊ с ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΎΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΈ Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠ΄Ρƒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ слоТности повСдСния. Если срСда многопоточная, Ρ‚ΠΎ вСроятно порядок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ придСтся ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
πŸ‘19πŸ”₯5❀2