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

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

Open in Telegram

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

Show more

📈 Analytical overview of Telegram channel Java Portal | Программирование

Channel Java Portal | Программирование (@java_iibrary) in the Russian language segment is an active participant. Currently, the community unites 11 772 subscribers, ranking 10 272 in the Technologies & Applications category and 54 543 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 772 subscribers.

According to the latest data from 28 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -148 over the last 30 days and by -2 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 10.12%. Within the first 24 hours after publication, content typically collects 5.78% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 191 views. Within the first day, a publication typically gains 680 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
  • Thematic interests: Content is focused on key topics such as boot, string, void, архитектура, resttemplate.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Thanks to the high frequency of updates (latest data received on 29 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

11 772
Subscribers
-224 hours
-267 days
-14830 days
Posts Archive
Привет. Вот тебе самые топовые каналы по IT! ⚙️ Free Znanija (IT) — Самая огромная коллекция платных курсов, которые можно скачать бесплатно; 👩‍💻 IT Books — Самая огромная библиотека книг; 💻 Hacking & InfoSec Base — Крутой блог белого хакера; 🛡 CyberGuard — Всё про ИБ; 🤔 ИБ Вакансии— Всё, чтобы найти работу в ИБ; 👩‍💻 linux administration — Всё про Линукс; 👩‍💻 Программистика — Python, python и ещё раз python; 👩‍💻 GameDev Base — Всё про GameDev; 🖥 Coding Base — Мемы, полезные репозитории и инструменты, а так же софт: 😆 //code — Самые топовые мемы по IT: А так же крутой блог админа: Rahol Jey | тг вайб

Карточки про синхронизаторы Java Синхронизаторы позволяют управлять потоками более гибко, мощно и безопасно, чем низкоуровнев
+9
Карточки про синхронизаторы Java Синхронизаторы позволяют управлять потоками более гибко, мощно и безопасно, чем низкоуровневые и примитивные synchronized, wait, notify и join Примеры использования: 🔸Ограничить количество одновременных действий 🔸Дождаться завершения нескольких потоков 🔸Запустить все потоки одновременно 🔸Обменяться данными между потоками 👉 Java Portal

Алгоритмы Bloom Filter - быстрый поиск при минимальном потреблении памяти 🔸Во многих системах поиска, хранения и обеспечения
Алгоритмы Bloom Filter - быстрый поиск при минимальном потреблении памяти 🔸Во многих системах поиска, хранения и обеспечения безопасности данных проверка принадлежности элемента к большому множеству это серьёзная задача. Алгоритм Bloom Filter предлагает эффективное решение этой проблемы: он использует компактные структуры данных и позволяет быстро проверять наличие элемента без необходимости хранить всё множество целиком. 🔸В основе Bloom Filter - битовый массив и несколько хеш-функций. При добавлении нового значения хеш-функции определяют позиции в массиве и устанавливают соответствующие биты в 1. При проверке, если все указанные позиции уже установлены в 1, существует высокая вероятность того, что элемент присутствует во множестве. Этот подход применяется в поисковых системах, кэшах вроде Redis, системах фильтрации спама и сетевых фильтрах. 🔸Если вам нужен эффективный способ для быстрой проверки принадлежности к большим наборам данных, Bloom Filter это лёгкое и высокопроизводительное решение. 👉 Java Portal

Инструменты для проектирования архитектуры ПО Лучшие бесплатные и платные инструменты для моделирования и создания архитектур
Инструменты для проектирования архитектуры ПО Лучшие бесплатные и платные инструменты для моделирования и создания архитектурных диаграмм.
➖ Инструменты моделирования: • Enterprise Architect • Archi • Structurizr • Carbide • StarUML • Aplas • GenMyModel • Gaphor • Archipeg • Astah • Mood ➖ Code-based инструменты • PlantUML • Structurizr • Ilograph • Graphviz • Mermaid • Diagrams ➖ Автоматизированные инструменты: • Brainboard • Hyperglance • Hava • Archium ➖ Инструменты для создания диаграмм: • Visio • Lucidchart • [Draw.io](http://draw.io) • Cloudcraft • isoflow • Visual Paradigm • Cacoo • Cloudviz • Excalidraw • CloudSkew • Figma • Whimsical • Miro • Mural • Sketch
Полный список: softwarearchitecture.tools 👉 Java Portal

Учись проектировать через объектно-ориентированные паттерны на Java. Интерактивный курс от профессора Computer Science Марка
Учись проектировать через объектно-ориентированные паттерны на Java. Интерактивный курс от профессора Computer Science Марка Махони. Освоишь: Composite Pattern, Observer Pattern, Visitor Pattern и другие. Интерактивный формат, всё по делу: Курс → https://freecodecamp.org/news/object-oriented-design-patterns-with-java/ 👉 Java Portal

Пишем асинхронный Java-код как синхронный Разрабатываешь на Java и устал от коллбэков, .thenApply(), .handle() и всей этой це
+1
Пишем асинхронный Java-код как синхронный Разрабатываешь на Java и устал от коллбэков, .thenApply(), .handle() и всей этой цепочки с CompletableFuture? Загляни в ea-async от Electronic Arts ea-async — это библиотека, которая позволяет писать асинхронный код в стиле обычного синхронного Java-кода, используя await() прямо как в JavaScript/TypeScript. Под капотом — bytecode instrumentation и CompletableFuture 👉 Java Portal

Вредные советы Java Автор показывает соблазн простого распараллеливания задач на Java через Stream API и .parallel() вместо я
Вредные советы Java Автор показывает соблазн простого распараллеливания задач на Java через Stream API и .parallel() вместо явных ExecutorService, Future, invokeAll и ручной обработки InterruptedException Однако такой подход использует common ForkJoinPool, и его поведение не всегда предсказуемо, результаты могут отличаться между запусками, особенно при исключениях в задачах (callsCounter может сильно варьироваться) Если в процессе одна из задач выбрасывает Exception, выполнение остальных может продолжаться даже после возврата ошибки. Параллельные стримы группируют задачи по частям коллекции, и минимальной единицей может быть блок из нескольких элементов, это может привести к «неравномерной» нагрузке и даже ухудшению производительности по сравнению с ручным управлением через ExecutorService. Блокирующие операции внутри задач могут полностью "забить" common ForkJoinPool, что повлияет и на выполнение CompletableFuture.thenApplyAsync(), если вы не указали свой Executor Читать подробнее<...> 👉 Java Portal

Загрузка Java-модуля во время выполнения Можно загрузить Java-модуль во время выполнения, создав экземпляр ModuleLayer:
// /tmp/ModuleLoad.java
void main() throws Exception {
    Path h2 = Path.of("/tmp/h2-2.3.232.jar");
    ModuleFinder before = ModuleFinder.of(h2);
    ModuleFinder after = ModuleFinder.of();
    Set<String> roots = Set.of("com.h2database");

    ModuleLayer parentLayer = ModuleLayer.boot();
    Configuration parentConf = parentLayer.configuration();
    Configuration conf = parentConf.resolve(before, after, roots);
    ClassLoader scl = ClassLoader.getSystemClassLoader();
    ModuleLayer layer = parentLayer.defineModulesWithOneLoader(conf, scl);

    ClassLoader cl = layer.findLoader("com.h2database");
    Class<?> c = cl.loadClass("org.h2.tools.Shell");
    Method main = c.getMethod("main", String[].class);
    Object args = new String[0];
    main.invoke(null, args);
}
Один из возможных кейсов — реализация плагин-системы в приложении. Другой кейс — запуск всего приложения через начальный загрузчик, выполняя:
java Way.java
Иными словами, файл Way.java выступает в роли скрипта, который: 🔸Загружает все необходимые JAR-файлы приложения. 🔸Загружает основной модуль приложения и запускает само приложение. Это базовая идея, лежащая в основе Objectos Start. 👉 Java Portal

Стратегии ветвления в Git При управлении кодом в разработке ПО выбор правильной стратегии ветвления напрямую влияет на команд
Стратегии ветвления в Git При управлении кодом в разработке ПО выбор правильной стратегии ветвления напрямую влияет на командную работу, интеграцию и процесс деплоя. Вот основные стратегии ветвления в Git: 1. Feature Branching (ветки под фичи) Создаётся отдельная ветка для каждой фичи или багфикса. Разработчики работают с этими ветками независимо, а после завершения и ревью — вливают изменения в основную ветку (обычно main или develop). Подходит для команд, где важен строгий код-ревью и фичи разрабатываются изолированно. 2. Gitflow Модель ветвления с чётким процессом управления релизами. Используются ветки develop, release, hotfix, feature — каждая со своей ролью в процессе разработки. Лучше всего подходит для крупных проектов с запланированными циклами релизов. 3. GitLab Flow Комбинирует идеи Feature Branching и Gitflow, но делает их проще. С акцентом на деплой и интеграцию с issue-трекингом и CI/CD. Стратегия включает основную ветку (main), которая отражает продакшен-код, и при необходимости — отдельные ветки под окружения (например, staging, production и т.д.). Подходит для команд, использующих GitLab и практики непрерывной поставки (CD). 4. GitHub Flow Лёгкий и понятный процесс на основе веток, отлично подходит под continuous deployment. Ветка main всегда должна быть в деплойном состоянии. Фичи разрабатываются в отдельных ветках от main, изменения проходят через pull request. Хороший выбор для небольших команд и проектов с постоянными поставками. 5. Trunk-Based Development Все разработчики коммитят напрямую в основную ветку (trunk). Фичевые ветки либо очень короткоживущие, либо не используются вовсе. Подходит для команд, практикующих CI/CD, и проектов, где приоритет — скорость разработки. Если ты только начинаешь работать с Git — начни с простой стратегии вроде GitHub Flow и эволюционируй по мере роста команды и сложности проекта. Для больших команд или сложных процессов лучше использовать более структурированные подходы, такие как Gitflow или GitLab Flow. Независимо от выбранной стратегии ветвления, важно: - Настроить автоматическое тестирование, чтобы быстрее ловить баги. - Согласовать стандарты по commit-сообщениям, нейминг веток и процессам слияния. 👉 Java Portal

Российский программист OpenAI Олег Миллер создал канал «Доктор GPT» о последних разработках в сфере ИИ. ❖ Инструменты для раб
Российский программист OpenAI Олег Миллер создал канал «Доктор GPT» о последних разработках в сфере ИИ. ❖ Инструменты для работы, творчества и развлеченийНейросети без ограничений и цензуры [18+]Проекты, которые изменят жизнь всего человечества Подпишись, ничего интереснее про ИИ в Telegram просто нет: https://t.me/+kcFCzv8uRQBkYWUy

Модель памяти в Java Java управляет памятью в двух основных областях: - Stack (стековая память) — хранит фреймы вызова методо
Модель памяти в Java Java управляет памятью в двух основных областях: - Stack (стековая память) — хранит фреймы вызова методов и локальные переменные. Работает быстро и автоматически очищается при выходе из метода. - Heap (куча) — используется для хранения объектов, созданных через new. Управляется сборщиком мусора (Garbage Collector), работает медленнее, но даёт больше гибкости. ➡️Объекты всегда размещаются в куче (heap). ➡️Ссылки на эти объекты (например, локальные переменные) хранятся в стеке (stack). ➡️Неправильное управление созданием объектов или удержание ссылок дольше, чем нужно, может привести к утечкам памяти (memory leaks).
public class MemoryDemo {
    public static void main(String[] args) {
        int x = 10; // Хранится в стеке
        Person p = new Person("Alice"); // 'p' находится в стеке, объект — в куче

        p.sayHello(); // Вызов метода создаёт новый стек-фрейм
    }
}

class Person {
    String name; // Поле хранится в куче вместе с объектом

    Person(String name) {
        this.name = name;
    }

    void sayHello() {
        System.out.println("Hello, " + name);
    }
}
👉 Java Portal

Топ 20 команд Git, которые нужно знать 1. git init — Создать новый репозиторий в текущей директории. 🔸Пример: git init my-ne
Топ 20 команд Git, которые нужно знать 1. git init — Создать новый репозиторий в текущей директории. 🔸Пример: git init my-new-project 2. git branch — Создать локальную ветку. 🔸Пример: git branch feature/login 3. git checkout — Переключиться на другую ветку. 🔸Пример: git checkout feature/login 4. git add — Добавить файлы в индекс (staging area) для коммита. 🔸Пример: git add file.js 5. git commit — Зафиксировать добавленные изменения. 🔸Пример: git commit -m "Fix navigation bug" 6. git pull — Обновить локальную ветку с удалённого репозитория. 🔸Пример: git pull origin main 7. git push — Отправить локальные коммиты в удалённый репозиторий. 🔸Пример: git push origin main 8. git status — Показать состояние файлов (изменённые, добавленные, удалённые и т.д.). 🔸Пример: git status 9. git diff — Показать разницу между версиями. 🔸Пример: git diff HEAD~1 HEAD 10. git log — Посмотреть историю коммитов. 🔸 Пример: git log --oneline --graph 11. git clone — Скопировать удалённый репозиторий локально. 🔸 Пример: git clone https://github.com/user/repo.git 12. git merge — Объединить ветки. 🔸Пример: git merge feature/login 13. git rebase — Перенести коммиты на другую базу (ветку). 🔸Пример: git rebase main 14. git stash — Временно сохранить изменения, не готовые к коммиту. 🔸Пример: git stash push -m "WIP login" 15. git fetch — Скачивать объекты из удалённого репозитория без слияния. 🔸Пример: git fetch origin 16. git reset — Переместить HEAD или убрать файлы из индекса. 🔸Пример: git reset --hard HEAD~1 17. git revert — Создать новый коммит, отменяющий предыдущие изменения. 🔸Пример: git revert 1a2b3c4 18. git cherry-pick — Применить конкретный коммит на текущую ветку. 🔸Пример: git cherry-pick 1a2b3c4 19. git remote — Управление удалёнными репозиториями. 🔸Пример: git remote add origin git@github.com:user/repo.git 20. git tag — Пометить контрольные точки релизов. 🔸Пример: git tag -a v1.0 -m "Initial release" 👉 Java Portal

Если ты изучаешь Java или хочешь прокачать навыки, обрати внимание на JBook — это интерактивная книга по Java, доступная прямо на GitHub. Что внутри: 🔸Подробное объяснение основ языка Java; 🔸Примеры кода с пояснениями; 🔸Упражнения для закрепления знаний; 🔸Поддержка Jupyter Notebook + Java (IJava kernel) — можно запускать код прямо в браузере GitHub: https://github.com/qcha/JBook 👉 Java Portal

Java API (не из Spring Boot), которые стоит знать 1. Java Streams API 🔸API для функциональной работы с коллекциями — фильтрация, преобразование, агрегация и пр. 2. Files & NIO.2 (java.nio.file) 🔸Мощное и современное API для работы с файлами и директориями. 3. java.time (Date and Time API) 🔸Новая система работы с датой и временем (введена в Java 8) — безопаснее и удобнее, чем Date/Calendar. 4. JUnit 5 Фреймворк для модульного тестирования с расширенными возможностями и гибкой архитектурой. 5. java.util.concurrent (Concurrency API) 🔸API для реализации многопоточности, синхронизации и конкурентных структур данных. 6. java.net.http (HTTP Client API) 🔸Стандартный HTTP-клиент для отправки запросов и получения ответов (введён в Java 11). 7. Process API (java.lang.ProcessHandle) 🔸Позволяет управлять и отслеживать системные процессы: получать PID, статус, время запуска и пр. 👉 Java Portal

Слышал когда-нибудь про объект, который отказывается умирать? В Java можно «воскресить» объект во время сборки мусора с помощ
Слышал когда-нибудь про объект, который отказывается умирать? В Java можно «воскресить» объект во время сборки мусора с помощью метода finalize(). Но это — рискованная практика, и сам метод уже помечен как устаревший. Этот код демонстрирует поведение метода finalize() в Java — он вызывается только один раз перед удалением объекта сборщиком мусора. В первой попытке объект «воскрешается» внутри finalize, но при повторной попытке finalize уже не вызывается, и объект действительно удаляется. 👉 Java Portal

Объяснение 8 популярных сетевых протоколов в одной диаграмме. 👉 Java Portal
Объяснение 8 популярных сетевых протоколов в одной диаграмме. 👉 Java Portal

Сохраняем себе: Jimmer это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями. 🔹Авто-ге
Сохраняем себе: Jimmer это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями. 🔹Авто-генерация DTO 🔹Без N+1 (batch fetch из коробки) 🔹Умные SQL без лишних JOIN'ов 🔹DSL с type-safety 🔹GraphQL + TypeScript-генерация 🔹Кеширование (включая Redis) 🔹Работает через APT/KSP ⇢ https://github.com/babyfish-ct/jimmer 👉 Java Portal

Вопросы на собеседование по Spring Boot 1. Как Spring Boot определяет, какие бины создавать при автоконфигурации? 2. Для чего используется аннотация @ConditionalOnProperty? 3. Как реализовать пользовательскую валидацию в Spring Boot с помощью аннотаций? 4. Как @Transactional обрабатывает вложенные транзакции? 5. В чём разница между application.properties и application.yml в Spring Boot? 6. Как вынести конфигурацию Spring Boot для разных окружений (environments)? 7. Что такое WebClient в Spring Boot и чем он отличается от RestTemplate? 👉 Java Portal

Выделение памяти в Java В Java память по умолчанию выделяется в куче с помощью new. Это просто, управляется сборщиком мусора
Выделение памяти в Java В Java память по умолчанию выделяется в куче с помощью new. Это просто, управляется сборщиком мусора и подходит для большинства приложений. Но если нужны высокая производительность или низкие задержки, можно использовать off-heap память через ByteBuffer.allocateDirect(). Такой подход выделяет память вне кучи, снижает нагрузку на GC и повышает эффективность при работе с большими или долго живущими данными. Off-heap даёт больше контроля и производительности, но требует аккуратного управления ресурсами, так как такая память не очищается автоматически, в отличие от памяти в куче. 👉 Java Portal

Как выдержать нагрузку в 10 000 одновременных пользователей 1. Поставь балансировщик нагрузки (Load Balancer) спереди - Распределяй трафик между несколькими backend-серверами. - Инструменты: NGINX, HAProxy, AWS ELB. 2. Масштабируй горизонтально - Один мощный сервер — нет. - Используй несколько небольших stateless-серверов за LB. 3. Пиши stateless-сервисы - Не храни сессии или состояние в оперативке. - Используй Redis / Memcached или JWT для сессий и авторизации. 4. Используй connection pooling - Базы «захлебываются» от 10 000 одновременных подключений. - Ограничь число подключений к БД с каждого сервера через пул (например, HikariCP). 5. Активно кэшируй Кешировать можно: - Static files → CDN - DB-запросы → Redis - HTML-фрагменты → Edge cache 6. Используй read-replicas - Разделяй чтение и запись, чтобы масштабировать чтение из базы. 7. Async и очереди (Queued Workloads) - Переноси тяжёлые задачи (почта, видео и т.д.) в background jobs. - Используй очереди: SQS, RabbitMQ, Kafka. 8. Включи авто-масштабирование - Используй инфраструктуру, способную масштабироваться под нагрузку: AWS EC2 + ASG, GCP GKE и т.д. 9. WebSocket / Реалтайм? Используй gateway-сервисы - Запускай WebSocket-шлюзы (например, Socket.io за LB). - Масштабируй через sticky-сессии или pub/sub (Redis, Kafka). 10. Мониторь всё - Отслеживай CPU, память, задержки, глубину очередей. - Инструменты: Prometheus + Grafana, Datadog, New Relic. 👉 Java Portal