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

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

@java_iibrary

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Subscribers
11.6K
Photos
1.6K
Videos
119
Links
1.6K

Showing posts older than #1263 · Back to latest

Older Posts 16 shown
Post #1262 3.03K
Большая актуальная базу бесплатных API, которая обновляется ежедневно

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

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

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

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

👉 Java Portal
  • 👍 7
  • 🔥 3
  • ❤ 1
Post #1260 2.66K
Что такое CompletableFuture в Java?

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

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

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

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

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

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

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

👉 Java Portal
  • 👍 6
  • 🔥 2
Post #1258 2.68K
GIT Workflow

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

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

👉 Java Portal
  • ❤ 8
  • 👍 4
  • 🔥 1
Post #1257 2.83K
Общие вопросы для собеседования на Java Spring Boot с ответами

🍩Какие типы внедрения зависимостей бывают?

⏩Field Injection
⏩Setter Injection
⏩Constructor Injection

🍩Разница между BeanFactory и ApplicationContext

BeanFactory использует ленивую инициализацию (создает бины при вызове getBean()).

ApplicationContext использует раннюю инициализацию (бины создаются при старте приложения).

🍩Чем отличаются @Component, @Repository, @Service и @Controller?

@Component – общий стереотип для любого Spring-управляемого компонента.
@Repository – используется для DAO-слоя (работа с БД).
@Service – для сервисного слоя.
@Controller – для MVC-контроллеров.

🍩Что такое Spring Bean?

Spring Bean – это обычный Java-объект, созданный Spring-контейнером.

🍩Разница между Singleton и Prototype Bean

Singleton – создается один экземпляр на все приложение.
Prototype – новый экземпляр создается при каждом запросе.

🍩Разница между @Component и @Bean

@Component – аннотация на уровне класса.
@Bean – аннотация на уровне метода, название метода = имя бина.

🍩Зачем нужен application.properties?

Используется для конфигурации приложения: настройки БД, логирование и т. д.

Сохрани себе, чтобы не забыть!

👉 Java Portal
  • 👍 15
  • 🤣 3
  • 🔥 2
  • ❤ 1
  • 😁 1
Post #1255 2.59K
Параллелизм в Java

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

Как это работает? 🤔

🍩 Инициализируем потоки.
🍩 Проверяем, готовы ли они.
🍩 Запускаем задачи одновременно.
🍩 Дожидаемся завершения и закрываем потоки

👉 Java Portal
  • 👍 5
  • ❤ 2
  • 🔥 2
  • 💊 2
Post #1254 2.79K
Зачем мы используем дженерики в Java? 🤔

⏩Типовая безопасность: Предотвращает возникновение ошибки ClassCastException во время выполнения.

⏩Повторное использование кода: Позволяет писать универсальные алгоритмы, которые работают с различными типами.

⏩Проверка на этапе компиляции: Обнаруживает ошибки на этапе компиляции, а не во время выполнения.

👉 Java Portal
  • 👍 11
  • ❤ 3
  • 🔥 2
Post #1252 2.8K
Паттерн Singleton — это такой паттерн, который заставляет класс иметь только один экземпляр и предоставляет доступ к нему для всего приложения.

Когда его использовать?

⏩Когда нужно, чтобы по всему приложению был один и тот же объект (например, конфиг или логгер).
⏩Если создание объекта сильно грузит систему, и лишние экземпляры будут только мешать.

Как работает?

⏩В классе с этим паттерном создается всего один экземпляр.
⏩Экземпляр можно получить через специальный метод, который проверяет, существует ли уже объект. Если нет — создает его.

Плюсы:
☑Экономит память, создавая только один объект.
☑Легко внедряется, если нужно иметь один объект для всех.

Минусы:
❌Сложнее тестировать, потому что жесткая зависимость от единственного объекта.
❌Могут быть проблемы при многозадачности, если не учесть блокировки.

Когда тебе нужен один и тот же объект для всего приложения — это то, что надо

👉 Java Portal
  • 👍 8
  • ❤ 6
  • 🔥 1
Post #1251 2.94K
Архитектура JVM

У Java Virtual Machine (JVM) есть 3 основных компонента:

⏩Загрузчик классов (Classloader)

⏩Область данных (Data Area)

⏩Исполняющий механизм (Execution Engine)

Процесс загрузки классов включает 3 этапа:

🍩Загрузка (Loading)

🍩Связывание (Linking)

🍩Инициализация (Initialization)

В области данных, создаваемой JVM, есть 5 компонентов:

🟡Область методов (Method Area)
🟡Куча (Heap Area)
🟡Стек (Stack Area)
🟡Регистр счётчика команд (PC Register)
🟡Стек нативных методов (Native Method Stack)

👉 Java Portal
  • 👍 12
  • ❤ 7
  • 💊 1
Post #1249 2.83K
Что такое Spring Boot и чем он отличается от традиционного Spring Framework? 🤔

Spring Boot — это упрощённый и удобный фреймворк, построенный на основе Spring Framework. Он значительно облегчает разработку самодостаточных и готовых к продакшену Spring-приложений благодаря следующим особенностям:

⏩Автоконфигурация – автоматически настраивает Spring и сторонние библиотеки в зависимости от присутствующих зависимостей в classpath.

⏩Starter POMs – предоставляет готовые зависимости (starter'ы), упрощая конфигурацию сборки.

⏩Встроенные серверы – включает встроенные сервера, такие как Tomcat и Jetty, устраняя необходимость в сторонних серверных контейнерах.

⏩Без XML-конфигурации – активно использует аннотации, уменьшая количество шаблонного (boilerplate) кода.

📌 Основное отличие от традиционного Spring Framework в том, что Spring Boot автоматизирует настройку, тогда как обычный Spring требует много ручной конфигурации.

👉 Java Portal
  • 👍 9
  • ❤ 2
  • 🔥 2
  • 🤯 1
Post #1248 2.81K
Как Java-приложение подключается к базе данных через JDBC?

При разработке Java-приложений часто требуется работать с базой данных. Для этого используется JDBC (Java Database Connectivity) — технология, которая позволяет Java-программе отправлять SQL-запросы и получать данные

Давайте разберемся, как это работает шаг за шагом:

🍩 Java-приложение
Программа пишет SQL-запрос, который нужно выполнить (например, SELECT * FROM users).

🍩 JDBC API
Этот запрос передается через JDBC API, который является стандартным интерфейсом взаимодействия с базами данных в Java.

🍩 Driver Manager (Менеджер драйверов)
JDBC API отправляет запрос в Driver Manager. Этот компонент выбирает правильный драйвер для нужной базы данных.

🍩 Database Driver (Драйвер базы данных)
Найденный драйвер переводит запрос в понятный для базы данных формат и отправляет его в СУБД.

🍩 Database (База данных)
База данных выполняет запрос и возвращает результат обратно через все уровни:
Database → Database Driver → Driver Manager → JDBC API → Java-приложение.

👉 Java Portal
  • 👍 13
  • ❤ 4
  • 🔥 2
  • 🤔 1
Post #1247 2.57K
Гонки потоков любят конкуренцию — но Kafka не дает им выиграть.

Single Writer Pattern, но для распределенных систем.

Все, кто работал с потоковыми данными, знают, насколько болезненно получать события не в том порядке. Одна ошибка — и состояние системы рушится.

Что такое Single Writer Pattern? 🤔

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

⏩ Kafka использует этот принцип на уровне партиций:
⏩ Каждую партицию в момент времени обрабатывает только один потребитель.
⏩ Никаких гонок, путаницы или несогласованных данных — только чистая и упорядоченная обработка.

Как Kafka реализует это?

🟡Топики разделены на партиции.
🟡Каждая партиция закреплена только за одним потребителем.
🟡Один consumer читает сообщения в правильном порядке, предотвращая гонки потоков.

Реальный пример: события заказов в e-commerce

Представьте, что маркетплейс получает такие события:
☑ OrderPlaced
☑ OrderConfirmed
☑ OrderShipped

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

🔄 Отказоустойчивость без потери порядка

Если потребитель выходит из строя, Kafka перераспределяет его партиции.

🔄 Новый consumer продолжает обработку с того же места, сохраняя порядок событий.

Основные выводы:

☑ Kafka применяет Single Writer Pattern на уровне партиций.
☑ Это гарантирует упорядоченную и безопасную обработку без гонок потоков.
☑ Отказоустойчивость реализована без дублирования данных.

Перестаньте бороться с конкуренцией — проектируйте с учетом ее особенностей.

Последовательность событий — не просто удобство, а основа корректности в распределенных системах.

💬 Как вы решаете эту задачу в продакшене?

👉 Java Portal
  • 👍 10
  • 🔥 4
  • ❤ 1
  • 🤔 1
  • 🌭 1
Post #1246 2.6K
Как работает перехватчик (Interceptor) в Spring Boot?

Когда клиент делает запрос:

⏩DispatcherServlet первым получает запрос.
⏩Затем DispatcherServlet использует HandlerMappings, чтобы найти соответствующий Controller.
⏩Перед тем как запрос достигнет Controller, он проходит через все настроенные перехватчики (Interceptors) и выполняет их метод preHandle().
⏩Если все методы preHandle() возвращают true, запрос передается в Controller.
⏩Controller выполняет запрос. После этого запрос проходит через метод postHandle() всех перехватчиков.
⏩Наконец, если все прошло успешно и методы postHandle() вернули true, вызывается метод afterCompletion() у всех перехватчиков.

👉 Java Portal
  • ❤ 6
  • 👍 6
  • 🌭 2
Post #1243 2.77K
Забыли про ExecutorService и вечные потоки?

Дайте шанс CompletableFuture! Это идеальный способ выполнять несколько операций параллельно, при этом сохраняя чистый код.

Пример: 👇

CompletableFuture.supplyAsync(() -> {
// Долгая операция
return "Hello, ";
}).thenCombine(
CompletableFuture.supplyAsync(() -> {
// Ещё одна операция
return "World!";
}),
(greeting, name) -> greeting + name
).thenAccept(System.out::println); // Выведет "Hello, World!"


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

🟡Параллельные операции без блокировок.
🟡Чистый и понятный код.
🟡Гибкость при работе с результатами.

👉 Java Portal
  • 👍 6
  • ❤ 5
  • 🔥 4
Post #1240 3.11K
Если ты когда-нибудь работал с Java Streams, то знаешь, как полезно отслеживать промежуточные данные.

Но что, если ты не хочешь изменять элементы, а просто вывести их для отладки? 🤔

Вот тут в игру вступает peek() — метод, который позволяет подсматривать элементы потока, не изменяя их. Это удобно для логирования или проверки данных на лету. 👇

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> result = numbers.stream()
.filter(n -> n % 2 == 0)
.peek(n -> System.out.println("Filtered value: " + n))
.map(n -> n * 2)
.collect(Collectors.toList());


Зачем это нужно?

☑Отладка: подглядывай за данными без изменения потока.
☑Чистота кода: нет побочных эффектов, как с forEach().

👉 Java Portal
  • ❤ 5
  • 👍 4
  • 🔥 3
Post #1239 2.95K
Интеграция потоков данных для микросервисов с Kafka и Kafka Connect

Автор делится опытом выбора Kafka для реального времени получения информации о стоках товаров через API, а также описывает процесс интеграции реляционных баз данных, выбор и настройку коннекторов Kafka, использование базы данных Tarantool для хранения данных и выбор инструментов для мониторинга, таких как Dynatrace, Prometheus и Burrow. В результате была создана система, обрабатывающая данные за 5-10 секунд.

📲 Cмотреть источник: тут

👉 Java Portal | #видео
  • 👍 2
Post #1238 2.79K
Разница между Interceptor и Filter в Spring Boot

Что такое Filter? Filter — это часть Servlet API, работающая на низком уровне, обрабатывающая все входящие запросы до того, как они достигнут диспетчера Spring.

Когда использовать Filter?

🟡Логирование
🟡Сжатие GZIP
🟡Проверки безопасности: реализация брандмауэров, ограничение скорости, контроль доступа
🟡Модификация запросов/ответов: изменение HTTP-данных (например, упаковка, очистка, кэширование)

Что такое Interceptor? Interceptor — это часть Spring MVC, работающая внутри фреймворка Spring. Он позволяет модифицировать запросы и ответы, особенно для контроллеров.

Когда использовать Interceptor?

🟡Проверка учетных данных и прав доступа для контроллеров
🟡Логирование времени выполнения
🟡Изменение модели или представления перед отправкой ответа клиенту

👉 Java Portal
  • 👍 6
  • 🔥 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →