Алексей Кутепов | Java-developer
153 subscribers
163 photos
4 videos
3 files
174 links
Канал Алексея Кутепова о разработке программного обеспечения и мире ИТ.
http://akutepov.ru

#программирование #ит #java #python #it
Download Telegram
Сюрпризы конкатенации в Java

Нашёл интересную статью на Хабре о неожиданном поведении, которое можно получить при конкатенации.

Уверен уже куча хитрожопых тимлидов добавила эту статью себе в закладки, чтобы потешить своё ЧСВ на собеседованиях. Так что, дорогие читатели, скорее изучайте материал и обломайте весь кайф таким людям :D

Кроме шуток, материал действительно познавательный и интересный:

#java

https://habr.com/ru/post/581576/
Ламповый стрим с общением и решением задач с leetcode!

Друзья, ровно год назад я начал вести блог и в честь этой замечательной даты хочу провести стрим, на котором решим несколько задачек с leetcode и пообщаемся на разные темы!

Буду рад всех видеть завтра (26 ноября) в 19:00 по ссылке ниже (не забудьте сохранить)! Давайте проведём вечер пятницы с пользой :)

#leetcode #java #programming #it #программирование
https://youtu.be/LbZHKpCSVSg
Возможности Java — от Java 8 до Java 17

С момента появления в 1995 году до сегодняшнего дня в Java многое изменилось. Java 8 была революционным выпуском, вернувшим Java на пьедестал лучших языков программирования.

Рассмотрим большинство изменений в языке Java, которые произошли с Java 8 в 2014 году до сегодняшнего дня. Постараемся быть как можно более краткими по каждой функции. Намерение состоит в том, чтобы иметь ссылку на все новые фичи языка Java версий 8 - 17 включительно.

https://habr.com/ru/post/593243/

#java
Micronaut

Микросервисная архитектура сейчас довольно популярна, появляются новые фреймворки, заточенные под данную архитектуру и один из них - Micronaut.

Основное отличие от Spring Boot в том что зависимости внедряются во время компиляции, а не во время выполнения, соответсвенно потребление памяти не находится в прямой зависимости от количества кода.

Так же из коробки поддерживается много интересных вещей: http-сервер Netty, работа с брокерами сообщений, балансировка, service discovery и многое другое.

Думаю в ближайшее время Micronaut будет встречаться всё чаще во многих проектах.

https://tproger.ru/blogs/micronaut-introduction/

#java #micronaut
Паттерны проектирования (видео-курс)

Сегодня у меня важное событие, опубликован мой первый видео-курс на Udemy по паттернам проектирования и принципам разработки ПО. На разработку курса ушло большое количество времени и надеюсь данный курс поможет большому количеству людей на пути освоения профессии программиста!

Ссылка на курс со скидочным купоном для подписчиков:

https://www.udemy.com/course/design-patterns-in-java/?couponCode=14C5CD7573A7B258CBA8

#паттерны #java
Паттерны проектирования (видео-курс)

Друзья, после долгого перерыва возвращаюсь с хорошей новостью: мой видео-курс по принципам разработки программного обеспечения и паттернам проектирования выложен в общий доступ и доступен всем желающим на YouTube и RuTube!

Курс в первую очередь подходит тем, кто уже изучил язык программирования Java и хочет углубить свои знания в области разработки приложений, а так же научиться выстраивать свой код таким образом, чтобы он был гибким, масштабируемым и легко поддерживаемым.

YouTube:
https://www.youtube.com/playlist?list=PL3uNE1P8ngt0l-3PU_v0K7yOWig2UfyZY

RuTube:
https://rutube.ru/plst/69335

Приятного просмотра!

#паттерны #java
Swagger

Здравствуйте друзья! Сегодня у нас речь пойдёт про Swagger - фреймворк для спецификации RESTful API.

Его фишка в том, что он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы – так называемый Swagger UI. Также возможно сгенерировать непосредственно клиента или сервер по спецификации API Swagger, для этого понадобится Swagger Codegen.

Этот фреймворк очень активно применяется в большинстве проектов, так что если вы ещё с ним не знакомы, то вот отличная статья:

https://habr.com/ru/post/541592/

#java #swagger
Урок стрельбы в ногу: Как получить гарантированный Deadlock?

Как многие из вас наверняка знают, Deadlock – это взаимная блокировка, ситуация, когда два или более потока зависают в вечном ожидании ресурсов, захваченных друг другом.

Самый известный подход, который обеспечивает защиту от дедлока – захват и освобождение мониторов в строго определённом порядке.
Например имеются два монитора A и B захват которых осуществляется в порядке AB, соответственно, чтобы избежать дедлока, необходимо производить освобождение мониторов в обратном порядке - BA.
В таком случае ни один поток не сможет попасть на ожидание монитора B, успешно захватив при этом A.

То есть самый простой способ получить deadlock - нарушить данное правило. Но при этом всё равно нет гарантии что deadlock будет получен сразу же, для этого может потребоваться довольно длительное время.

Чтобы точно с первого раза выстрелить себе в ногу, нужно обеспечить ситуацию, когда оба потока окажутся на этапе между захватами одного и другого ресурса в одно время.
Для этого можно использовать CyclicBarrier, пример кода приведён ниже.

Теперь вы знаете как делать не надо! Многопоточность довольно важная тема, которую любят спрашивать на собеседованиях, хотя на практике в некоторых проектах напрямую с многопоточностью работать не приходится (зависит от специфики).
Из своего опыта проведения собеседований могу уверенно сказать что плавают в этой теме большинство кандидатов :)

#многопоточность #java
Уровни изоляции транзакций

Я уже ранее писал что уровни изоляции транзакций, это то что должен знать каждый программист и то что очень часто спрашивают на собеседованиях во многих компаниях.

Но на этот раз я принёс особенную статью - ещё ни один автор не смог раскрыть данную тему такими простыми и понятными словами! А главное - подача материала интересная и не придётся зубрить материал чтобы наконец запомнить тему.

Всем рекомендую к прочтению с целью просвещения или с целью освежить знания: https://habr.com/ru/post/469415/

#java #базыданных #транзакции
9 мифов о Java

Сегодня на моём сайте вышел перевод замечательной стати, которая разбирает популярные мифы о языке программирования Java. Так как язык постоянно развивается, то многие ограничения и проблемы, которые имели место быть в прошлом - сегодня уже не актуальны. Для удобства чтения чуть позже я выпущу отдельные посты по каждому мифу, а тот кто не ленится переходить по ссылкам - может уже сейчас прочитать статью целиком: http://akutepov.ru/ru/blog/9-mifov-o-java/

#java
Разработка Telegram-бота на Java

Сегодня закончил писать новую статью о разработке Telegram-бота на Java с использованием Spring Boot. Тема хоть и не новая, но всегда актуальная, тем более в библиотеках постоянно происходят новые изменения (одно такое изменение разобрано в статье).

Статья доступна на моём сайте, желаю приятного чтения: http://akutepov.ru/ru/blog/prostoi-telegram-bot-na-java-i-spring-boot/

#java #telegram
Media is too big
VIEW IN TELEGRAM
Вопрос с собеседования на Java-разработчика: выполнится ли код в блоке finally, если в try-catch добавить оператор return? #java #программирование
Mockito для тестирования вашего приложения

При написании unit-тестов иногда требуется смоделировать поведение того или иного класса, или же вообще проследить за фактом выполнения его внутренних методов, а иногда, просто требуются заглушки побочных классов и методов, чтобы протестировать основной функционал, не поднимая при этом весь контекст приложения.

Для этих целей и существует фреймворк Moсkito, который используется уже повсеместно, а значит нужно обязательно уметь работать с ним. Даже в моей новой статье, над которой я сейчас работаю, при тестировании механизма кэширования будет задействован Mockito, чтобы убедиться в отсутствии лишних обращений к базе данных, если результат уже хранится в кэше.

Поэтому сегодня я выкладываю очень полезную подборку статей по Mockito, с одного известного сайта. Статьи хоть и на английском, но написаны максимально понятно и лаконично, так что трудностей с их изучением возникнуть не должно:

https://www.baeldung.com/mockito-series

#java #mockito
Кэширование данных в Spring Boot

Настало время авторского контента :)

На моём сайте вышла статья, в которой я подробно разобрал базовые возможности кэширования данных в приложении на Spring Boot. Тут очень много практических примеров и даже показано то, как под капотом хранится кэш.

Кроме этого, в предыдущей статье про разработку Telegram-бота я писал что возвращаемый результат пары методов хорошо бы кэшировать и обещал разобрать этот вопрос в следующей статье. Так вот, обещание я сдержал - добавил бонусную часть, где не только рассказано как доработать Telegram-бот, но и разобраны дополнительные нюансы, с которыми можно столкнуться уже при разработке собственного приложения!

Желаю приятного прочтения: https://akutepov.ru/ru/blog/keshirovaniie-dannykh-v-prilozhienii-na-spring-boot/

#java #springboot #cache
Друзья, завершился очередной летний отпуск и я снова возвращаюсь к работе! Вообще летом не получается активно вести соцсети, но над учебными материалами постепенно работаю. Перед отпуском я закончил статью по кэшированию данных (https://akutepov.ru/ru/blog/keshirovaniie-dannykh-v-prilozhienii-na-spring-boot/) и теперь планирую записать видео по этой статье. Ну и обдумываю дальнейшие планы по новым материалам. Как всегда, основной упор буду делать на Java-разработку, но возможны варианты. А какие темы интересны вам? Пишите свои ответы в комментариях, обсудим :) #айти #программирование #программист #отпуск #java #kotlin #python
Кэширование данных в приложении на Spring Boot

Друзья, сегодня на моём канале вышло новое видео про кэширование данных в Spring Boot. Чуть ранее я выкладывал уже статью по этой теме и теперь весь материал статьи доступен в видеоформате!

Желаю вам приятного просмотра!

https://youtu.be/QJUGF-kWaR0?si=Hspzs4xCpX9vYRyR

#java #springboot #кэширование
Обработка исключений в контроллерах Spring

На моём канале вышло новое видео, посвящённое централизованной обработке исключений в контроллерах Spring. Ранее уже у меня была статья на данную тему, которая даже была положительно отмечена на Хабре в своё время на конкурсе Технотекст, теперь же весь материал доступен в видеоформате. Желаю приятного просмотра:

https://youtu.be/jqWXmwu7nlk?si=g6CnG-Rh4Im5VSR5

#java #spring
Что умеет Spring Scheduler?

На днях закончил писать очередную статью, которая на этот раз посвящена планировщикам задач в Spring и их настройке. Как всегда - много практических примеров и описания их работы, а так же примеры кода на GitHub!
https://akutepov.ru/ru/blog/chto-umieiet-spring-scheduler/

#java
Планировщик задач в Spring

На моём канале вышло новое видео о том как работает планировщик задач в Spring. Чуть ранее я выкладывал статью на данную тему, но теперь материал доступен и в видео-формате! Желаю приятного просмотра:

https://youtu.be/Je4Jgh_eztQ

#программирование #java #spring