🎲 Рандомный порт для Spring Boot приложения
Чтобы запустить Spring Boot приложение на любом свободном порту достаточно указать в application.properties/yaml файле
Но что если хочется выбрать свободный порт из определенного диапазона? В таком случае можно использовать выражение
За случайный выбор значений отвечает класс RandomValuePropertySource.
#SpringTips #Simple
Чтобы запустить Spring Boot приложение на любом свободном порту достаточно указать в application.properties/yaml файле
server.port=0
. В этом случае Spring Boot автоматически подберёт свободный порт, и постарается избежать конфликта с другими приложениями.Но что если хочется выбрать свободный порт из определенного диапазона? В таком случае можно использовать выражение
${random.int(min,max)}
. Например, для выбора порта в пределах от 8000 до 8100 свойство будет выглядеть так: server.port=${random.int(8000,8100)}
За случайный выбор значений отвечает класс RandomValuePropertySource.
#SpringTips #Simple
3👍59🔥12❤5😁3
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Spring АйО х Joker – сообщили об участии команды Spring АйО в Joker 2024
– Туториал по Spring Data Envers для начинающих – разобрались, как отслеживать изменения данных в приложении, используя Spring Data Envers
– Вышел Spring AI 1.0.0 M3 – сообщили о релизе Spring AI 1.0.0 M3, который содержит достаточно большое кол-во улучшений
– Лучший способ создания нескольких окружений для Spring Boot приложения – ананосировали статью про имеющиеся способы управления окружением с использованием Docker Compose в деталях
– Рандомный порт для Spring Boot приложения – рассказали, как можно зарандомить порт или выбрать порт рандомно из диапазона для Spring Boot приложения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤3
Forwarded from JPoint и Joker — канал конференций по Java
Чем заняться в перерывах между докладами?
Познакомиться с коллегами по цеху и обсудить с ними актуальные вопросы из разных сфер: безопасности, паттернов проектирования, тестирования, управления данными и будущего технологий. Всё это можно сделать на Random coffee от Spring АйО.
Как проходит активность?
В 30-минутных перерывах между докладами приходите к столам возле Дискуссионки 3. На них будут лежать карточки с вопросами для обсуждения. За каждым столиком будет по два человека, которые обсудят вопрос, а спустя 5 минут поменяются «парами», чтобы подискутировать на новые темы.
В одном раунде Random coffee участвуют 10 человек, включая эксперта. Полное расписание с темами и экспертами можно посмотреть по ссылке.
Познакомиться с коллегами по цеху и обсудить с ними актуальные вопросы из разных сфер: безопасности, паттернов проектирования, тестирования, управления данными и будущего технологий. Всё это можно сделать на Random coffee от Spring АйО.
Как проходит активность?
В 30-минутных перерывах между докладами приходите к столам возле Дискуссионки 3. На них будут лежать карточки с вопросами для обсуждения. За каждым столиком будет по два человека, которые обсудят вопрос, а спустя 5 минут поменяются «парами», чтобы подискутировать на новые темы.
В одном раунде Random coffee участвуют 10 человек, включая эксперта. Полное расписание с темами и экспертами можно посмотреть по ссылке.
👍11❤8🔥4
Вот и прошел первый день главного события этой осени для Java разработчиков - Joker 2024!
💚 Дружественная атмосфера и куча крутых докладов, в том числе по нашей любимой теме - Spring Framework
P.S. Увидимся на After Party!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥32👍8❤7
Вот и подошел к концу Joker 2024! Были рады пообщаться и обменяться экспертизой со всеми, кто пришел
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍25🔥18⚡1
В новом переводе от команды Spring АйО вы узнаете, как минимизировать риски и обеспечить безопасность Docker-контейнеров с помощью CIS Benchmark рекомендаций и автоматизированных инструментов вроде Docker Bench for Security.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5❤4👎1🤔1🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42👍6🔥4
Со временем в любом приложении могут появиться дублирующиеся записи. Иногда их удаление реализуют на уровне приложения, хотя это можно сделать с помощью одного SQL-запроса.
Удалить дубликаты вручную не так просто, как может показаться. Обычно для этого используется команда
GROUP BY
с функциями MIN(id)
или MAX(id)
, чтобы оставить одну строку.
DELETE FROM contacts
WHERE id NOT IN (
SELECT MIN(id)
FROM contacts
GROUP BY firstname, lastname, email
);
Однако такой метод не всегда подходит, если есть дополнительные требования:
* Нужно сохранить не все дубликаты, а лишь часть, например, последние пять.
* Иногда важно не просто удалить первые или последние строки — дополнительные поля могут задавать приоритет, например, мы не хотим удалять пользователя, подтвердившего
email
, ради того, который этого не сделал.Чтобы учесть все требования, можно воспользоваться оконными функциями:
1. Строки разбиваются на группы по дублирующимся полям, создавая отдельные группы для каждого уникального набора значений.
2. Каждая группа сортируется по важным полям, например, по дате создания.
3. Для каждой строки в группе с помощью функции
ROW_NUMBER
назначается порядковый номер.4. Можно удалить любые строки с номером, превышающим необходимый, например, если нужно оставить только пять последних записей.
Тогда, запрос позволяющий сохранить не все дубликаты, а лишь часть, например, последние пять, будет выглядеть следующим образом:
WITH duplicates AS (
SELECT id, ROW_NUMBER() OVER(
PARTITION BY firstname, lastname, email
ORDER BY age DESC
) AS rownum
FROM contacts
)
DELETE FROM contacts
USING duplicates
WHERE contacts.id = duplicates.id AND duplicates.rownum > 5;
А запрос, для удаления дубликатов с учетом факта подтверждения
email
следующим образом:
WITH duplicates AS (
SELECT
id,
ROW_NUMBER() OVER(
PARTITION BY email
ORDER BY email_confirmed DESC
) AS rownum
FROM contacts
)
DELETE FROM contacts
USING duplicates
WHERE contacts.id = duplicates.id AND duplicates.rownum > 1;
#DatabaseTip #SQL
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤4🔥4🤩1