Команда «docker run -it»
Когда контейнеру Docker необходимо запустить интерактивное приложение, такое как оболочка, языковая REPL или текстовый редактор, команде «docker run» требуются два дополнительных флага: -i и -t.
👉 Java Portal
Когда контейнеру Docker необходимо запустить интерактивное приложение, такое как оболочка, языковая REPL или текстовый редактор, команде «docker run» требуются два дополнительных флага: -i и -t.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Java: Не делай поля публичными. Держи их
👉 Java Portal
private и используй геттеры/сеттеры для инкапсуляции. #Java #OOPPlease 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
→ https://github.com/keijeizei/httpmemes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7💊3❤1
Почему многопоточность — это сложно?
Многопоточность объединяет сразу несколько непростых концепций.
▪️ Concurrency (конкурентное выполнение)
Несколько задач выполняются одновременно или создают видимость одновременного выполнения. Из-за этого порядок выполнения становится непредсказуемым.
▪️ Synchronization (синхронизация)
Нужна для защиты общих данных от одновременного изменения несколькими потоками. Без неё возникают race condition, повреждение данных и трудноуловимые баги.
▪️ Coordination (координация)
Потоки часто зависят друг от друга. Нужно управлять порядком выполнения задач, ожиданием результатов и обменом данными между потоками.
▪️ Visibility (видимость изменений)
Один поток должен видеть изменения, которые внесли другие потоки. Из-за кэшей процессора, оптимизаций компилятора и переупорядочивания инструкций это происходит не всегда автоматически.
Именно сочетание этих проблем делает многопоточность сложной. Программа может работать правильно тысячу раз подряд и сломаться на тысяча первом запуске из-за другого порядка выполнения потоков.
👉 Java Portal
Многопоточность объединяет сразу несколько непростых концепций.
Несколько задач выполняются одновременно или создают видимость одновременного выполнения. Из-за этого порядок выполнения становится непредсказуемым.
Нужна для защиты общих данных от одновременного изменения несколькими потоками. Без неё возникают race condition, повреждение данных и трудноуловимые баги.
Потоки часто зависят друг от друга. Нужно управлять порядком выполнения задач, ожиданием результатов и обменом данными между потоками.
Один поток должен видеть изменения, которые внесли другие потоки. Из-за кэшей процессора, оптимизаций компилятора и переупорядочивания инструкций это происходит не всегда автоматически.
Именно сочетание этих проблем делает многопоточность сложной. Программа может работать правильно тысячу раз подряд и сломаться на тысяча первом запуске из-за другого порядка выполнения потоков.
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
Вышла open-source платформа: AI-агент подключается через MCP, сам находит ошибку и предлагает фикс, пока ты смотришь не на тот дашборд.
Неделю назад это был твой таск.
Называется Maple.
https://github.com/Makisuo/maple
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
Обычное хеширование:
Добавили 1 сервер
↓
Почти все ключи перераспределяются
Согласованное хеширование:
Добавили 1 сервер
↓
Перемещаются только ключи, находящиеся рядом с ним
Эта простая идея лежит в основе таких систем, как:
• Redis Cluster
• Apache Cassandra
• Amazon DynamoDB
• Memcached
Одна из самых важных концепций, на которых строятся масштабируемые распределённые системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
💡 Java: Ловите ошибки ещё на этапе компиляции, помечая переопределённые методы аннотацией
👉 Java Portal
@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
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
В этом подробном руководстве Джессика показывает, как реализовать собственный 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
freeCodeCamp.org
How to Build Your Own Circuit Breaker in Spring Boot – and Really Understand Resilience4j
This article explains how to design and implement your own circuit breaker in Spring Boot using explicit failure tracking, a scheduler-driven recovery model, and clear state transitions. Instead of relying solely on Resilience4j, we’ll walk through t...
👍6
До сих пор вручную собираешь шаблон проекта каждый раз, когда начинаешь что-то новое?
Я недавно наткнулся на Better-Fullstack — генератор, который помогает быстро поднять основу приложения и не тратить время на однотипную настройку.
Что умеет:
1️⃣ Поддерживает четыре основных экосистемы: TypeScript, Rust, Python и Go.
2️⃣ Более 270 комбинаций технологий, которые можно свободно комбинировать.
3️⃣ Позволяет выбрать фронтенд, бэкенд, базу данных, аутентификацию, платежи, AI-интеграции и DevOps-компоненты в одном месте.
4️⃣ Автоматически генерирует готовый каркас проекта, который можно использовать сразу после создания.
Главная польза не столько в экономии времени, сколько в том, что тебе не приходится снова и снова заниматься настройкой окружения. Вместо этого можно сосредоточиться на бизнес-логике и функциональности продукта.
Подойдёт для соло-разработчиков, команд с типовыми стек-требованиями и проектов с жёсткими сроками.
GitHub: https://github.com/Marve10s/Better-Fullstack
👉 Java Portal
Я недавно наткнулся на Better-Fullstack — генератор, который помогает быстро поднять основу приложения и не тратить время на однотипную настройку.
Что умеет:
1️⃣ Поддерживает четыре основных экосистемы: TypeScript, Rust, Python и Go.
2️⃣ Более 270 комбинаций технологий, которые можно свободно комбинировать.
3️⃣ Позволяет выбрать фронтенд, бэкенд, базу данных, аутентификацию, платежи, AI-интеграции и DevOps-компоненты в одном месте.
4️⃣ Автоматически генерирует готовый каркас проекта, который можно использовать сразу после создания.
Главная польза не столько в экономии времени, сколько в том, что тебе не приходится снова и снова заниматься настройкой окружения. Вместо этого можно сосредоточиться на бизнес-логике и функциональности продукта.
Подойдёт для соло-разработчиков, команд с типовыми стек-требованиями и проектов с жёсткими сроками.
GitHub: https://github.com/Marve10s/Better-Fullstack
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Marve10s/Better-Fullstack: Scaffold production-ready full-stack apps in TypeScript, Rust, Python, Go, and Java with a…
Scaffold production-ready full-stack apps in TypeScript, Rust, Python, Go, and Java with a visual builder and CLI. Choose your frontend, backend, database, auth, AI, payments, and DevOps integratio...
💊4
💡 Совет по Java: всегда закрывайте ресурсы вроде
👉 Java Portal
BufferedReader, InputStream и OutputStream через try-with-resources, чтобы избежать утечек памяти и ресурсов. #Java #BestPracticesPlease 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
Он получает запрос, перенаправляет его на сервер, принимает ответ и отправляет его обратно клиенту.
Это увеличивает пропускную способность, снижает задержки и оптимизирует использование ресурсов.
Они обеспечивают контроль за сетевым трафиком, снижая риски атак и угроз.
Дополнительно, они могут кэшировать контент для уменьшения нагрузки на сервер, сжимать данные для ускорения передачи и управлять SSL/TLS-шифрованием, разгружая веб-серверы.
Они упрощают взаимодействие клиентов с разными сервисами, добавляют защиту, применяют правила, переводят между веб-протоколами и агрегируют данные.
Идеально подходят для работы с микросервисной архитектурой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2