Можно ли считать Final переменную константой?
Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.
Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.
❤14👍9🔥5
Ждем вас на открытом вебинаре 13 сентября в 20:00 мск.
где мы разберем:
Урок идеально подходит для Java- и Kotlin-разработчиков.
Встречаемся в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!
📌 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAmhda
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9❤3🔥2
Контейнер Optional
Optional — это контейнер, который может содержать какое-то значение или не содержать ничего.
Он используется для обозначения отсутствия значения вместо null. Это позволяет избежать ошибок NullPointerException.
Optional появился в Java 8. Он представлен классом java.util.Optional.
Чтобы создать экземпляр Optional, используются статические методы:
— empty() для пустого Optional.
— of() для Optional с заданным значением.
Для получения значения из Optional используются методы get(), или orElse() с указанием значения по умолчанию. Также есть методы фильтрации значений, например filter(), map() и flatMap().
Optional — это контейнер, который может содержать какое-то значение или не содержать ничего.
Он используется для обозначения отсутствия значения вместо null. Это позволяет избежать ошибок NullPointerException.
Optional появился в Java 8. Он представлен классом java.util.Optional.
Чтобы создать экземпляр Optional, используются статические методы:
— empty() для пустого Optional.
— of() для Optional с заданным значением.
Для получения значения из Optional используются методы get(), или orElse() с указанием значения по умолчанию. Также есть методы фильтрации значений, например filter(), map() и flatMap().
👍25🔥8❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉6👍5❤2
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>LATEST</version>
</dependency>
Byte Buddy — это библиотека Java для генерации и манипулирования кодом для создания и модификации Java-классов во время выполнения Java-приложения.
Помимо самой кодогенерации, Byte Buddy позволяет создавать произвольные классы, а также предлагает удобный API для изменения классов вручную, с помощью Java-агента или во время сборки.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11❤5🔥3
Spring Scheduler — это часть Spring Framework, которая позволяет планировать и выполнять задачи в заданное время или по расписанию. Он избавляет от необходимости интеграции сторонних библиотек, предлагая встроенные решения для управления задачами.
Виды задач:
- @Scheduled — аннотация для запуска методов по расписанию.
- TaskScheduler — интерфейс для более гибкого управления задачами.
- Cron-выражения — для сложных расписаний.
- Простота использования за счёт минимальной конфигурации.
- Интеграция с другими частями Spring.
- Поддержка CRON-выражений для гибкости.
- Ограниченная поддержка в распределённых системах.
- Возможные сложности с тестированием задач.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤5🔥2
Хотите узнать, как эффективно использовать CSS-локаторы и XPath?
Всего за пару часов вы научитесь уверенно находить нужные элементы на странице и использовать их для эффективного UI-тестирования на Java. Вы узнаете, какие локаторы применять и как это улучшает ваши тесты.
Присоединяйтесь к открытому вебинару «CSS-локаторы и XPath для UI-тестирования на Java» 10 сентября в 20:00 мск!
Урок будет полезен начинающим специалистам, которые хотят работать в IT, начинающим тестировщикам и разработчикам на Java или других языках.
Встречаемся в преддверии старта курса «Java QA Engineer. Basic». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAxTRT
Всего за пару часов вы научитесь уверенно находить нужные элементы на странице и использовать их для эффективного UI-тестирования на Java. Вы узнаете, какие локаторы применять и как это улучшает ваши тесты.
Присоединяйтесь к открытому вебинару «CSS-локаторы и XPath для UI-тестирования на Java» 10 сентября в 20:00 мск!
Урок будет полезен начинающим специалистам, которые хотят работать в IT, начинающим тестировщикам и разработчикам на Java или других языках.
Встречаемся в преддверии старта курса «Java QA Engineer. Basic». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAxTRT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍4❤3🔥3🎄1
Mill стремится облегчить процесс сборки, для чего заимствует идеи из таких современных инструментов, как Maven, Gradle, Bazel и SBT.
Mill автоматизирует решение многих общих проблем, связанных с инструментами сборки, таких как кэширование, инкрементные повторные вычисления и параллелизм, что позволяет сосредоточить усилия на бизнес-логике, а Mill позаботится обо всем остальном.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥4🍾3
⚙️ Java — различные форматы конфигурации
🔹 YAML
— Удобочитаемый формат сериализации данных
— Использует отступы для вложенности
— Часто используется для конфигурационных файлов и обмена данными
🔹 JSON
— Лёгкий формат обмена данными с использованием пар "ключ-значение"
— Широко используется в API, конфигурационных файлах и для обмена данными
🔹 XML
— Язык разметки, использующий теги для определения элементов данных и их структуры
— Часто применяется для представления структурированных данных и хранения документов
🔹 Java Properties
— Простой формат конфигурации с парами "ключ-значение"
— Используется в Java-приложениях для хранения настроек и конфигурационных данных
💬 Какой формат вы используете чаще всего?
@javalib #java
🔹 YAML
— Удобочитаемый формат сериализации данных
— Использует отступы для вложенности
— Часто используется для конфигурационных файлов и обмена данными
🔹 JSON
— Лёгкий формат обмена данными с использованием пар "ключ-значение"
— Широко используется в API, конфигурационных файлах и для обмена данными
🔹 XML
— Язык разметки, использующий теги для определения элементов данных и их структуры
— Часто применяется для представления структурированных данных и хранения документов
🔹 Java Properties
— Простой формат конфигурации с парами "ключ-значение"
— Используется в Java-приложениях для хранения настроек и конфигурационных данных
💬 Какой формат вы используете чаще всего?
@javalib #java
👍22❤6🔥4
👩💻 Как правильно использовать области действия переменных в Java и как этот навык поможет вам при подготовке к сертификации?
🔌 Ждем вас на открытом вебинаре 16 сентября в 20:00 мск.
Где мы разберем:
✔️ обзор областей действия переменных;
✔️ практические примеры: как области действия переменных влияют на поведение программы и как их правильно использовать;
✔️ подготовку к сертификации: как знание областей действия переменных может помочь вам при подготовке к экзаменам, таким как OCAJP.
Урок будет полезен для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.
🎙 Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.
Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!
🎁 Подарок личная консультация с руководителем курса Дмитрием Коганом, всем купившим курс после открытого урока.
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAAQ0M
🔌 Ждем вас на открытом вебинаре 16 сентября в 20:00 мск.
Где мы разберем:
✔️ обзор областей действия переменных;
✔️ практические примеры: как области действия переменных влияют на поведение программы и как их правильно использовать;
✔️ подготовку к сертификации: как знание областей действия переменных может помочь вам при подготовке к экзаменам, таким как OCAJP.
Урок будет полезен для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.
🎙 Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.
Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!
🎁 Подарок личная консультация с руководителем курса Дмитрием Коганом, всем купившим курс после открытого урока.
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAAQ0M
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍6❤4🔥2😁1
—
choco install xpipe
или
—
bash <(curl -sL https://github.com/xpipe-io/xpipe/raw/master/get-xpipe.sh)
XPipe — open-source инструмент на Java, который позволяет получить доступ ко всей инфраструктуре сервера с локальной машины.
Он работает поверх установленных программ командной строки и не требует настройки на удаленных системах. Так что если вы используете такие инструменты, как ssh, docker, kubectl и т.д. для подключения к серверам, вы можете просто использовать XPipe поверх них.
XPipe полностью интегрируется с текстовыми редакторами, с терминалом, и с разными CLI утилитами.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥3
— Порождающие паттерны:
🔹Abstract Factory: Family Creator — Создает группы взаимосвязанных объектов.
🔹Builder: Lego Master — Пошагово создает объекты.
🔹Prototype: Clone Maker — Создает копии полностью подготовленных объектов.
🔹Singleton: One and Only — Создаёт объект, который существует в единственном экземпляре.
— Структурные паттерны:
🔹Adapter: Universal Plug — Соединяет объекты с разными интерфейсами.
🔹Bridge: Function Connector — Связывает то, как объект работает, с тем, что он делает.
🔹Composite: Tree Builder — Формирует древовидные структуры из простых и сложных частей.
🔹Decorator: Customizer — Добавляет новые возможности объектам, не изменяя их основную структуру.
🔹Facade: One-Stop-Shop — Представляет всю систему через один упрощенный интерфейс.
🔹Flyweight: Space Saver — Эффективно использует небольшие, многократно используемые объекты.
🔹Proxy: Stand-In Actor — Представляет другой объект, управляя доступом или действиями.
— Поведенческие паттерны:
🔹Chain of Responsibility: Request Relay — Передает запросы через цепочку объектов до тех пор, пока он не будет обработан.
🔹Command: Task Wrapper — Превращает запрос в объект, готовый к выполнению.
🔹Iterator: Collection Explorer — Доступ к элементам коллекции по одному.
🔹Mediator: Communication Hub — Упрощает взаимодействие между различными классами.
🔹Memento: Time Capsule — Сохраняет и восстанавливает состояние объекта.
🔹Observer: News Broadcaster — Уведомляет классы о изменениях в других объектах.
🔹Visitor: Skillful Guest — Добавляет новые операции в класс, не изменяя его.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍11❤4
Agrona предоставляет набор структур данных и вспомогательных методов, которые часто требуются при создании высокопроизводительных приложений на Java.
Многие из этих компонентов используются, к примеру, в Aeron для эффективной и надежной передачи IPC-сообщений по протоколу UDP и обеспечивают высокопроизводительную реализацию буферов для поддержки кодека сообщений Simple Binary Encoding.
Например, с помощью Agrona можно переписать код:
List<Integer> numbers = new ArrayList<>();
// fill numbers somehow
Map<Integer, Integer> counters = new HashMap<>();
for (Integer x : numbers) {
counters.compute(x, (k, v) -> v == null ? 1 : v + 1);
}
вот так:
IntArrayList numbers = new IntArrayList();
// fill numbers somehow
Int2IntCounterMap counters = new Int2IntCounterMap(0);
for (int i = 0; i < numbers.size(); i++) {
counters.incrementAndGet(numbers.getInt(i));
}
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5☃2🔥2
📚 Пройди тест на знание Java и получи доступ к 6️⃣ 🔤 открытым урокам курса «Разработчик на Spring Framework».
Два открытых урока можно посмотреть без регистрации и оценить формат обучения. Для доступа ко всем открытым урокам из курса необходимо пройти входное тестирование: ответить на 21 вопрос и уложиться в тайминг.
➡️ НАЧАТЬ ТЕСТИРОВАНИЕ
А еще, приглашаем посетить наш бесплатный открытый урок «Как эффективно использовать OAuth 2 в Spring-приложениях?», который пройдет онлайн, 13 сентября в 20:00 мск.
Два открытых урока можно посмотреть без регистрации и оценить формат обучения. Для доступа ко всем открытым урокам из курса необходимо пройти входное тестирование: ответить на 21 вопрос и уложиться в тайминг.
➡️ НАЧАТЬ ТЕСТИРОВАНИЕ
А еще, приглашаем посетить наш бесплатный открытый урок «Как эффективно использовать OAuth 2 в Spring-приложениях?», который пройдет онлайн, 13 сентября в 20:00 мск.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
1691972027119 (1).gif
7.7 MB
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍29🔥6❤4🎉4
Java Developer Middle+/Senior/Lead
Крупный коммерческий банк расширяет команды и ищет разработчиков для развития нового нефинансового сервиса. Сервис будет доступен клиентам банка, он будет расширять возможности пользователей сверх банковских услуг.
Обязанности:
Разрабатывать внешние и внутренние продукты
Прорабатывать и реализовать интеграционные решени
Требования:
Опыт разработки на Java от 3 лет
Опыт коммерческой разработки на Java 11+ или Kotlin
Опыт коммерческой разработки с любым из фреймворков: Spring Boot, Quarkus, Micronaut или Vert.x
Опыт коммерческой разработки с одним из контейнеризаторов: Kubernetes, Docker или OpenShift
Опыт коммерческой разработки с одним из брокеров: Kafka, Rabbit MQ или Active MQ
Опыт коммерческой разработки с Postgress, MySQL или Oracle будет плюсом
Опыт работы с системой контроля версий
Условия:
Аккредитованная IT-компания
Возможность удаленной работы
Полное соблюдение ТК РФ и своевременная выплата заработной платы;
Расширенное ДМС со стоматологией, бесплатные лекарства по назначению врачей;
Корпоративное обучение и сертификация в технических областях;
Бесплатное обучение английскому;
Онлайн-йога
Контакты:
+7 960 324 9665
https://t.me/ntsh_02
Крупный коммерческий банк расширяет команды и ищет разработчиков для развития нового нефинансового сервиса. Сервис будет доступен клиентам банка, он будет расширять возможности пользователей сверх банковских услуг.
Обязанности:
Разрабатывать внешние и внутренние продукты
Прорабатывать и реализовать интеграционные решени
Требования:
Опыт разработки на Java от 3 лет
Опыт коммерческой разработки на Java 11+ или Kotlin
Опыт коммерческой разработки с любым из фреймворков: Spring Boot, Quarkus, Micronaut или Vert.x
Опыт коммерческой разработки с одним из контейнеризаторов: Kubernetes, Docker или OpenShift
Опыт коммерческой разработки с одним из брокеров: Kafka, Rabbit MQ или Active MQ
Опыт коммерческой разработки с Postgress, MySQL или Oracle будет плюсом
Опыт работы с системой контроля версий
Условия:
Аккредитованная IT-компания
Возможность удаленной работы
Полное соблюдение ТК РФ и своевременная выплата заработной платы;
Расширенное ДМС со стоматологией, бесплатные лекарства по назначению врачей;
Корпоративное обучение и сертификация в технических областях;
Бесплатное обучение английскому;
Онлайн-йога
Контакты:
+7 960 324 9665
https://t.me/ntsh_02
❤7👍4🔥2🎉1
RoaringBitmap — это одна из лучших битовых карт;
используется в Apache Spark, Netflix Atlas, Apache Pinot, Tablesaw и во многих других компаниях.
RoaringBitmap превосходят обычные сжатые битовые карты, такие как WAH, EWAH или Concise. Изображения, сжатые с помощью RoaringBitmap могут быть до сотни раз легче обычных изображений
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍7🔥3