This media is not supported in your browser
VIEW IN TELEGRAM
Учись алгоритмам программирования с этим ресурсом - код, пошаговое выполнение и наглядное представление.
Более 70 алгоритмов на JavaScript, Java и C++ - идеально для практики и понимания логики.
→ http://algorithm-visualizer.org
👉 Java Portal
Более 70 алгоритмов на JavaScript, Java и C++ - идеально для практики и понимания логики.
→ http://algorithm-visualizer.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4
Коллекция диаграмм по софту и программированию от ByteByteGo
✓ Архитектуры и системный дизайн
✓ Объяснение API: REST, SOAP, gRPC, WebSockets
✓ Понимание Git, CI/CD, HTTP и не только
→ https://github.com/ByteByteGoHq/system-design-101
Идеально для подготовки к техническим интервью😳
👉 Java Portal
✓ Архитектуры и системный дизайн
✓ Объяснение API: REST, SOAP, gRPC, WebSockets
✓ Понимание Git, CI/CD, HTTP и не только
→ https://github.com/ByteByteGoHq/system-design-101
Идеально для подготовки к техническим интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
Что такое Fat JAR в Java?
Fat JAR (он же Uber JAR) — это единый исполняемый .jar-файл, который содержит как классы вашего приложения, так и все его зависимости.
Такое приложение полностью самодостаточно — не нужно отдельно подключать внешние библиотеки во время выполнения.
Просто запускается командой:
Зачем использовать Fat JAR?
🔹 Портируемость — удобно распространять и развёртывать
🔹 Простота — не нужно возиться с classpath и отлавливать ClassNotFoundException
🔹 Отлично подходит для микросервисов и Docker — один артефакт, одна команда запуска
Как собрать Fat JAR
👉 С помощью Maven (maven-assembly-plugin)
Добавьте в pom.xml:
Соберите:
Готовый JAR будет лежать в:
👉 С помощью Maven (maven-shade-plugin)
Если нужен контроль над пересборкой пакетов и теневыми зависимостями — используйте Shade:
Сборка аналогично — итоговый файл будет в:
👉 С помощью Gradle
В
Запуск сборки:
Пример: Минимальное Java-приложение
// 5 фото
С учётом вышеописанных конфигураций Maven или Gradle, все зависимости будут включены в .jar — достаточно java -jar.
Некоторые команды не используют fat JAR для крупных приложений, чтобы:
> Ускорить сборку
> Снизить использование диска
> Упростить обновление отдельных зависимостей без пересборки всего артефакта
Fat JAR упаковывает всё необходимое для простого и портируемого деплоя Java-приложений
Собирается через Maven (плагины assembly или shade) или Gradle
Альтернативы: thin JAR, WAR/EAR, Spring Boot plugin, контейнеры
Выбирайте fat JAR, если важны простота и переносимость, особенно в микросервисной архитектуре и для деплоя в облаке.
👉 Java Portal
Fat JAR (он же Uber JAR) — это единый исполняемый .jar-файл, который содержит как классы вашего приложения, так и все его зависимости.
Такое приложение полностью самодостаточно — не нужно отдельно подключать внешние библиотеки во время выполнения.
Просто запускается командой:
java -jar myapp-fat.jar
Зачем использовать Fat JAR?
Как собрать Fat JAR
Добавьте в pom.xml:
<!-- пример конфигурации (на 2 фото) -->
Соберите:
mvn clean package
Готовый JAR будет лежать в:
target/myapp-jar-with-dependencies.jar
Если нужен контроль над пересборкой пакетов и теневыми зависимостями — используйте Shade:
<!-- пример конфигурации на 3 фото -->
Сборка аналогично — итоговый файл будет в:
target/myapp-shaded.jar
В
build.gradle
добавьте:// пример конфигурации на 4 фото
Запуск сборки:
./gradlew fatJar
Пример: Минимальное Java-приложение
// 5 фото
С учётом вышеописанных конфигураций Maven или Gradle, все зависимости будут включены в .jar — достаточно java -jar.
Некоторые команды не используют fat JAR для крупных приложений, чтобы:
> Ускорить сборку
> Снизить использование диска
> Упростить обновление отдельных зависимостей без пересборки всего артефакта
Fat JAR упаковывает всё необходимое для простого и портируемого деплоя Java-приложений
Собирается через Maven (плагины assembly или shade) или Gradle
Альтернативы: thin JAR, WAR/EAR, Spring Boot plugin, контейнеры
Выбирайте fat JAR, если важны простота и переносимость, особенно в микросервисной архитектуре и для деплоя в облаке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤2
Зачем использовать `
- Включение или отключение бинов и конфигураций на основе значений в `application.properties` без изменения кода
- Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику
🔸 Включить бин, если свойство существует:
Используется аннотация
Бин будет создан, если свойство my.prop существует и его значение не "false".
🔸 Включить бин, если свойство равно определённому значению:
Добавляется параметр
Бин будет создан только в том случае, если значение свойства строго равно "yes".
🔸 Включить бин, если свойство отсутствует:
Используется параметр
Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.
🔸 Переключение реализаций в зависимости от значения свойства:
Определяются несколько бинов с разными значениями
Будет создан только тот бин, значение которого соответствует текущему значению свойства.
👉 Java Portal
@ConditionalOnProperty
`?- Включение или отключение бинов и конфигураций на основе значений в `application.properties` без изменения кода
- Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику
Используется аннотация
@ConditionalOnProperty(name="my.prop")
.Бин будет создан, если свойство my.prop существует и его значение не "false".
Добавляется параметр
havingValue="yes"
.Бин будет создан только в том случае, если значение свойства строго равно "yes".
Используется параметр
matchIfMissing=true
.Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.
Определяются несколько бинов с разными значениями
havingValue
.Будет создан только тот бин, значение которого соответствует текущему значению свойства.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках
Бесплатные инструменты, полезные ресурсы, а также советы и задачки. Выбирай нужное направление и учись не напрягаясь:
👩💻 Linux Ninja
🖥 CodHub | Курсы IT
📱 Python | Программирование
😷 Hacking | Кибербезопасность
⚙️ Webdev | Backend & Frontend
🖥 Программирование по мемам
Бесплатные инструменты, полезные ресурсы, а также советы и задачки. Выбирай нужное направление и учись не напрягаясь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1😁1
Spring Boot Actuator это мощный набор инструментов в составе Spring Boot, который помогает мониторить и управлять приложением в продакшене. Он предоставляет доступ к различным endpoint'ам, через которые можно получить информацию о внутреннем состоянии приложения - метрики, окружение, дампы потоков и т.д.
Что даёт Actuator:
- статус, метрики, окружение и прочее
- Поддержка мониторинга и управления через HTTP, JMX или кастомные endpoint'ы
- Повышенная наблюдаемость, особенно в связке с Prometheus, Grafana, Micrometer или Spring Boot Admin
Часто используемые endpoint'ы:
🔸 /actuator/health
Показывает статус работоспособности приложения
Доступ по умолчанию: Public
🔸 /actuator/info
Выводит информацию из
Доступ по умолчанию: 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
Что даёт Actuator:
- статус, метрики, окружение и прочее
- Поддержка мониторинга и управления через HTTP, JMX или кастомные endpoint'ы
- Повышенная наблюдаемость, особенно в связке с Prometheus, Grafana, Micrometer или Spring Boot Admin
Часто используемые endpoint'ы:
Показывает статус работоспособности приложения
Доступ по умолчанию: Public
Выводит информацию из
application.properties
Доступ по умолчанию: Public
Показывает различные метрики производительности
Доступ по умолчанию: Restricted
Показывает переменные окружения
Доступ по умолчанию: Restricted
Показывает все Spring Beans
Доступ по умолчанию: Restricted
Дамп потоков приложения
Доступ по умолчанию: Restricted
Просмотр или изменение уровней логирования на лету
Доступ по умолчанию: Restricted
Скачивание heap dump
Доступ по умолчанию: Restricted
Метрики в формате Prometheus (если подключён micrometer-registry-prometheus)
Доступ по умолчанию: Public
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Лучшие практики для микросервисов
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
1. Отдельное хранилище данных
2. Единый уровень зрелости кода
3. Отдельная сборка для каждого микросервиса
4. Принцип единственной ответственности
5. Развёртывание в контейнерах
6. Обрабатывайте серверы как статeless
7. Domain-Driven Design (DDD)
8. Микрофронтенд
9. Оркестрация микросервисов
Please open Telegram to view this post
VIEW IN TELEGRAM