new vs valueOf
Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение.
Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение.
Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
🔥36👍13
В этом ролике автор демонстрирует создание и использование собственных DSL для настройки контекста безопасности приложения, благодаря которым можно вносить изменения в контекст безопасности на этапах инициализации и настройки.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
DSL и конфигураторы контекста безопасности - Spring Security в деталях
В этом ролике я демонстрирую создание и использование собственных DSL для настройки контекста безопасности приложения, благодаря которым можно вносить изменения в контекст безопасности на этапах инициализации и настройки.
#java #springsecurity #spring
Мой…
#java #springsecurity #spring
Мой…
👍15❤4🔥3
Метод PutAll()
Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.
Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.
Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.
Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.
Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.
Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.
👍28🔥3❤2
Узнайте на бесплатном практическом уроке «Java NIO» от OTUS и Александра Фисунова — Senior Kotlin Developer в SSP Software на проекте ВТБ.
На вебинаре вы:
— узнаете, что такое Java NIO и чем он отличается от Java IO
— разберете полезные возможности Java NIO, которые сильно упрощают жизнь и могут пригодиться любому разработчику;
— изучите Java Core и получите ответы на свои вопросы.
Встречаемся 15 февраля в 20:00 мск.
Открытый урок пройдет в преддверии обновленного запуска курса «Java Developer. Professional».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥2
В серии коротких роликов "Spring по верхам" автор вкратце рассказывает о применении экосистемы Spring при разработке приложений на платформе Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Spring по верхам: Разработка REST-сервиса
В серии коротких роликов "Spring по верхам" я вкратце рассказываю о применении экосистемы Spring при разработке приложений на платформе Java.
Репозиторий проекта: https://github.com/alex-kosarev/showcase-spring-boot-3
Текстовая версия: https://alexkosa…
Репозиторий проекта: https://github.com/alex-kosarev/showcase-spring-boot-3
Текстовая версия: https://alexkosa…
❤11👍3
Forwarded from ТЕХНО: Яндекс про технологии
🏠 Разыгрываем Яндекс Станции и устройства умного дома!
Для участия подпишитесь на телеграм-каналы Яндекс и ТЕХНО и нажмите кнопку «Участвовать» под постом. 9 февраля в 12:00 бот случайным образом выберет двух победителей.
Призы:
1. Станция Миди + датчики движения, температуры и протечки + умная кнопка.
2. Станция Мини + хаб для устройств.
▶️ А пока ждёте результатов, смотрите шоу ПРОД. и yet another podcast. Из выпусков вы узнаете, как в Яндексе создают технологии умного дома и куда развиваются умные колонки с Алисой.
Для участия подпишитесь на телеграм-каналы Яндекс и ТЕХНО и нажмите кнопку «Участвовать» под постом. 9 февраля в 12:00 бот случайным образом выберет двух победителей.
Призы:
1. Станция Миди + датчики движения, температуры и протечки + умная кнопка.
2. Станция Мини + хаб для устройств.
▶️ А пока ждёте результатов, смотрите шоу ПРОД. и yet another podcast. Из выпусков вы узнаете, как в Яндексе создают технологии умного дома и куда развиваются умные колонки с Алисой.
❤8👍4
RabbitMQ vs Kafka — какой брокер выбрать?
Расскажет Максим Иванов на бесплатном практическом уроке от OTUS, где вы узнаете:
- что может и как работает Kafka;
- что может и как устроен RabbitMQ (классические очереди);
- что может и как устроен RabbitMQ streams;
- слабые, сильные стороны и технические ограничения RabbitMQ и Kafka.
Встречаемся 20 февраля в 20:00 мск в рамках курса «RabbitMQ для разработчиков и администраторов». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/7CSww/
Реклама. ООО «ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ». ИНН 9705100963
Расскажет Максим Иванов на бесплатном практическом уроке от OTUS, где вы узнаете:
- что может и как работает Kafka;
- что может и как устроен RabbitMQ (классические очереди);
- что может и как устроен RabbitMQ streams;
- слабые, сильные стороны и технические ограничения RabbitMQ и Kafka.
Встречаемся 20 февраля в 20:00 мск в рамках курса «RabbitMQ для разработчиков и администраторов». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/7CSww/
Реклама. ООО «ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ». ИНН 9705100963
🔥5👍4
В серии коротких роликов "Spring по верхам" автор вкратце рассказывет о применении экосистемы Spring при разработке приложений на платформе Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Spring по верхам: Тестирование REST-сервиса
В серии коротких роликов "Spring по верхам" я вкратце рассказываю о применении экосистемы Spring при разработке приложений на платформе Java.
Репозиторий проекта: https://github.com/alex-kosarev/showcase-spring-boot-3
00:00 Вступление
01:15 Конфигурация…
Репозиторий проекта: https://github.com/alex-kosarev/showcase-spring-boot-3
00:00 Вступление
01:15 Конфигурация…
👍16❤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🔥9❤3
Интерфейс Supplier
Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.
Метод Supplier:
T get();
Где T — это тип возвращаемого значения.
Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.
Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.
Метод Supplier:
T get();
Где T — это тип возвращаемого значения.
Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.
👍21❤5🔥2
✅ Что нужно знать для работы с PostgreSQL?
Расскажет опытный эксперт на бесплатном практическом уроке «MVCC, vacuum и autovacuum в PostgreSQL» от OTUS
На вебинаре мы разберём как работают MVCC, vacuum и autovacuum в postgres
Расскажем как работают мультиверсионирование и механизмы оптимизации в PostgreSQL
Встречаемся 12 февраля в 20:00 мск в рамках курса «Базы данных». Доступна рассрочка на обучение!
👉 Регистрация
https://otus.pw/Wwao/?erid=LjN8KXrJ5
Расскажет опытный эксперт на бесплатном практическом уроке «MVCC, vacuum и autovacuum в PostgreSQL» от OTUS
На вебинаре мы разберём как работают MVCC, vacuum и autovacuum в postgres
Расскажем как работают мультиверсионирование и механизмы оптимизации в PostgreSQL
Встречаемся 12 февраля в 20:00 мск в рамках курса «Базы данных». Доступна рассрочка на обучение!
👉 Регистрация
https://otus.pw/Wwao/?erid=LjN8KXrJ5
👍5❤3🎉3
Как обеспечить безопасность в Docker контейнерах?
💻Расскажет Senior DevOps Engineer Андрей Бирюков на бесплатном практическом уроке от OTUS, где вы вместе с экспертом обсудите:
- разбор практик безопасной сборки, тестирования и Run-Time защиты Docker контейнеров;
- Docker Security топ-10 лучших практик;
- обзор Cloud Native Buildpacks.
👉Встречаемся 14 февраля в 20:00 мск в рамках курса «Внедрение и работа в DevSecOps».
Пройдите короткий тест прямо сейчас, чтобы занять место на уроке и получить запись: https://otus.pw/xIzu/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💻Расскажет Senior DevOps Engineer Андрей Бирюков на бесплатном практическом уроке от OTUS, где вы вместе с экспертом обсудите:
- разбор практик безопасной сборки, тестирования и Run-Time защиты Docker контейнеров;
- Docker Security топ-10 лучших практик;
- обзор Cloud Native Buildpacks.
👉Встречаемся 14 февраля в 20:00 мск в рамках курса «Внедрение и работа в DevSecOps».
Пройдите короткий тест прямо сейчас, чтобы занять место на уроке и получить запись: https://otus.pw/xIzu/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤4👍2😁1
Метод 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