💡 Java: не используйте
❌
✅ Для координации используйте
✅ Для повторяющихся задач используйте
#Java #Concurrency
👉 Java Portal
Thread.sleep() для ожидания выполнения задачи — используйте синхронизацию или scheduler.❌
Thread.sleep() — это всего лишь предположение: выполнение может возобновиться слишком рано или слишком поздно✅ Для координации используйте
wait() / notify() или CountDownLatch✅ Для повторяющихся задач используйте
ScheduledExecutorService#Java #Concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💡 Spring Boot 4: включите Virtual Threads — ожидание HTTP requests станет менее ресурсоёмким.
✅ Установите
✅ Продолжайте использовать привычный код с
✅ Больше одновременных API-вызовов в ожидании и меньше тяжёлых OS threads
#SpringBoot4 #VirtualThreads
👉 Java Portal
✅ Установите
spring.threads.virtual.enabled=true✅ Продолжайте использовать привычный код с
RestClient✅ Больше одновременных API-вызовов в ожидании и меньше тяжёлых OS threads
#SpringBoot4 #VirtualThreads
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Интерактивные курсы по Git
GitHub запустила cборку онлайн курсов, где можно прокачать навыки работы с Git и GitHub бесплатно. Ветки, коммиты, pull request’ы, Actions и реальные командные сценарии.
Быстрый и лёгкий способ подтянуть базу и перестать гуглить «как откатить коммит» в неподходящий момент.
👉 Java Portal
GitHub запустила cборку онлайн курсов, где можно прокачать навыки работы с Git и GitHub бесплатно. Ветки, коммиты, pull request’ы, Actions и реальные командные сценарии.
Быстрый и лёгкий способ подтянуть базу и перестать гуглить «как откатить коммит» в неподходящий момент.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Если кто-то ещё не знает об этой легенде
TheAlgorithms/Java — огромный open-source репозиторий с реализациями алгоритмов и структур данных на чистом Java.
Сортировки, поиск, графы, динамическое программирование, структуры данных и многое другое — всё с исходным кодом, который можно разбирать и запускать самостоятельно.
Отличная база для прокачки алгоритмов, подготовки к собеседованиям и повторения Java.
https://github.com/thealgorithms/java
👉 Java Portal
TheAlgorithms/Java — огромный open-source репозиторий с реализациями алгоритмов и структур данных на чистом Java.
Сортировки, поиск, графы, динамическое программирование, структуры данных и многое другое — всё с исходным кодом, который можно разбирать и запускать самостоятельно.
Отличная база для прокачки алгоритмов, подготовки к собеседованиям и повторения Java.
https://github.com/thealgorithms/java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Большинство разработчиков знают базовую цепочку:
Но Git в production — совсем другая история. Что делать, если:
→ Нужно работать над новой feature, не затрагивая
→ Пока вы работали, в remote появились новые изменения?
→ Нужно перенести конкретный hotfix в release branch?
→ Неудачный commit уже попал в production?
→ Вы случайно потеряли commit?
→ Нужно найти commit, который привнёс bug?
Вот здесь особенно полезны:
Шпаргалка с командами, реальными use cases и примерами, которые действительно пригодятся в работе.
👉 Java Portal
git add → git commit → git pushНо Git в production — совсем другая история. Что делать, если:
→ Нужно работать над новой feature, не затрагивая
main?→ Пока вы работали, в remote появились новые изменения?
→ Нужно перенести конкретный hotfix в release branch?
→ Неудачный commit уже попал в production?
→ Вы случайно потеряли commit?
→ Нужно найти commit, который привнёс bug?
Вот здесь особенно полезны:
git fetchgit rebasegit cherry-pickgit revertgit refloggit bisectШпаргалка с командами, реальными use cases и примерами, которые действительно пригодятся в работе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
💡 Java: форматируйте код одинаково каждый раз
✅ Выберите единый code style и придерживайтесь его
✅ Автоматизируйте форматирование с помощью Spotless или Checkstyle в build
✅ Используйте format on save / CI, чтобы стиль кода не зависел от того, кто его написал
#Java #CleanCode
👉 Java Portal
✅ Выберите единый code style и придерживайтесь его
✅ Автоматизируйте форматирование с помощью Spotless или Checkstyle в build
✅ Используйте format on save / CI, чтобы стиль кода не зависел от того, кто его написал
#Java #CleanCode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
99% Java-разработчиков хотя бы раз допускали эту ошибку.
Всё работает... пока однажды не перестаёт. Использование
Самое безопасное правило простое: Используйте
Ставьте константу первой:
Так вы избежите
👉 Java Portal
Всё работает... пока однажды не перестаёт. Использование
== для сравнения String может казаться правильным во время тестирования из-за String interning, но такой код может сломаться, когда значения приходят из базы данных, REST API или пользовательского ввода.Самое безопасное правило простое: Используйте
.equals() для сравнения значений.Ставьте константу первой:
"SUCCESS".equals(status)
Так вы избежите
NullPointerException, даже если status == null. Такие небольшие привычки помогают предотвращать реальные баги в production.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
💡 Java: сортируйте с помощью
✅ Сортировка по полю в одну строку
✅ Используйте
✅ Работает с method references, например
👉 Java Portal
Comparator.comparing() и забудьте про громоздкий compare()✅ Сортировка по полю в одну строку
✅ Используйте
.thenComparing(...) для дополнительной сортировки при одинаковых значениях✅ Работает с method references, например
User::getLastNamePlease open Telegram to view this post
VIEW IN TELEGRAM
👍3
Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG»
Образовательная программа на Stepik по разработке современных AI-агентов.
Начинаем с Model Context Protocol: создаём MCP-серверы, подключаем инструменты и внешние API, а затем переходим к разработке Agentic RAG-систем с памятью, рассуждением, поиском знаний и оценкой качества.
• Model Context Protocol и MCP-серверы
• LangChain, LangGraph, LlamaIndex
• API, инструменты, ресурсы и промпты
• Классический RAG → Agentic RAG
• ReAct, память и планирование
• Графы знаний и свои инструменты
• Трассировка и подготовка к production
Успей, скидка 20% действует 48 часов
↗️ Начать обучение на Stepik
Образовательная программа на Stepik по разработке современных AI-агентов.
Начинаем с Model Context Protocol: создаём MCP-серверы, подключаем инструменты и внешние API, а затем переходим к разработке Agentic RAG-систем с памятью, рассуждением, поиском знаний и оценкой качества.
• Model Context Protocol и MCP-серверы
• LangChain, LangGraph, LlamaIndex
• API, инструменты, ресурсы и промпты
• Классический RAG → Agentic RAG
• ReAct, память и планирование
• Графы знаний и свои инструменты
• Трассировка и подготовка к production
Успей, скидка 20% действует 48 часов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤣1
Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого roadmap:
1. Java Fundamentals
• Syntax
• Data Types
• Control Flow
• Methods
2. Object-Oriented Programming
• Encapsulation
• Inheritance
• Polymorphism
• Abstraction
3. Core Java APIs
• Collections
• Generics
• Streams
• Exception Handling
4. Multithreading
• Threads
• Executors
• Synchronization
• CompletableFuture
5. Databases
• SQL
• JDBC
• Transactions
• Connection Pooling
6. Spring Boot
• Dependency Injection
• REST APIs
• Validation
• Configuration
7. Enterprise Development
• JPA/Hibernate
• Spring Security
• JWT
• Logging
8. Testing
• JUnit
• Mockito
• Integration Tests
• Testcontainers
9. Build & Deploy
• Maven/Gradle
• Git
• Docker
• CI/CD
10. Advanced Topics
• Microservices
• Redis
• Kafka
• Design Patterns
• System Design
Самая большая ошибка, которую часто допускают разработчики? Начинают изучать frameworks до того, как освоят Core Java. Разработчик, который хорошо понимает Java, сможет разобраться практически с любым framework. В обратную сторону это работает гораздо сложнее.
Сохраняйте roadmap и на каждом этапе делайте хотя бы один реальный проект. Именно так теория превращается в практические навыки.
👉 Java Portal
1. Java Fundamentals
• Syntax
• Data Types
• Control Flow
• Methods
2. Object-Oriented Programming
• Encapsulation
• Inheritance
• Polymorphism
• Abstraction
3. Core Java APIs
• Collections
• Generics
• Streams
• Exception Handling
4. Multithreading
• Threads
• Executors
• Synchronization
• CompletableFuture
5. Databases
• SQL
• JDBC
• Transactions
• Connection Pooling
6. Spring Boot
• Dependency Injection
• REST APIs
• Validation
• Configuration
7. Enterprise Development
• JPA/Hibernate
• Spring Security
• JWT
• Logging
8. Testing
• JUnit
• Mockito
• Integration Tests
• Testcontainers
9. Build & Deploy
• Maven/Gradle
• Git
• Docker
• CI/CD
10. Advanced Topics
• Microservices
• Redis
• Kafka
• Design Patterns
• System Design
Самая большая ошибка, которую часто допускают разработчики? Начинают изучать frameworks до того, как освоят Core Java. Разработчик, который хорошо понимает Java, сможет разобраться практически с любым framework. В обратную сторону это работает гораздо сложнее.
Сохраняйте roadmap и на каждом этапе делайте хотя бы один реальный проект. Именно так теория превращается в практические навыки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
💡 Java/Spring: отдавайте предпочтение constructor injection вместо
✅ Field injection скрывает обязательные dependencies
✅ Constructor injection делает зависимости явными
✅ Проще писать тесты: можно передать mocks напрямую, без запуска Spring context
#Java #SpringBoot
👉 Java Portal
@Autowired для полей.✅ Field injection скрывает обязательные dependencies
✅ Constructor injection делает зависимости явными
✅ Проще писать тесты: можно передать mocks напрямую, без запуска Spring context
#Java #SpringBoot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Шпаргалка по проектированию веб систем System Design 101
Подробное руководство по архитектуре веб‑сервисов, которое обязательно стоит сохранить. Это перевод статьи от ByteByteGo опубликованный на Хабре
Сохраняем за лайк❤️
👉 Java Portal
Подробное руководство по архитектуре веб‑сервисов, которое обязательно стоит сохранить. Это перевод статьи от ByteByteGo опубликованный на Хабре
Сохраняем за лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8❤6
Java-разработчики:
Почему
И какой здесь компромисс между расходом памяти и производительностью при resize?
👉 Java Portal
Почему
ArrayList увеличивает свою ёмкость примерно на 50%, когда заканчивается свободное место? Почему бы просто не удваивать capacity?И какой здесь компромисс между расходом памяти и производительностью при resize?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Java-разработчики, знаете разницу между Shallow Copy и Deep Copy?
Вы копируете объект, но что именно создаётся — независимая копия объекта или копия ссылок на вложенные объекты?
Shallow copy копирует ссылки на объекты, поэтому вложенные объекты продолжают указывать на те же области памяти. Deep copy создаёт новый объект и рекурсивно копирует всё его содержимое.
То есть shallow copy копирует структуру со ссылками на вложенные объекты, а deep copy создаёт независимую копию всего дерева объектов.
Вот пример на Java
👉 Java Portal
Вы копируете объект, но что именно создаётся — независимая копия объекта или копия ссылок на вложенные объекты?
Shallow copy копирует ссылки на объекты, поэтому вложенные объекты продолжают указывать на те же области памяти. Deep copy создаёт новый объект и рекурсивно копирует всё его содержимое.
То есть shallow copy копирует структуру со ссылками на вложенные объекты, а deep copy создаёт независимую копию всего дерева объектов.
Вот пример на Java
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Готовимся к System Design интервью уровня Middle и Senior
Полезный конспект по проектированию масштабируемых систем по книге Алекса Сюй System Design Interview.
Схемы, объяснения архитектурных решений и разборы популярных задач: от сокращения ссылок и ограничения частоты запросов до проектирования чатов и распределённых сервисов.
👉 Java Portal
Полезный конспект по проектированию масштабируемых систем по книге Алекса Сюй System Design Interview.
Схемы, объяснения архитектурных решений и разборы популярных задач: от сокращения ссылок и ограничения частоты запросов до проектирования чатов и распределённых сервисов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Java-разработчики, в чём разница между volatile и synchronized?
Многие используют их. Но все ли понимают, как они связаны с кешем CPU, видимостью изменений в памяти, атомарностью и взаимным исключением?
Вопрос: два потока выполняют
👉 Java Portal
Многие используют их. Но все ли понимают, как они связаны с кешем CPU, видимостью изменений в памяти, атомарностью и взаимным исключением?
volatile гарантирует видимость изменений между потоками. synchronized обеспечивает видимость и взаимное исключение: критическую секцию под одним и тем же монитором может выполнять только один поток за раз.Вопрос: два потока выполняют
count++, а переменная count объявлена как volatile. Потокобезопасен ли такой код? Почему?Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Многие разработчики используют Java каждый день. Но мало кто знает, почему он стал одним из самых успешных языков в мире.
Вот его основные особенности:
Независимость от платформы
Скомпилируйте код в байт-код один раз и запускайте его на любой машине с JVM.
Объектно-ориентированный подход
Всё строится вокруг классов и объектов, что упрощает организацию и сопровождение крупных приложений.
Надёжность
Автоматическая сборка мусора, строгая проверка типов и обработка исключений помогают избежать многих распространённых проблем во время выполнения.
Высокая производительность
JIT-компилятор (Just-In-Time) оптимизирует часто выполняемый код, обеспечивая скорость, близкую к нативной.
Многопоточность
Встроенные API для работы с конкурентностью упрощают параллельное выполнение нескольких задач.
Проверен на практике
Банковские системы, платформы электронной коммерции, Android-приложения и корпоративные бэкенды: Java лежит в основе критически важного ПО в самых разных отраслях.
👉 Java Portal
Вот его основные особенности:
Независимость от платформы
Скомпилируйте код в байт-код один раз и запускайте его на любой машине с JVM.
Объектно-ориентированный подход
Всё строится вокруг классов и объектов, что упрощает организацию и сопровождение крупных приложений.
Надёжность
Автоматическая сборка мусора, строгая проверка типов и обработка исключений помогают избежать многих распространённых проблем во время выполнения.
Высокая производительность
JIT-компилятор (Just-In-Time) оптимизирует часто выполняемый код, обеспечивая скорость, близкую к нативной.
Многопоточность
Встроенные API для работы с конкурентностью упрощают параллельное выполнение нескольких задач.
Проверен на практике
Банковские системы, платформы электронной коммерции, Android-приложения и корпоративные бэкенды: Java лежит в основе критически важного ПО в самых разных отраслях.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Бесплатные ресурсы для изучения Java
Конспект Effective Java — HugoMatilla/Effective-JAVA-Summary
Паттерны проектирования на Java — iluwatar/java-design-patterns
Подготовка к техническим собеседованиям — kdn251/interviews
Сохраняйте в закладки!
👉 Java Portal
Конспект Effective Java — HugoMatilla/Effective-JAVA-Summary
Паттерны проектирования на Java — iluwatar/java-design-patterns
Подготовка к техническим собеседованиям — kdn251/interviews
Сохраняйте в закладки!
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - HugoMatilla/Effective-JAVA-Summary: Summary of the book Effective Java 2nd Edition by Joshua Bloch
Summary of the book Effective Java 2nd Edition by Joshua Bloch - HugoMatilla/Effective-JAVA-Summary
Каждый Java-разработчик использует
Почему его ёмкость всегда равна степени двойки?
Почему не 10? Почему не 100? Почему Java увеличивает её именно так?
Что сломается или станет работать медленнее, если ёмкость будет равна 15, 30 или 100?
👉 Java Portal
HashMap. Но задумывались ли вы…Почему его ёмкость всегда равна степени двойки?
Почему не 10? Почему не 100? Почему Java увеличивает её именно так?
16 → 32 → 64 → 128 → 256Что сломается или станет работать медленнее, если ёмкость будет равна 15, 30 или 100?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1