Java Developer – Telegram
Java Developer
15.6K subscribers
1.89K photos
144 videos
2 files
2.14K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Перевод Spring Boot на HTTPS без ругани браузера

Данная статья рассчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении.

В этой статье разбирается именно работа со Spring Boot и вшитым в него Apache Tomcat.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5👍3
Вопрос с собеседования

Что такое оптимистичная и пессимистичная блокировки в контексте баз данных?

Ответ: Это два подхода к управлению конкурентным доступом к данным.

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

Оптимистичная блокировка исходит из того, что конфликты редки. Данные читаются без блокировки, а перед фиксацией изменений выполняется проверка версии: не изменил ли их кто-то ещё. Если изменил — транзакция откатывается и повторяется. Такой подход даёт лучшую производительность при низкой конкуренции.


tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Вопрос с собеседования

Что будет, если добавлять элементы в TreeSet по возрастанию?

Ответ: TreeSet основан на самобалансирующемся красно-чёрном дереве. Оно автоматически поддерживает баланс, поэтому порядок добавления элементов (по возрастанию, убыванию или случайный) не влияет на производительность операций — они остаются логарифмическими: O(log n) для добавления, поиска и удаления.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6
Вопрос с собеседования

Почему String считается безопасным ключом для HashMap?

Ответ: Объекты класса String в Java неизменяемы — это значит, что после создания их значение не может быть изменено. Это важно, потому что ключ в HashMap должен оставаться стабильным: и хеш, и сравнение не должны меняться со временем.

Кроме того, String кэширует результат hashCode(), что делает доступ к элементам быстрее и стабильнее при многократном использовании. Благодаря этим свойствам String — надёжный и предсказуемый ключ для хеш-таблиц.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
Вопрос с собеседования

Как управлять кешированием в HTTP?

Ответ: Кеширование в HTTP управляется с помощью специальных заголовков, которые определяют, когда и как можно повторно использовать загруженные данные.

▶️ Cache-Control — основной заголовок, задающий правила кеширования: время жизни (max-age), доступность (public, private), запрет кеширования (no-store) и др.

▶️ Last-Modified + If-Modified-Since — позволяют серверу сообщить дату последнего изменения ресурса, а клиенту — запрашивать данные только при обновлении

▶️ ETag + If-None-Match — используют уникальный идентификатор версии ресурса. Если версия не изменилась, сервер отвечает 304 Not Modified

Эти механизмы снижают нагрузку на сеть и ускоряют повторные загрузки.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
👍 Самый простой способ поделиться своим localhost

Pinggy позволяет быстро сделать локальный сервер доступным в интернете и просто скинуть ссылку кому угодно.

Ключевые особенности:
▶️ Запускается через одну команду или прямо из браузера

▶️ Мгновенно выдаёт публичный URL, которым можно делиться

▶️ Не требует регистрации и сложной настройки


Удобно, когда нужно протестировать вебхук/API или быстро дать доступ к демо прямо с localhost — пробуем тут.

tags: #полезное

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥91
👍2
Что выведет код сверху?
Anonymous Quiz
4%
null
28%
Null
29%
NullPointerException
35%
Ошибка
4%
Ничего
2👍1
👩‍💻 Циклические зависимости в Spring: как находить и устранять

Если в вашем проекте внезапно Spring ругается на circular dependency, вы не одиноки — такие ошибки возникают даже в продуманных архитектурах.

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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Вопрос с собеседования

Что такое FutureTask?

Ответ:
FutureTask представляет собой отменяемое асинхронное вычисление и реализует интерфейсы Runnable и Future. Он позволяет запускать задачу, проверять её состояние, отменять выполнение и получать результат по завершении. Если результат ещё не готов, метод получения блокируется до окончания вычисления. FutureTask может оборачивать как Callable, так и Runnable, и благодаря реализации Runnable может передаваться в Executor для выполнения.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
👩‍💻 JDBC: как Java научилась дружить с базами данных?

В статье объясняется, как работает JDBC — стандартный способ подключения Java-приложений к базам данных.

Разбираются типы драйверов, методы выполнения запросов и управление транзакциями, что поможет понять, как Java взаимодействует с различными СУБД.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Вопрос с собеседования

Как устроен Message в Kafka?

Ответ:
Сообщение в Kafka — это единица данных, которую продюсер отправляет в топик. Каждое сообщение состоит из следующих компонентов:

Ключ (key) — используется для распределения сообщений по партициям. Сообщения с одинаковым ключом попадают в одну партицию.

Значение (value) — основное содержимое сообщения, например строка, JSON, байты и т.п.

Метаданные — включают смещение (offset), временную метку, имя топика и номер партиции.

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


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👀1
👩‍💻 Барьеры и модели памяти

В статье на примере реального кейса из Amazon рассказывается о проблемах, которые могут возникнуть при переносе сервисов между архитектурами x86/64 и ARM из-за различий в моделях памяти.

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

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

tags:
#статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Вопрос с собеседования

Какие типы Statement существуют в JDBC?

Ответ: В JDBC есть три основных типа Statement:

▶️ Statement — используется для простых SQL-запросов без параметров

▶️ PreparedStatement — позволяет подставлять значения через параметры (?), безопасен от SQL-инъекций и эффективен при многократном выполнении

▶️ CallableStatement — предназначен для вызова хранимых процедур в базе данных

tags: #собеседование

📱 Java Developer  | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🖥 Шпаргалка по основным директориям Linux

Поможет наглядно и быстро понять структуру файловой системы.

tags: #полезное

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3🔥2
Вопрос с собеседования

Какую проблему решает ExecutorService?

Ответ: ExecutorService отделяет постановку задач от управления потоками. Разработчик работает с задачами, а не с потоками напрямую, а пул потоков берёт на себя создание, планирование и завершение выполнения.

tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5
👩‍💻 От Redis к Kafka Streams: как мы проверяем сетевую доступность 200к устройств

В статье разбирается, как проверять доступность ~200 000 устройств каждые 10 минут, не перегружая базу данных и сервисы.

Автор показывает, почему решение на Redis оказалось излишне сложным, и как Kafka Streams позволяет упростить архитектуру, сохранив масштабируемость и отказоустойчивость.

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

tags: #статья

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Вопрос с собеседования

Как организовать очередь сообщений через Redis?

Ответ: Очередь сообщений в Redis можно реализовать разными способами. Самый простой вариант — использовать списки, где продюсер добавляет сообщения, а воркер забирает их по FIFO. Это быстро, но требует аккуратной обработки сбоев.

Более надёжный подход — Redis Streams, которые поддерживают группы потребителей и подтверждение обработки сообщений, что позволяет избежать потерь. Pub/Sub для очередей обычно не используют, так как сообщения не сохраняются и могут быть потеряны.


tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2
👩‍💻 Как я добился гибкости в приложении и при чем тут ссылки на методы?

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

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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
👀6
😁144🤔41