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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Java Portal | Программирование

تُعد قناة Java Portal | Программирование (@java_iibrary) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 12 130 مشتركاً، محتلاً المرتبة 10 402 في فئة التكنولوجيات والتطبيقات والمرتبة 54 525 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 12 130 مشتركاً.

بحسب آخر البيانات بتاريخ 07 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -138، وفي آخر 24 ساعة بمقدار 2، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 11.37‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.26‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 379 مشاهدة. وخلال اليوم الأول يجمع عادةً 760 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل boot, string, void, архитектура, resttemplate.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 08 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

12 130
المشتركون
+224 ساعات
-287 أيام
-13830 أيام
أرشيف المشاركات
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 Реклама. О рекламодателе.

По умолчанию Spring Boot не включает stacktrace в ответах REST-сервисов. Только для целей быстрого дебага (не используйте это
По умолчанию Spring Boot не включает stacktrace в ответах REST-сервисов. Только для целей быстрого дебага (не используйте это в production) можно включить это через конфигурационное свойство include-stacktrace: always. #SpringBoot #JavaDev 👉 Java Portal

Прогрессивный практический туториал по изучению Agent Client Protocol (ACP) с использованием Java SDK: https://github.com/markpollack/acp-java-tutorial 👉 Java Portal

Spring Boot: Лучше использовать SpringBootTest.WebEnvironment.RANDOM_PORT вместо жёстко заданных портов в тестах, чтобы избеж
Spring Boot: Лучше использовать SpringBootTest.WebEnvironment.RANDOM_PORT вместо жёстко заданных портов в тестах, чтобы избежать конфликтов. #SpringBoot #JavaDev 👉 Java Portal

В SpringFramework 7.1 появится поддержка @MockitoBean и @MockitoSpyBean на параметрах конструктора теста Это работает с конст
+1
В SpringFramework 7.1 появится поддержка @MockitoBean и @MockitoSpyBean на параметрах конструктора теста Это работает с конструкторами в Java, но ещё удобнее с компактными конструкторами в Kotlin. Также это работает с так называемыми «test records» в Java. 🤓 👉 Java Portal

На Stepik добавили курс «Git с нуля» Этот курс закрывает всю обязательную базу по Git для работы в IT. Подойдёт для: - разраб
На Stepik добавили курс «Git с нуля» Этот курс закрывает всю обязательную базу по Git для работы в IT. Подойдёт для:
- разработчиков - девопсов, админов и безопасников - аналитиков, data- и ML-специалистов - тестировщиков - всех, кто хочет уверенно работать с Git в команде
Внутри вся основа, которая реально нужна на практике: от основ системы контроля версий и архитектуры Git до работы с ветками, merge, конфликтами и GitHub. Всё сразу закрепляется на практике с помощью заданий с автопроверкой Материал подаётся простым языком, шаг за шагом, с акцентом на понимание того, как Git работает под капотом, а не просто на запоминание команд После прохождения вы получите сертификат, который можно добавить в резюме В ближайшие 48ч курс доступен со скидкой 25% по промокоду «GIT25»: открыть курс на Stepik

💡Spring Boot: для чистых REST-контроллеров используйте @RestController вместо @Controller + @ResponseBody @RestController — это мета-аннотация, которая включает @ResponseBody, и затем автоматически применяется ко всем методам:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
}
❌С использованием @Controller и @ResponseBody:
@Controller
public class MyController {

    @ResponseBody
    @GetMapping("/hello")
    public String hello() {
        return "Hello!";
    }
}
✅ С использованием @RestController:
@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello!";
    }
}
#SpringBoot #CleanCode 👉 Java Portal

Java API Tip Безопасное приведение long к int Используй Math.toIntExact() — этот метод возвращает значение long, но выбрасыва
Java API Tip Безопасное приведение long к int Используй Math.toIntExact() — этот метод возвращает значение long, но выбрасывает ArithmeticException, если оно не помещается в int Без него преобразование произойдёт молча — и ты можешь получить некорректный результат без всяких ошибок. Используй toIntExact, когда важно контролировать переполнение 👉 Java Portal

Айтишники не рассказывают где учатся бесплатно и эффективно Никому не говори об этом канале!!! В сфере онлайн образования поя
Айтишники не рассказывают где учатся бесплатно и эффективно Никому не говори об этом канале!!! В сфере онлайн образования появился новый гигант «TERMINAL» который разрушит индустрию платных курсов Бесплатный доступ:
🔄Практические курсы и задания 🔄Книги и статьи от профи 🔄Полезные инструменты и ресурсы 🔄IT-новости и инсайды
Обучение по всем направлениям: SQL, Python, Frontend, PHP, C++, Golang, GIT, Linux, Java, кибербезопасность и др. Если ценишь знания подпишись: @Terminal_tg

Spring Boot: лучше избегать логирования внутри плотных циклов, так как это может повлиять на производительность приложения и привести к засорению лог-файлов. Пример:
for (Order order : orders) {
    log.info("Order {}", order.getId());
    process(order);
}
Если orders большой, это может замедлить обработку и засорить лог-файлы. Если логировать всё же нужно, лучше использовать уровень debug:
log.debug("Order: {}", order.getId());
Также можно добавить проверку, если требуется выполнить нетривиальные вычисления:
if (log.isDebugEnabled()) {
    log.debug("Order: {}", expensiveElaboration());
}
👉 Java Portal

#Java Совет: вы можете откатить транзакцию БД, созданную аннотацией @Transactional, получив текущий TransactionStatus через к
#Java Совет: вы можете откатить транзакцию БД, созданную аннотацией @Transactional, получив текущий TransactionStatus через класс TransactionAspectSupport и установив для него rollback через setRollbackOnly();. Таким образом, не нужно выбрасывать исключение. 👉 Java Portal

Spring Boot: можно валидировать конфигурационные классы с помощью аннотации @Validated. ✅ Это позволяет приложению падать на старте (fail fast), если конфигурация некорректна.
@Validated
@ConfigurationProperties(prefix = "app")
public class AppProperties {

    @NotBlank
    private String name;

    @Min(1)
    @Max(60)
    private int timeout;

    // getters/setters
}
#SpringBoot #JavaDev 👉 Java Portal

Один JEP, к которому стоит вернуться: JEP 485 в JDK 24. Он вводит gather(...) для стримов — новую промежуточную операцию для
Один JEP, к которому стоит вернуться: JEP 485 в JDK 24. Он вводит gather(...) для стримов — новую промежуточную операцию для преобразований, которые не укладываются в map, filter или flatMap. Небольшой пример 👇

Java 21 открывает новую эпоху конкурентности с виртуальными потоками — лёгкими потоками, управляемыми JVM, которые значительно повышают производительность I/O-bound приложений. Подробнее - https://lttr.ai/Ap1Np #Java #MongoDB #VirtualThread 👉 Java Portal

Большинство проектов на Spring Boot обрабатывают конфигурацию одинаково: плоские классы с @ConfigurationProperties, строковые имена свойств и надежда на то, что все прочитают README. В Apereo CAS — более 1000 свойств в 633 конфигурационных классах. Автор написал статью о том, как система конфигурации остаётся навигируемой при таком масштабе: https://medium.com/all-things-software/spring-boot-configuration-properties-at-scale-884f494721ac 👉 Java Portal

Совет по Java : Если нужно посчитать количество вхождений элемента в списке, можно использовать Collections.frequency(...). #
Совет по Java : Если нужно посчитать количество вхождений элемента в списке, можно использовать Collections.frequency(...). #Java #Collections 👉 Java Portal

Java Spring Boot: Не допускайте эту ошибку с фильтрами/интерцепторами Многие используют фильтры и интерцепторы неправильно Он
Java Spring Boot: Не допускайте эту ошибку с фильтрами/интерцепторами Многие используют фильтры и интерцепторы неправильно Они должны использоваться только для сквозных задач (то есть для того, что применяется ко ВСЕМ запросам) Примеры корректного использования: [Фильтры]: - CORS - Кодировка [Интерцепторы]: - Аутентификация/Авторизация - Метрики/Логирование - Локаль - Общие заголовки [Основная ошибка]: размещать там бизнес-логику Например: - выполнение запросов к базе данных - проверка подписок - сложная логика Почему это плохо: - выполняется для КАЖДОГО запроса - создаёт дополнительную нагрузку - нарушает архитектуру - усложняет тестирование Вывод: - интерцептор превращается в «мусорный слой» Как делать правильно: - бизнес-логика → в сервисах - контроллеры → оркестрация 👉 Java Portal

Совет по Java: начиная с Java 15 можно использовать String.formatted(...) для форматирования строк вместо String.format(...). Работает как String.format, но выглядит немного чище и понятнее: Вместо:
String message = String.format("Hello %s, you have %d messages", user, count);

System.out.println(String.format("Hello %s, you have %d messages", user, count));
Можно написать:
String message = "Hello %s, you have %d messages".formatted(user, count);

System.out.println("Hello %s, you have %d messages".formatted(user, count));
Также хорошо работает с многострочным форматированием:
String json = """
    {
        "user": "%s",
        "messages": %d
    }
    """.formatted(user, count);
👉 Java Portal