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 12 115 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 397-o'rinni va Rossiya mintaqasida 54 492-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

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

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

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 11.21% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.34% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 360 marta ko‘riladi; birinchi sutkada odatda 769 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 09 Iyun, 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.

12 115
Obunachilar
-524 soatlar
-307 kunlar
-13830 kunlar
Postlar arxiv
Если вам трудно дается java, это проблема навыков. 👉 Java Portal
Если вам трудно дается java, это проблема навыков. 👉 Java Portal

Аннотации в конструкторах Java . декларации и типы В языке программирования Java можно аннотировать конструкторы. Например, это часто используется в библиотеках для внедрения зависимостей :
@Inject
MyService(FooProcessor processor, BarLogger logger) {
  this.processor = processor;
  this.logger = logger;
}
В этом примере MyService — это конструктор некоего сервиса, и он помечен аннотацией @Inject. Эта аннотация сообщает DI-библиотеке, что нужно использовать именно этот конструктор для создания экземпляра сервиса. 🔸Аннотации деклараций и конструкторы В этом посте нас не интересуют сами DI-библиотеки — важно лишь то, что аннотацию @Inject можно ставить на уровне декларации конструктора. Если взглянуть на определение аннотации @Inject, то оно будет примерно таким:
@Target({METHOD, CONSTRUCTOR, FIELD})
@Retention(RUNTIME)
public @interface Inject {}
Здесь в @Target указано CONSTRUCTOR, что означает, что аннотацию можно применять к конструкторам. Так как @Inject применяется к декларациям, её называют аннотацией декларации 🔸Аннотации типов и конструкторы До недавнего времени я даже не знал, что конструкторы в Java можно аннотировать также и аннотациями типов. Я много раз просматривал конструкторы, но всё равно упускал, что тип конструктора тоже может быть аннотирован. Пример — создадим следующую аннотацию:
@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface T {}
Это аннотация @T, которая применяется только к типам (TYPE_USE). Также указана политика RUNTIME, чтобы можно было получить доступ к аннотации во время выполнения. Теперь применим её к конструктору:
static class Subject {
  public @T Subject() {}
}
Код компилируется без ошибок. Обрати внимание: класс Subjectвложенный (static class), не inner, поэтому используется модификатор static. 🔸Извлечение аннотации во время выполнения Для полноты картины — пример, как извлечь аннотацию типа с конструктора во время выполнения:
void main() throws NoSuchMethodException {
  final Class<?> type = Subject.class;

  final Constructor<?> constructor = type.getDeclaredConstructor();

  final AnnotatedType annotatedType = constructor.getAnnotatedReturnType();

  final Annotation[] typeAnnotations = annotatedType.getDeclaredAnnotations();

  print("Type annotations are:", typeAnnotations);
}

private void print(String msg, Annotation[] annotations) {
  System.out.println(msg);
  for (Annotation annotation : annotations) {
    System.out.println(annotation);
  }
}
Пошагово: 1. Получаем объект Constructor для конструктора класса Subject 2. Через getAnnotatedReturnType() получаем AnnotatedType, представляющий тип возвращаемого значения конструктора 3. Из AnnotatedType извлекаем все аннотации типа 4. Печатаем аннотации Пример вывода:
Type annotations are:
@TypeAnnotations2.T()
То есть конструктор действительно аннотирован аннотацией типа @T. В языке программирования Java тело конструктора не должно содержать операторов return с возвращаемым значением. Однако, подобно методу, возвращающему, скажем, объект Foo, конструктор тоже возвращает значение. Результатом вызова конструктора (если он завершается без исключений) является новый экземпляр объекта, тип которого — это тип класса, в котором объявлен данный конструктор. Таким образом, в объявлении конструктора присутствует использование типа — типа создаваемого объекта. А в Java можно аннотировать любое использование типа. Такие аннотации называются аннотациями типа Исходный код, использованный в этом посте, можно найти в этом [Gist] 👉 Java Portal

Как обработать 1 миллион API-запросов в минуту 1. Балансировка нагрузки Проблема: Один сервер не выдерживает 1M запросов/мин: перегрузка CPU и памяти, начинается дроп запросов. Решение: - Использовать балансировщик нагрузки (NGINX, HAProxy, AWS ELB) для распределения трафика между множеством серверов - Добавить проверки состояния , чтобы не направлять трафик на нерабочие инстансы - Настроить авто-масштабирование, чтобы запускать новые инстансы при всплеске трафика 2. Кеширование Проблема: Каждый запрос бьет по базе → база становится узким местом (исчерпание соединений, медленные запросы). Решение: Добавить уровни кеширования: - CDN для статических ресурсов (изображения, CSS, JS) - Redis/Memcached для повторяющихся запросов - Настроить правила инвалидации кеша, чтобы данные оставались актуальными > Вместо 1M запросов к базе, возможно, только 100K дойдут после кеширования. 3. Ограничение частоты запросов Проблема: Всплеск активности (например, от ботов или злоумышленников) перегружает инфраструктуру → хорошие пользователи получают 503. Решение: - Алгоритмы Token Bucket / Leaky Bucket: позволяют короткие всплески, но сохраняют стабильный поток - Разные лимиты для аутентифицированных и анонимных пользователей - Возвращать 429 Too Many Requests — корректно и информативно > Защищает инфраструктуру: один плохой пользователь не портит всё остальным. 4. Асинхронная обработка Проблема: Некоторые запросы тяжелые (обработка файлов, аналитика, отправка писем). Если делать их синхронно — ответ замедляется. Решение: - Выносить тяжёлые задачи в очередь (Kafka, RabbitMQ, SQS) - Отвечать сразу с кодом 202 Accepted, обработку запускать в фоне - Воркеры обрабатывают очередь и выполняют задачи > Пользователи получают быстрый ответ, тяжёлая работа происходит «за кулисами». 5. Мониторинг и обратное давление Проблема: Даже при использовании балансировки, кешей и очередей, резкие всплески могут вызвать каскадные сбои. Решение: - Мониторить глубину очередей, задержки при доступе к БД, hit rate кеша - Применять backpressure: замедлять запросы или отбрасывать нагрузку при приближении к лимитам - Настроить алерты: Prometheus/Grafana, Datadog, New Relic 👉 Java Portal

Привет. Вот тебе самые топовые каналы по 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