Как выглядят будни разработчиков управляемых БД, S3 и CDN в стартапе внутри big tech?
Слушайте в подкасте «Расскажите про MWS». В новом выпуске мы беседуем с Дмитрием Черёмухиным, руководителем направления Data Platform в MWS.
Обсудим, без каких сервисов не может существовать ни одно современное облако, какие команды их разрабатывают и с какими сложностями они сталкиваются. И самое важное, то, о чём все мечтают, — прекрасный green field, в котором все так хотели поработать.
Смотрите и слушайте на всех популярных площадках:
🎬 YouTube
🎬 VK Видео
🎧 Яндекс Музыка
🎧 Apple Podcasts
🎧 Mave Digital
Слушайте в подкасте «Расскажите про MWS». В новом выпуске мы беседуем с Дмитрием Черёмухиным, руководителем направления Data Platform в MWS.
Обсудим, без каких сервисов не может существовать ни одно современное облако, какие команды их разрабатывают и с какими сложностями они сталкиваются. И самое важное, то, о чём все мечтают, — прекрасный green field, в котором все так хотели поработать.
Смотрите и слушайте на всех популярных площадках:
🎬 YouTube
🎬 VK Видео
🎧 Яндекс Музыка
🎧 Apple Podcasts
🎧 Mave Digital
🌐 JTS Topology Suite — мощная Java-библиотека для работы с геометрией. Проект предоставляет инструменты для создания и манипуляции векторной геометрией, включая пространственные операции. Входит в рабочую группу LocationTech Eclipse Foundation и служит основой для многих GIS-решений.
В комплекте идёт TestBuilder с GUI для визуализации геометрии и тестирования функций. Библиотека особенно полезна разработчикам GIS-приложений систем пространственного анализа. На базе JTS построены популярные порты для C++, .NET и JavaScript.
🤖 GitHub
@javatg
В комплекте идёт TestBuilder с GUI для визуализации геометрии и тестирования функций. Библиотека особенно полезна разработчикам GIS-приложений систем пространственного анализа. На базе JTS построены популярные порты для C++, .NET и JavaScript.
🤖 GitHub
@javatg
🔥4❤1👍1
Инструмент доступен для использования двумя способами: в виде Spring Boot стартера для Spring Boot приложений и в виде отдельной библиотеки для приложений, которые используют Reactor Netty HTTP Server напрямую. Настройка простая: достаточно подключить зависимость в проект и добавить файл logback-access.xml с Logback конфигурацией access-логов (appender, encoder, pattern).
🤖 GitHub
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Совет дня: преобразование списка в `Map` за 1 строчку с Java Streams
Хочешь из списка сделать
📌 Удобно для:
— подсчёта повторов
— агрегации данных
— замены SQL
@javatg
Хочешь из списка сделать
Map
, где ключ — объект, а значение — частота его появления? Без циклов — через Stream:
import java.util.*;
import java.util.stream.*;
public class FrequencyCount {
public static void main(String[] args) {
List<String> items = List.of("apple", "banana", "apple", "orange", "banana", "apple");
Map<String, Long> freq = items.stream()
.collect(Collectors.groupingBy(e -> e, Collectors.counting()));
System.out.println(freq);
// 👉 {orange=1, banana=2, apple=3}
}
}
📌 Удобно для:
— подсчёта повторов
— агрегации данных
— замены SQL
GROUP BY
@javatg
👍15❤8🥰2
👩💻🎯 Открытый урок «Кракозябры vs Java: как победить кодировки и стать Гуру Unicode?».
🗓 17 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».
Ошибки в кодировках ломают приложения, превращая текст в «абракадабру». Понимание таблиц кодировок — must-have навык для работы с данными, файлами и международными проектами.
О чём поговорим:
✔️ ASCII, UTF-8, Unicode — WTF? Разберём, как Java хранит и обрабатывает текст.
✔️ Почему файлы «ломаются»? Как избежать ошибок при чтении/записи данных.
✔️ Лайфхаки для юникода: работа с иероглифами и русским языком.
✔️ Секреты JVM: как настроить кодировку в проекте.
Кому будет интересно:
Начинающим Java-разработчикам и тестировщикам, сталкивающимся с международными данными и проблемами кодировки.
В результате вебинара вы:
Научитесь контролировать кодировки в своих приложениях, исправлять «кракозябры» и работать с любыми текстовыми данными без страха.
🔗 Ссылка на регистрацию: https://otus.pw/EE09/
🗓 17 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».
Ошибки в кодировках ломают приложения, превращая текст в «абракадабру». Понимание таблиц кодировок — must-have навык для работы с данными, файлами и международными проектами.
О чём поговорим:
✔️ ASCII, UTF-8, Unicode — WTF? Разберём, как Java хранит и обрабатывает текст.
✔️ Почему файлы «ломаются»? Как избежать ошибок при чтении/записи данных.
✔️ Лайфхаки для юникода: работа с иероглифами и русским языком.
✔️ Секреты JVM: как настроить кодировку в проекте.
Кому будет интересно:
Начинающим Java-разработчикам и тестировщикам, сталкивающимся с международными данными и проблемами кодировки.
В результате вебинара вы:
Научитесь контролировать кодировки в своих приложениях, исправлять «кракозябры» и работать с любыми текстовыми данными без страха.
🔗 Ссылка на регистрацию: https://otus.pw/EE09/
⚠️ Чем опасен Scheduled(fixedRate) без Transactional в Spring?
Многие используют
👎 Проблема:
Если метод выполняется дольше, чем интервал
Результат — дублирование обработки, гонки, порча данных.
Пример:
💥 Через 10 секунд начнёт работать следующий вызов, даже если первый ещё не закончен.
✅ Решение: обернуть в @Transactional и использовать блокировки:
📌 Также можно:
— использовать fixedDelay вместо fixedRate — он ждёт окончания предыдущей задачи
— добавить флаг locked, чтобы явно помечать уже взятые задачи
— заменить @Scheduled на более надёжные инструменты:
🔹 Spring Batch — для сложных задач
🔹 Spring Integration / Camunda — если нужны гарантии и retry
🔹 Quartz — если важны очередь и контроль запуска
🔧 Не упирайтесь в @Scheduled, если задача критична к повторной обработке.
@javatg
Многие используют
@Scheduled
для запуска задач по таймеру, но забывают об одной критичной вещи — транзакциях. Особенно если указан fixedRate
.👎 Проблема:
Если метод выполняется дольше, чем интервал
fixedRate
, запускается второй поток, который снова возьмёт те же данные. Результат — дублирование обработки, гонки, порча данных.
Пример:
@Scheduled(fixedRate = 10_000)
public void cleanUp() {
List<Job> jobs = jobRepository.findAllByStatus(PENDING);
jobs.forEach(job -> {
job.setStatus(PROCESSING);
jobRepository.save(job);
});
}
💥 Через 10 секунд начнёт работать следующий вызов, даже если первый ещё не закончен.
✅ Решение: обернуть в @Transactional и использовать блокировки:
@Transactional
@Scheduled(fixedRate = 10_000)
public void cleanUp() {
List<Job> jobs = jobRepository.findAllByStatusForUpdate(PENDING);
...
}
📌 Также можно:
— использовать fixedDelay вместо fixedRate — он ждёт окончания предыдущей задачи
— добавить флаг locked, чтобы явно помечать уже взятые задачи
— заменить @Scheduled на более надёжные инструменты:
🔹 Spring Batch — для сложных задач
🔹 Spring Integration / Camunda — если нужны гарантии и retry
🔹 Quartz — если важны очередь и контроль запуска
🔧 Не упирайтесь в @Scheduled, если задача критична к повторной обработке.
@javatg
👍14❤2🔥2🥰1😱1
🧱 Maven vs. ⚡️Gradle — что выбрать разработчику?
Когда речь заходит о сборке Java-проектов, чаще всего выбор стоит между двумя фреймворками: Maven и Gradle. Оба стали стандартом в индустрии, но у каждого — свои сильные и слабые стороны. Разбираем, кому что подойдёт 👇
🔹 Maven — стабильная классика:
✅ Строгая структура: легко читать и сопровождать
✅ Надёжность и предсказуемость сборки
✅ Много плагинов и готовых решений
⚠️ XML-конфигурация громоздкая
⚠️ Медленнее по сравнению с Gradle
🔸 Gradle — гибкость и скорость:
✅ Поддержка Kotlin и Groovy DSL
✅ Инкрементальные сборки и кэширование
✅ Гибкий подход к конфигурации
⚠️ Порог входа выше
⚠️ Сложности с отладкой настроек
📌 Вывод:
🔷 Выбирай Maven, если важны стабильность, читаемость и простота
🔶 Выбирай Gradle, если хочешь максимум производительности и гибкости
💬 В крупных проектах Gradle становится всё популярнее, особенно с Kotlin.
Но в enterprise-среде Maven по-прежнему остаётся стандартом.
А ты чем пользуешься? Делись в комментариях ⬇️
@javatg
Когда речь заходит о сборке Java-проектов, чаще всего выбор стоит между двумя фреймворками: Maven и Gradle. Оба стали стандартом в индустрии, но у каждого — свои сильные и слабые стороны. Разбираем, кому что подойдёт 👇
🔹 Maven — стабильная классика:
✅ Строгая структура: легко читать и сопровождать
✅ Надёжность и предсказуемость сборки
✅ Много плагинов и готовых решений
⚠️ XML-конфигурация громоздкая
⚠️ Медленнее по сравнению с Gradle
🔸 Gradle — гибкость и скорость:
✅ Поддержка Kotlin и Groovy DSL
✅ Инкрементальные сборки и кэширование
✅ Гибкий подход к конфигурации
⚠️ Порог входа выше
⚠️ Сложности с отладкой настроек
📌 Вывод:
🔷 Выбирай Maven, если важны стабильность, читаемость и простота
🔶 Выбирай Gradle, если хочешь максимум производительности и гибкости
💬 В крупных проектах Gradle становится всё популярнее, особенно с Kotlin.
Но в enterprise-среде Maven по-прежнему остаётся стандартом.
А ты чем пользуешься? Делись в комментариях ⬇️
@javatg
👍2❤1