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

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

前往频道在 Telegram

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

显示更多

📈 Telegram 频道 Java Portal | Программирование 的分析概览

频道 Java Portal | Программирование (@java_iibrary) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 130 名订阅者,在 技术与应用 类别中位列第 10 377,并在 俄罗斯 地区排名第 54 419

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 12 130 名订阅者。

根据 05 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -142,过去 24 小时变化为 -1,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 11.75%。内容发布后 24 小时内通常能获得 6.20% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 426 次浏览,首日通常累积 753 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 4
  • 主题关注点: 内容集中在 boot, string, void, архитектура, resttemplate 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

凭借高频更新(最新数据采集于 06 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

12 130
订阅者
-124 小时
-407
-14230
帖子存档
Polling vs Long Polling vs Webhooks vs SSE Четыре способа получать обновления от сервера. Каждый даёт свой баланс между прост
Polling vs Long Polling vs Webhooks vs SSE Четыре способа получать обновления от сервера. Каждый даёт свой баланс между простотой, эффективностью и «почти реалтайм» доставкой. Вот как они отличаются: — Polling Клиент каждые несколько секунд отправляет запрос: «есть что-то новое?». Сервер отвечает сразу — независимо от наличия данных. Большинство ответов пустые, что тратит ресурсы клиента и сервера. Подходит для сценариев вроде статуса заказа, где допустима задержка и важна простота реализации. — Long Polling Клиент отправляет запрос, а сервер держит HTTP-соединение открытым до появления данных или таймаута. Пустых ответов значительно меньше, чем в обычном polling. Использовался, например, в чатах для приближения к реалтайм-доставке сообщений. — SSE (Server-Sent Events) Клиент открывает постоянное HTTP-соединение, сервер стримит события по мере появления. Односторонний канал, лёгкий, работает поверх обычного HTTP. Многие AI-интерфейсы стримят ответы токен за токеном именно через SSE. — Webhooks Вместо опроса клиентом, сервис сам отправляет HTTP POST на заранее зарегистрированный callback URL при наступлении события. Stripe использует для подтверждения платежей, GitHub — для событий push. Клиент не держит соединение и не делает запросы, просто принимает вызовы. Часто используется комбинация: polling для простых статусов, SSE для стриминга, webhooks для событий. 👉 Java Portal

В Java можно использовать Optional.orElseThrow() для реализации так называемого fail-fast поведения. ✅ Fail-fast означает, чт
В Java можно использовать Optional.orElseThrow() для реализации так называемого fail-fast поведения. ✅ Fail-fast означает, что ошибки фиксируются ближе к месту возникновения, за счёт чего стек вызовов проще читать и анализировать #Java #РазработкаПО 👉 Java Portal

Реальная сила Stream Gatherers в Java 24: кастомная stateful-магия с ранним завершением Java 24 добавляет Stream Gatherers (J
Реальная сила Stream Gatherers в Java 24: кастомная stateful-магия с ранним завершением Java 24 добавляет Stream Gatherers (JEP 485) — серьёзное расширение Stream API. Они позволяют создавать кастомные промежуточные операции с поддержкой stateful-преобразований, m-to-n отображений, раннего завершения и параллельного выполнения. В отличие от коллекторов (которые терминальные), Gatherers работают прямо внутри конвейера стримов. Это убирает необходимость в костылях вроде сбора во временные списки или ручных циклов для сложной логики — скользящие окна, накопительные суммы, дедупликация, батчинг. С Gatherers код на стримах остаётся ленивым, читаемым, композиционным и переиспользуемым. Теперь Stream API выглядит завершённым для реальных сценариев обработки данных. 👉 Java Portal

Совет по Java: можно избежать чрезмерного количества параметров метода, сгруппировав связанные значения в объекты. #Java #Раз
Совет по Java: можно избежать чрезмерного количества параметров метода, сгруппировав связанные значения в объекты. #Java #РазработкаПО 👉 Java Portal

Подключения к базе данных — дорогая операция. Открывать и закрывать их на каждый запрос? Ещё хуже. Я нашёл простой разбор тог
Подключения к базе данных — дорогая операция. Открывать и закрывать их на каждый запрос? Ещё хуже. Я нашёл простой разбор того, как на самом деле работает пул соединений и почему это важно. Ссылка: https://sagarshiroya.dev/posts/database-connection-and-pooling #Database #SystemDesign 👉 Java Portal

Spring Boot: избегай FetchType.EAGER, если в этом нет реальной необходимости. ❌ Пометка связи как EAGER заставляет ORM загруж
Spring Boot: избегай FetchType.EAGER, если в этом нет реальной необходимости. ❌ Пометка связи как EAGER заставляет ORM загружать её при каждой загрузке сущности, независимо от того, вызываешь ли ты метод этой связи на самом деле. #Springboot #РазработкаПО 👉 Java Portal

В Java, если нужно интегрировать полноценного агента, который умеет вызывать инструменты, запускать циклы, хранить контекст и поднимать веб-интерфейс для отладки, не стоит каждый раз собирать это с нуля — здесь уже есть готовый встраиваемый движок. Встраиваемый движок AI-агента для любого Java-приложения — CLI · REST API · веб Playground Базовая логика максимально простая: когда модели нужно вызвать инструмент, она выполняет его, записывает результат обратно в контекст и продолжает выполнение. Весь этот цикл упакован в Java-библиотеку и слой приложения на Spring Boot, поэтому его можно напрямую встроить в бизнес-систему или использовать как CLI, REST-сервис или веб Playground. 👉 Java Portal

Java: Если нужно читать небольшие файлы, можно использовать Files.readAllLines() — это более прямой и простой способ. #Spring
Java: Если нужно читать небольшие файлы, можно использовать Files.readAllLines() — это более прямой и простой способ. #SpringBoot #JavaDev 👉 Java Portal

Для тех кто просил, наш канал с мемами для программистов и айтишников 👇 https://t.me/+VS5COdLqY_s4OTYy

Java Generics — всё, что нужно знать 1. Box<T> → Обобщённый класс • Используй, когда класс работает с любым типом (например, обёртка вокруг любого объекта, как Box<User>, Box<Integer>). 2. <T> void print(T val) → Обобщённый метод • Используй, когда метод должен принимать любой тип (например, для печати любого объекта, логирования, сравнения и т.п.). 3. <T extends Number> → Ограниченный тип • Называется верхней границей. • Используй, когда тип должен быть подклассом чего-то (например, утилита для работы с int, double, float). 4. <T extends A & B> → Несколько ограничений • Заставляет T реализовывать и A, и B. • Используй, когда нужны обе особенности (например, сортировка объекта, который также требует валидации). 5. <?> → Неограниченный подстановочный тип • Это означает неизвестный тип. • Используй, когда не важен тип, нужно только читать (например, печать элементов из любого списка). 6. <? extends T> → Верхняя граница подстановочного типа • Означает некоторый подкласс T. • Используй при чтении из коллекции (например, чтение чисел из List<? extends Number> без модификации). 7. <? super T> → Нижняя граница подстановочного типа • Означает некоторый суперкласс T. • Используй при записи в коллекцию (например, добавление Integer в List<? super Integer>). 8. Правило PECS • Producer Extends, Consumer Super. • Используй extends для чтения, super для записи (например, API-вход против обработки ответа). 9. List list = new ArrayList(); → Сырой тип • Это сырой тип. • Избегай — тк теряется типовая безопасность (например, компилятор не поймает, если добавишь неверные типы). 10. Стирание типов • Java удаляет всю информацию об обобщениях во время выполнения. • Поэтому нельзя использовать T.class, new T(), или instanceof T (например, нельзя делать проверки или создавать объекты на основе T). 11. Обобщённый конструктор
<T> MyClass(T val) { }
• Используй, когда конструктору нужен обобщённый параметр, даже если сам класс не обобщённый (например, инициализация с динамическими типами). 12. Обобщённый интерфейс
interface Mapper<F, T> { T map(F input); }
• Используй при преобразовании одного типа в другой (например, DTO → сущность). 13. Нельзя использовать примитивы • Нельзя List<int> — только List<Integer>. • Используй обёртки (коллекции могут хранить только объекты, не примитивы). 14. Нельзя создавать массивы с обобщением • new T[] не работает. • Используй List<T> вместо (например, динамические коллекции). 15. Нельзя использовать подстановочные типы для вставки • Нельзя вставлять в List<? extends Number>. • Используй <? super Number>, если нужна вставка (например, для пакетной обработки или модификации коллекции). 👉 Java Portal

Вы предпочитаете аккуратно отформатированные текстовые блоки для аннотаций запросов при использовании Spring Data? https://spring.io/tools теперь умеет генерировать именно такие при преобразовании AOT-метаданных репозитория в аннотации запросов 👉 Java Portal

JavaDoc получил реальное улучшение удобства использования в Java 24. Парень написал практический туториал, который показывает, как использовать JavaDoc с Markdown через комментарии /// в небольшой библиотеке на Maven + JUnit, включая документацию пакетов, записи, запечатанные типы, генерацию JavaDoc и всплывающие подсказки в IDE. http://buff.ly/RmaVWSt #Java #Java24 #Javadoc #Maven 👉 Java Portal

Поставлено в JDK 22: JEP 454 добавил в Java стандартный API для работы с внешними функциями и памятью. Вызов нативного кода б
Поставлено в JDK 22: JEP 454 добавил в Java стандартный API для работы с внешними функциями и памятью. Вызов нативного кода больше не обязан начинаться с шаблонного кода JNI. Небольшой пример 👇

Совет по Java Spring Boot Если в JSON-запросе приходят лишние поля, приложение может упасть с ошибкой UnrecognizedPropertyExc
Совет по Java Spring Boot Если в JSON-запросе приходят лишние поля, приложение может упасть с ошибкой UnrecognizedPropertyException. Чтобы этого избежать и не ломать API, добавь аннотацию:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
    private String name;
    private int age;
}
👉 Java Portal

Java-Инженеры, наблюдающие, как все остальные вайбкодят приложения 👉 Java Portal

🇷🇺Разбираешься в радиочипах, оптике и связи? Забери до 2 000 000 рублей за свои инженерные навыки на турнире «Дронкон»🇷🇺
🇷🇺Разбираешься в радиочипах, оптике и связи? Забери до 2 000 000 рублей за свои инженерные навыки на турнире «Дронкон»🇷🇺 «Сталинские Соколы» открывают регистрацию на 3-й Всероссийский турнир «Дронкон», который пройдет с 8 по 14 мая. 2 направления для победы: - Инженерное дело: беспроводная связь, радиочипы и оптические системы + стратегия «Битва Дронов»; - Пилотирование: War Thunder, GeoGuessr и FPV-гонки + стратегия «Битва Дронов». Призовой фонд для победителей одной дисциплины: 🥇место – 2 000 000 рублей 🥈место – 1 500 000 рублей 🥉место – 1 000 000 рублей Награда за 4-8 места - 150 000 рублей Пройди заочный онлайн-этап и получи путевку на очный этап турнира в Республику Татарстан! Перелет, питание, проживание - за счет организаторов. 🇷🇺 Подать заявку и узнать подробности 🇷🇺

Java: используйте WeakHashMap для кэширования, когда ключи без ссылок должны удаляться сборщиком мусора. ❌В HashMap, пока существует сама мапа, ключи и связанные с ними значения не будут удаляться сборщиком мусора. ✅В WeakHashMap ключи хранятся через слабые ссылки, и если на ключ больше нет сильных ссылок в программе, сборщик мусора может его удалить, и он автоматически исчезнет из мапы. ✅Пример:
Map<User, String> map = new WeakHashMap<>();

User u1 = new User("Mick");
map.put(u1, "Cached data");
...
u1 = null;

// С этого момента ключ u1 доступен для сборки мусора.
#Java #JavaDev 👉 Java Portal

Spring Boot: есть возможность использовать стриминг (Stream<T>) для запросов с большими наборами данных. Результаты подтягиваются чанками, при этом в памяти одновременно находится только небольшая часть данных В следующем примере есть приложение с CommandLineRunner, которое сохраняет большой набор пользователей в базу данных, а затем обрабатывает данные через стрим:
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    CommandLineRunner run(UserRepository repo, UserService service) {
        return args -> {
            // Генерация тестовых данных
            for (int i = 1; i <= 10000; i++) {
                repo.save(new User("User_" + i));
            }

            // Обработка через стрим
            service.processUsers();
        };
    }
}
Метод processUsers работает в транзакции и использует метод репозитория streamAllUsers, который возвращает стрим:
@Service
public class UserService {

    private final UserRepository repository;

    @PersistenceContext
    private EntityManager em;

    public UserService(UserRepository repository) {
        this.repository = repository;
    }

    @Transactional(readOnly = true)
    public void processUsers() {
        AtomicInteger counter = new AtomicInteger();

        try (Stream<User> stream = repository.streamAllUsers()) {
            stream.forEach(user -> {
                System.out.println(user.getName());

                if (counter.incrementAndGet() % 100 == 0) {
                    em.clear();
                }
            });
        }
    }
}
public interface UserRepository extends JpaRepository<User, Long> {

    @Query("SELECT u FROM User u")
    Stream<User> streamAllUsers();
}
Важные моменты: - Нужно использовать транзакцию, иначе соединение может закрыться раньше времени и стрим оборвётся - Рекомендуется задать размер выборки через spring.jpa.properties.hibernate.jdbc.fetch_size=100, так как некоторые драйверы могут загрузить всё сразу - Стрим удерживает ресурсы базы данных, его обязательно нужно закрывать (через try-блок, как в примере) #SpringBoot #JavaDev 👉 Java Portal

Освой Java с нуля Этот бесплатный курс охватывает широкий спектр тем, начиная от базовых концепций, таких как переменные, массивы, условные операторы и циклы, до более сложных аспектов, включая ООП, работу с файлами, двумерные массивы и работу с базами данных. Материалы включают теоретические объяснения, практические примеры кода, и иногда задачи для самостоятельного выполнения ⛓Ссылка: тык 👉 Java Portal

🔴 Завтра тестовое собеседование с Java-разработчиком 15 апреля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собесе
🔴 Завтра тестовое собеседование с Java-разработчиком 15 апреля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Виктору Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.