После обучения вы сможете разрабатывать сложные Java-приложения уровня Middle+, понимать работу JVM изнутри и писать чистый, оптимизированный код.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Scheduler — это часть Spring Framework, которая позволяет планировать и выполнять задачи в заданное время или по расписанию. Он избавляет от необходимости интеграции сторонних библиотек, предлагая встроенные решения для управления задачами.
Виды задач:
- @Scheduled — аннотация для запуска методов по расписанию.
- TaskScheduler — интерфейс для более гибкого управления задачами.
- Cron-выражения — для сложных расписаний.
- Простота использования за счёт минимальной конфигурации.
- Интеграция с другими частями Spring.
- Поддержка CRON-выражений для гибкости.
- Ограниченная поддержка в распределённых системах.
- Возможные сложности с тестированием задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mill стремится облегчить процесс сборки, для чего заимствует идеи из таких современных инструментов, как Maven, Gradle, Bazel и SBT.
Mill автоматизирует решение многих общих проблем, связанных с инструментами сборки, таких как кэширование, инкрементные повторные вычисления и параллелизм, что позволяет сосредоточить усилия на бизнес-логике, а Mill позаботится обо всем остальном.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Java — различные форматы конфигурации
🟢 YAML
— Удобочитаемый формат сериализации данных
— Использует отступы для вложенности
— Часто используется для конфигурационных файлов и обмена данными
🟢 JSON
— Лёгкий формат обмена данными с использованием пар "ключ-значение"
— Широко используется в API, конфигурационных файлах и для обмена данными
🟢 XML
— Язык разметки, использующий теги для определения элементов данных и их структуры
— Часто применяется для представления структурированных данных и хранения документов
🟢 Java Properties
— Простой формат конфигурации с парами "ключ-значение"
— Используется в Java-приложениях для хранения настроек и конфигурационных данных
💬 Какой формат вы используете чаще всего?
✅ Java библиотека #java
— Удобочитаемый формат сериализации данных
— Использует отступы для вложенности
— Часто используется для конфигурационных файлов и обмена данными
— Лёгкий формат обмена данными с использованием пар "ключ-значение"
— Широко используется в API, конфигурационных файлах и для обмена данными
— Язык разметки, использующий теги для определения элементов данных и их структуры
— Часто применяется для представления структурированных данных и хранения документов
— Простой формат конфигурации с парами "ключ-значение"
— Используется в Java-приложениях для хранения настроек и конфигурационных данных
💬 Какой формат вы используете чаще всего?
Please open Telegram to view this post
VIEW IN TELEGRAM
Вам нужно спроектировать и реализовать на Java следующую систему:
1. Система подключается к непрерывному потоку событий (
EventStream
).2. Каждое событие (
Event
) имеет структуру:
class Event {
String entityId;
Instant timestamp;
String eventType;
Map<String, Object> payload;
}
3. В реальном времени нужно собирать и поддерживать текущее состояние каждой сущности (
Entity
), применяя полученные события.4. Система должна поддерживать откат состояния:
- Пользователь может запросить состояние любой сущности на любую произвольную временную точку (
Instant timestamp
).- После отката система должна продолжать обрабатывать новые события без остановки и потери данных.
- Потокобезопасность обработки событий и запросов на откат.
- Высокая производительность: обработка миллионов событий в минуту.
- Быстрый откат состояния (target: < 100 мс).
- Только стандартные библиотеки Java (
java.util.concurrent
, java.time
, коллекции и т.д.).- Архитектура должна позволять добавлять новые типы событий без модификации существующего кода.
- Реализация механизма снимков (
snapshot
) состояний для оптимизации откатов.- Автоматическое создание snapshot'ов каждые N событий для каждой сущности.
- Поддержка нескольких стратегий отката (например, быстрый откат по ближайшему snapshot + события, или чистая перемотка всех событий).
Архитектура: Четкая декомпозиция слоёв, масштабируемость и возможность расширения системы без существенных изменений базового кода.
Работа с многопоточностью: Гарантия безопасности доступа к общим структурам данных в условиях параллельной обработки событий.
Производительность: Минимизация блокировок, эффективная работа с большими объёмами данных, оптимизация по времени отклика и использованию ресурсов.
Чистота кода: Понятные и логичные интерфейсы, чистая реализация без "грязных хака", хорошая читаемость и поддерживаемость кода.
Способность предвидеть риски: Умение анализировать потенциальные угрозы системе, например, рост очередей при перегрузке событий или замедление обработки данных.
Стратегии оптимизации: Эффективное использование snapshot'ов состояния, продуманная организация хранения и восстановления событий.
Обработка ошибок и отказоустойчивость: Умение проектировать систему так, чтобы она корректно вела себя при сбоях, сетевых ошибках и высоких нагрузках.
- Проблема гонки состояний: если одновременно приходит событие и запрашивается откат — что происходит?
- Рост памяти: если хранить все события, как не "убить" память?
- Перепутанные таймстемпы: что делать, если события приходят с задержкой или не по порядку?
- Обновление типов событий: как легко добавить новый
eventType
без переписывания всей логики?- Производительность при откате: как не делать полный перебор событий за годы работы?
- Используйте copy-on-write подход для состояний сущностей.
- Используйте параллельные структуры данных (
ConcurrentHashMap
, ConcurrentSkipListMap
и т.д.).- Реализуйте инкапсуляцию логики обработки событий через паттерн "Event Handler" или "Command Handler".
- Внедрите отдельный менеджер snapshot'ов и менеджер событий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🦉 Apache ZooKeeper — координация распределенных систем без лишней сложности
В эпоху Kubernetes и сервис-мешей скромный ZooKeeper продолжает оставаться фундаментальным инструментом для управления конфигурацией и синхронизации распределенных систем. Последние версии проекта (3.5.5+) сохраняют минималистичный подход — чистые Java-бинарники, документация в Markdown и прозрачный процесс сборки через Maven.
Несмотря на появление альтернатив вроде etcd, ZooKeeper по-прежнему широко используется в Hadoop-экосистеме и как бэкенд для Apache Kafka.
🖥 GitHub
✅ Java библиотека #java
В эпоху Kubernetes и сервис-мешей скромный ZooKeeper продолжает оставаться фундаментальным инструментом для управления конфигурацией и синхронизации распределенных систем. Последние версии проекта (3.5.5+) сохраняют минималистичный подход — чистые Java-бинарники, документация в Markdown и прозрачный процесс сборки через Maven.
Несмотря на появление альтернатив вроде etcd, ZooKeeper по-прежнему широко используется в Hadoop-экосистеме и как бэкенд для Apache Kafka.
Please open Telegram to view this post
VIEW IN TELEGRAM
Наш чатик с вакансиями и резюме, присоединяйся: https://t.me/job_java
Telegram
Java Job - Вакансии и резюме
Наш канал по Java @javalib
Вакансии Java, также можете скидывать свои резюме!
Купить звёзды: @PremiumBot
Вакансии Java, также можете скидывать свои резюме!
Купить звёзды: @PremiumBot
—
choco install xpipe
или
—
bash <(curl -sL https://github.com/xpipe-io/xpipe/raw/master/get-xpipe.sh)
XPipe — open-source инструмент на Java, который позволяет получить доступ ко всей инфраструктуре сервера с локальной машины.
Он работает поверх установленных программ командной строки и не требует настройки на удаленных системах. Так что если вы используете такие инструменты, как ssh, docker, kubectl и т.д. для подключения к серверам, вы можете просто использовать XPipe поверх них.
XPipe полностью интегрируется с текстовыми редакторами, с терминалом, и с разными CLI утилитами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
взаимодействуют через сеть?
Хотите научиться подбирать правильные протоколы для вашей системы?
Откройте для себя все особенности работы с сетевыми протоколами на открытом уроке курса «System Design».
Мы подробно рассмотрим HTTP/2, HTTP/3, gRPC и WebSocket, а также научим выбирать оптимальные технологии для вашего проекта.
Пройдите урок и получите навыки, которые улучшат архитектуру ваших решений.
Урок проходит в преддверие старта курса «System Design».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
— Порождающие паттерны:
— Структурные паттерны:
— Поведенческие паттерны:
Please open Telegram to view this post
VIEW IN TELEGRAM
Agrona предоставляет набор структур данных и вспомогательных методов, которые часто требуются при создании высокопроизводительных приложений на Java.
Многие из этих компонентов используются, к примеру, в Aeron для эффективной и надежной передачи IPC-сообщений по протоколу UDP и обеспечивают высокопроизводительную реализацию буферов для поддержки кодека сообщений Simple Binary Encoding.
Например, с помощью Agrona можно переписать код:
List<Integer> numbers = new ArrayList<>();
// fill numbers somehow
Map<Integer, Integer> counters = new HashMap<>();
for (Integer x : numbers) {
counters.compute(x, (k, v) -> v == null ? 1 : v + 1);
}
вот так:
IntArrayList numbers = new IntArrayList();
// fill numbers somehow
Int2IntCounterMap counters = new Int2IntCounterMap(0);
for (int i = 0; i < numbers.size(); i++) {
counters.incrementAndGet(numbers.getInt(i));
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1691972027119 (1).gif
7.7 MB
Please open Telegram to view this post
VIEW IN TELEGRAM
Как масштабировать машинные модели и работать с огромными объемами данных? Откройте для себя возможности Spark ML на открытом уроке от OTUS!
Spark ML — это мощный инструмент для масштабируемого машинного обучения, который позволяет обучать модели на больших данных, не переходя на специализированные ML-системы. Мы покажем, как интеграция с Spark SQL и DataFrame API упрощает ETL-подготовку данных и фичуризацию для реальных проектов.
🚀 Убедитесь, как Spark ML решает задачи отказоустойчивости и распределённых вычислений, позволяя вам легко строить промышленные ML-пайплайны.
➡️ Посетите открытый урок 11 июня в 20:00 МСК в преддверие старта курса «Spark Developer» и получите скидку на обучение: https://vk.cc/cMv7fh
Spark ML — это мощный инструмент для масштабируемого машинного обучения, который позволяет обучать модели на больших данных, не переходя на специализированные ML-системы. Мы покажем, как интеграция с Spark SQL и DataFrame API упрощает ETL-подготовку данных и фичуризацию для реальных проектов.
🚀 Убедитесь, как Spark ML решает задачи отказоустойчивости и распределённых вычислений, позволяя вам легко строить промышленные ML-пайплайны.
➡️ Посетите открытый урок 11 июня в 20:00 МСК в преддверие старта курса «Spark Developer» и получите скидку на обучение: https://vk.cc/cMv7fh
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
RoaringBitmap — это одна из лучших битовых карт;
используется в Apache Spark, Netflix Atlas, Apache Pinot, Tablesaw и во многих других компаниях.
RoaringBitmap превосходят обычные сжатые битовые карты, такие как WAH, EWAH или Concise. Изображения, сжатые с помощью RoaringBitmap могут быть до сотни раз легче обычных изображений
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Релиз через два дня. Код готов. Почти...
Остались тесты. Ну, точнее — покрытие. Потому что QA уже дышит в затылок, а ты сидишь и выбираешь: спать или корпеть до утра.
Explyt Test умеет создавать тесты под твой код — сам. Быстро. В IDE. Без плясок.
Хочешь, чтобы релиз прошёл, а не пролетел? Попробуй бесплатно! 👉 explyt.ai
Остались тесты. Ну, точнее — покрытие. Потому что QA уже дышит в затылок, а ты сидишь и выбираешь: спать или корпеть до утра.
Explyt Test умеет создавать тесты под твой код — сам. Быстро. В IDE. Без плясок.
Хочешь, чтобы релиз прошёл, а не пролетел? Попробуй бесплатно! 👉 explyt.ai
⚙️ 7 эффективных стратегий для масштабирования базы данных
🟢 Индексация: Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
🟢 Материализованные представления: Предварительно вычисляйте результаты сложных запросов и сохраняйте их для быстрого доступа.
🟢 Денормализация: Упрощайте сложные соединения для повышения скорости выполнения запросов.
🟢 Вертикальное масштабирование: Увеличивайте ресурсы сервера (процессоры, оперативную память, хранилище) для улучшения производительности.
🟢 Кэширование: Храните часто запрашиваемые данные в быстром хранилище, чтобы снизить нагрузку на базу данных.
🟢 Репликация: Создавайте копии основной базы данных на разных серверах для увеличения объема операций чтения.
🟢 Шардинг: Разделяйте таблицы на более мелкие части и распределяйте их по серверам для улучшения работы с записью и чтением.
💬 Какие еще методы масштабирования используете вы?
✅ Java библиотека #java
💬 Какие еще методы масштабирования используете вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍Тестовое собеседование с Java-разработчиком из Т1 Иннотех уже завтра
4 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Илья Аров, старший разработчик в Т1, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzqxc3AHB
4 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Илья Аров, старший разработчик в Т1, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzqxc3AHB
Piranha — это инструмент для автоматического рефакторинга кода, связанного с устаревшими флагами.
Входными данными для Piranha являются имя флага и ожидаемое поведение;
также необходимо указать список API, связанных с флагами, в файле свойств.
Piranha будет использовать эти данные для автоматического рефакторинга кода в соответствии с ожидаемым поведением.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM