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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Java Portal | Программирование analitikasi

Java Portal | Программирование (@java_iibrary) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 11 770 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 256-o'rinni va Rossiya mintaqasida 54 543-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 11 770 obunachiga ega bo‘ldi.

29 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -144 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 10.09% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.78% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 188 marta ko‘riladi; birinchi sutkada odatda 681 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent boot, string, void, архитектура, resttemplate kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Yuqori yangilanish chastotasi (oxirgi ma’lumot 30 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

11 770
Obunachilar
-124 soatlar
-237 kunlar
-14430 kunlar
Postlar arxiv
Наблюдаемость Java-бэкенда с помощью OpenTelemetry ⏩Читать подробнее 👉 Java Portal | #cтатья
Наблюдаемость Java-бэкенда с помощью OpenTelemetry ⏩Читать подробнее 👉 Java Portal | #cтатья

🔍 Завтра тестовое собеседование с Java-разработчиком 2 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседов
🔍 Завтра тестовое собеседование с Java-разработчиком 2 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Сергею Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxP5Lfh

Хаки Java-кодинга, которые стоит знать разработчикам ✓ Используйте Map.ofEntries() для создания неизменяемых мап с нескольким
+4
Хаки Java-кодинга, которые стоит знать разработчикам ✓ Используйте Map.ofEntries() для создания неизменяемых мап с несколькими парами ➣ Почему: короче, безопаснее, неизменяемо — снижает риск случайной мутации. ✓ Используйте Optional.map().orElse() вместо ручной обработки null ➣ Почему: устраняет проверки на null, читается лучше, легко комбинируется с другой логикой. ✓ Используйте Enum.valueOf() + name() для безопасного преобразования enum ➣ Почему: чище и удобнее для сериализации/десериализации enum'ов в API, БД или файлах. ✓ Используйте Comparator.comparing().thenComparing() вместо кастомной логики ➣ Почему: читаемо, понятно, без ошибок в условных сравнениях. ✓ Используйте Optional.ifPresentOrElse() вместо if-else с isPresent() ➣ Почему: выразительнее и чище — больше никаких ручных get() и нагромождений if-else 👉 Java Portal

Проектирование Backend-системы. Система уведомлений Цель —> Разработать систему для доставки уведомлений пользователям через:
Проектирование Backend-системы. Система уведомлений Цель —> Разработать систему для доставки уведомлений пользователям через: ➣ Встроенные уведомления ➣ Push-уведомления (мобильные/веб) ➣ Email С поддержкой: ✓Масштабируемости (миллионы пользователей) ✓Настраиваемых пользовательских предпочтений ✓Надежности, повторных попыток и дедупликации ✓Реального времени и пакетных оповещений Пошаговый сквозной процесс Шаг 1: Срабатывание события ✓ Приложение инициирует событие: ➣ Например, пользователь A лайкнул ваш пост ➣ Отправляется запрос POST на API /notify:
{
  "event_type": "like",
  "actor": "UserA",
  "receiver": "UserB",
  "object": "Post123"
}
Шаг 2: Добавление в очередь уведомлений ➣ API валидирует данные и помещает сообщение в очередь уведомлений (Kafka/RabbitMQ) Шаг 3: Обработка воркером ✓ Воркер извлекает сообщение из очереди: ➣ Получает полную информацию о событии ➣ Обращается к сервису предпочтений: - Подписан ли UserB на уведомления типа "like"? - Хочет email или только in-app? ✓ Создает payload уведомления, например: ✓ "UserA лайкнул ваш пост 'How to scale systems'" Шаг 4: Рассылка по каналам ✓ На основе предпочтений воркер запускает соответствующие каналы: ➣ In-App Writer → сохраняет в БД (для отображения иконки колокольчика) ➣ Push-сервис → отправляет push (мобильный/веб) через FCM/APNs ➣ Email-сервис → ставит email в очередь (через SES/SendGrid) Шаг 5: Отправка и повторные попытки ✓ Сервисы каналов: ➣ Декуплированы для изоляции отказов ➣ Повторяют попытки при сбоях (3–5 раз с экспоненциальной задержкой) ➣ Логируют статус (отправлено, ошибка, пропущено) Шаг 6: Отображение in-app уведомлений ✓ UI вызывает /notifications?user=UserB ✓ Возвращаются N последних уведомлений из БД:
[
  { "text": "UserA лайкнул ваш пост", "read": false, ... }
]
Функции надежности ✓ Гарантированная доставка хотя бы один раз с идемпотентной записью ✓ Повторные попытки с экспоненциальной задержкой ✓ DLQ (Dead Letter Queue) для сообщений с ошибками ✓ Метрики: успех/неудача на сообщение ✓ Алерты при переполнении очереди или всплесках ошибок 👉 Java Portal

🔥 Успех в IT = скорость + знания + окружение Здесь ты найдёшь всё это — коротко, по делу и без воды. Пока другие ищут, где “
🔥 Успех в IT = скорость + знания + окружение Здесь ты найдёшь всё это — коротко, по делу и без воды. Пока другие ищут, где “подглядеть решение”, ты будешь использовать самые передовые инструменты! 🖥 ИИ: t.me/ai_machinelearning_big_data 🖥 Python: t.me/pythonl 🖥 Linux: t.me/linuxacademiya 🖥 C++ t.me/cpluspluc 🖥 Docker: t.me/DevopsDocker 🖥 Хакинг: t.me/linuxkalii 🖥 Devops: t.me/DevOPSitsec 🖥 Data Science: t.me/data_analysis_ml 🖥 Javascript: t.me/javascriptv 🖥 C#: t.me/csharp_ci 🖥 Java: t.me/javatg 🖥 Базы данных: t.me/sqlhub 👣 GO: t.me/Golang_google 🖥 React: t.me/react_tg 👣 Rust: t.me/rust_code 🧠 Нейросети: t.me/vistehno 🖥 PHP: t.me/phpshka 🖥 Android: t.me/android_its 💼 Вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi

Базовые приёмы экономии памяти в Java 1. Ленивая инициализация "тяжёлых" полей – Используйте lazy initialization, чтобы откла
+3
Базовые приёмы экономии памяти в Java 1. Ленивая инициализация "тяжёлых" полей – Используйте lazy initialization, чтобы откладывать создание объекта до момента, когда он действительно понадобится. 2. Избегайте анонимных внутренних классов в циклах – Каждое такое использование создаёт объект внутреннего класса — это скрытая нагрузка на память. 3. Используйте статические фабричные методы – Они позволяют экономить память за счёт повторного использования уже созданных экземпляров, вместо создания новых при каждом вызове. 4. Применяйте метод intern() – Метод intern() класса String возвращает каноническое представление строки. Используя intern(), можно гарантировать, что одна и та же строка будет представлена в памяти в виде единственного объекта, даже если она создаётся многократно.
String s1 = "hello";
String s2 = "hello".intern();
5. Используйте паттерн Flyweight для повторяющихся неизменяемых данных – Экономит память за счёт разделения общих экземпляров (используется, например, в Integer.valueOf(), Boolean.TRUE и т.п.). 👉 Java Portal

Добавление логирования HTTP-запросов в Spring Boot API ⏩Читать подробнее 👉 Java Portal | #cтатья
Добавление логирования HTTP-запросов в Spring Boot API ⏩Читать подробнее 👉 Java Portal | #cтатья

Давайте разберёмся с Git Merge и Rebase Git предоставляет два мощных инструмента для интеграции изменений из одной ветки (часто feature-ветки) в другую (обычно main): Merge и Rebase Оба инструмента решают одну задачу — объединение кода, но делают это по-разному. ✔️ Git Merge Merge создаёт новый коммит, который фиксирует объединение двух веток. В истории это видно как слияние двух независимых линий разработки в одной точке. Шаги: 1. Переключись на целевую ветку (обычно main) 2. Выполни git merge <feature> — укажи имя исходной ветки Результаты: 🔸Создаётся новый merge-коммит в целевой ветке с ссылками на родительские коммиты 🔸История целевой ветки становится разветвлённой, отражая все слияния 🔸Это более безопасный вариант для командной работы — история изменений сохраняется ✔️ Git Rebase Rebase переписывает историю ветки (обычно feature-ветки), как будто коммиты были сделаны поверх другой ветки (например, main). Получается более линейная история без merge-коммитов. Шаги: 1. Переключись на ветку, которую хочешь ребейзнуть (например, feature) 2. Выполни git rebase <main> Результаты: 🔸Коммиты из feature будут повторно применены на вершину main, создаются новые коммиты с теми же изменениями 🔸Целевая ветка (main) при этом не изменяется 🔸История feature-ветки становится линейной, но её история будет переписана Примечания: После успешного rebase, финальное merge в main часто выполняется как fast-forward, т.к. история выглядит непрерывной Rebase изменяет ветку, на которой ты находишься, а не целевую ветку Итог: merge сохраняет историю как есть → хорошо для командной работы rebase делает историю аккуратной → хорошо для чистоты, но требует осторожности 👉 Java Portal

Sealed-классы и интерфейсы в Java Они позволяют явно контролировать, какие классы могут расширять или реализовывать тип — дел
Sealed-классы и интерфейсы в Java Они позволяют явно контролировать, какие классы могут расширять или реализовывать тип — делая иерархии безопаснее, легче в сопровождении и идеально подходящими для исчерпывающего pattern matching'а Начиная с Java 17, были введены sealed-классы и sealed-интерфейсы как способ ограничить и контролировать иерархию наследования. Как это работает? 🔹Используй модификатор sealed и ключевое слово permits, чтобы явно указать разрешённые подклассы или реализации. 🔹Все разрешённые подтипы должны находиться в одном модуле или пакете и обязаны быть помечены как final, sealed или non-sealed Зачем использовать sealed-классы и интерфейсы? 👉 Более строгая инкапсуляция и контроль над публичным API 👉 Безопасный и предсказуемый код (отлично подходит для pattern matching в switch) 👉 Защита от нежелательного наследования или реализации 👉 Java Portal

ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ Айтишники поймут ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠ ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ

Прокачай производительность своего Java-приложения с помощью мощного кэширования. Узнай, как интегрировать Spring Boot, Redis
Прокачай производительность своего Java-приложения с помощью мощного кэширования. Узнай, как интегрировать Spring Boot, Redis и Docker в этом практическом гайде. Читать сейчас: тык 😈 👉 Java Portal

Все ключевые слова Java в одном месте Java содержит 53 зарезервированных ключевых слова, которые нельзя использовать как имен
Все ключевые слова Java в одном месте Java содержит 53 зарезервированных ключевых слова, которые нельзя использовать как имена переменных, методов или классов — каждое из них выполняет определённую роль в языке. Независимо от того, только ли ты начинаешь изучать Java или готовишься к собеседованию — знание этих ключевых слов обязательно 👉 Java Portal

Ограничение частоты запросов в Spring Boot с помощью Bucket4j Реализация rate limiting в REST API на Spring Boot с использова
Ограничение частоты запросов в Spring Boot с помощью Bucket4j Реализация rate limiting в REST API на Spring Boot с использованием Bucket4j для контроля частоты запросов на пользователя, что повышает масштабируемость API. Подходит для предотвращения злоупотреблений в продакшн-системах • Импортируются классы из Bucket4j, Spring и Java SDK. • Создаётся REST-контроллер с маппингом /api • Для каждого пользователя создаётся бакет с лимитом 5 запросов в минуту. Если бакет позволяет — запрос проходит. Если нет — возвращается 429 статус. • Заглушка для HttpServletResponse, нужна чтобы код можно было запускать без настоящего HTTP-сервера. 👉 Java Portal

Разные способы защиты API-эндпоинтов → API-ключи Клиент отправляет ключ в заголовках или query-параметрах 👍 Просто реализуется 👎 Нет идентификации пользователя, легко утечь → OAuth2 (токены доступа) Механизм авторизации через токены с областью доступа и сроком действия 👍 Тонкая настройка прав доступа, широко поддерживается 👎 Более сложная настройка → JWT (JSON Web Tokens) Самодостаточный токен с наборами claims 👍 Без состояния (stateless), хорошо масштабируется 👎 Сложно отзывать, больше размер → Basic Auth Отправка Base64(username:password) в заголовке 👍 Удобно для быстрого тестирования 👎 Никогда не используйте в продакшене → mTLS (взаимная TLS-аутентификация) И клиент, и сервер проверяют сертификаты друг друга 👍 Высокий уровень доверия и шифрования 👎 Сложная инфраструктура и управление сертификатами Для внутренних сервисов → mTLS + токены с коротким сроком жизни Для публичных API → OAuth2 + scopes (области доступа) Для тестирования/разработки → API-ключи или Basic Auth 👉 Java Portal

Как frontend-разработчику получить оффер в Bigtech? Ты вроде бы уже не джун, но всё равно чувствуешь, что топчешься на месте?
Как frontend-разработчику получить оффер в Bigtech? Ты вроде бы уже не джун, но всё равно чувствуешь, что топчешься на месте? Рынок перегрет, требований всё больше, а откликов — всё меньше? На собесах валят на алгоритмах или просят "нарисовать" архитектуру, как будто ты ведущий. При этом вокруг кто-то постоянно получает офферы в Яндекс или VK, а у тебя не получается даже дойти до финального этапа? Хочется стабильности, интересных задач и наконец-то попасть в сильную команду...
Меня зовут Тихон, привет! Я — действующий Frontend-разработчик и ментор. Помогаю устроиться на хорошие позиции в Bigtech и сопровождаю на испытательном сроке.
В своем канале: 👉 публикую видео с решением задач, которые прямо сейчас дают крупные компании на собеседованиях 👉даю примеры по прохождению собеседований 👉разбираю резюме и докручиваю резюме подписчиков 👉и просто создаю дружелюбное, комфортное сообщество, где коллеги всегда готовы подсказать и поддержать 🎁В закрепе тебя ждёт подборка из 60 задач, которые сейчас дают на собеседованиях Яндекс, Т-Банк и другие крупные IT игроки. Подписывайся и получай максимум пользы, а нас уже больше 2000 🤓: https://t.me/+p0ldgDr3Wp5iMWY6 Реклама, ИП Галактионов Тихон Витальевич, инн: 771618975809, erid: 2W5zFK1XXg4

Что такое daemon-поток в Java? Daemon-поток — это фоновый поток, который работает для поддержки пользовательских потоков. При
+1
Что такое daemon-поток в Java? Daemon-поток — это фоновый поток, который работает для поддержки пользовательских потоков. Примеры — сборщик мусора или системы мониторинга. Главное отличие: daemon-потоки не мешают завершению работы JVM. Как только все пользовательские (не-daemon) потоки завершатся, JVM завершится автоматически, даже если daemon-потоки ещё работают. Как создаете daemon-поток? 🔹Создаёте поток как обычно 🔹Вызываете setDaemon(true) до запуска потока 🔹Запускаете поток через start() Как только основной (пользовательский) поток завершится — JVM выключится, даже если daemon-поток всё ещё активен. Используйте daemon-потоки для фоновых сервисов, которые не должны блокировать завершение приложения. Всегда вызывайте setDaemon(true) до запуска 👉 Java Portal

Java Enums — Всё, что нужно знать 1. enum Status { PENDING, APPROVED, REJECTED } → Базовый Enum • Это называется enum (сокращение от enumeration). • Используется для задания фиксированного набора констант (например, состояния заказа, роли пользователя). 2. Status.valueOf("APPROVED") → Преобразование строки в Enum • Бросает исключение, если строка некорректна. • Используется при маппинге из БД, пользовательского ввода или JSON (например, парсинг статуса из запроса). 3. Status.APPROVED.name() → Получить имя как строку • Возвращает имя enum-константы в точности как оно определено. • Используется при логировании, сериализации и т. д. (например, отображение enum как строки в ответе). 4. Status.APPROVED.ordinal() → Получить индекс Enum • Возвращает позицию (начиная с 0). • Используется только если порядок важен (обычно избегается ради стабильности) — например, для ранжирования уровней. 5. for (Status s : Status.values()) → Перебор значений Enum • Используется для итерации по всем константам. • Удобно для UI-дропдаунов, фильтров, пакетной обработки. 6. enum Day { MON, TUE; boolean isWeekend() { return false; } } → Enum с методами • Добавляет поведение к enum. • Используется, если для каждой константы нужна логика (например, isHoliday() для Day). 7. enum Type { BASIC("B"), PREMIUM("P"); private String code; ... } → Enum с полями • Используется для хранения дополнительных данных с каждой константой (например, код из БД, описание). 8. Enum с абстрактным методом
enum Mode {
  ON { void act() { /* что-то делаем */ } },
  OFF { void act() { /* ничего не делаем */ } };
  abstract void act();
}
• Называется поведенческим enum'ом. • Используется для логики, подобной конечному автомату (например, стратегии на константу). 9. EnumSet.of(Status.APPROVED) → EnumSet • Высокопроизводительное множество для enum. • Используйте вместо HashSet<Enum> (например, для фильтрации флагов или ролей). 10. EnumMap<Status, String> → EnumMap • Эффективная key-value структура, использующая enum в качестве ключа. • Быстрее и легче, чем HashMap<Enum, X> (например, для меток или конфигураций по статусу). 11. switch(status) → Enum в операторе switch • Работает с enum'ами нативно. • Используется для route-логики (например, обработки каждого статуса по-своему). 👉 Java Portal

Параллельная хеш-таблица с мелкозернистой блокировкой: Потокобезопасная хеш-таблица с блокировками на уровне бакетов для мини
Параллельная хеш-таблица с мелкозернистой блокировкой: Потокобезопасная хеш-таблица с блокировками на уровне бакетов для минимизации конфликтов — подходит для высокопроизводительных систем, таких как базы данных или кеши. 👉 Java Portal

Это шпаргалка по основным командам Linux, разбитая по категориям. 🔹Файлы и навигация 🔹Системная информация 🔹Сетевые команд
Это шпаргалка по основным командам Linux, разбитая по категориям. 🔹Файлы и навигация 🔹Системная информация 🔹Сетевые команды 🔹Процессы 🔹Архивация и сжатие 🔹Права доступа 🔹Другие команды 👉 Java Portal

ReadWriteLock в Java ReadWriteLock — это утилита для работы с параллелизмом в Java, которая позволяет нескольким потокам одновременно читать ресурс, но только одному потоку — записывать, и только в том случае, если никакие другие потоки в данный момент не читают и не пишут. Этот механизм значительно повышает пропускную способность в приложениях с преобладанием операций чтения по сравнению с использованием обычного взаимного исключения (например, synchronized или ReentrantLock), где доступ к ресурсу может получить только один поток за раз. Как работает ReadWriteLock 🔹Read Lock (блокировка на чтение): Несколько потоков могут одновременно получить блокировку на чтение, если ни один поток не владеет блокировкой на запись и ни один поток не ожидает записи. Это позволяет выполнять параллельные операции чтения, что эффективно для ресурсов, к которым часто обращаются на чтение и редко — на запись. 🔹Write Lock (блокировка на запись): Только один поток может получить блокировку на запись, и только если в данный момент нет активных читателей и писателей. Это обеспечивает исключительный доступ при модификации данных, предотвращая неконсистентность. Java предоставляет стандартную реализацию интерфейса ReadWriteLock в виде класса ReentrantReadWriteLock. Пример применения Допустим, у вас есть общая структура данных, например, кэш или список, к которым обращаются несколько потоков: 🔹Читатели: множество потоков часто читают данные. 🔹Писатели: время от времени поток обновляет данные. Используя ReadWriteLock, вы позволяете всем читателям одновременно обращаться к данным, но гарантируете, что при обновлении данных писатель будет иметь исключительный доступ. Это повышает производительность и обеспечивает потокобезопасность. 👉 Java Portal