Java Portal | Программирование
12K subscribers
941 photos
69 videos
32 files
750 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
GIT Workflow

Хотите разобраться, как работает Git? Тогда держите наглядный гайд!

🍩 Initial State – начальное состояние проекта
🍩 git clone – клонируем удаленный репозиторий
🍩 Создание нового файла – добавляем что-то новое в проект
🍩 git add . – отправляем изменения в staging area
🍩 git commit – фиксируем изменения локально
🍩 git push – отправляем изменения на удаленный сервер

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥1
Что такое CompletableFuture в Java?

Это мощная функция, представленная в Java 8 (в пакете java.util.concurrent), которая представляет собой будущий результат асинхронного вычисления.

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

задачи выполняются независимо, не блокируя основной поток.

поддерживает метод chaining через .thenApply(), .thenAccept() и другие.

объединяет несколько CompletableFuture с помощью .thenCompose(), .thenCombine().

встроенные механизмы обработки ошибок через .exceptionally() и .handle().

поддерживает выполнение нескольких задач параллельно с .allOf() и .anyOf().

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Большая актуальная базу бесплатных API, которая обновляется ежедневно

Тут собрано аж 363 бесплатных API на все случаи жизни: от игр и погоды до финансов и здоровья.

Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика

Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта

Переходите и смотрите сами: https://www.freepublicapis.com/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
Есть один отличный фреймворк — Javalin

Если нужно быстро запустить сервер или сделать небольшое приложение — самое то

Он позволяет настроить сервер легко и без лишних зависимостей. Все, что нужно для REST API или WebSocket — уже встроено.

ℹ️ Идеально для пет-проектов, микросервисов и прототипов

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥113👍3
Разница между агрегацией, ассоциацией и композицией в Java

Ассоциация
Общая связь между двумя классами, где объекты одного класса связаны с объектами другого, но нет владения или строгой зависимости.

Пример:
Студент и Курс.
Студент может записаться на курс, но оба могут существовать независимо друг от друга.

Агрегация
Частный случай ассоциации, представляющий отношение "имеет-а" с концепцией "целое-часть", но части могут существовать независимо от целого.

Пример:
Автомобиль и его Колесо.
Автомобиль имеет колеса, но если автомобиль уничтожен, колеса могут существовать отдельно или быть использованы где-то еще.

Композиция
Более сильная форма агрегации, где "часть" полностью принадлежит "целому" и не может существовать без него.

Пример:
Дом и его Комната.
Если дом будет снесен, комнаты перестанут существовать.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍212🔥1
Как работает Java? Понимание архитектуры языка

Когда мы пишем код на Java, он проходит несколько ключевых этапов перед тем, как стать работающей программой. Вот как это происходит:

🍩Написав программу, мы получаем исходный код в файле .java.

🍩Этот код компилируется с помощью компилятора javac, который преобразует его в байт-код (.class). Это промежуточный формат, который понимает только JVM.

🍩JVM берет этот байт-код и запускает его, выполняя программу.

Внутри JVM происходит:

- Загрузка классов с помощью ClassLoader.
- Управление памятью: разделение на Stack, Heap и Method Area.
- Оптимизация с помощью JIT-компилятора, который превращает байт-код в машинный код для ускорения работы программы.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193🌭1💊1
ℹ️ Команды Docker для Java-разработчика

1. Проверка версии Docker
2. Работа с образами
3. Запуск Java-приложения в контейнере
4. Сборка и запуск контейнера с Java Spring Boot
5. Управление контейнерами
6. Сетевое взаимодействие в Docker
7. Docker Compose (Java + MySQL)
8. Docker Volumes (персистентные данные)
9. Очистка Docker

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172🔥1💊1
Что такое грациозное завершение работы Spring Boot-приложения?

🟡Приложение перестаёт принимать новые входящие запросы.

🟡Запросы, которые уже обрабатываются, получают возможность завершиться. Для других внутренних задач, таких как запланированные задания или обработка сообщений из очереди (MQ), приложение обеспечивает завершение текущих операций и предотвращает запуск новых.

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥3
Как инициализируется класс в Java?

Когда JVM загружает класс, его инициализация происходит в строгом порядке:

🍩 сначала инициализируются все static переменные.
🍩 затем выполняются статические блоки static { ... }.
🍩 после этого инициализируются обычные переменные объекта.
🍩 в конце выполняются конструкторы класса.

Этот порядок важен, так как попытка использовать переменную до её инициализации может привести к ошибке.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍5🔥5
Архитектура Struts MVC

Struts — это Java-фреймворк, основанный на MVC, который разделяет приложение на модель, представление и контроллер, обеспечивая лучшую поддерживаемость и масштабируемость.

Всё просто:

Пользователь отправляет запрос → ActionServlet принимает и направляет запрос в соответствующий Action-класс → Action-класс обрабатывает запрос и передает его Model (бизнес-логике, DAO, сервисам) → Model получает данные из БД (через Hibernate, JDBC или EJB) → Model передает обработанные данные обратно в Action-класс → Action-класс передает данные View (JSP, Tiles) → View отображает данные пользователю.

В целом, его поток данных соответствует классической MVC-модели, но с улучшениями

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥31
Бруно Соуса про Java

"Netflix полностью работает на Java. Всё, что мы создаем, построено на Java."
™️

Java не идеальна — да и никакой язык не идеален.

Но она существует уже десятилетия и используется в самых разных сферах, от банковских систем до корпоративных приложений, которые действительно поддерживают работу всего мира.

Она не яркая, не «крутая» новинка, но работает. А в мире технологий вещи, которые работают, часто остаются на долгие годы.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍294🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Совет по IntelliJIDEA

Оставайтесь сосредоточенными на кодинге и оптимизируйте свой рабочий процесс в IntelliJIDEA с помощью Run Anything!

Быстро запускайте конфигурации выполнения/отладки, приложения, скрипты, команды и задачи или даже открывайте недавние проекты – из любого места в IDE

Нажмите ⌃⌃ | Ctrl+Ctrl, чтобы открыть всплывающее окно Run Anything

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥4
Основной поток Kafka:

1. Продюсер отправляет сообщение

Приложение (продюсер) создаёт сообщение с данными.
Продюсер подключается к брокеру Kafka и выбирает тему.
Kafka определяет, в какой раздел темы отправить сообщение, распределяя нагрузку.
Сообщение записывается в лидирующую реплику раздела.

2. Хранение и репликация

Лидер добавляет сообщение в лог и присваивает ему уникальный офсет.
Сообщение копируется на резервные реплики для отказоустойчивости.

3. Консьюмер получает сообщения

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

4. Подтверждение обработки

После обработки консьюмер фиксирует новый офсет.
Kafka отслеживает, какие сообщения успешно потреблены.

5. Цикл продолжается

Продюсеры продолжают отправлять, консьюмеры — читать и обрабатывать.
Kafka обеспечивает надёжную и упорядоченную доставку даже при сбоях.

⚠️ Помните:

Поток сообщений в Kafka асинхронный. Продюсеры не ждут, пока консьюмеры обработают сообщения.

Консьюмеры могут отставать от продюсеров, если обработка идёт медленно.

Kafka предлагает механизмы для обработки сбоев и обеспечения семантики доставки at-least-once или exactly-once.

Topics => Partitions => Log Segments
(Данные фактически хранятся в лог-сегментах).

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
💡 Совет: @TransactionalEventListener — это специализированный @EventListener, который слушает событие и ожидает завершения текущей транзакции перед его обработкой. Ожидание консистентного состояния базы данных позволяет гораздо безопаснее реагировать на изменения, внесенные в БД.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132🔥2
Сравнение Comparator и Comparable в Java 👆

Comparable — для встроенной сортировки. Допустим string, Integer
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥42🌭1
Как в Java упаковываются и разворачиваются приложения

JAR – это обычная Java-программа, WAR – веб-приложение, EAR – крупный корпоративный проект, а JMOD – новый формат для модулей Java.

Процесс сборки и деплоя:

Compile – компиляция исходного кода в байт-код (файлы .class).

Package – упаковка файлов в один из архивов (JAR, WAR, EAR, JMOD).

Deploy – развёртывание на сервере или в среде выполнения.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍175🔥2
Модель памяти Java

Модель памяти Java (JMM) определяет, как потоки взаимодействуют через память, обеспечивая согласованность и синхронизацию. Она регулирует работу с volatile переменными, атомарными операциями и отношением happens-before, предотвращая проблемы конкурентного выполнения.

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

На графике показано, как Thread 1 записывает данные. Без синхронизации они могут попасть в локальный кэш, из-за чего Thread 2 может получить устаревшие данные

Если запись идет в основную память (Main Memory), данные становятся видимыми для других потоков, предотвращая проблемы.
Happens-Before Relationship обеспечивает порядок выполнения операций, гарантируя корректную работу программы.

⚠️ Без синхронизации возможны гонки данных и некорректное поведение. Используйте volatile, synchronized или Lock для безопасной работы с потоками.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1🌭1
Каковы различия между StringBuilder и StringBuffer в Java?

StringBuffer:

Каждый метод синхронизирован.

Объект StringBuffer потокобезопасен, так как к нему может обращаться только один поток за раз.

Относительно низкая производительность.

Введён в версии 1.0.

StringBuilder:

Методы не синхронизированы.

StringBuilder не является потокобезопасным, так как к нему могут обращаться несколько потоков одновременно.

Относительно высокая производительность по сравнению с StringBuffer.

Введён в версии 1.5.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21
This media is not supported in your browser
VIEW IN TELEGRAM
Недавно наткнулся на плагин, который сразу заставил IntelliJ IDEA смотреться как миллион баксов — Atom Material Icons. 💵

Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся

Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16👍84🔥1👀1
Media is too big
VIEW IN TELEGRAM
Опа, а вот и ещё одна годная штука

DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и просто задр... знатоков своего дела 😎

Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя

Лайк — если давно знаешь

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4😁3🔥2
Общие вопросы для собеседования на Java Spring Boot с ответами

1. Каково назначение аннотации @EnableAutoConfiguration?

@EnableAutoConfiguration включает механизм автоконфигурации Spring Boot,
который автоматически настраивает Spring-приложение на основе зависимостей, присутствующих в classpath.

2. Каково назначение аннотации @SpringBootTest?

@SpringBootTest используется для интеграционного тестирования, загружая полный контекст приложения
и позволяя тестировать приложение целиком.

3. Как развернуть Spring Boot-приложение?

Вы можете развернуть Spring Boot-приложение как автономный JAR, WAR или используя платформы оркестрации контейнеров,
такие как Kubernetes и Docker.

4. Каково назначение аннотации @ConfigurationProperties?

@ConfigurationProperties используется для привязки внешних конфигурационных свойств к Java-объектам,
что позволяет использовать типобезопасную конфигурацию.

5. Как вы обрабатываете логирование в Spring Boot?

Spring Boot использует SLF4J как фасад логирования и поддерживает различные фреймворки логирования, такие как Logback, Log4j2 и Java Util Logging. Вы можете настроить логирование в application.properties

6. Каково назначение аннотации @Conditional ?

@Conditional используется для условного включения или отключения бинов на основе определённых условий,
таких как наличие класса или свойства.

7. Как создать RESTful веб-сервис с использованием Spring Boot?

Вы можете создать RESTful веб-сервис, определив класс с аннотацией @RestController, отображая HTTP-запросы на методы обработчиков с использованием аннотаций @RequestMapping или других аннотаций сопоставления запросов.

8. Каково назначение аннотации @Value?

@Value используется для внедрения значений из файлов свойств, переменных среды или других
источников в Spring-бины.

9. Как настроить пользовательский баннер в Spring Boot?

Вы можете настроить пользовательский баннер, разместив файл banner.txt в каталоге src/main/resources,
или установив свойство spring.banner.location

10. Каково назначение аннотации @Profile?

@Profile используется для условного включения или отключения бинов на основе активных профилей,
позволяя использовать специфичные для среды конфигурации.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥32