ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

Библиотека Java разработчика

Библиотека Java разработчика

前往频道在 Telegram

📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

显示更多
9 996
订阅者
无数据24 小时
-157 天
-6130 天
帖子存档
Чем отличается ReentrantLock от обычного Lock? Lock – это интерфейс, ReentrantLock – его реализация. «Reentrant» говорит о том, что один и тот же поток может перезахватывать уже захваченный лок. Интерфейс не требует этого свойства. Обычный блок synchronized тоже является reentrant – вложенная синхронизация на том же мониторе отработает без проблем. Примеры не-reentrant локов из стандартной библиотеки – представления класса StampedLock, возвращаемые его методами asReadLock() и asWriteLock(). 👉@BookJava

Совет по Spring Boot💡 После аннотации bean с @Validated, вы можете использовать параметры метода валидации с аннотациями вал
Совет по Spring Boot💡 После аннотации bean с @Validated, вы можете использовать параметры метода валидации с аннотациями валидации bean, такими как @NotNull, @NotBlank и т.д. 👉@BookJava

👩‍💻 Как стать востребованным Java-разработчиком с нуля? Получить все необходимые навыки до уровня Middle на комплексном онл
👩‍💻 Как стать востребованным Java-разработчиком с нуля? Получить все необходимые навыки до уровня Middle на комплексном онлайн-курсе «Специализация Java-разработчик» от OTUS. После обучения вы сможете: ➡️ Создавать приложения на Java ➡️ Работать с реляционными базами данных ➡️ Разрабатывать серверные веб-приложения ➡️ Претендовать на позиции Middle Java Developer 📌Вы освоите все необходимые инструменты, создадите выпускной проект под руководством опытных специалистов из ведущих компаний и добавите его в портфолио. ➡️ Оставьте заявку прямо сейчас и получите спеццену на курс: https://vk.cc/cxY5lG Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Совет по Spring Boot💡 Когда вам нужно настроить bean, предоставляемый Spring Boot, проверьте наличие интерфейсов *Customizer
Совет по Spring Boot💡 Когда вам нужно настроить bean, предоставляемый Spring Boot, проверьте наличие интерфейсов *Customizer - велика вероятность, что вы сможете настроить bean, не отказываясь от автоконфигурации. 👉@BookJava

Что такое StringJoiner? ⚫️ObjDoubleConsumer<T> - операция, которая принимает два аргумента классов T и Double, производит с ними некоторое действие и ничего не возвращает; ⚫️ObjLongConsumer<T> - операция, которая принимает два аргумента классов T и Long, производит с ними некоторое действие и ничего не возвращает; ⚫️ObjIntConsumer<T> - операция, которая принимает два аргумента классов T и Integer, производит с ними некоторое действие и ничего не возвращает. 👉@BookJava

👨‍🎓 Java Developer Professional: Что говорят студенты о курсе? Сегодня один из выпускников курса Java Developer Professional от Отус, Алексей Андреев, расскажет о своем опыте. Смотреть видео отзыв: https://vk.cc/cxSnkL Студенты Java Developer Professional выделяют следующие преимущества курса: ✔️ Обилие практических заданий. ✔️ Высокая экспертиза преподавателей. ✔️ Интересный контент, особенно для тех, кто уже знаком с языком Java. После прохождения курса студенты чувствуют себя увереннее в профессиональной сфере и отмечают, что им легче развиваться в профессии. Группа стартует уже 27 июня! Успейте присоединится. Чтобы оценить свой уровень знаний для обучения на курсе, пройдите вступительный тест. 👉 ПРОЙТИ ТЕСТ: https://vk.cc/cxSni4 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Spring Boot 3.2: замените свой RestTemplate на RestClient В мире Spring Boot отправка HTTP запросов к внешним сервисам являет
Spring Boot 3.2: замените свой RestTemplate на RestClient В мире Spring Boot отправка HTTP запросов к внешним сервисам является весьма распространенной задачей. Традиционно при достижении этой цели разработчики полагались на RestTemplate. Однако, по мере развития Spring Framework, на свет появился новый и более мощный способ обработки HTTP запросов: так называемый WebClient. Spring Boot 3.2 представил нам новый API для REST запросов: RestClient, использующий те же принципы fluent api, что и WebClient. RestClient предлагает нам более современные и интуитивно понятные способы взаимодействия с RESTful сервисами. https://habr.com/ru/companies/spring_aio/articles/822529/ 👉@BookJava

Реализация авторизации на основе ролей в Spring Boot с помощью Keycloak Контроль доступа на основе ролей является обязательны
Реализация авторизации на основе ролей в Spring Boot с помощью Keycloak Контроль доступа на основе ролей является обязательным условием для любого приложения, имеющего дело с пользователями, которые могут получать доступ к определенным ресурсам в зависимости от своей роли в организации. В предыдущей статье мы узнали, как защитить Spring Boot REST API с помощью Keycloak, используя протокол аутентификации OpenID Connect. В этой статье мы добавим авторизацию на основе ролей. Цель состоит в том, чтобы разрешить доступ к некоторым конечным точкам только пользователям с определенной ролью. Точнее, мы собираемся ограничить доступ к конечной точке DELETE и сделать его доступным только пользователям с ролью администратора. https://gauthier-cassany.com/posts/spring-boot-keycloak-roles 👉@BookJava

⁉ Готовы освоить любимый язык опытных разработчиков и сделать свой стек непобедимым? Ждём вас на открытом практическом уроке
⁉ Готовы освоить любимый язык опытных разработчиков и сделать свой стек непобедимым? Ждём вас на открытом практическом уроке «Знакомство с Clojure, идеология, синтаксис и основные особенности» от OTUS, где мы: - поговорим о том, что из себя представляет язык Clojure; - обсудим предысторию его появления и основную идеологию; - продемонстрируем выполнение кода в REPL и взаимодействие с ним из IDE; - ответим на все возникающие вопросы. 🔔Встречаемся 25 июня в 19:00 мск в рамках курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение! ➡ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок.

Как Spring Framework реализует паттерн Dependency Injection? Инверсия контроля (inversion of control, IoC) – принцип проектирования, по которому контроль над потоком управления передается фреймворку. Управляющий и прикладной код разделяются. При разработке модуля этот подход избавляет от необходимости знать о других модулях программы и деталях их взаимодействия. Такой код становится более переипользуемым и модульным, уменьшает связность. Внедрение зависимостей (Dependency Injection, DI) – одна из реализаций IoC. При взаимодействии с другими модулями, программа оперирует высокоуровневыми абстракциями, тогда как конкретная её реализация поставляется фреймворком. Стандартная реализация DI – фреймворк инстанциирует все сервисы, и складывает их в IoC-контейнер. При этом специальная сущность, Service Locator, занимается поиском соответствия реализаций абстракциям и их внедрением. Spring – большой набор различных библиотек. DI реализуется одной из основных библиотек – Spring IoC. Сущности бизнес-логики в Spring, как и в JavaEE называются beans. Бины объявляются различными способами, корни большинства из них лежат в понятии Configuration. В качестве контейнера бинов выступает ApplicationContext. Чтобы передать инициализацию зависимости контексту, она помечается аннотацией @Autowired. 👉@BookJava

Для чего нужны функциональные интерфейсы UnaryOperator<T>, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator? UnaryOperator<T> (унарный оператор) принимает в качестве параметра объект типа T, выполняет над ними операции и возвращает результат операций в виде объекта типа T: UnaryOperator<Integer> operator = x -> x * x; System.out.println(operator.apply(5)); // 25 ⚫️DoubleUnaryOperator - унарный оператор получающий на вход Double; ⚫️IntUnaryOperator - унарный оператор получающий на вход Integer; ⚫️LongUnaryOperator - унарный оператор получающий на вход Long. 👉@BookJava

🧑‍💻 Виды тестов. Основные инструменты и их использование Ждём вас на первом занятии серии открытых практических уроков по т
🧑‍💻 Виды тестов. Основные инструменты и их использование Ждём вас на первом занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS, где мы: - сделаем фокус на теории и основных инструментах тестирования Java-приложений; - обсудим, как сделать наше приложение тестируемым, какие тесты бывают и как для их написания использовать такие фреймворки и библиотеки как JUnit5, Mockito, AssertJ с учетом некоторых их особенностей и возможностей; - ответим на все возникающие вопросы. Спикер — Senior Software Engineer и опытный преподаватель. Встречаемся 24 июня в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework». Все участники вебинара получат специальную цену на обучение! 8️⃣9️⃣🔟Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cxOdSX 🎁 Только до 23 июня скидка на курс 10%, подробности у наших менеджеров - просто оставь заявку. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Обновление Java с 17 на 21: через тернии к звездам Меня зовут Денис, я тимлид команды R&D в Naumen Service Management Platform. Как большие почитатели языка Java, мы, Naumen Service Management Platform, стараемся мигрировать на свежие версии языка. Причин множество: это и улучшенная безопасность, и появление крутых языковых фич, и буст перформанса. Но путь не всегда оказывается простым. В докладе я расскажу, с какими проблемами и препятствиями мы столкнулись при обновлении продукта Naumen SMP на новую LTS версию Java. Также поделюсь мыслями, а зачем вообще стоит обновляться. Доклад будет полезен разработчикам и техлидам, которые задумываются или уже планируют миграцию их систем на Java 21. https://habr.com/ru/companies/naumen/articles/822639/ 👉@BookJava

Что делает семафор? Семафор – один из старейших примитивов синхронизации. Он был изобретен Дейкстрой в 1968 году. По большому счету это счетчик, который можно увеличивать и уменьшать из разных потоков. Уменьшение до 0 блокирует уменьшающий поток. Состояние, когда счетчик больше нуля называют сигнальное состояние, операцию его увеличения – release (освобождение) или signal, уменьшения – acquire (захват) или wait. На практике можно представить, что release – выделение квоты доступа к критической секции программы. acquire – использование необходимого объема доступной квоты, или ожидание, если её не хватает. В Java семафор реализован классом Semaphore. Состоит этот класс в основном из разных форм методов acquire (с таймаутом, с игнорированием InterruptedException, неблокирующий) и release. Методы могут принимать параметр permits – тот самый объем квот, которые необходимо освободить/захватить. Несколько вспомогательных методов позволяют узнать больше о количестве и составе очереди потоков, которые ждут освобождения пермитов. А методы availablePermits и drainPermits позволяют узнать количество оставшихся пермитов, и захватить их все соответственно. В конструкторе конфигурируются изначальное количество пермитов, и свойство fair (аналогичное свойству ReentrantLock). 👉@BookJava

🚀 От новичка до Middle+ в Java-разработке под руководством лучших экспертов ниши! Актуальное обучение для всех, кто хочет ст
🚀 От новичка до Middle+ в Java-разработке под руководством лучших экспертов ниши! Актуальное обучение для всех, кто хочет стать Java-разработчиком с нуля и для тех, кто еще не определился с языком программирования. 📌После онлайн-курса «Специализация Java-разработчик» от OTUS вы сможете: - создавать современные приложения на Java; - работать с реляционными базами данных; - разрабатывать серверные веб-приложения; - претендовать на позиции Middle Java Developer. Вы освоите самые востребованные инструменты и лучшие практики. Забудьте о скучном обучении — здесь вас ждут настоящие челленджи и нестандартные практические решения. А еще сильные проекты для портфолио и карьерный сапорт! 🎁 Успей на курс! Только до 23 июня скидка 10%, подробности у наших менеджеров - просто оставь заявку. Старт уже 28 июня. 👉 Изучите подробности и оставьте заявку, чтобы получить специальную цену на курс: https://vk.cc/cxMyWB Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Для чего нужны функциональные интерфейсы Function<T,R>, DoubleFunction<R>, IntFunction<R> и LongFunction<R>? Function<T, R> - интерфейс, с помощью которого реализуется функция, получающая на вход экземпляр класса T и возвращающая на выходе экземпляр класса R. Методы по умолчанию могут использоваться для построения цепочек вызовов (compose, andThen). Function<String, Integer> toInteger = Integer::valueOf; Function<String, String> backToString = toInteger.andThen(String::valueOf); backToString.apply("123"); // "123" ⚫️DoubleFunction<R> - функция получающая на вход Double и возвращающая на выходе экземпляр класса R; ⚫️IntFunction<R> - функция получающая на вход Integer и возвращающая на выходе экземпляр класса R; ⚫️LongFunction<R> - функция получающая на вход Long и возвращающая на выходе экземпляр класса R. 👉@BookJava

Что такое «функциональные интерфейсы»? Функциональный интерфейс - это интерфейс, который определяет только один абстрактный метод. Чтобы точно определить интерфейс как функциональный, добавлена аннотация @FunctionalInterface, работающая по принципу @Override. Она обозначит замысел и не даст определить второй абстрактный метод в интерфейсе. Интерфейс может включать сколько угодно default методов и при этом оставаться функциональным, потому что default методы - не абстрактные. 👉@BookJava

Как разобраться в вышмате за 1 вечер? 😨 Да никак. Но можно научиться понимать математику. И сберечь месяцы жизни, кучу нерво
Как разобраться в вышмате за 1 вечер? 😨 Да никак. Но можно научиться понимать математику. И сберечь месяцы жизни, кучу нервов и сил. В помощь вам - полезный канал о высшей математике. Его автор - выпускник СПБГУ, а ныне — преподаватель предмета. На простом языке объясняет сложные вещи, даёт шпаргалки и проводит эфиры с решением задач 📈 Находка для всех, кому нужен вышмат по жизни. От полезных материалов и разборов до ответов на любые вопросы и живых дискуссий в комментариях. Посмотрите сами 👉 @lav_math

Какие виды ссылок на методы вы знаете? ⚫️на статический метод; ⚫️на метод экземпляра; ⚫️на конструктор. 👉@BookJava

Как применяют технологию SPI Service Provider Interface – технология из стандартной поставки JavaSE. Этой технологией реализуется IoC, не являющаяся при этом DI. С помощью SPI можно легко и без дополнительных инструментов поставлять конкретные реализации сервисов отдельными jar-файлами. Применение обычно похоже на механизм плагинов. Два основных понятия SPI – это service и service provider. Service – интерфейс или абстрактный класс, который объявляет API требуемого сервиса, и предоставляется основным приложением. Service provider – реализация этого API, наследник класса/интерфейса сервиса, который динамически поставляется в основное приложение библиотекой-плагином. Для одного сервиса может быть предоставлено несколько провайдеров из одной или нескольких библиотек. На интерфейс сервиса не накладывается никаких ограничений. Провайдер же обязан реализовывать этот интерфейс, и иметь конструктор без параметров. Внутри jar-файла в директории META-INF/services лежат текстовые файлы, где имя файла – полное имя сервиса, а его строчки – полные имена провайдеров этого сервиса, которые поставляются этой библиотекой. Для получения провайдеров всех библиотек приложения используется класс ServiceLoader. Это итератор по сервис-провайдерам, а создается он статическим методом load, в который параметром передается интерфейс/абстрактный класс интересующего сервиса. Доступ к файлам-ресурсам из classpath обеспечивается загрузчиком классов, поэтому дополнительно при загрузке можно указать специфический загрузчик. С появлением модульности в Java 9 можно также указать модуль. SPI повсеместно используется в стандартной библиотеке JDK. С его помощью подключаются JDBC-драйверы. Через ServiceLoader также загружаются таймзоны, системные настройки, кодировки, провайдеры файловой системы и многое другое. 👉@BookJava