ch
Feedback
Java Portal | Программирование

Java Portal | Программирование

前往频道在 Telegram

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

显示更多

📈 Telegram 频道 Java Portal | Программирование 的分析概览

频道 Java Portal | Программирование (@java_iibrary) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 115 名订阅者,在 技术与应用 类别中位列第 10 397,并在 俄罗斯 地区排名第 54 492

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 12 115 名订阅者。

根据 08 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -138,过去 24 小时变化为 -5,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 11.21%。内容发布后 24 小时内通常能获得 6.34% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 360 次浏览,首日通常累积 769 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 4
  • 主题关注点: 内容集中在 boot, string, void, архитектура, resttemplate 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

凭借高频更新(最新数据采集于 09 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

12 115
订阅者
-524 小时
-307
-13830
帖子存档
🔸Принципы проектирования
Слабая связность — минимизация зависимостей между компонентами Высокая связность — группировка функционально связанных элементов Абстракция — скрытие деталей реализации Единая ответственность — каждый компонент делает одну вещь хорошо Разделение ответственности — разделение системы на отдельные модули Бездействие (Statelessness) — по возможности избегать хранения сессий Идемпотентность — операции можно безопасно повторять Событийная согласованность — временное несоответствие для доступности и производительности Быстрое обнаружение ошибок (Fail-Fast) — быстрое выявление и сообщение об ошибках Circuit Breaker — изоляция сбойных компонентов Механизмы повторных попыток — автоматический повтор неудачных операций Асинхронность — дизайн для неблокирующей коммуникации Таймауты/Дедлайны — установка лимитов для предотвращения бесконечных ожиданий
🔸Управление данными
Распределённые базы данных - NoSQL — MongoDB, Cassandra, DynamoDB (гибкая схема, масштабируемые) - NewSQL — CockroachDB, YugabyteDB (масштабируемые с возможностями SQL) Распределённые файловые системы - HDFS — для больших данных (Hadoop) - Ceph — унифицированная распределённая файловая система Кеширование — Redis, Memcached (в памяти для скорости) ACID — атомарность, согласованность, изоляция, долговечность (гарантии реляционных БД) BASE — в основном доступная, с мягкой согласованностью (характеристики NoSQL) Шардирование данных — распределение данных по нодам (шардинг, хеширование, диапазоны) Стратегии репликации — копирование данных для отказоустойчивости
🔸Ошибки распределённых вычислений
Сеть надёжна | Задержка равна нулю | Пропускная способность бесконечна | Сеть защищена | Топология не меняется | Есть один администратор | Стоимость передачи равна нулю | Сеть однородна

Обзор версий Java Java — JDK 25 выйдет уже в сентябре этого года Схема версионирования Java, Java 8 и старше - Система версио
Обзор версий Java
Java — JDK 25 выйдет уже в сентябре этого года
Схема версионирования Java, Java 8 и старше - Система версионирования Java долгое время была нетипичной по сравнению с большинством других языков и платформ. - Раньше номера версий выглядели как "1.x", например: 1.5, 1.6. Это отражало раннюю историю развития языка. - Официальная схема именования использовала формат "Java SE x.y", где x — мажорная версия, а y — минорная. Примеры: - Java SE 5.0 → Java 1.5 - Java SE 6.0 → Java 1.6 - Java SE 8.0 → Java 1.8 Эта схема создавала путаницу, потому что казалось, будто Java всё ещё находится на версии 1.x, хотя фактически язык уже прошёл через множество мажорных релизов. Схема версионирования Java, начиная с Java 9 - Начиная с Java 9, префикс 1. был официально отброшен. - Теперь версии называются просто по мажорному номеру: Java 9 — это просто 9, Java 10 — это 10 и т. д. - Это изменение внесли, чтобы: - устранить путаницу, - привести систему к стандартной практике версионирования в индустрии. - Кроме того, это отражает серьёзные архитектурные изменения, которые начались с Java 9 и продолжились в последующих версиях. Эволюция версий Java:
Java 1.0 — 23.01.1996 🔸Первый релиз: апплеты, базовые библиотеки, core API Java 1.1 — 19.02.1997 🔸Внутренние классы, JDBC, AWT event-модель Java 1.2 — 08.12.1998 🔸Swing GUI, коллекции, JIT-компилятор Java 1.3 — 08.05.2000 🔸HotSpot JVM, RMI по IIOP (CORBA) Java 1.4 — 06.02.2002 🔸Assertions, Logging API, регулярки, улучшенная модель памяти Java 1.5 — 30.09.2004 🔸Дженерики, аннотации, enum, цикл for-each Java 1.6 — 11.12.2006 🔸Scripting API, аннотации, улучшения JVM и рантайма Java 1.7 — 28.07.2011 🔸Diamond-оператор, try-with-resources, строки в switch Java 1.8 (LTS) — 18.03.2014 🔸Лямбды, Stream API, default-методы, новый Date/Time API Java 9 — 21.09.2017 🔸Модульная система (Project Jigsaw), HTTP Client, JShell Java 10 — 20.03.2018 🔸var, GC интерфейс, Class-Data Sharing Java 11 (LTS) — 25.09.2018 🔸HTTP Client, dynamic class constants, Nest-Based Access Control Java 12 — 19.03.2019 🔸switch (preview), Teeing Collectors, компактное форматирование чисел Java 13 — 17.09.2019 🔸Text blocks, улучшения switch, ZGC Java 14 — 17.03.2020 🔸Pattern matching (instanceof), Records (preview), JFR streaming Java 15 — 15.09.2020 🔸Sealed-классы, скрытые классы, удалён Nashorn Java 16 — 16.03.2021 🔸Records, Pattern Matching, Vector API, Foreign Memory API Java 17 (LTS) — 14.09.2021 🔸Pattern Matching for switch, Sealed-классы, Foreign Function API Java 18 — 22.03.2022 🔸UTF-8 по умолчанию, Web Server, Code snippets в API Java 19 — 20.09.2022 🔸Record Patterns, Virtual Threads, Structured Concurrency Java 20 — 21.03.2023 🔸Scoped Values, Virtual Threads (prod) Java 21 (LTS) — 19.09.2023 🔸Sequenced Collections, Record Patterns, Virtual Threads, KEM API Java 22 — 19.03.2024 🔸Region Pinning, Foreign Function API, Unnamed Variables & Patterns Java 23 — 17.09.2024 🔸Pattern Matching, Scoped Values, Structured Concurrency Java 24 — 18.03.2025 🔸Stream Gatherers, Compact Object Headers
👉 Java Portal

Вопросы уровня Easy/Medium на собеседовании по Java 1. Что такое ключевое слово static и где оно используется? Ответ: Статические члены принадлежат классу, а не экземпляру. Можно обращаться к ним без создания объекта. В памяти существует только одна копия. 2. В чём разница между abstract class и interface? Ответ: - Абстрактный класс: может содержать реализации методов, конструкторы, поддерживает одиночное наследование - Интерфейс: начиная с Java 8, может иметь методы по умолчанию, поддерживает множественное наследование, содержит только публичные методы 3. Что такое wrapper-классы и зачем они нужны? Ответ: Это объектные обёртки над примитивами (Integer, Boolean и т. д.). Используются в коллекциях, обобщениях и там, где требуются объекты вместо примитивов. 4. Что делает оператор instanceof? Ответ: Проверяет, является ли объект экземпляром определённого класса или интерфейса. Возвращает boolean. 5. Что такое инкапсуляция и как её реализовать? Ответ: Сокрытие внутреннего состояния и предоставление доступа через методы. Реализуется с помощью приватных полей и публичных геттеров/сеттеров. 6. Что такое абстракция и как она реализуется? Ответ: Сокрытие деталей реализации и упрощение интерфейса. Реализуется через абстрактные классы и интерфейсы. 7. Можно ли переопределить private-метод? Ответ: Нет. Приватные методы недоступны в наследниках, поэтому их нельзя переопределить. 8. Может ли класс быть одновременно abstract и final? Ответ: Нет. abstract означает, что класс предназначен для наследования, а final — что класс нельзя наследовать. 9. Что такое marker-интерфейсы? Ответ: Интерфейсы без методов, используемые как метки. Примеры: Serializable, Cloneable. 10. Что такое diamond problem (проблема ромбовидного наследования)? Ответ: Проблема возникает при множественном наследовании, если класс наследует двух родителей, имеющих общего предка — возникает неоднозначность, какой метод использовать. 11. В чём разница между Collection и Collections? Ответ: - Collection — корневой интерфейс для всех коллекций - Collectionsутилитарный класс с набором статических методов для работы с коллекциями 12. Что такое fail-fast и fail-safe итераторы? Ответ: - Fail-fast: выбрасывает ConcurrentModificationException, если коллекция была изменена во время итерации - Fail-safe: работает с копией коллекции, поэтому не выбрасывает исключений 👉 Java Portal

Repost from 1337
🎉 Большой розыгрыш от крупнейшего IT-медиа 1337, легендарного паблика Рифмы и Панчи, канала Техно. Победителей будет много,
🎉 Большой розыгрыш от крупнейшего IT-медиа 1337, легендарного паблика Рифмы и Панчи, канала Техно. Победителей будет много, а для участия нужны лишь пара кликов: 1. Подписаться на Рифмы и Панчи, 1337 и на Техно. 2. Нажать «Участвовать» под этим постом Что по призам:
1 место - Iphone 16 Pro 2 место - PS5 Slim 3 место - Nintendo Switch 2 4-10 места - 10 000 рублей на карту
Победителей определим 21 июля в 18:00 МСК. Всем удачи!

Совет дня: Проверка (assert) одиночного объекта против List в ответах при использовании MockMvcTester в Spring. - Первый блок
Совет дня: Проверка (assert) одиночного объекта против List<Object> в ответах при использовании MockMvcTester в Spring. - Первый блок проверяет, что по /api/posts/1 возвращается Post, у которого title равен "Post title here" - Второй блок проверяет, что по /api/posts приходит список из 4 элементов типа Post 👉 Java Portal

Кто не в курсе: Spring Debugger — это инструмент в IntelliJ IDEA, который помогает разбираться в контексте Spring Boot-приложения. Прямо в проекте можно: 🔸посмотреть список загруженных и неактивных бинов, 🔸проверить значения конфигурационных свойств, 🔸увидеть детали подключения к базе. Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось. 👉 Java Portal

📢 Выходцы из Jetbrains запилили годноту для Java/Kotlin-разработчиков. Стартап называется ❇️ Explyt. Они только что выкатили
📢 Выходцы из Jetbrains запилили годноту для Java/Kotlin-разработчиков.   Стартап называется ❇️ Explyt. Они только что выкатили мощный релиз.  Вкратце: это плагин в IDE, который сам генерирует тесты с интересными возможностями:  ✔️ Vibe debugging. За счет интеграции с IDE, плагин собирает данные по исполнению программы и генерирует тест по этим данным, что экономит время на тестировании и отлавливает ошибки на 80-90% (!)  ✔️ Агентский режим. Ассистент, который живёт в проекте и следит за покрытием, сам находит незакрытые места и предлагает тесты. Работает в фоне, как часть команды.  👉 Кому интересно - вот ссылка на релиз и установку плагина

Мини руководство по паттернам проектирования 🔸Singleton Реализация: статический экземпляр + приватный конструктор Пример: ло
Мини руководство по паттернам проектирования 🔸Singleton Реализация: статический экземпляр + приватный конструктор Пример: логгер, менеджер конфигурации, пул подключений к БД 🔸Factory Реализация: метод create(String type) возвращает нужный подкласс Пример: парсеры файлов (.json, .xml), отправка уведомлений 🔸Abstract Factory Реализация: интерфейс для создания связанных объектов без указания их классов Пример: UI-темы (тёмная/светлая), фабрики виджетов операционной системы 🔸Builder Реализация: цепочка вызовов .set() + .build() Пример: создание сложных объектов, например HTTP-запросов 🔸Prototype Реализация: клонирование существующего объекта через .clone() Пример: игровые персонажи, шаблоны документов, клоны интерфейсов 🔸Strategy Реализация: интерфейс + метод setStrategy() Пример: алгоритмы сортировки, платёжные процессоры 🔸Observer Реализация: список подписчиков + цикл notifyAll() Пример: система событий, UI-слушатели, подписки на YouTube 🔸Decorator Реализация: обёртка над объектом + добавление поведения на лету Пример: логгирование, сжатие, кэширование 🔸Adapter Реализация: класс-обёртка, преобразующий интерфейс Пример: интеграция с легаси API, InputStreamReader 🔸Facade Реализация: один класс делегирует вызовы нескольким подсистемам Пример: java.util.logging, фасад медиаплеера 🔸Command Реализация: инкапсуляция действия в объект с методом execute() Пример: Undo/Redo, обработка нажатий кнопок 🔸Chain of Responsibility Реализация: каждый обработчик решает — обработать или передать дальше Пример: эскалация тикетов в техподдержке, всплытие событий (event bubbling) 🔸Template Method Реализация: базовый класс задаёт общий алгоритм, подклассы переопределяют шаги Пример: обработка онлайн-заказа — оплата → подтверждение → доставка 🔸State Реализация: поведение определяется текущим объектом состояния Пример: состояния медиаплеера — воспроизведение/пауза/стоп 🔸Mediator Реализация: центральный объект управляет взаимодействием компонентов Пример: менеджер чата, валидация форм в UI 🔸Memento Реализация: сохранение и восстановление внутреннего состояния объекта Пример: история изменений, снапшоты состояния в текстовом редакторе 🔸Visitor Реализация: внешний класс выполняет операции над элементами структуры Пример: обход файловой системы, обработка AST 🔸Proxy Реализация: обёртка над реальным объектом для контроля доступа или производительности Пример: ленивая загрузка, контроль доступа, удалённые прокси 🔸Composite Реализация: древовидная структура, где элементы и группы обрабатываются одинаково Пример: иерархия файлов и папок, UI-компоненты 🔸Flyweight Реализация: повторное использование объектов с общим внутренним состоянием Пример: глифы шрифта, иконки интерфейса, текстуры в играх 🔸Bridge Реализация: разделение абстракции и реализации Пример: представление UI → движок отрисовки (SVG, Canvas и т.д.) 👉 Java Portal

Spring Boot + Swagger Документирование API без лишней головной боли. Полное руководство читай здесь: тык 👉 Java Portal
Spring Boot + Swagger Документирование API без лишней головной боли. Полное руководство читай здесь: тык 👉 Java Portal

Модернизация алгоритмов: От наивного → оптимального 🔸Two Sum (пара с заданной суммой) Наивно: O(n²) — двойной цикл Оптимальн
Модернизация алгоритмов: От наивного → оптимального 🔸Two Sum (пара с заданной суммой) Наивно: O(n²) — двойной цикл Оптимально: O(n) с использованием HashMap 🔸Find Duplicate Number (найти дубликат, 1 ≤ num ≤ n) Наивно: HashSet или дополнительная память Оптимально: Обнаружение цикла Флойда (O(1) по памяти) 🔸Kth Largest Element (k-й по величине элемент) Наивно: Сортировка массива (O(n log n)) Оптимально: QuickSelect (в среднем O(n)) или куча (Heap) 🔸Longest Palindromic Substring (длиннейшая палиндромная подстрока) Наивно: O(n³) — перебор всех подстрок Оптимально: Расширение из центра (Expand Around Center, O(n²)), или алгоритм Манакера (O(n)) 🔸Max Subarray Sum (максимальная сумма подмассива) Наивно: Генерация всех подмассивов Оптимально: Алгоритм Кадане (Kadane’s Algorithm, O(n)) 🔸All Pairs Shortest Paths (кратчайшие пути между всеми вершинами) Наивно: Запускать Dijkstra для каждой вершины Оптимально: Алгоритм Флойда–Уоршелла (Floyd-Warshall, O(V³)), эффективен для плотных графов 🔸Median in Data Stream (медиана в потоке данных) Наивно: Сортировать после каждой вставки Оптимально: Две кучи (Min Heap и Max Heap), вставка за O(log n) 🔸Valid Anagram (анаграмма?) Наивно: Сортировка строк Оптимально: Подсчёт частот символов в массиве (O(n)) 🔸Permutations (перестановки) Наивно: Сгенерировать и сохранить все перестановки Оптимально: Рекурсивный Backtracking с отсечениями 🔸Subset Sum Exists (проверка, существует ли сумма из подмножества) Наивно: Перебор всех подмножеств (2ⁿ) Оптимально: Динамическое программирование — снизу вверх или с мемоизацией 🔸Product of Array Except Self (произведение всех кроме текущего) Наивно: Умножать все кроме текущего, O(n²) Оптимально: Префикс + суффикс произведения (O(n)) 🔸Shortest Unsorted Subarray (самый короткий несортированный подмассив) Наивно: Сортировка и сравнение Оптимально: Два указателя для границ (O(n)) 🔸Min Window Substring (минимальная подстрока с нужными символами) Наивно: Перебор всех подстрок Оптимально: Sliding Window + HashMap, O(n) 🔸Search in Rotated Array (поиск в повернутом массиве) Наивно: Линейный поиск Оптимально: Модифицированный бинарный поиск 🔸Count Inversions (подсчёт инверсий) Наивно: Вложенные циклы, O(n²) Оптимально: Модифицированный Merge Sort, O(n log n) 🔸Check if Tree is Balanced (проверка сбалансированности дерева) Наивно: Пересчитывать высоту на каждом шаге Оптимально: Один проход — возвращаем высоту и статус баланса 🔸Merge k Sorted Lists (слияние k отсортированных списков) Наивно: Объединить всё и отсортировать Оптимально: Слияние k списков через Min Heap, O(N log k) 🔸Longest Consecutive Sequence (длиннейшая последовательность чисел) Наивно: Сортировка и проход Оптимально: HashSet + сканирование, O(n) 🔸Word Ladder (преобразование слов) Наивно: BFS от каждого слова Оптимально: Предобработка + двусторонний BFS 🔸Number of Islands (количество островов) Наивно: DFS без отметок Оптимально: DFS/BFS/Union-Find с отслеживанием посещённых клеток 👉 Java Portal

Запрос Hibernate WITH RECURSIVE ⏩Читать подробнее 👉 Java Portal | #cтатья
Запрос Hibernate WITH RECURSIVE ⏩Читать подробнее 👉 Java Portal | #cтатья

Algorithmic Thinking Patterns 🔸Паттерн: Two Pointers Суть идеи: Ввести два индекса и двигать их по массиву Когда использовать: Отсортированные массивы, удаление дубликатов, реверс Типовые задачи: Reverse array in-place, 3Sum, Remove Duplicates 🔸Паттерн: Sliding Window Суть идеи: Оптимизация задач на подмассивы путём расширения/сжатия окна Когда использовать: Строки, макс/мин в окне, шаблоны фиксированной длины Типовые задачи: Longest substring w/o repeats, Max sum of k-size subarray 🔸Паттерн: Binary Search on Answer Суть идеи: Вместо поиска элемента ищем min/max значение, удовлетворяющее условию Когда использовать: Монотонное пространство поиска Типовые задачи: Min eating speed, Aggressive cows, Capacity to ship packages 🔸Паттерн: Prefix Sum / Difference Array Суть идеи: Предобработка для ответов на запросы за O(1) Когда использовать: Сумма/частота на интервалах, перекрывающиеся диапазоны Типовые задачи: Subarray sum = K, Difference array for range updates 🔸Паттерн: Greedy Суть идеи: Выбираем на каждом шаге локально лучший вариант, надеясь на глобальный оптимум Когда использовать: Когда выбор можно отсортировать или сравнить Типовые задачи: Activity selection, Gas Station, Jump Game 🔸Паттерн: Backtracking Суть идеи: Перебираем все варианты и откатываемся с неверных путей Когда использовать: Комбинации, перестановки, ограничения Типовые задачи: N-Queens, Sudoku Solver, Subset Sum 🔸Паттерн: Bitmasking Суть идеи: Используем биты для представления подмножеств или флагов Когда использовать: Маленькие N (N ≤ 20), переключаем состояния Типовые задачи: Count set bits, Subset sum, Traveling Salesman 🔸Паттерн: Union-Find (DSU) Суть идеи: Эффективно объединяем и находим компоненты Когда использовать: Связность, обнаружение циклов Типовые задачи: Number of Provinces, Kruskal's MST, Friend Circles 🔸Паттерн: Monotonic Stack / Queue Суть идеи: Поддерживаем монотонно возрастающую или убывающую структуру Когда использовать: Следующий больше/меньше, максимум по диапазону Типовые задачи: Daily Temperatures, Largest rectangle in histogram 🔸Паттерн: Topological Sort Суть идеи: Линейный порядок задач по зависимостям Когда использовать: Ацикличные графы (DAG), планирование Типовые задачи: Course Schedule, Build Order, Alien Dictionary 🔸Паттерн: Dynamic Programming (Tabulation) Суть идеи: Итеративное решение снизу вверх с мемоизацией Когда использовать: Пересекающиеся подзадачи Типовые задачи: 0/1 Knapsack, Edit Distance, House Robber 🔸Паттерн: Divide & Conquer Суть идеи: Рекурсивное деление входных данных Когда использовать: Сортировка, сложные рекурсии Типовые задачи: Merge Sort, Count Inversions, Median of Two Sorted Arrays 🔸Паттерн: DFS with Memoization Суть идеи: Сохраняем уже посчитанные значения, чтобы не вычислять повторно Когда использовать: DAG, рекурсивное ДП Типовые задачи: Word Break, Unique Paths III, Longest Increasing Path 🔸Паттерн: Meet in the Middle Суть идеи: Делим массив пополам, решаем обе части и объединяем Когда использовать: N ≤ 40, полный перебор слишком дорог Типовые задачи: Partition to Equal Sum, K-Sum Variants 🔸Паттерн: Trie-Based Search Суть идеи: Деревья префиксов Когда использовать: Поиск слов, автодополнение Типовые задачи: Implement Trie, Replace Words, Word Squares 🔸Паттерн: Segment Tree / BIT Суть идеи: Эффективные запросы и обновления на диапазонах Когда использовать: Большие массивы, частые модификации Типовые задачи: Range sum/min/max, Inversions, Lazy Propagation 🔸Паттерн: Floyd’s Cycle Detection Суть идеи: Обнаружение цикла с быстрым и медленным указателями Когда использовать: Связные списки, конечные автоматы Типовые задачи: Linked List Cycle, Happy Number 👉 Java Portal

Лучший способ использовать аннотацию Spring Transactional ⏩Читать подробнее 👉 Java Portal | #cтатья
Лучший способ использовать аннотацию Spring Transactional ⏩Читать подробнее 👉 Java Portal | #cтатья

👩‍💻 Ищем Java разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Java разрабо
👩‍💻 Ищем Java разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Java разработчиков с прямыми контактами в Telegram на канале @it_match_java Подпишись чтобы не упустить свой шанс получить лучший оффер! ➡️ Посмотреть вакансии

Проект на Spring Boot + Spring AI + OpenAI. Он принимает текст или файл с заметками встречи и автоматически генерирует JSON-тикеты с классификацией (баг, фича и т.д.). Теперь в open source: чистый код и готовность к импорту в JIRA. GitHub: https://github.com/ayushstwt/smart-ticket-ai.git 👉 Java Portal

Лучшие практики для микросервисов 1. Отдельное хранилище данных 🔸Каждый микросервис должен использовать свою собственную баз
Лучшие практики для микросервисов 1. Отдельное хранилище данных 🔸Каждый микросервис должен использовать свою собственную базу данных, чтобы обеспечить изоляцию данных и слабую связанность. 2. Единый уровень зрелости кода 🔸Старайтесь поддерживать код всех сервисов примерно на одинаковом уровне зрелости (тестируемость, покрытие, качество). 3. Отдельная сборка для каждого микросервиса 🔸У каждого сервиса должна быть своя сборочная цепочка (CI/CD pipeline), чтобы обеспечить независимость деплоя. 4. Принцип единственной ответственности 🔸Один сервис — одна бизнес-задача. Не смешивайте домены и обязанности в рамках одного микросервиса. 5. Развёртывание в контейнерах 🔸Используйте контейнеры (например, Docker) для упаковки и запуска каждого микросервиса независимо. 6. Обрабатывайте серверы как статeless 🔸Сервисы не должны хранить состояние между запросами. Состояние — либо в БД, либо во внешнем хранилище. 7. Domain-Driven Design (DDD) 🔸Стройте архитектуру на основе бизнес-домена: делите систему на логически обоснованные сервисы, а не технические модули. 8. Микрофронтенд 🔸Разделяйте frontend-приложения по тому же принципу, что и backend: независимые фронты взаимодействуют через API Gateway. 9. Оркестрация микросервисов 🔸Используйте системы оркестрации (например, Kubernetes), чтобы управлять масштабированием, деплоем и связью между сервисами. 👉 Java Portal

Spring Boot Actuator это мощный набор инструментов в составе Spring Boot, который помогает мониторить и управлять приложением
Spring Boot Actuator это мощный набор инструментов в составе Spring Boot, который помогает мониторить и управлять приложением в продакшене. Он предоставляет доступ к различным endpoint'ам, через которые можно получить информацию о внутреннем состоянии приложения - метрики, окружение, дампы потоков и т.д. Что даёт Actuator: - статус, метрики, окружение и прочее - Поддержка мониторинга и управления через HTTP, JMX или кастомные endpoint'ы - Повышенная наблюдаемость, особенно в связке с Prometheus, Grafana, Micrometer или Spring Boot Admin Часто используемые endpoint'ы: 🔸/actuator/health Показывает статус работоспособности приложения Доступ по умолчанию: Public 🔸/actuator/info Выводит информацию из application.properties Доступ по умолчанию: Public 🔸/actuator/metrics Показывает различные метрики производительности Доступ по умолчанию: Restricted 🔸/actuator/env Показывает переменные окружения Доступ по умолчанию: Restricted 🔸/actuator/beans Показывает все Spring Beans Доступ по умолчанию: Restricted 🔸/actuator/threaddump Дамп потоков приложения Доступ по умолчанию: Restricted 🔸/actuator/loggers Просмотр или изменение уровней логирования на лету Доступ по умолчанию: Restricted 🔸/actuator/heapdump Скачивание heap dump Доступ по умолчанию: Restricted 🔸/actuator/prometheus Метрики в формате Prometheus (если подключён micrometer-registry-prometheus) Доступ по умолчанию: Public 👉 Java Portal

Лучшие практики работы с транзакциями Spring ⏩Читать подробнее 👉 Java Portal | #cтатья
Лучшие практики работы с транзакциями Spring ⏩Читать подробнее 👉 Java Portal | #cтатья

Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках Бесплатные инструменты, полезны
+4
Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках Бесплатные инструменты, полезные ресурсы, а также советы и задачки. Выбирай нужное направление и учись не напрягаясь: 👩‍💻 Linux Ninja 🖥 CodHub | Курсы IT 📱 Python | Программирование 😷 Hacking | Кибербезопасность ⚙️ Webdev | Backend & Frontend 🖥 Программирование по мемам