Библиотека джависта | Java, Spring, Maven, Hibernate
24.7K subscribers
1.89K photos
38 videos
42 files
2.68K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
В каких состояниях может пребывать поток?

Поток в Java может находиться в следующих состояниях:

— New (Новый): поток создан, но еще не запущен.

— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.

— Running (Выполняется): поток выполняется в настоящий момент.

— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.

— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.

— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.

— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🚧🚧 От логов к аудиту

В статье коротко рассмотрены различия между обычными логами и аудит-логами. Основное внимание уделено реализации аудит-логирования в Java, включая использование аннотаций и АОП, приведен пример настройки роутинга логов через rsyslog.

Читать статью

#гайд
Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence. Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.
В каких состояниях может пребывать поток?

Поток в Java может находиться в следующих состояниях:

— New (Новый): поток создан, но еще не запущен.

— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.

— Running (Выполняется): поток выполняется в настоящий момент.

— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.

— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.

— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.

— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
#дайджест перед выходными

🔽 Spring AI 1.0.0 M1 release — из значимых нововведений: API для создания промптов, похожий на RestClient и JdbcClient, поддержка новых моделей и векторных хранилищ, TestContainers

🔽 Module Imports in Java 23 — автор рассказывает о книге, в которой описывается предварительный просмотр функции, основанной на модулях, которая может быть использована, даже если код не находится в модулях

🔽 Делаем ZIO-Kafka безопаснее и быстрее — пофиксили дублирование сообщений при ребалансе, добавив механизм отложенного выполнения, который дожидается, пока все сообщения в очереди не будут обработаны

🔽 Hibernate ORM 6.6 — небольшая заметка, которая рассказывает об аннотация, которая указывает на то, что в случае наследования сущностей Hibernate должен создавать прокси не на суперкласс, а на конкретного наследника

🔽 Spec-first and code-first, hand in hand — теперь вам не надо разрываться между подходами spec-first или code-first, а использовать оба одновременно
🎓 Продвинутый SQL: секреты профессионалов

Рассказываем о сложных стратегиях оптимизации запросов, продвинутых типах соединений и тонкостях использования SELECT.

Читать статью

#туториал
💪💪 Пишем кастомный Plugin SonarQube

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

Подробности тут

#гайд
#memes

Найден самый полезный совет на свете. Записываем и не забываем.
👶 Новичок в компании: 18 советов, как быстро адаптироваться и освоить новые навыки

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


Читать статью

#туториал
❤️🙏 Помните историю автора «Библиотеки программиста» Станислав Герасимов? Станислав — инвалид с детства. В статье он рассказывал, как получил диплом и строит карьеру в IT.

❗️ В обновленной статье читайте продолжение его истории. И самое главное: очень скоро он отправляется на операцию и ему нужна ваша помощь.
🧔🧔 Строим свой SSO

Серия статей про постройку собственного SSO Server-а.
Единый вход в систему (Single sign-on, SSO) — это решение для аутентификации,
которое дает пользователям возможность входить в несколько приложений и на
несколько веб-сайтов с использованием единовременной аутентификации пользователя.

Продолжение здесь

#туториал
#memes

Заказчик можем всего один моментик подправить?

Его моментик:
Очередной #дайджест для джавистов

🔵 Modules Make javac Easy — про компиляцию и сборку Java-приложения не самым популярным способом в текущее время через javac

🔵 Model Data, Whole Data, and Nothing but the Data — в статье рассматривается принцип моделирования данных в ориентированном на данные программировании (DOP), который заключается в моделировании данных, всех данных и только данных

🔵 Scala toolig ecosystem со Scalar Conference 2024 — с каждым тулом идет в комплекте сводка о том, насколько этот инструмент жив и какие функции хотят добавить

🔵 Model Data Immutably and Transparently — принцип помогает избежать ошибок, связанных с изменением состояния объектов, используемых различными подсистемами

🔵 Мониторинг и профилирование Spring Boot за две строчки — механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки
Узнаем разницу между 2 датами, представленными в виде строк

Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.

В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.

Обратите внимание, что вы должны использовать формат даты «yyyy-MM-dd» для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
🤔🤔 Эффективность Spring-приложений в рантайме. Текущее состояние дел и планы на будущее

В свете недавнего выхода Spring Framework 6.1 и Spring Boot 3.2, автор хотел бы поделиться обзором тех усилий, которые предпринимает команда Spring, чтобы позволить разработчикам оптимизировать эффективность их приложений во время выполнения.

В статье:

Spring MVC вместе с Virtual Threads на JDK 21
Развёртывание Spring-приложений в облаке с использованием GraalVM Native Image
Восстановление контрольной точки
Масштабирование приложений до нуля с помощью Spring и Project CRaC
Будущее OpenJDK со Spring AOT и Project Leyden

Читать статью

#почитать