Java Portal | Программирование
12.1K subscribers
1.4K photos
109 videos
43 files
1.42K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Команда «docker run -it»

Когда контейнеру Docker необходимо запустить интерактивное приложение, такое как оболочка, языковая REPL или текстовый редактор, команде «docker run» требуются два дополнительных флага: -i и -t.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Java: Не делай поля публичными. Держи их private и используй геттеры/сеттеры для инкапсуляции. #Java #OOP

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Вот забавный ресурс для изучения HTTP-кодов через мемы: 200, 404, 500 и компании. Отличный способ запомнить коды без скучных таблиц.

https://github.com/keijeizei/httpmemes

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7💊31
Почему многопоточность — это сложно?
Многопоточность объединяет сразу несколько непростых концепций.

▪️Concurrency (конкурентное выполнение)
Несколько задач выполняются одновременно или создают видимость одновременного выполнения. Из-за этого порядок выполнения становится непредсказуемым.
▪️Synchronization (синхронизация)
Нужна для защиты общих данных от одновременного изменения несколькими потоками. Без неё возникают race condition, повреждение данных и трудноуловимые баги.
▪️Coordination (координация)
Потоки часто зависят друг от друга. Нужно управлять порядком выполнения задач, ожиданием результатов и обменом данными между потоками.
▪️Visibility (видимость изменений)
Один поток должен видеть изменения, которые внесли другие потоки. Из-за кэшей процессора, оптимизаций компилятора и переупорядочивания инструкций это происходит не всегда автоматически.

Именно сочетание этих проблем делает многопоточность сложной. Программа может работать правильно тысячу раз подряд и сломаться на тысяча первом запуске из-за другого порядка выполнения потоков.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
This media is not supported in your browser
VIEW IN TELEGRAM
Твой бэкенд теперь умеет говорить.

Вышла open-source платформа: AI-агент подключается через MCP, сам находит ошибку и предлагает фикс, пока ты смотришь не на тот дашборд.

Неделю назад это был твой таск.

Называется Maple.

https://github.com/Makisuo/maple

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
image_2026-06-14_11-48-52.png
1.4 MB
Сегодняшняя концепция: Consistent Hashing (согласованное хеширование)

Обычное хеширование:
Добавили 1 сервер

Почти все ключи перераспределяются

Согласованное хеширование:
Добавили 1 сервер

Перемещаются только ключи, находящиеся рядом с ним

Эта простая идея лежит в основе таких систем, как:
• Redis Cluster
• Apache Cassandra
• Amazon DynamoDB
• Memcached

Одна из самых важных концепций, на которых строятся масштабируемые распределённые системы.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
💡 Java: Ловите ошибки ещё на этапе компиляции, помечая переопределённые методы аннотацией @Override. #Java #Annotations

//  Опечатка в имени метода — код компилируется,
// но вы НЕ переопределили toString()

public class User {
private final String name;

public User(String name) {
this.name = name;
}

public String toStrng() { // хотели toString()
return name;
}
}

// Баг остаётся незамеченным — println(user)
// не будет использовать ваш метод



// @Override превращает опечатку в ошибку компиляции

public class User {
private final String name;

public User(String name) {
this.name = name;
}

@Override
public String toString() {
return "User(" + name + ")";
}
}

// @Override
// public String toStrng() { ... }
//
// Ошибка компиляции:
// method does not override or implement a method from a supertype


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Circuit Breaker — это паттерн отказоустойчивости, который предотвращает постоянные попытки выполнить операцию, если она с высокой вероятностью завершится ошибкой.

В этом подробном руководстве Джессика показывает, как реализовать собственный Circuit Breaker в Spring Boot.

Из статьи ты узнаешь:

- зачем нужны Circuit Breaker;
- как обеспечиваются гарантии конкурентного доступа и переходов между состояниями;
- как отслеживать и учитывать ошибки;
- как устроена логика срабатывания Circuit Breaker;
- и многое другое.

Источник: https://freecodecamp.org/news/how-to-build-your-own-circuit-breaker-in-spring-boot-and-really-understand-resilience4j/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
До сих пор вручную собираешь шаблон проекта каждый раз, когда начинаешь что-то новое?

Я недавно наткнулся на Better-Fullstack — генератор, который помогает быстро поднять основу приложения и не тратить время на однотипную настройку.

Что умеет:

1️⃣ Поддерживает четыре основных экосистемы: TypeScript, Rust, Python и Go.

2️⃣ Более 270 комбинаций технологий, которые можно свободно комбинировать.

3️⃣ Позволяет выбрать фронтенд, бэкенд, базу данных, аутентификацию, платежи, AI-интеграции и DevOps-компоненты в одном месте.

4️⃣ Автоматически генерирует готовый каркас проекта, который можно использовать сразу после создания.

Главная польза не столько в экономии времени, сколько в том, что тебе не приходится снова и снова заниматься настройкой окружения. Вместо этого можно сосредоточиться на бизнес-логике и функциональности продукта.

Подойдёт для соло-разработчиков, команд с типовыми стек-требованиями и проектов с жёсткими сроками.

GitHub: https://github.com/Marve10s/Better-Fullstack

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
💊4
💡 Совет по Java: всегда закрывайте ресурсы вроде BufferedReader, InputStream и OutputStream через try-with-resources, чтобы избежать утечек памяти и ресурсов. #Java #BestPractices

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
В чем разница между балансировщиками нагрузки, обратными прокси и API-шлюзами?

🍩Балансировщик нагрузки распределяет клиентские запросы между серверами, выбирая их по алгоритму, чтобы равномерно распределять нагрузку, избегать перегрузок и обеспечивать стабильную работу системы.

Он получает запрос, перенаправляет его на сервер, принимает ответ и отправляет его обратно клиенту.

Это увеличивает пропускную способность, снижает задержки и оптимизирует использование ресурсов.

🍩Обратные прокси работают как посредники между клиентами и серверами, обрабатывая запросы и передавая данные, скрывая серверы и повышая их безопасность.

Они обеспечивают контроль за сетевым трафиком, снижая риски атак и угроз.

Дополнительно, они могут кэшировать контент для уменьшения нагрузки на сервер, сжимать данные для ускорения передачи и управлять SSL/TLS-шифрованием, разгружая веб-серверы.

🍩API-шлюзы работают как единая точка входа для всех API-запросов, направляя их к нужным микросервисам и собирая результаты.

Они упрощают взаимодействие клиентов с разными сервисами, добавляют защиту, применяют правила, переводят между веб-протоколами и агрегируют данные.

Идеально подходят для работы с микросервисной архитектурой.

👉 @BackendPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2