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

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

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام Java Portal | Программирование

کانال Java Portal | Программирование (@java_iibrary) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 770 مشترک است و جایگاه 10 256 را در دسته فناوری و برنامه‌ها و رتبه 54 543 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 770 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -144 و در ۲۴ ساعت گذشته برابر -1 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 10.09% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 5.78% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 1 188 بازدید دریافت می‌کند. در اولین روز معمولاً 681 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 4 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند boot, string, void, архитектура, resttemplate تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 اوت, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

11 770
مشترکین
-124 ساعت
-237 روز
-14430 روز
آرشیو پست ها
Наблюдаемость 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