Forwarded from Библиотека собеса по Java | вопросы с собеседований
В каких состояниях может пребывать поток?
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что выведет код сверху?
Anonymous Quiz
17%
40000
55%
Compilation error, cannot convert long to short
26%
-25536
2%
Свой вариант
Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence. Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.
Forwarded from Библиотека собеса по Java | вопросы с собеседований
В каких состояниях может пребывать поток?
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
Поток в 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, а использовать оба одновременно
🔽 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, а использовать оба одновременно
❤️🙏 Помните историю автора «Библиотеки программиста» Станислав Герасимов? Станислав — инвалид с детства. В статье он рассказывал, как получил диплом и строит карьеру в IT.
❗️ В обновленной статье читайте продолжение его истории. И самое главное: очень скоро он отправляется на операцию и ему нужна ваша помощь.
❗️ В обновленной статье читайте продолжение его истории. И самое главное: очень скоро он отправляется на операцию и ему нужна ваша помощь.
🧔🧔 Строим свой SSO
Серия статей про постройку собственного SSO Server-а.
Единый вход в систему (Single sign-on, SSO) — это решение для аутентификации,
которое дает пользователям возможность входить в несколько приложений и на
несколько веб-сайтов с использованием единовременной аутентификации пользователя.
Продолжение здесь
#туториал
Серия статей про постройку собственного SSO Server-а.
Единый вход в систему (Single sign-on, SSO) — это решение для аутентификации,
которое дает пользователям возможность входить в несколько приложений и на
несколько веб-сайтов с использованием единовременной аутентификации пользователя.
Продолжение здесь
#туториал
Очередной #дайджест для джавистов
🔵 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 для экспонирования данных профилирования через настраиваемые конечные точки
🔵 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 для экспонирования данных профилирования через настраиваемые конечные точки
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Узнаем разницу между 2 датами, представленными в виде строк
Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.
В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.
Обратите внимание, что вы должны использовать формат даты «yyyy-MM-dd» для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы 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
Читать статью
#почитать
В свете недавнего выхода 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
Читать статью
#почитать