Java Books (@java_library) — Telegram-канал | Telegram Dialogs
Все каналы
Java Books

Java Books

@java_library

14.3K подписчиков технологии

Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887

Последние публикации

Java Books
17.07.2026 12:03 · 👁 511
Кто-то разобрал Claude Code почти до винтика learn-coding-agent - репозиторий для тех, кто хочет понять, как устроены современные coding agents не на уровне промо-страниц, а на уровне архитектуры. Автор собрал разбор Claude Code по публичным источникам: цикл агента, систему инструментов, разрешения, работу с контекстом, сессии, подпроцессы, MCP, удалённые настройки, телеметрию и скрытые флаги. Получился не “гайд по использованию”, а карта внутренней логики CLI-агента: как он принимает решение, когда просит разрешение, как вызывает инструменты, как хранит историю и как расширяется через внешние интеграции. https://github.com/justxor/Claudecourse/
Java Books
17.07.2026 09:56 · 👁 562
Если хочешь развиваться в бэкенд-разработке — выстроить сильную базу, углубиться в архитектуру или перейти в роль тимлида — в Центральном университете есть магистратура под каждый сценарий. И на нее можно получить грант до 75%. Места ограничены, дедлайн подачи заявок — 20 августа. «Бэкенд-разработка» — это офлайн-направление (пары по вечерам и в выходные в центре Москвы) с тремя треками на выбор: ⚫️Технический — для студентов старших курсов и разработчиков в начале карьеры. Языки программирования, DevOps-инструменты, базы данных, архитектура ПО и распределенные системы. Программа ежегодно обновляется под реальные запросы компаний, а преподают разработчики, тимлиды и CTO из ведущих IT-компаний. К выпуску — сильное портфолио бэкенд-проектов ⚫️Совместный с MAGNIT TECH — обучение на реальных кейсах и архитектуре распределенных систем федерального масштаба, буткемп с экспертами компании и возможность выйти на оплачиваемую стажировку в техническую команду в течение первого года ⚫️Тимлидский — для опытных разработчиков, которые хотят перейти к роли руководителя команды: выстраивать процессы разработки, принимать архитектурные решения и развивать команду Магистратура в Центральном университете — это 2 года обучения, которое можно совмещать с работой, и диплом государственного образца. Карьерная поддержка начинается еще во время учебы: консультации, тренировочные собеседования и помощь с трудоустройством. Студенты уже в процессе обучения выходят на новые позиции или повышаются в грейде в Яндексе, Авито, Т-Банке и других компаниях. Поступление проходит через грантовый конкурс — это одновременно способ попасть на программу и возможность выиграть финансовую поддержку на все время обучения: грант покрывает до 75% стоимости. В 2026 году доступно 550 грантов на все программы магистратуры. Подробнее о программе и условиях участия в конкурсе — по ссылке
Java Books
09.07.2026 16:56 · 👁 1.9K
💡 Java: делегирование часто безопаснее наследования Наследование кажется удобным, пока суперкласс не начинает жить своей жизнью. Если класс наследуется от родителя, он получает весь его API. Любое изменение сверху может внезапно сломать поведение дочернего класса. С делегированием проще: объект хранит внутри helper/service и передаёт ему нужные вызовы. Плюсы: * меньше жёсткой связности * проще тестировать и мокать * легче менять реализацию * меньше риска сломаться из-за изменений в родителе Правило простое: наследуйтесь только когда связь is-a действительно железная. В остальных случаях чаще лучше композиция и делегирование.
Java Books
02.07.2026 19:35 · 👁 2.7K
N+1 в Spring Boot выглядит безобидно, пока прод не начинает молиться на базу данных. Классический сценарий: Вы грузите список заказов: orderRepository.findAll() А потом в цикле обращаетесь к order.getItems(). Hibernate сначала делает один запрос за заказами, а потом ещё по одному запросу на каждый заказ, чтобы достать items. 100 заказов = 101 SQL-запрос. И вот здесь спасает @EntityGraph. Он позволяет явно сказать репозиторию, какие связи нужно подтянуть сразу: @EntityGraph(attributePaths = {"items"}) В итоге Hibernate может сгенерировать один запрос с JOIN, вместо десятков лишних походов в базу. Что получаем: - меньше SQL-запросов - меньше нагрузки на БД - чище код репозитория - без ручного JPQL - fetch-стратегия управляется точечно под конкретный кейс LAZY сам по себе не зло. Зло - когда вы не контролируете, где и как он срабатывает. @EntityGraph - один из самых простых способов держать N+1 под контролем в Spring Boot.
Java Books
02.07.2026 17:10 · 👁 2.3K
Новая фича затрагивает десятки файлов? Тесты становятся сложнее самого кода? А когда бизнес меняет требования — приходится переписывать половину сервиса? Если это знакомо, то проблема, скорее всего, не в коде. 🚫 Проблема в архитектуре. 🔥 15 июля стартует практический курс по Domain-Driven Design и Clean Architecture на Java. За 6 недель вы научитесь: ✔️ Организовывать код так, чтобы новые требования не приводили к переписыванию половины сервиса ✔️ Изолировать бизнес-логику от HTTP, Kafka, БД и других технических деталей ✔️ Строить сервисы, которые проще поддерживать, тестировать и развивать ✔️ Писать тесты, которые проверяют поведение системы, а не набор моков ✔️ Добавлять новые интеграции без изменений в ядре приложения ✔️ Уверенно работать со сложной бизнес-логикой без постоянного роста технического долга Для этого на практике разберёте Domain-Driven Design, Aggregate, Entity и Value Object, освоите Domain Events, Clean Architecture, Hexagonal и Onion Architecture. 📦 На курсе вы соберёте полноценный сервис диспетчеризации заказов и получите готовый шаблон микросервиса, который сможете использовать в рабочих проектах. Автор курса — Кирилл Ветчинкин, архитектор Авито, ex Staff Engineer в Купер. 👉 Посмотрите первый модуль и оцените, насколько этот подход подходит для ваших проектов: https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2VtzqwyW4fK&utm_campaign=1 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwyW4fK
Java Books
27.06.2026 15:33 · 👁 2.8K
🖥 В Java длинные цепочки вроде `user → address → city` легко превращаются в ловушку для `NullPointerException`. Обычный вариант быстро разрастается: User user = userRepository.findByEmail(email); if (user != null) { Address address = user.getAddress(); if (address != null) { return address.getCity(); } } return "unknown"; Проблема не только в количестве строк. В таких вложенных if легко забыть один уровень проверки и получить NPE в самом неожиданном месте. С Optional это можно записать короче и безопаснее: return userRepository.findByEmail(email) .map(User::getAddress) .map(Address::getCity) .orElse("unknown"); Каждый map() выполняется только если предыдущее значение существует. Если пользователя нет, адреса нет или город не задан - цепочка спокойно дойдёт до orElse(). Для таких случаев Optional хорошо работает как способ явно показать: значение может отсутствовать, и это нормальная часть логики. Главное не превращать Optional в новую религию. Он особенно полезен на границах методов и в цепочках, где каждый следующий шаг может вернуть null.
Java Books
15.06.2026 21:19 · 👁 3.5K
✔️ Java-совет, который спасает от тихих утечек ресурсов. Если работаете с BufferedReader, InputStream, OutputStream, FileReader, соединениями или другими ресурсами, которые нужно закрывать, используйте try-with-resources. Плохо: BufferedReader reader = new BufferedReader(new FileReader("data.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); На первый взгляд всё нормально. Но если внутри чтения файла вылетит исключение, reader.close() может не выполниться. В итоге останутся открытые file handles, stream’ы или соединения. Лучше так: try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } try-with-resources автоматически вызовет close() даже при исключении. Почему это важно: * не нужен ручной finally * меньше boilerplate-кода * ниже риск утечек ресурсов * код проще читать * безопаснее работать с файлами, сетью и БД Правило простое: если объект реализует AutoCloseable или Closeable, почти всегда стоит использовать try-with-resources. Это одна из тех привычек, которые делают Java-код чище и надёжнее.
Java Books
01.06.2026 06:07 · 👁 4.3K
📌 Magic numbers в Java - мелкая привычка, которая потом превращает поддержку кода в археологию. Когда в коде встречается 86400, 7, 1.21 или 5000, компилятору всё равно. Человеку - нет. Через месяц уже приходится вспоминать, что это было: секунд в дне, дней сессии, НДС или задержка перед повторной попыткой. Плохой вариант выглядит так: if (sessionAgeSeconds > 86400 * 7) Формально код работает. Но смысл спрятан внутри чисел. Нормальный вариант: SECONDS_PER_DAY SESSION_DAYS VAT_RATE RETRY_DELAY_MS Теперь намерение видно прямо в месте вызова. Не нужно угадывать, почему именно 7, что означает 5000 и можно ли безопасно поменять значение. Это особенно важно в бизнес-логике, где числа редко бывают случайными. Лимиты, комиссии, таймауты, скидки, сроки жизни сессии, количество попыток - всё это правила продукта, а не просто цифры в коде. Хорошее правило простое: если число несёт смысл, дай ему имя. Исключения вроде 0, 1, индексов и простых счётчиков можно не трогать. Чистый код часто начинается не с архитектуры, а с таких скучных вещей: убрать загадочные числа и оставить будущему разработчику понятный контекст. #java #cleancode
Java Books
19.05.2026 12:05 · 👁 4.9K
N+1 в Spring Boot выглядит безобидно, пока прод не начинает молиться на базу данных. Классический сценарий: Вы грузите список заказов: orderRepository.findAll() А потом в цикле обращаетесь к order.getItems(). Hibernate сначала делает один запрос за заказами, а потом ещё по одному запросу на каждый заказ, чтобы достать items. 100 заказов = 101 SQL-запрос. И вот здесь спасает @EntityGraph. Он позволяет явно сказать репозиторию, какие связи нужно подтянуть сразу: @EntityGraph(attributePaths = {"items"}) В итоге Hibernate может сгенерировать один запрос с JOIN, вместо десятков лишних походов в базу. Что получаем: - меньше SQL-запросов - меньше нагрузки на БД - чище код репозитория - без ручного JPQL - fetch-стратегия управляется точечно под конкретный кейс LAZY сам по себе не зло. Зло - когда вы не контролируете, где и как он срабатывает. @EntityGraph - один из самых простых способов держать N+1 под контролем в Spring Boot.
Java Books
16.05.2026 10:42 · 👁 4K
Spring Boot: уберите try/catch из контроллеров В Spring Boot не нужно размазывать обработку ошибок по каждому endpoint через бесконечные try/catch. Для этого есть @RestControllerAdvice. Идея простая: вы выносите обработку исключений в один глобальный класс, а контроллеры оставляете чистыми. Например: @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<?> handleNotFound(ResourceNotFoundException ex) { return ResponseEntity .status(HttpStatus.NOT_FOUND) .body(new ErrorResponse("NOT_FOUND", ex.getMessage())); } @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity<?> handleBadRequest(IllegalArgumentException ex) { return ResponseEntity .badRequest() .body(new ErrorResponse("BAD_REQUEST", ex.getMessage())); } @ExceptionHandler(Exception.class) public ResponseEntity<?> handleGeneric(Exception ex) { return ResponseEntity .status(HttpStatus.INTERNAL_SERVER_ERROR) .body(new ErrorResponse("INTERNAL_ERROR", "Something went wrong")); } } После этого контроллер может выглядеть спокойно: @GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { return userService.findById(id); } Если пользователь не найден - сервис кидает ResourceNotFoundException, а Spring сам отправит нормальный 404. Что это даёт: • меньше мусора в контроллерах • единый формат ошибок • проще поддерживать API • легче логировать исключения • меньше копипасты в endpoint-ах Контроллер должен описывать сценарий запроса, а не превращаться в свалку обработки ошибок.
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.