bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

11248

Библиотека Java разработчика. Java, Spring, Maven, Hibernate По всем вопросам @evgenycarter № 4880864218

Subscribe to a channel

Библиотека Java разработчика

Совет💡

Будьте осторожны при использовании @AllArgsConstructor от Lombok. Для генерации конструктора он использует порядок полей в классе. Если поля имеют одинаковый тип и вы переставите их местами, то начнете писать в разные поля, и компилятор не сможет помочь.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Обнаружение и предотвращение утечек памяти в Java

Несмотря на наличие в Java надежной автоматической сборки мусора, утечки памяти в этом языке остаются сложной проблемой для разработчиков. Такие утечки происходят, когда объекты больше не нужны приложению, но на них по-прежнему ссылаются другие объекты, что не позволяет сборщику мусора освободить занимаемую ими память. Со временем это может привести к значительному снижению производительности приложения и даже к его аварийному завершению из-за исключения OutOfMemoryError. Цель данной статьи  —  разобраться в тонкостях утечек памяти в Java, изучить методы их обнаружения и стратегии предотвращения.

AlexanderObregon/java-memory-leaks-detection-and-prevention-25d1c09eaebe" rel="nofollow">https://medium.com/@AlexanderObregon/java-memory-leaks-detection-and-prevention-25d1c09eaebe

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как мигрировать в Cassandra? Как повысить отказоустойчивость Akka-кластеров? И где обитают платежные ссылки?

Отвечаем на backend-вопросы на онлайн-митапе Мир Plat.Form — 19 февраля в 17:00 🗓

Вас ожидают:
✔ Рассказ про устройство платежных ссылок, на которых основана Система быстрых платежей. Про хранение и перенос этих ссылок в Cassandra.
✔ Доклад об отказоустойчивых Akka-кластерах, позволивших развивать СБП в сжатые сроки, выдерживая высокие требования.
✔ Q&A со спикерами после докладов.
✔ Возможность выиграть призы за вопросы спикерам.

📍Митап пройдет онлайн на YouTube — 19 февраля в 17:00 по Москве. Ссылку отправим вам на почту за час до начала митапа.

Для участия нужно зарегистрироваться.

Реклама. АО "НСПК". ИНН 7706812159

Читать полностью…

Библиотека Java разработчика

Совет по Spring 💡

Spring SSEEvent для плавного обновления приложений в режиме реального времени 🔥

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Самоучитель по Pattern Matching в Java 21

Про новые возможности сопоставления с образцом (Pattern Matching) в Java 21.

https://nipafx.dev/java-21-pattern-matching/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

♨️ Готовимся к собеседованию на Java разработчика Junior+/ Middle: проверьте свои знания

На данном мероприятии мы подробно разберем, какие вопросы могут возникнуть на собеседовании на позицию Java Middle Developer.
Урок будет полезен каждому, кто желает оценить свой уровень понимания Java.

В результате посещения вебинара:
- Вы сможете уверенно ответить на большинство вопросов, которые могут возникнуть на интервью для уровня Java Middle Developer;
- будете осведомлены о подводных камнях, связанных с ответами на эти вопросы.

После открытого урока вы сможете записаться на курс для продвинутых разработчиков «Java Developer. Professional» по специальной цене.

Событие пройдет 20 февраля в 20:00 МСК
Участие бесплатное

➡️ Зарегистрироваться!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Библиотека Java разработчика

♨️ Анализировать множество показателей и не перегружать приложение?
С Java Flight Recorder – это легко.


JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок

Хотите освоить?

Приглашаем java-разработчиков и тестировщиков
на бесплатный онлайн-урок «Обзор инструмента Java Flight Recorder»!

Вы узнаете:
что такое Java Flight Recorder и для каких целей используется
как запустить и остановить JFR
как настроить интересующий вас профиль по событиям JVM
как прочитать готовый журнал с помощью Java Mission Control

Ведущий – Александр Царёв, техлид в Сбере.

После открытого урока вы сможете записаться на курс для продвинутых разработчиков «Java Developer. Advanced».

Событие начнётся 14 февраля в 20:00 МСК
Участие бесплатное

🤝 Зарегистрироваться!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Библиотека Java разработчика

Обновленный Java Roadmap 2024📌

https://github.com/devoxx/JavaRoadmap

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Java ☕️

JSON Patch и Merge Patch с Jackson

https://gist.github.com/aoudiamoncef/e2c63a69a6520866db2e12e69bb96a1b

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Записывайтесь на бесплатный мини-курс по Java-разработке: научим писать Telegram-ботов, программу для обработки данных и чат на фреймворке Spring.

Получите доступ к занятиям за пару кликов: 👉 https://epic.st/_JPiI-

— Формат мини-курса отлично подойдёт для обучения из любой точки мира. Смотрите видео в удобное время, а после выполняйте практические задания. В конце вас ждёт прямой эфир с экспертом, где он поделится профессиональными секретами, разберёт работы участников и ответит на вопросы.

🔔 Спикер — Даниил Пилипенко, основатель и директор центра подбора IT-специалистов SymbioWay. 19 лет работает в сфере Java и веб-разработки. Он ответит на вопросы о профессии, пройденном материале и практических работах.

🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год.

До встречи на мини-курсе. Старт после регистрации!

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Читать полностью…

Библиотека Java разработчика

Java. Префиксное дерево. Основные операции, сохранение в файл, практическое применение.

В данном видео я рассказываю о префиксных деревьях. Разбираем, что из себя представляет префиксное дерево, для чего оно применяется. Изучаем и реализуем основные операции с префиксным деревом на языке программирования Java. Кроме этого я показываю как сохранить дерево в файл и потом загрузить обратно. С помощью этого проверяю, насколько выгодней может быть хранение строк в префиксном дереве на примере автомобильных номеров.

00:00 - Вступление
00:26 - Применение в приложении
01:58 - Построение дерева и операции с ним
06:33 - Построение префиксного дерева на Java
11:22 - Операции с префиксным деревом на Java
16:31 - Сохранение дерева в файл
20:51 - Загрузка дерева из файла
25:32 - Экономия по сравнению со списком
27:12 - Замечание о Null-безопасности
28:26 - Заключение

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Java ☕️

В Java 22 появился новый форматированный тип `ListFormat`. Он создает или разбирает список конкатенированных строк с учетом локальных особенностей. Предусмотрено 3 типа конкатенации: STANDARD, OR и UNIT, и 3 стиля для каждого типа: FULL, SHORT и NARROW.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как архитектору в IT усилить свое портфолио и попасть в крупный инновационный проект?

Изучить микросервисную архитектуру под руководством топовых специалистов крупнейших компаний всего за 5 месяцев на онлайн-курсе от OTUS.

🔥 Программа идеально подходит архитекторам, разработчикам, системным аналитикам, администраторам и DevOps, которые хотят выйти на новый карьерный уровень.

Курс нацелен на глубокое изучение темы и получение практических навыков, в рамках обучения вы рассмотрите работу с очень популярными сейчас инструментами – Kubernetes и Docker.

Пройдите вступительное тестирование прямо сейчас и получите спеццену на курс: https://vk.cc/cupizh

Реклама. ООО «ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ». ИНН 9705100963

Читать полностью…

Библиотека Java разработчика

Двухфакторная аутентификация с помощью Spring Security

В этой статье мы рассмотрим двухфакторную аутентификацию с помощью Spring Security. Мы будем использовать soft token с Spring Security.

Добавление дополнительного уровня безопасности для вашего приложения всегда является хорошей практикой, особенно с учетом меняющейся динамики безопасности. Для некоторых приложений наличие двухфакторной аутентификации является обязательным требованием. Хотя в Spring security нет встроенной двухфакторной аутентификации, но гибкая архитектура Spring Security Architecture позволяет легко добавить эту функциональность в ваше приложение.

https://www.javadevjournal.com/spring-security/two-factor-authentication-with-spring-security/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как вызвать транзакционный метод из того же класса?

В Spring Framework существует аннотация @Transactional. Ей помечается метод или класс, весь код которого должен выполняться в рамках транзакции. Обычно имеется в виду транзакция базы данных, но вообще это понятие определяется используемым transactionManager-ом. Настройки, такие как уровень изоляции, стратегия роллбэка и прочие, определяются через параметры этой аннотации.

В теории, @Transactional делает метод транзакционным для этого класса и всех его наследников. На практике же, по умолчанию, если вызвать транзакционный метод Foo.bar() из Foo.baz(), то транзакция не создастся.

Это происходит вследствие того, что по умолчанию Spring AOP добавляет код открытия/закрытия транзакции через динамический proxy класс. То есть, вместо Foo инджектится нечто, похожее на код на изображении.

Первый вариант решения проблемы – вместо аннотации использовать TransactionTemplate, то есть обернуть код в транзакцию вручную. Примеры использования можно посмотреть в этой статье.

Другой, более универсальный, но более сложный в конфигурации способ – переключить режим работы Spring AOP с динамических прокси на нечто другое. Обычно применяется библиотека AspectJ:

@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)


В Spring AOP есть понятие weaving – этап добавления дополнительной функциональности (аспектов). В нашем случае, это код открытия/закрытия транзакции. Чтобы заработал weaving AspectJ этапа компиляции, в сборку нужно добавить плагин: aspectj-maven-plugin для maven, gradle-aspectj для gradle.

Подробнее об экспериментах с разными режимами Spring AOP можно почитать в статье на хабре.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как ведут себя конфликтующие импорты?

import ru.bookjava.A;
import static ru.bookjava.Letters.A;

class Test {
void test () {
// Никаких ошибок!
A letterAVariable = new A() ;
var enumElement = A;
}
}


• Классы текущего пакета доступны без импорта. Если импортируется другой класс, совпадающий с классом-соседом по пакету – сосед перекрывается. Будет использован импортированный класс, без ошибки.

• Если в class-файле существует несколько разных классов с одинаковыми именами, объявленных здесь же или импортированных – это приводит к ошибке компиляции.

• Импортировать один и тот же класс несколько раз допускается. Будет всего лишь warning о неиспользуемом импорте.

• Для статических импортов констант действуют те же правила. Обычные и статические импорты не конфликтуют друг с другом – для выбора достаточно контекста использования.

• Чтобы применять несколько классов/констант с одинаковыми именами в одном файле, придется обойтись без импортов. Нужно будет обращаться по их полным именам, с указанием пакета.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Spring💡

WebUtils

Класс-утилита для работы с веб-задачами, такими как извлечение параметров запроса, обработка многокомпонентных запросов и управление cookies.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Spring Retry💡

RetryTemplate

Реализуйте устойчивые операции в приложениях Spring. Определите поведение повторных попыток для надежной обработки ошибок.

https://docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/support/RetryTemplate.html

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Освойте RabbitMQ в 2024, чтобы расширить свои карьерные возможности в IT

Всего за 4 месяца на онлайн-курсе «RabbitMQ для разработчиков и администраторов» от OTUS.

Программа идеально подходит для программистов с опытом работы от 3-х лет, системных администраторов, DevOps/SRE и инженеров.

На курсе вас ждут:

- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на комфортных условиях.

Оставьте заявку прямо сейчас и получите полезный урок, который поможет ознакомиться с форматом обучения и принять решение: https://vk.cc/cuC3iw

Читать полностью…

Библиотека Java разработчика

Зачем нужны и какие бывают блоки инициализации?

Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.

• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
• Блок инициализации возможно создать и в анонимном классе.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Spring

В этом выпуске мы рассмотрим новый проект Spring Boot Testjars, который значительно упрощает создание и повторное использование сателлитных Java-сервисов, таких как микросервисы на базе Spring Boot или инфраструктура, например, Spring Authorization Server.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как сгенерировать хорошее случайное число?

Этот вопрос глубже, чем кажется на первый взгляд. Для начала, нужно разобраться в двух понятиях: псевдослучайные, и истинно случайные числа.

Псевдослучайные числа – это последовательность случайных на вид чисел, на самом деле полученных в результате математического алгоритма. Последовательность таких чисел можно воспроизвести, зная начальные условия (seed, энтропия) и используемый алгоритм. Метод, который используется для генерации чисел в классе java.util.Random, дает криптографически ненадежные псевдослучайные числа – злоумышленник может достаточно легко их предугадывать.

Истинно случайные числа основываются на физических свойствах, которые трудно поддаются измерению. Это могут быть, например, доли секунд текущего системного времени. Алгоритм генерации истинно случайных чисел не позволяет с хорошей точностью угадать следующее число, даже зная предыдущие.

Класс SecureRandom предоставляет доступ к криптографически надежным генераторам случайных чисел. При том, это могут быть как достаточно сложные последовательности псевдослучайных, так и истинно случайные числа. Согласно стандартам безопасности, они будут достаточно непредсказуемы.

Не все случайные числа одинаково случайны. Шанс что рост случайного человека окажется ближе к среднему высок, тогда как у игральной кости одинакова вероятность выпадения любой из граней. В математике это называется распределением вероятностей.

Внутри SecureRandom использует SPI. Мы можем выбирать из различных алгоритмов генерации и их провайдеров, указав их названия в фабричном методе getInstance. Все перечисленные выше свойства определяются именно используемым алгоритмом.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

♨️ Прокачивай свои навыки вместе с Java | Фишки и трюки

Ежедневные порции Java-фишек, полезные советы и трюки от опытных разработчиков.

👉🏼 Присоединиться

Читать полностью…

Библиотека Java разработчика

В отличие от других немодульных "soft keywords" в Java (permits, sealed, yield, record, var), здесь разрешено использовать "when" в качестве имени типа, так что этот код совершенно допустим. Интересно, было ли это сознательное исключение, или на него не обратили внимания...

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Советы по Spring 💡

Чтобы выполнять действия в транзакции базы данных, вы можете использовать шаблон Spring TransactionTemplate вместо @Transactional

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Java-разработчики, вас зовут в Тинькофф

Участвуйте в Java Weekend Offer, если ваш опыт больше 3 лет. Пройдите все этапы собеседования за выходные и, если все понравится, получите оффер.

Сможете решать сложные задачи, расти в сильной команде, работать на топовом стеке и пользоваться бенефитами.

Оставьте заявку до 14 февраля

АО «Тинькофф Банк», ИНН 7710140679

Читать полностью…

Библиотека Java разработчика

Советы по Spring 💡

Создайте отказоустойчивый микросервис с помощью паттерна Circuit Breaker, используя Resilience4j. 🔥

https://resilience4j.readme.io/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Шпаргалка по структурам данных в Java

К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.

https://habr.com/ru/articles/751648/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

🔗 Как повысить эффективность работы с большим количество сетевых подключений в Java?

Узнайте на бесплатном практическом уроке «Java NIO» от OTUS и Александра Фисунова — Senior Kotlin Developer в SSP Software на проекте ВТБ.

На вебинаре вы:

— узнаете, что такое Java NIO и чем он отличается от Java IO
— разберете полезные возможности Java NIO, которые сильно упрощают жизнь и могут пригодиться любому разработчику;
— изучите Java Core и получите ответы на свои вопросы.

Встречаемся 15 февраля в 20:00 мск.
Открытый урок пройдет в преддверии обновленного запуска курса «Java Developer. Professional».

➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cuph71

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Библиотека Java разработчика

🚀 Советы по Spring Boot 💡

Библиотека Spring Boot Startup Report генерирует интерактивный отчет о запуске приложения Spring Boot, который позволяет понять, что влияет на время запуска приложения, и, возможно, поможет его оптимизировать. 🔥

https://github.com/maciejwalkowiak/spring-boot-startup-report

👉@BookJava

Читать полностью…
Subscribe to a channel