Метод compareTo()
Используется для сравнения двух объектов. Обычно он применяется к объектам, реализующим интерфейс Comparable, чтобы определить их относительный порядок. Вот как обычно выглядит сигнатура метода compareTo():
int compareTo(T obj)
где T — это тип объектов, с которыми сравнивается текущий объект. Метод возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, как текущий объект сравнивается с переданным объектом obj.
➖ Отрицательное число указывает на то, что текущий объект меньше, чем объект obj.
➖ Ноль указывает на то, что текущий объект равен объекту obj.
➖ Положительное число указывает на то, что текущий объект больше, чем объект obj.
Используется для сравнения двух объектов. Обычно он применяется к объектам, реализующим интерфейс Comparable, чтобы определить их относительный порядок. Вот как обычно выглядит сигнатура метода compareTo():
int compareTo(T obj)
где T — это тип объектов, с которыми сравнивается текущий объект. Метод возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, как текущий объект сравнивается с переданным объектом obj.
➖ Отрицательное число указывает на то, что текущий объект меньше, чем объект obj.
➖ Ноль указывает на то, что текущий объект равен объекту obj.
➖ Положительное число указывает на то, что текущий объект больше, чем объект obj.
👍16❤7
Предметно-ориентированное проектирование в Enterprise Java (2020) PDF
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования.
В начальных главах описывается эталонная реализация проекта Cargo Tracker - создание монолитного приложения с использованием платформы Jakarta EE. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CQRS и Event Sourcing (ES); основной рабочей средой является Axon Framework.
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования.
В начальных главах описывается эталонная реализация проекта Cargo Tracker - создание монолитного приложения с использованием платформы Jakarta EE. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CQRS и Event Sourcing (ES); основной рабочей средой является Axon Framework.
👍9❤5🔥3
⁉️Как написать проект одновременно на двух языках – Kotlin и Rust?
👨🏫Расскажет Сергей Окатов – кандидат физико-математических наук, руководитель управления разработки БФТ.ЦР. Встречаемся на бесплатном практическом уроке от OTUS, где мы:
- расскажем о двух молодых и активно развивающихся языках, вошедших в TIOBE-20; - обсудим их преимущества, недостатки и причины, почему они занимают ниши популярных языков Java, JS и C/C++;
- изучим сочетание преимуществ обоих языков;
- продемонстрируем, как можно интегрировать их в одном проекте.
📆Занятие пройдёт 13 февраля в 19:00 мск и будет приурочено к старту курса «Kotlin Backend Developer. Professional». Доступна рассрочка на обучение!
➡️Пройдите бесплатный тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://otus.pw/gf30/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8JwyAh
👨🏫Расскажет Сергей Окатов – кандидат физико-математических наук, руководитель управления разработки БФТ.ЦР. Встречаемся на бесплатном практическом уроке от OTUS, где мы:
- расскажем о двух молодых и активно развивающихся языках, вошедших в TIOBE-20; - обсудим их преимущества, недостатки и причины, почему они занимают ниши популярных языков Java, JS и C/C++;
- изучим сочетание преимуществ обоих языков;
- продемонстрируем, как можно интегрировать их в одном проекте.
📆Занятие пройдёт 13 февраля в 19:00 мск и будет приурочено к старту курса «Kotlin Backend Developer. Professional». Доступна рассрочка на обучение!
➡️Пройдите бесплатный тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://otus.pw/gf30/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8JwyAh
👍9❤3☃1
В одном из предыдущих роликов автор рассказал теорию об OAuth 2.0 и OIDC, а на этот раз предлагает перейти к практике. Spring Security реализует практически полноценную поддержку протокола авторизации OAuth 2.0 и его расширения аутентификации OpenID Connect (OIDC), и с минимальными изменениями в своём проекте вы можете внедрить поддержку этих протоколов. В этом ролике автор рассматривает возможность применения Spring Security OAuth 2.0 для реализации сервера ресурсов, клиента и логина в веб-приложениях на основе Spring WebMVC и Spring Webflux. Так же в качестве сервера авторизации снова будет рассмотрен Keycloak, а так же процесс его настройки.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Client, Resource Server, Login - Spring Security OAuth 2.0 #java #spring #security #oauth #oidc
В одном из предыдущих роликов я рассказал теорию об OAuth 2.0 и OIDC, а на этот раз предлагаю перейти к практике. Spring Security реализует практически полноценную поддержку протокола авторизации OAuth 2.0 и его расширения аутентификации OpenID Connect (OIDC)…
❤14👍4🔥3💯1
Вебинар является частью продвинутого онлайн-курса "Observability: мониторинг, логирование, трейсинг".
На вебинаре мы разберём:
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2☃1
Можно ли считать Final переменную константой?
Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.
Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.
❤22👍13🔥2
Освоить крутой инструмент на бесплатном практическом уроке «Selenium Grid 4, многопоточное выполнение JUnit/TestNG» от OTUS, где мы:
- познакомимся с Selenium Grid 4 и настроим его;
- научимся запускать тесты с помощью Selenium Grid 4;
- рассмотрим параллельный запусĸ тестов через JUnit/TestNG.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2😁2
JAVA FROM EPAM (2020)
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
🔥17👍8❤4🎉3
❓Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!
👩💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.
👩💻 Kotlin Developer - самый топовый канал для котлин разработчика!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3😁1
Можно ли в конструкторе использовать return?
Можно, но без возвращаемого значения справа от return. То есть можно использовать return как вспомогательную конструкцию при вычислениях в конструкторе, чтобы срочно закончить (прервать) выполнение дальнейшего кода и завершить инициализацию объекта.
Например, у нас есть класс Cat, и если Cat бездомный — isHomeless = true, нам нужно закончить инициализацию и не заполнять другие поля (ведь они нам неизвестны, так как котик бездомный).
Но если говорить о конкретных значениях, конструктор не может использовать return для возврата какого-то значения, потому что:
⏺ При объявлении конструктора у вас не будет ничего похожего на возвращаемый тип;
⏺ Как правило, конструктор неявно вызывается во время создания экземпляра;
⏺ Конструктор — это не метод: это отдельный механизм, единственная цель которого — инициализировать переменные экземпляра.
Можно, но без возвращаемого значения справа от return. То есть можно использовать return как вспомогательную конструкцию при вычислениях в конструкторе, чтобы срочно закончить (прервать) выполнение дальнейшего кода и завершить инициализацию объекта.
Например, у нас есть класс Cat, и если Cat бездомный — isHomeless = true, нам нужно закончить инициализацию и не заполнять другие поля (ведь они нам неизвестны, так как котик бездомный).
Но если говорить о конкретных значениях, конструктор не может использовать return для возврата какого-то значения, потому что:
⏺ При объявлении конструктора у вас не будет ничего похожего на возвращаемый тип;
⏺ Как правило, конструктор неявно вызывается во время создания экземпляра;
⏺ Конструктор — это не метод: это отдельный механизм, единственная цель которого — инициализировать переменные экземпляра.
👍28❤8🔥5
Облачные технологии. Практическое руководство по созданию инновационных приложений (2024) PDF, ePUB, rtf
Эта книга представляет собой всестороннее руководство по разработке приложений с использованием современных облачных технологий. В ней рассматриваются ключевые аспекты от базовых концепций облачных вычислений до передовых методик и стратегий оптимизации. Читатели получат углубленное понимание моделей облачных вычислений, архитектуры облачных приложений и эффективного использования облачных сервисов и ресурсов. Книга акцентирует внимание на вопросах безопасности в облачных средах и предлагает конкретные рекомендации по управлению доступом, шифрованию данных и мониторингу безопасности. Особое внимание уделяется управлению и мониторингу облачных ресурсов, оптимизации расходов на облачные вычисления, а также внедрению DevOps-практик для ускорения цикла разработки. Книга также затрагивает разработку облачных мобильных приложений, интеграцию с устройствами IoT и использование контейнеризации с оркестрацией.
Эта книга представляет собой всестороннее руководство по разработке приложений с использованием современных облачных технологий. В ней рассматриваются ключевые аспекты от базовых концепций облачных вычислений до передовых методик и стратегий оптимизации. Читатели получат углубленное понимание моделей облачных вычислений, архитектуры облачных приложений и эффективного использования облачных сервисов и ресурсов. Книга акцентирует внимание на вопросах безопасности в облачных средах и предлагает конкретные рекомендации по управлению доступом, шифрованию данных и мониторингу безопасности. Особое внимание уделяется управлению и мониторингу облачных ресурсов, оптимизации расходов на облачные вычисления, а также внедрению DevOps-практик для ускорения цикла разработки. Книга также затрагивает разработку облачных мобильных приложений, интеграцию с устройствами IoT и использование контейнеризации с оркестрацией.
👍19❤5🔥2😁2
С Java Flight Recorder – это легко.
JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок
Хотите освоить?
Приглашаем java-разработчиков и тестировщиков
на бесплатный онлайн-урок «Обзор инструмента Java Flight Recorder»!
Вы узнаете:
что такое Java Flight Recorder и для каких целей используется
как запустить и остановить JFR
как настроить интересующий вас профиль по событиям JVM
как прочитать готовый журнал с помощью Java Mission Control
Ведущий – Александр Царёв, техлид в Сбере.
После открытого урока вы сможете записаться на курс для продвинутых разработчиков «Java Developer. Advanced».
Событие начнётся 14 февраля в 20:00 МСК
Участие бесплатное
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
Метод putAll()
Метод putAll() принадлежит интерфейсу Map и используется для добавления всех элементов из одной карты (Map) в другую. Этот метод принимает в качестве аргумента другую карту и добавляет все ее записи в вызывающую карту.
Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод putAll() предоставляет простой способ объединения.
Метод putAll() принадлежит интерфейсу Map и используется для добавления всех элементов из одной карты (Map) в другую. Этот метод принимает в качестве аргумента другую карту и добавляет все ее записи в вызывающую карту.
Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод putAll() предоставляет простой способ объединения.
👍16🔥5❤4
Программируй Event Sourcing системы и получи преимущество на рынке!
Уникальный для русскоязычного сегмента курс от преподавателя Спб НИУ ИТМО и разработчика ПО Андрея Суховицкого
Целишься на позиции senior или architect? Хочешь знать больше, чем твои коллеги? Этот курс для тебя!
На курсе ты:
✅ Разберешься в event-driven системах
✅ Узнаешь Event sourcing, паттерн CQRS лучше, чем 99.9% разработчиков
✅ Пройдешь путь создания Kafka, узнаешь best practice для RabbitMQ и как масштабировать свои системы
✅ Твердо поймешь основы Domain-driven design
✅ Глубоко залезешь в паттерн Saga и реализуешь распределенную транзакцию
✅ Будешь уверен в себе на system design интервью
Твоими менторами станут ребята из Амазон, Револют, Яндекс и Озон.
❗️Старт курса - 15 февраля, лекции и задания доступны уже сейчас! ❗️
Промокод JAVALIB на 10% до 15 февраля
Переходи по ссылке и начинай учиться!
Уникальный для русскоязычного сегмента курс от преподавателя Спб НИУ ИТМО и разработчика ПО Андрея Суховицкого
Целишься на позиции senior или architect? Хочешь знать больше, чем твои коллеги? Этот курс для тебя!
На курсе ты:
✅ Разберешься в event-driven системах
✅ Узнаешь Event sourcing, паттерн CQRS лучше, чем 99.9% разработчиков
✅ Пройдешь путь создания Kafka, узнаешь best practice для RabbitMQ и как масштабировать свои системы
✅ Твердо поймешь основы Domain-driven design
✅ Глубоко залезешь в паттерн Saga и реализуешь распределенную транзакцию
✅ Будешь уверен в себе на system design интервью
Твоими менторами станут ребята из Амазон, Револют, Яндекс и Озон.
❗️Старт курса - 15 февраля, лекции и задания доступны уже сейчас! ❗️
Промокод JAVALIB на 10% до 15 февраля
Переходи по ссылке и начинай учиться!
🔥9❤3🎅3👍2
В серии коротких роликов "Spring по верхам" автор вкратце рассказывает о применении экосистемы Spring при разработке приложений на платформе Java.
Четвёртый ролик посвящён использованию Spring Security для управления доступом к данным при разработке REST-сервисов.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Spring по верхам: Безопасность REST-сервиса
В серии коротких роликов "Spring по верхам" я вкратце рассказываю о применении экосистемы Spring при разработке приложений на платформе Java.
Четвёртый ролик посвящён использованию Spring Security для управления доступом к данным при разработке REST-сервисов.…
Четвёртый ролик посвящён использованию Spring Security для управления доступом к данным при разработке REST-сервисов.…
❤9👍3🔥2
🔥 Хардовый Тест по Java QA (не для новичков), который проходит всего 30% 🔥
Оцените свой уровень пройдя короткий тест по автоматизации тестирования на Java! Результат сразу!
👉🏻 ПРОЙТИ ТЕСТ: https://otus.pw/DqAv/
Пройдите тест, смотрите наши открытые уроки - и приходите учиться на онлайн-курс «Java QA Engineer. Professiona». Ждем!
🎁 Сможете успешно пройти тест, получите запись урока с курса бесплатно!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Оцените свой уровень пройдя короткий тест по автоматизации тестирования на Java! Результат сразу!
👉🏻 ПРОЙТИ ТЕСТ: https://otus.pw/DqAv/
Пройдите тест, смотрите наши открытые уроки - и приходите учиться на онлайн-курс «Java QA Engineer. Professiona». Ждем!
🎁 Сможете успешно пройти тест, получите запись урока с курса бесплатно!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍4😁4☃2❤2🔥2
One Day Offer для Java-разработчиков ⚡
Приходите к нам, чтобы развивать успешный коммерческий продукт — HR-платформу Сбера!
«Пульс» автоматизирует весь HR-цикл компании и полезен каждому сотруднику, а не только HR-специалистам. Продукт разработан для компаний со штатом от 500 сотрудников. В работе мы используем Java/Kotlin (JDK 11/17), Spring Boot, Kafka, PostgreSQL, Docker, K8s и др.
Какие задачи будут в вашем планере:
•проектировать и разрабатывать компоненты SaaS-платформы в рамках микросервисной архитектуры
•разрабатывать unit и end-to-end тесты, участвовать в code review и фазах релизного процесса
•проводить анализ по улучшению производительности сервисов
Масштабные проекты и работа в крупнейшем IT-сообществе ждёт вас. Регистрируйтесь на One Day Offer
Приходите к нам, чтобы развивать успешный коммерческий продукт — HR-платформу Сбера!
«Пульс» автоматизирует весь HR-цикл компании и полезен каждому сотруднику, а не только HR-специалистам. Продукт разработан для компаний со штатом от 500 сотрудников. В работе мы используем Java/Kotlin (JDK 11/17), Spring Boot, Kafka, PostgreSQL, Docker, K8s и др.
Какие задачи будут в вашем планере:
•проектировать и разрабатывать компоненты SaaS-платформы в рамках микросервисной архитектуры
•разрабатывать unit и end-to-end тесты, участвовать в code review и фазах релизного процесса
•проводить анализ по улучшению производительности сервисов
Масштабные проекты и работа в крупнейшем IT-сообществе ждёт вас. Регистрируйтесь на One Day Offer
👍15❤7
Конструктор по умолчанию
Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).
Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.
В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.
Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).
Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.
В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.
👍20❤7🔥3
♨️ Готовимся к собеседованию на Java разработчика Junior+/ Middle: проверьте свои знания
На данном мероприятии мы подробно разберем, какие вопросы могут возникнуть на собеседовании на позицию Java Middle Developer.
Урок будет полезен каждому, кто желает оценить свой уровень понимания Java.
В результате посещения вебинара:
- Вы сможете уверенно ответить на большинство вопросов, которые могут возникнуть на интервью для уровня Java Middle Developer;
- будете осведомлены о подводных камнях, связанных с ответами на эти вопросы.
После открытого урока вы сможете записаться на курс для продвинутых разработчиков «Java Developer. Professional» по специальной цене.
Событие пройдет 20 февраля в 20:00 МСК
Участие бесплатное
➡️ Зарегистрироваться!
На данном мероприятии мы подробно разберем, какие вопросы могут возникнуть на собеседовании на позицию Java Middle Developer.
Урок будет полезен каждому, кто желает оценить свой уровень понимания Java.
В результате посещения вебинара:
- Вы сможете уверенно ответить на большинство вопросов, которые могут возникнуть на интервью для уровня Java Middle Developer;
- будете осведомлены о подводных камнях, связанных с ответами на эти вопросы.
После открытого урока вы сможете записаться на курс для продвинутых разработчиков «Java Developer. Professional» по специальной цене.
Событие пройдет 20 февраля в 20:00 МСК
Участие бесплатное
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2☃1
SOLID в деталях: Принцип единственной ответственности
В серии роликов "SOLID в деталях" я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его трактовках и их практическом применении.
В серии роликов "SOLID в деталях" я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его трактовках и их практическом применении.
YouTube
SOLID в деталях: Принцип единственной ответственности
В серии роликов "SOLID в деталях" я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его…
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его…
👍13❤3🔥2