Forwarded from Азбука айтишника
Переменная в Java — это контейнер, в котором может храниться некоторое значение данных для дальнейшего использования в программе. Переменные в Java бывают двух видов: предназначенные для для маленьких данных (примитивные переменные) и для более сложных, тяжёлых (ссылочные переменные). Мы рассмотрим первый случай, когда переменные хранят именно само значение данных.
Кстати, прошлый пост про Java:
☕️🎓 Java — современный инструмент разработчика
#Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
microG Services — открытая реализация Play Services на Java и Kotlin
Это FLOSS (Free/Libre Open Source Software) фреймворк, позволяющий запускать приложения, разработанные для Google Play Services, на системах, где Play Services недоступны.
🔘 Wiki
#софт
Это FLOSS (Free/Libre Open Source Software) фреймворк, позволяющий запускать приложения, разработанные для Google Play Services, на системах, где Play Services недоступны.
🔘 Wiki
#софт
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
📧 Отклик на вакансию по email: как сделать так, чтобы ваше письмо выделялось
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
😎😎 Запуск встроенного LDAP на базе OpenDJ в Spring Boot приложении
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
Очередной #дайджест для джавистов
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉 авторов в наше медиа proglib.io
👉 контент-менеджеров для ведения телеграм-каналов
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код выше?
Anonymous Quiz
28%
Ошибку при выполнении
19%
Equal
24%
Ошибку при компиляции
29%
Not equal
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
#воросы_с_собеседования
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🔧🔧 Альтернатива ушедшей JetBrains: российские программисты получили доступ к отечественной среде разработки GIGA IDE
1 июля ряд СМИ написали, что компания JetBrains без предупреждения отключила российских программистов от одной из самых известных сред разработки на Java — IntelliJ IDEA. В качестве альтернативы российским пользователям доступна отечественная интегрированная среда разработки GIGA IDE, которую СберТех представил на технологической конференции GigaConf 2024. В свете последних событий этот обзор будет особенно актуальным, поэтому предлагаем скорее погрузиться и подробно разобрать, что такое GIGA IDE и что еще доступно пользователям платформы для работы с исходным кодом GitVerse.
Читать статью
1 июля ряд СМИ написали, что компания JetBrains без предупреждения отключила российских программистов от одной из самых известных сред разработки на Java — IntelliJ IDEA. В качестве альтернативы российским пользователям доступна отечественная интегрированная среда разработки GIGA IDE, которую СберТех представил на технологической конференции GigaConf 2024. В свете последних событий этот обзор будет особенно актуальным, поэтому предлагаем скорее погрузиться и подробно разобрать, что такое GIGA IDE и что еще доступно пользователям платформы для работы с исходным кодом GitVerse.
Читать статью
Можно ли считать Final переменную константой?
Поскольку не выйдет присвоить новое значение final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и назвать ее константой нельзя. На примере видно, что часть финальных переменных константы, а часть можно изменить.
Поскольку не выйдет присвоить новое значение final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и назвать ее константой нельзя. На примере видно, что часть финальных переменных константы, а часть можно изменить.