Java библиотека

Java библиотека

@javalib

Книги, статьи, мемы и многое другое для Java программиста!По сотрудничеству и рекламе: @NadikaKirКанал в перечне РКН: https://vk.cc/cJrT4AМы на бирже: https://telega.in/c/javalib/Сообщество VK https://vk.com/javatutorial

30 998подписчиков
Несколько раз в день🇷🇺

Похожие каналы

Все →

Последние посты

ORM — есть ли профит? Особенно когда по двору бегает ИИ-шкаORM — Object-Relational Mapping — Объектно-реляционное отображение — это технология, позволяющая связывать SQL-ые БД с ООП кодом. Самая известная из них — Hibernate.Hibernate — очень красивая технология. Она формирует ощущение магии.Ты просто создаёшь объект, — хлабысь! — он уже в базе данных. Никакого SQL, никаких соединений, никаких ResultSet. Всё происходит как будто само собой. Прелесть.Именно поэтому отказаться от Hibernate так тяжело.Читать статьюНаш канал в Макс 🟪

29 июн. 2026 г.2 060В Telegram
Java библиотека — пост в ТГ канале

👩‍💻 Java совет: избегай глубоких if-else - используй guard clausesОдна из самых частых проблем в Java-коде глубоко вложенные условия. Код формально работает, но читать и поддерживать его тяжело.❌ Плохо: вложенные if-else - сложно читать- логика размазана- любая правка превращается в боль✅ Хорошо: guard clauses (ранние выходы) - проверки сразу отсекают невалидные состояния- основной сценарий читается сверху вниз- код короче и понятнееПочему guard clauses — это профессиональный подход:- уменьшают когнитивную нагрузку- делают бизнес-логику очевидной- упрощают рефакторинг и тестирование- отлично сочетаются с fail-fast философиейПравило простое: если условие — это ошибка или исключение из нормального потока, проверь его сразу и выйди из метода.Так код становится:- линейным- предсказуемым- удобным для поддержкиМелочь на уровне синтаксиса, но огромная разница на уровне качества кода.

29 июн. 2026 г.2 500В Telegram
Java библиотека — пост в ТГ канале

Совет по Java Spring BootЕсли в JSON-запросе приходят лишние поля, приложение может упасть с ошибкойUnrecognizedPropertyException.Чтобы этого избежать и не ломать API, добавь аннотацию:@JsonIgnoreProperties(ignoreUnknown = true)public class UserDTO { private String name; private int age;}Подписывайся на наш канал в Max 🟪

28 июн. 2026 г.2 460В Telegram

❓Вопрос с собеседования Что такое livelock?Ответ: livelock — тип взаимной блокировки, при котором несколько потоков выполняют бесполезную работу, попадая в зацикленность при попытке получения каких-либо ресурсов. Реальный пример livelock — когда два человека встречаются в узком коридоре и каждый, пытаясь быть вежливым, отходит в сторону, и так они бесконечно двигаются из стороны в сторону.Подписывайся на наш канал в Max 🟪

28 июн. 2026 г.2 200В Telegram
Java библиотека — пост в ТГ канале

75 вопросов и ответов на собеседование по Spring🌐🗣СМОТРЕТЬ VKVIDEO📺🗣СМОТРЕТЬ RUTUBE🎞🗣СМОТРЕТЬ YOUTUBEПодписывайся на наш канал в Max 🟪

28 июн. 2026 г.2 270В Telegram

👩‍💻 Магия IntelliJ IDEAЕсли используешь Ctrl + P (подсказка параметров метода), то вот ещё один полезный хот кей: Shift + Ctrl + I → быстрый просмотр определения.🟢Зачем это нужно— Позволяет посмотреть реализацию метода/класса/интерфейса без перехода в другой файл.— Работает с любыми символами: методами, переменными, константами, даже SQL-мэпперами в MyBatis.— Незаменимо, если не хочешь терять контекст текущего кода.🟢Как использовать— Наведи курсор на метод, поле или класс, нажми Ctrl + Shift + I — появится всплывающее окно с реализацией.— Работает и в дебаге, и при просмотре внешних библиотек (если есть исходники).Подписывайся на наш канал в Max 🟪

28 июн. 2026 г.2 950В Telegram

Security со Spring Boot 3.1 | Авторизация и АутентификацияВ этом видео мы разберемся, как выполнить аутентификацию и авторизацию с помощью spring boot 3.1 и spring security 6🌐🗣СМОТРЕТЬ VKVIDEO📺🗣СМОТРЕТЬ RUTUBE🎞🗣СМОТРЕТЬ YOUTUBEПодписывайся на наш канал в Max 🟪

27 июн. 2026 г.2 280В Telegram
Java библиотека — пост в ТГ канале

Культивация программиста. Становление императором Java. Секта Java Core (2026) PDFЧто, если изучение Java было бы не скучным учебником, а путём культивации? Перед вами необычная книга для тех, кто хочет начать программировать, но устал от сухих объяснений, однотипных примеров и ощущения, что код — это набор непонятных символов. В книге есть не только теория, но и практические испытания, повреждённые свитки с ошибками, турнирные зачёты и финальное задание — собрать собственную систему секты. Эта книга подойдёт абсолютным новичкам, фанатам аниме, ранобэ, дунхуа и всем, кто хочет изучать Java через историю, юмор и понятные метафоры.

27 июн. 2026 г.2 290В Telegram

Как создать AI‑агента на Java: связка Spring AI + MCPВ статье разбираем: как за пятнадцать минут превратить обычный метод с @McpTool в инструмент для модели, где проходит граница ответственности (решение принимает LLM — действует ваш код) и почему до прода доезжают единицы.Читать статьюНаш канал в Макс 🟪

27 июн. 2026 г.1 930В Telegram

Java. Анонимное наследование и блок инициализации.Разбираем создание и настройку объекта при помощи анонимного наследования и реализации блока инициализации.🌐🗣СМОТРЕТЬ VKVIDEO📺🗣СМОТРЕТЬ RUTUBE🎞🗣СМОТРЕТЬ YOUTUBEПодписывайся на наш канал в Max 🟪

27 июн. 2026 г.2 100В Telegram
Java библиотека — пост в ТГ канале

❓Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!👩‍💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.👩‍💻 Kotlin Developer - самый топовый канал для котлин разработчика! 📰 Java News - канал с последними новостями из мира Java!

19 июн. 2026 г.2 580В Telegram
Java библиотека — пост в ТГ канале

👩‍💻 Spring Boot лайфхак: ускоряй интеграционные тестыЕсли тебе нужно тестировать Spring MVC контроллеры, но не хочется поднимать всё приложение — используй @WebMvcTest.Что это даёт- Загружает только MVC-слой, без всего Application Context - Тесты работают значительно быстрее - Можно замокать сервисы через @MockBean - Идеально для проверки контроллеров, статусов и ответов API Когда использовать- Тестируешь REST-контроллеры - Нужно проверить HTTP-ответы - Не нужна база, security, messaging и другие слои Идея простая:Вместо запуска всего приложения → поднимаем только веб-контекст. Меньше зависимостей → быстрее тесты → стабильный CI.Пример@WebMvcTest(HelloController.class)class HelloControllerTest { @Autowired private MockMvc mockMvc; @MockBean private HelloService helloService; @Test void sayHello_returnsExpectedMessage() throws Exception { given(helloService.getMessage()).willReturn("Hello!"); mockMvc.perform(get("/api/hello")) .andExpect(status().isOk()) .andExpect(content().string("Hello!")); }}Если тестируешь только контроллер — не поднимай всё приложение.WebMvcTest экономит секунды на каждом тесте и минуты в CI.Подписывайся на наш канал в Max 🟪

18 июн. 2026 г.2 480В Telegram

👩‍💻 Spring Boot: лучше избегать логирования внутри плотных циклов, так как это может повлиять на производительность приложения и привести к засорению лог-файлов.Пример:for (Order order : orders) { log.info("Order {}", order.getId()); process(order);}Если orders большой, это может замедлить обработку и засорить лог-файлы.Если логировать всё же нужно, лучше использовать уровень debug:log.debug("Order: {}", order.getId());Также можно добавить проверку, если требуется выполнить нетривиальные вычисления:if (log.isDebugEnabled()) { log.debug("Order: {}", expensiveElaboration());}Подписывайся на наш канал в Max 🟪

18 июн. 2026 г.2 570В Telegram
Java библиотека — пост в ТГ канале

Локальный запуск LLM перестал быть экспериментомВсе больше команд разворачивают AI-модели внутри своей инфраструктуры, чтобы защитить данные, снизить зависимость от внешних сервисов и сократить расходы на API.📅 23 июня в 20:00 МСК приглашаем на бесплатный открытый урок «Обзор инфраструктуры Ollama».На занятии разберем:• как устроена платформа Ollama для локального запуска LLM;• установку и настройку на Linux, macOS и Windows;• работу с моделями: загрузку, запуск, управление версиями;• квантизацию и оптимизацию моделей для ограниченных ресурсов.После урока вы:✅ поймете архитектуру Ollama и принципы ее работы;✅ сможете развернуть локальную LLM без облачных зависимостей;✅ узнаете, как эффективно использовать вычислительные ресурсы и выбирать подходящие модели.Урок будет полезен разработчикам, DevOps-инженерам и всем, кто изучает практическое применение ИИ.Регистрация: https://vk.cc/cYREGAОткрытый урок пройдет в преддверии старта курса «ИИ для разработчиков»Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

18 июн. 2026 г.2 690В Telegram

🚩 Pattern Matching в SwitchРаньше switch был ограничен примитивами и enum'ами. С Java 21 Pattern Matching стал стандартом, и это принципиально меняет подход к обработке полиморфных данных.❌ Что раньше:Object obj = getObject();String result;if (obj instanceof String s) { result = "String: " + s;} else if (obj instanceof Integer i) { result = "Int: " + i;} else { result = "Unknown";}✔️ Что теперь:String result = switch (obj) { case String s -> "String: " + s; case Integer i -> "Int: " + i; case null -> "Null!"; default -> "Unknown";};Но суть не в синтаксисе. Суть в гарантиях компилятора.🔹 Охранные выражения (guarded patterns)String classify(Object obj) { return switch (obj) { case String s when s.length() > 10 -> "Long string"; case String s -> "Short string"; case Integer i when i > 0 -> "Positive"; case Integer i -> "Non-positive"; case null -> "Null"; default -> "Other"; };}Условия when проверяются последовательно. Компилятор отслеживает полноту покрытия и недостижимый код. Поменяете порядок кейсов неправильно — получите ошибку компиляции.🔹 Record patterns — деструктуризация на местеrecord Point(int x, int y) {}String describe(Object obj) { return switch (obj) { case Point(int x, int y) when x == y -> "Diagonal point"; case Point(int x, int y) -> "Point at (%d, %d)".formatted(x, y); default -> "Not a point"; };}Распаковали record прямо в case. Никаких геттеров, никаких промежуточных переменных.🔹 Sealed классы + pattern matching = полнота проверокsealed interface Result permits Success, Failure {}record Success(String data) implements Result {}record Failure(String error) implements Result {}String handle(Result result) { return switch (result) { case Success(String data) -> "Got: " + data; case Failure(String error) -> "Error: " + error; // default не нужен - компилятор знает все варианты };}Компилятор гарантирует, ч

17 июн. 2026 г.2 380В Telegram
Java библиотека — пост в ТГ канале

Вайб‑кодинг: хайп для пет-проектов или мощь для прома? Узнаем на митапе! ✌️Айтишники Новосибирска, собираемся 25 июня в лофте FoodFactory, чтобы обсудить ИИ в финтехе и создании продуктов.В программе митапа:✔️ реальные кейсы продуктов разного масштаба;✔️ риски и выгоды агентной разработки;✔️ дискуссии с экспертами.Занесите в календарь: 25 июня, 19:00, лофт FoodFactory, быть обязательно! Регистрация тут

17 июн. 2026 г.3 100В Telegram
Java библиотека — пост в ТГ канале

🚫 Spring Boot: не используй FetchType.EAGER без реальной необходимостиКажется удобным, но на практике это ловушка.Когда ты ставишь EAGER, ORM начинает загружать связи всегда, даже если они тебе вообще не нужны.Что происходит под капотом:❌ Загружается лишнее ❌ Растёт нагрузка на БД ❌ Ухудшается производительность И самое неприятное 👇Ты получаешь классический N+1 problem:- 1 запрос на все Orders - + N запросов на связанные Customers И это может убить приложение на проде.👉 Правильный подход:- по умолчанию используй LAZY - загружай связи явно (fetch join / entity graph) - контролируй, что и когда тянется из БД EAGER - это не удобство. Это скрытый источник проблем.Подписывайся на наш канал в Max 🟪

15 июн. 2026 г.3 680В Telegram
Java библиотека — пост в ТГ канале

👩‍💻 Java Совет: вы можете откатить транзакцию БД, созданную аннотацией @Transactional, получив текущий TransactionStatus через класс TransactionAspectSupport и установив для него rollback через setRollbackOnly();. Таким образом, не нужно выбрасывать исключение.Подписывайся на наш канал в Max 🟪

15 июн. 2026 г.3 310В Telegram
Java библиотека — пост в ТГ канале

Когда ИИ-агент выходит за пределы экспериментов, одного «умного чата» становится мало. Чтобы агент был полезен в рабочей разработке, ему нужны правила, доступ к инструментам, понятный контекст, проверка действий и безопасная обвязка. Иначе вместо ускорения команда получает непредсказуемость, лишние риски и дорогой хаос в контекстном окне.На открытом уроке 15 июня в 20:00 разберём, как устроены современные ИИ-агенты и их обвязка: правила, модули навыков и MCP — протокол подключения модели к внешним инструментам. Поговорим, чем поведенческий слой агента отличается от слоя подключения, где искать готовые навыки, почему они стали популярны и как их устанавливать. Отдельно обсудим, как с помощью MCP дать агенту нужные инструменты, не перегружая контекст, а также как защищать агентов: схемы проверки, журналы аудита и типовые способы атак.Урок не для тех, кто хочет просто «подключить агента к проекту» без правил, контроля и понимания рисков. И не для тех, кто считает, что рабочая интеграция ИИ — это только написать хороший запрос.Регистрация: https://vk.cc/cYMiKQРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

15 июн. 2026 г.3 400В Telegram

👩‍💻 Микросервисы: Spring CloudКогда проект разрастается до десятков микросервисов, появляется ряд вопросов, которые не возникают, если у тебя монолит:— Как сервису А узнать, где сейчас живёт сервис Б (тем более, если адреса постоянно меняются)?— Как не утонуть в километрах кода для HTTP-запросов?— Как фронтенду работать с этой кучей сервисов?Для этого есть три главных инструмента.1️⃣ Eureka: телефонная книга (Service Discovery)В облаке сервисы постоянно перезапускаются, меняют IP-адреса и порты. Хардкодить http://localhost:8082 не вариант.Eureka Server работает как справочная служба🟢При старте каждый сервис стучится в Eureka: «Я на связи, вот мой адрес».🟢Когда сервису А нужно достучаться до Б, он обращается к Eureka: «Подскажи, где сейчас сервис Б».Нужно добавить аннотацию @EnableDiscoveryClient для работы Eureka. Сервисы будут находить друг друга по имени, а не по IP.2️⃣OpenFeign: инструмент для связиДля отправки запросов между сервисами можно использовать RestTemplate. Но код получается довольно громоздким и не типизированным.Вместо этого можно использовать Feign. Он позволяет вызывать удаленный REST-сервис так, будто это обычный метод интерфейса. А вся реализация генерируется под капотом.@FeignClient(name = "account-service") // Имя сервиса в Eurekapublic interface AccountClient { @GetMapping("/account/{userId}") List<Account> getAccount(@PathVariable Long userId);}// Использование в сервисе:List<Account> accounts = accountClient.getAccount(13L);3️⃣API Gateway: единая точка входаТеперь следующая проблема: сервисы между собой нормально общаются, а вот фронт всё ещё не знает кому точно отправлять запрос. Можно сложить на фронт адреса каждого сервиса, но это сложно и небезопасно.Тут на помощь и приходит Spring Cloud Gateway. Он выступает как КПП. Фронт стучится только в него, а он уже сам разруливает запрос к нужным сервисам.Например: запросы на /users/** идут в UserService.🟢Что он делает— Маршрутизация: смотрит на путь запроса и решает, в какой именн

13 июн. 2026 г.3 280В Telegram