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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
📊 Оркестрация и хореография: что выбрать?

Когда дело доходит до координации взаимодействий между микросервисами, выбор между оркестрацией и хореографией — один из ключевых вопросов. Оба подхода имеют свои плюсы и минусы, а также подходят для разных архитектурных сценариев.

🔹 Оркестрация — это централизованный подход, при котором один сервис (оркестратор) управляет всеми взаимодействиями между сервисами. Он выступает дирижером, направляя выполнение процессов и следя за их последовательностью.

▪️ Плюсы:
- Четкий контроль за процессом выполнения задач.
- Упрощенная отладка и мониторинг.

▪️ Минусы:
- Слабая гибкость при изменении требований.
- Если оркестратор падает, система теряет управление процессами.

🔹 Хореография — децентрализованный подход, при котором каждый сервис реагирует на события и инициирует свои действия на основе этих событий. Здесь нет центрального контроллера; сервисы взаимодействуют по принципу «реакции».

▪️ Плюсы:
- Высокая гибкость и легкость в добавлении новых сервисов.
- Отсутствие единой точки отказа.

▪️ Минусы:
- Сложность в отслеживании последовательности выполнения.
- Потенциальные проблемы с согласованностью данных.

🎯 Когда что выбрать?

- Оркестрация хорошо подходит для бизнес-процессов с четкой последовательностью действий, когда требуется строгий контроль выполнения.
- Хореография лучше подходит для распределенных систем, где важно масштабирование и гибкость, а также в сценариях с высокой скоростью событий и реакций.
Please open Telegram to view this post
VIEW IN TELEGRAM
#дайджест #javadevjob

Вакансии Java разработчиков уровня Junior

▪️Java Developer
Новосибирск. Динамика — разработчик ПО для финансового сектора
Подробнее

▪️Инженер-программист
Удаленка. ИНИТИ — разработчик ПО
Подробнее

Вакансии Java разработчиков уровня Middle

▪️Backend-разработчик
Москва. Grokhotov Studio — ecommerce и сложная разработка
Подробнее

▪️Java-разработчик
Удаленка. УМНЫЙ ПОИСК — разработка ПО
Подробнее

Вакансии Java разработчиков уровня Senior

▪️Java разработчик
Удаленка. СИГМА — ИТ-решения для энергетики и ЖКХ
Подробнее

▪️Java-разработчик
Москва. Data World — ПО для ФинТеха
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
Неожиданная потеря для Java-сообщества

JetBrains опубликовали прощание с человеком, которого многие из нас знали, но не до конца понимали его вклад. Stiver, известный как создатель Флибусты, также был автором одного из важных инструментов, ставшего основой для IntelliJ IDEA — декомпилятора Fernflower.

Stiver не был сотрудником JetBrains, но его вклад в экосистему Java трудно переоценить. В память о нём JetBrains планируют продолжить развитие Fernflower как open-source проекта, и создать мемориал в его память. Более того, они рассматривают создание грантов и стипендий для тех, кто трудится над подобными проектами.

Уважение и благодарность JetBrains за то, что ценят вклад тех, кто остался за кулисами нашего кода.
🔀 Асинхронность — не баг, а фича: 4 паттерна, которые спасут ваш распределённый сервис

Представь, что ты отправляешь сообщение в мессенджере, а оно доходит с задержкой в минуту. Бесит? А теперь представь, что у тебя сервис с миллионами пользователей, и каждое их действие должно мгновенно отражаться везде. Звучит как кошмар? Спокойно, есть четыре проверенных способа решить эту головоломку, и они реально работают.

👉 Читать статью
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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

Prototype — это порождающий паттерн, который позволяет создавать новые объекты путем клонирования уже существующих. Вместо создания объектов с нуля, можно копировать существующие, что сокращает время и ресурсы на создание объектов с похожими параметрами.

Использование:


🔹 Когда необходимо создать объект, похожий на уже существующий, без повторного создания его с нуля.
🔹 В случаях, когда создание объекта «вручную» слишком затратно (например, сложная инициализация).
🔹 Если объект имеет много различных вариантов состояния, и требуется быстро получать новый экземпляр с определенным набором свойств.

Преимущества:

1️⃣ Позволяет создавать новые объекты путем клонирования, что может быть гораздо быстрее, чем создание с нуля.
2️⃣ Можно легко менять клонированные объекты, не затрагивая исходный.
3️⃣ Клонирование полезно для объектов с множеством состояний или структур (например, сложные графические объекты).

Недостатки:

1️⃣ Если объект имеет сложные вложенные структуры, потребуется реализация глубокого копирования, что может быть сложно и затратно.
2️⃣ Для копирования объектов может потребоваться много памяти, особенно если объекты большие.
3️⃣ Клон напрямую зависит от структуры исходного объекта, что может затруднить масштабирование или изменение логики.

📌 Паттерн полезен, когда нужно быстро и гибко создавать объекты, особенно если они имеют множество состояний. Например, при работе с графическими редакторами или в играх, где нужно дублировать сложные сущности с минимальными изменениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
📎 Шпаргалка по OAuth

OAuth в Java — тема, с которой рано или поздно сталкиваются почти все разработчики. Разобраться в тонкостях этого процесса поможет отличная шпаргалка, которую точно стоит сохранить. Если нужно настроить безопасную авторизацию или просто понять, что такое OAuth, смело заглядывай в неё и сохраняй на будущее.

В ней наглядно показано, как работают разные типы авторизации и какие шаги нужны для получения токенов доступа. От простых определений до ключевых этапов Authorization Code Grant Flow. 🔐
Please open Telegram to view this post
VIEW IN TELEGRAM
🎅 Какой подарок вы бы хотели на НГ? Пишите в комментариях👇

Админ на НГ не отказался бы от вашей активности. Реакции, комментарии, конструктивные предложения будем ждать под ёлкой 🎄
ℹ️ Модели жизненного цикла разработки ПО

Жизненный цикл разработки ПО — это структура, описывающая процесс создания программного обеспечения, позволяя планировать и управлять разработкой систематично. Вот основные и часто используемые модели:

🔵 Водопадная модель

- Линейный и последовательный подход, где каждый этап строго следует за предыдущим.
- Проект разбивается на отдельные фазы: Сбор требований, Дизайн, Реализация, Верификация, Поддержка.
- Подходит для проектов с четкими, неизменяемыми требованиями.

🔵 Agile-модель

- Разработка ведется небольшими, управляемыми итерациями, называемыми спринтами, что позволяет быстро реагировать на изменения.
- Включает популярные методологии: Scrum (спринты с командными встречами), Kanban (визуализация задач) и Extreme Programming (XP, акцент на частых релизах).
- Применяется для проектов с неопределенными или часто меняющимися требованиями, благодаря гибкости и акценту на обратную связь.

🔵 V-модель (Модель верификации и валидации)

- Расширение водопадной модели, где для каждой фазы разработки предусмотрена фаза тестирования, формирующая визуальную «V»-структуру.
- Подходит для проектов, где критична строгая проверка и верификация на каждом этапе.

🔵 Итеративная модель

- Продукт создается поэтапно, каждая новая итерация улучшает предыдущие, пока не будет достигнут окончательный результат.
- Хорошо подходит для крупных проектов, где сложно сразу определить все требования, но есть понимание общего направления.

🔵 Спиральная модель

- Комбинирует итеративный подход с этапами водопадной модели, что позволяет постепенно создавать продукт с учетом анализа рисков.
- Каждый цикл включает фазы: планирование, анализ рисков, разработка, оценка.
- Идеальна для сложных и масштабных проектов, требующих многократного анализа и управления рисками.

🔵 Модель "Большой взрыв"

- Минимальное планирование, основное внимание уделяется коду, и только в конце идет интеграция и тестирование.
- Применяется для небольших проектов или для экспериментов, когда структура не важна и требуется быстрый результат.

🔵 RAD-модель (Быстрая разработка приложений)

- Сосредоточена на быстром прототипировании и регулярной обратной связи от пользователя.
- Цель — ускорить разработку и адаптацию, что полезно для проектов, где важна скорость релизов.

🔵 Инкрементальная модель

- Продукт разрабатывается и тестируется по частям (инкрементам), каждый из которых добавляет новую функциональность.
- Удобна для проектов с определенными частями функционала, которые можно разрабатывать независимо друг от друга.
- Каждая модель имеет свои плюсы и минусы. Выбор подходящей модели зависит от сложности проекта, стабильности требований, нужной гибкости и степени важности тестирования.

💬 Какая модель используется на вашем текущем проекте?
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Задачи с собеседований: Поиск первого уникального символа в строке (jun+)

— Как найти первый уникальный символ в строке?

💡 Ключевые моменты:

- Используйте доп. структуру данных для хранения количества вхождений каждого символа
- Предложите в комментарии другие варианты решения.

Реализация через Map на картинке 👆🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Полнотекстовый поиск с помощью Elasticsearch

Пишите приложение, которое мгновенно обрабатывает огромные объемы данных, обеспечивая молниеносный и точный поиск? Интеграция Elasticsearch с Spring Boot и PostgreSQL открывает новые горизонты, позволяя создавать высокопроизводительные системы с продвинутыми возможностями поиска. Погрузитесь в практическое руководство, которое шаг за шагом проведет вас через процесс настройки и оптимизации этой мощной связки технологий. Узнайте, как эффективно индексировать данные, настраивать весовые коэффициенты и реализовывать сложные синонимические связи для повышения релевантности результатов поиска.

Подробнее читайте в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Самые полезные каналы по Java в одной папке

В ней:
канал для подготовки к собеседованиям
интересные задачи
основной канал
книги по Java
лучшие вакансии из сферы
и наш чат, в котором можно общаться и задавать вопросы

Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳 Шпаргалка по основным командам Docker

От запуска контейнеров до их управления — все ключевые команды в одном месте. Сохраняйте, чтобы не потерять.
🚀🐘 Оптимизация хранимых процедур в PostgreSQL: 4 трюка для взрывного ускорения

Кто из нас не сталкивался с медленными хранимыми процедурами в PostgreSQL? Наверняка таких мало. Сегодня поговорим о том, как реально ускорить их работу. Никакой сухой теории — только проверенные на практике методы. Разберем, как анализировать запросы, правильно использовать индексы и применять другие хитрости, которые действительно работают.

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