| Канал | Публикаций | Подписчиков | Последний пост |
|---|---|---|---|
Библиотека Java разработ…
[telegram]
|
3 | 10275 | 13.05.26 |
|
Библиотека программиста …
[max]
|
9 | 1967 | 03.05.26 |
|
Библиотека программиста
[max]
|
9 | 1484 | 03.05.26 |
|
Python Разработка | Web …
[max]
|
9 | 2473 | 03.05.26 |
|
Библиотека PHP программи…
[max]
|
8 | 718 | 03.05.26 |
|
Хакер Free
[max]
|
9 | 2198 | 03.05.26 |
|
Frontend Разработка | Ja…
[max]
|
9 | 1354 | 03.05.26 |
| Канал | Публикаций | Подписчиков | Последний пост |
|---|---|---|---|
|
Bash Советы - Bash Scrip…
[max]
|
9 | 1861 | 03.05.26 |
|
Книги для программистов
[max]
|
9 | 2356 | 03.05.26 |
|
Программирование {BookFl…
[max]
|
9 | 2619 | 03.05.26 |
|
Python Разработка | Web …
[max]
|
9 | 2473 | 03.05.26 |
|
C++ Developer • Cpp Syst…
[max]
|
9 | 1892 | 03.05.26 |
|
Базы Данных (Data Base) …
[max]
|
9 | 2066 | 03.05.26 |
|
Frontend Разработка | Ja…
[max]
|
9 | 1354 | 03.05.26 |
Загрузка данных...
| Размещенный пост | Текст публиакции | Рекламирующий канал | Просмотры | Просмотры 24 ч | Прирост подписчиков |
|---|
Загрузка данных...
| Размещенный пост | Текст публикации | Рекламируемый канал | Просмотры | Просмотры 24 ч | Прирост подписчиков |
|---|
| Дата и время публикации | Текст публикации | Рекламируемый канал | Динамика просмотров | Всего просмотров |
|---|---|---|---|---|
| 2026-05-14 19:01:49 | 🚀 Используем Optional правильно в Java Сегодня разберем Optional – мощный инструмент, который помогает избежать NullPointerException. Но многие используют его неправильно! Давайте посмотрим, как его применять эффективно. ❌ Как делать НЕ надо: Optional<String> optional = Optional.ofNullable(getValue()); if (optional.isPresent()) { System.out.println(optional.get()); } Почему плохо? - get() без проверки – потенциальная ловушка. - Лишний if – можно сделать проще. ✅ Как надо: Optional.ofNullable(getValue()).ifPresent(System.out::println); или, если нужно значение по умолчанию: String value = Optional.ofNullable(getValue()).orElse("Default Value"); Крутые приемы с Optional: ✔ orElseGet – лениво вычисляет значение ✔ orElseThrow – выбрасывает исключение, если Optional пуст ✔ map и flatMap – позволяют трансформировать данные 🔥 Советы: 1️⃣ Не используйте Optional для полей классов – это не сериализуемо. 2️⃣ Не передавайте Optional в аргументах методов – это антипаттерн. 3️⃣ Optional хорош для возвращаемых значений – используйте его вместо null. 👉 @BookJava 🚀 Используем Opt… | — |
|
267 |
| 2026-05-13 11:00:03 | 🎥 Вебинар: «Основы Kubernetes: архитектура и абстракции» О чём поговорим: - Ключевые компоненты Kubernetes: контейнеры, поды, ноды, сервисы и их взаимодействие. - Как в Kubernetes происходит развертывание и управление микросервисами. - Принципы масштабируемости, отказоустойчивости и безопасности в Kubernetes. - Реальные кейсы использования Kubernetes для DevOps и архитекторов. Что вы получите: - Фундаментальное понимание структуры Kubernetes и его ключевых абстракций. - Навыки работы с необычными объектами для развертывания и масштабирования приложений. - Практические знания, которые можно сразу применить в работе. 👉 Для участия зарегистрируйтесь: https://vk.cc/cXJU55 🎁 Все участники вебинара получат специальные условия на полное обучение курса «Инфраструктурная платформа на основе Kubernetes» Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru 🎥 Вебинар: «Осно… | — |
|
294 |
| 2026-05-13 08:53:06 | 🧵 Разбираемся с CompletableFuture в Java Сегодня я хочу рассказать вам про CompletableFuture — мощный инструмент для работы с асинхронными операциями в Java. Если вам приходилось ждать выполнения долгих задач в коде и хотелось бы улучшить производительность, то этот пост для вас! 🚀 🔹 Что такое CompletableFuture? CompletableFuture — это часть java.util.concurrent с Java 8, которая позволяет выполнять асинхронные задачи и удобно комбинировать их. В отличие от обычного Future, CompletableFuture поддерживает цепочки вызовов, композицию задач и обработку ошибок. 🔹 Пример использования Допустим, у нас есть сервис, который загружает данные по сети. Обычный подход синхронного вызова будет блокировать поток, но с CompletableFuture мы можем избежать этого: import java.util.concurrent.CompletableFuture; public class CompletableFutureExample { public static void main(String[] args) { CompletableFuture.supplyAsync(() -> { System.out.println("Загружаем данные..."); sleep(2000); return "Данные загружены"; }).thenApply(data -> { System.out.println("Обрабатываем: " + data); return data.toUpperCase(); }).thenAccept(System.out::println) .exceptionally(ex -> { System.out.println("Ошибка: " + ex.getMessage()); return null; }); sleep(3000); // Даем время асинхронной операции завершиться } private static void sleep(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { e.printStackTrace(); } } } 🔹 Разбор кода 1️⃣ supplyAsync() — запускает асинхронную задачу в отдельном потоке. 2️⃣ thenApply() — позволяет обработать результат (например, изменить его формат). 3️⃣ thenAccept() — принимает готовый результат и выполняет действие. 4️⃣ exceptionally() — обрабатывает возможные ошибки. 🔹 Зачем это нужно? ✅ Улучшает производительность за счет асинхронного выполнения. ✅ Избегает блокировки основного потока. ✅ Позволяет легко комбинировать операции. 👉 @BookJava 🧵 Разбираемся с … | — |
|
328 |
| 2026-05-11 09:12:29 | 🚀 Параметры JVM: Какие ключевые стоит знать? Сегодня я покажу вам самые важные параметры JVM, которые помогут вам оптимизировать работу вашего Java-приложения. Эти флаги влияют на производительность, управление памятью и отладку. 🔥 Управление памятью: - -Xms<size> – задает начальный размер кучи. - -Xmx<size> – задает максимальный размер кучи. - -XX:NewRatio=<n> – определяет соотношение между молодым и старым поколением. - -XX:SurvivorRatio=<n> – соотношение между Eden и Survivor. ⚡ Гаражная сборка (GC): - -XX:+UseG1GC – включает G1 Garbage Collector (по умолчанию в Java 9+). - -XX:+UseParallelGC – включает Parallel GC. - -XX:+UseZGC – включает экспериментальный ZGC (минимальная пауза). - -XX:+UseShenandoahGC – еще один GC с низкими задержками. 🛠️ Диагностика и отладка: - -XX:+PrintGCDetails – подробный вывод информации о сборке мусора. - -XX:+HeapDumpOnOutOfMemoryError – дамп памяти при OOM. - -XX:HeapDumpPath=<path> – указывает путь для дампа памяти. - -XX:+ExitOnOutOfMemoryError – завершает JVM при OOM. 🏎️ Оптимизация JIT: - -XX:+TieredCompilation – адаптивная компиляция кода. - -XX:+UseStringDeduplication – уменьшает использование памяти строками. - -XX:+AlwaysPreTouch – аллокация памяти заранее (полезно для больших heap'ов). Попробуйте поэкспериментировать с этими параметрами и посмотрите, как они влияют на производительность вашего приложения! 👉 @BookJava 🚀 Параметры JVM:… | — |
|
433 |
| 2026-05-07 08:35:19 | 📝 Разбираем @Transactional в Spring: Где Подводные Камни? Давайте обсудимм одну из самых популярных аннотаций в Spring — @Transactional. Многие знают, что она используется для управления транзакциями, но не все понимают, как она работает под капотом и какие проблемы могут возникнуть. Давайте разбираться! 🔍 Как работает @Transactional? Когда вы помечаете метод @Transactional, Spring проксирует этот метод и оборачивает его в транзакцию. Это значит, что до начала метода открывается транзакция, а после — либо коммитится (если нет ошибок), либо откатывается (если есть исключение). Но тут важно помнить: 🔹 @Transactional работает только на public методах (если используется Spring AOP). 🔹 Вызовы методов внутри одного класса не учитывают @Transactional. Если вызвать метод, аннотированный @Transactional, внутри другого метода того же класса, транзакция не создастся. 🔹 По умолчанию, транзакция откатывается только при RuntimeException. Если бросить checked-исключение, Spring не откатит транзакцию. ⚠️ Распространённые ошибки ❌ Аннотация на private методе Транзакция просто не будет работать, так как Spring AOP не перехватит вызов. ❌ Вызов @Transactional метода внутри того же класса Транзакция не создастся, так как вызов происходит без участия Spring Proxy. Решение — выносить такие методы в отдельный бин или использовать TransactionTemplate. ❌ Неправильный rollback Если в методе выбрасывается checked-исключение, Spring по умолчанию не откатывает транзакцию. Чтобы изменить это поведение, нужно явно указать `@Transactional(rollbackFor = Exception.class). ✅ Как избежать проблем? ✔️ Всегда ставьте @Transactional на публичные методы. ✔️ Вызывайте @Transactional-методы только через Spring-управляемые бины. ✔️ Контролируйте rollback через rollbackFor. ✔️ Используйте propagation = REQUIRES_NEW, если хотите создать новую независимую транзакцию. 👉 @BookJava 📝 Разбираем @Tra… | — |
|
539 |
Загрузка данных...
| Время | Контент | Подписчиков | Кто ссылался | Просмотры 48ч | Просмотры 24ч |
|---|