![](http://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/getpro/habr/hub/4c9/821/d2a/4c9821d2ad5a9844eb6d0f8c77991772.png)
Java *
Объектно-ориентированный язык программирования
Ещё больше строковых оптимизаций
В продолжение своей предыдущей статьи о строках (напоминаю, это была текстовая версия доклада на ДжиПоинте-2020) решил дописать ещё одну заметку, куда вошли некоторые оптимизации, обнаруженные уже после вёрстки презентации.
Как Spring Data Jdbc соединяет таблицы
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/t0/ni/rj/t0nirj6obx1ute_htuujhg0bue8.png)
Пост рассчитан на начинающих программистов и не содержит каких-то супер хитрых вещей.
Joker 2020: продолжение сезона онлайн-конференций
В онлайн-формате конференция стала лучше или хуже? Что нового организаторами было придумано? Кого из спикеров с какими докладами можно было увидеть и услышать? Что полезного и интересного было в докладах? Имеет ли смысл посещать конференцию в следующем году?
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/s6/hu/uu/s6huuu578e_hrlokdqjzkxc8cnm.jpeg)
Истории
Раздел «Refactor» в IDEA
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/xj/a_/rj/xja_rjy8r4xuuattcjwrnrv6etc.jpeg)
Эта статья - краткий обзор по разделу меню "Refactor" в IDEA для начинающих.
Рассматриваются основные способы рефакторинга для Java-файлов, для большинства способов рефакторинга приведены анимированные картинки и примеры использованного кода.
Осторожно, много тяжелых gif-картинок.
Войти в IT после 30 через Java
Всем ку!
Эта статья является текстовой адаптацией одного из самых популярных интервью на youtube-канале "АйТиБорода" - интервью про Java (более полумиллиона просмотров). Если кто-то не знает, на этом канале несколько раз в месяц появляются интервью с айтишниками о технологиях, ЯП и персоналиях.
Приятного прочтения!
Telegram-бот на Java для самых маленьких — от старта до бесплатного размещения на heroku
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/6w/qt/7x/6wqt7xrh78jy3funcjujzpclbbg.jpeg)
В следующих сериях
Это первая статья в моей серии «для самых маленьких» — следующая посвящена Telegram-боту на вебхуках на Spring с
Для кого написано
Если вы ни разу не писали Telegram-ботов на Java и только начинаете разбираться — эта статья для вас. В ней подробно и с пояснениями описано создание реального бота, автоматизирующего одну конкретную функцию. Можно использовать статью как мануал для создания скелета своего бота, а потом подключить его к своей бизнес-логике.
Предыстория
Когда моя дочь начала изучать арифметику, я между делом накидал алгоритм генерации простых примеров на сложение и вычитание вида «5 + 7 =», чтобы не придумывать и не гуглить для неё задания.
И тут на глаза попалась новость, что Telegram выпустил новую версию Bot API 5.0. Ботов я раньше не писал, и потому решил попробовать поднять бота как интерфейс для своей поделки. Все примеры, которые мне удалось найти, показались либо совсем простыми (нужные мне функции не были представлены), либо очень сложными для новичка. Также мне не хватало объяснений, почему выбран тот или иной путь. В общем, написано было сразу для умных, а не для меня. Потому я решил описать свой опыт создания простого бота — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Статья #2 — Алгоритмы
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/in/wy/kr/inwykrvp0oetssudp-rw3vlskvw.png)
Привет, Хабр! Сегодня будет продолжение темы Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Данная статья является продолжением первой статьи.
Статья будет содержать Теорию, и реализацию алгоритмов который я применял.
Книга «Система модулей Java»
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/kl/8y/j9/kl8yj94hzqttosqkkok8p2xvkj8.jpeg)
Вы освоите наилучшие практики модульного проектирования, отладки приложения и его развертывания перед сдачей в продакшен.
Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 2
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/gv/gr/wk/gvgrwkv6qr399p-m3pig-tgoxsq.jpeg)
Публикую продолжение сборника вопросов-ответов с собеседований на Backend-Java-разработчика. В первой части мы прошлись по Java и Spring. А в этой поговрим о Hibernate, базах данных, паттернах и практиках разработки, об одной популярной библиотеке, поддержке и сопровождении наших приложений, а также посмотрим на альтернативные шпаргалки и подведём итоги.
Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 1
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/za/zu/y0/zazuy0hba1v-ng8d9xebitr8w7k.jpeg)
Когда-то я проходил серию собеседований на Backend-Java-разработчика и записывал вопросы себе на будущее, чтобы потом можно было пробежаться и освежить память. Подумалось, что, вероятно, данный сборник будет полезен не только мне, поэтому сдул с него пыль, набросал ответов и делюсь с сообществом. На оригинальность и исключительность не претендую: подобные статьи уже были и на Хабре, и много где ещё — в конце (во второй части) приведу список ссылок, чтобы шпаргалка была максимально полной.
Точно установить сложность всех вопросов не берусь — на разном уровне их потребуется раскрыть с различной степенью подробности. Я написал ответы где-то на плюс-минус middle, щедро приправив ссылками для дальнейших изысканий. На самые популярные вопросы сразу перенаправляю в источники с готовыми ответами. Заодно посмотрим по ссылкам в статье, насколько Хабр может помочь в подготовке к собесам.
Текста получилось много, поэтому пришлось разбить на две части. В первой поговорим про Java и Spring, а обо всём остальном — во второй. Вторая часть тут
Ласточка в мире микросервисов
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/getpro/habr/upload_files/db5/2d6/a31/db52d6a3137dbfbf9c161178c8a0faa7.png)
Helidon – по гречески ласточка (Χελιδόνι), это такая маленькая птичка из отряда воробьиных с длинными острыми крыльями и характерным двойным хвостом.
Уверен, каждый из нас восхищается полетом и грацией этой птички, а то, как она живет в стаях, чем-то напоминает мир микросервисов.
Helidon для нас, программистов, это набор библиотек прежде всего для разработки микросервисов, и является представителем семейства, назовем его, MicroProfile based средств разработки. Является полностью Open Source проектом, лежит на GitHub, и распространяется под лицензией Apache 2.0.
Уведомления от Bitbucket в Telegram
Суть проекта
Когда я только устроился на первую работу разработчиком Java, сразу же возникла проблема уведомлений о событиях в Bitbucket. Направление Java разработки было новым (я был вторым программистом), поэтому среду для разработки пришлось настраивать мне. После установки и настройки Bitbucket Server приходилось шариться по Pull Request-ам в поисках новых комментариев, на которые нужно ответить, да и узнавать о новых Pull Reqest-ах было проблематично. Да, кто-то скажет, что есть email уведомления, но коммон, у нас же эпоха Telegram.
Lamoda x Joker 2020
У Lamoda огромный и сложный склад: 40 000 м², миллионы товаров на полках, тысячи людей — и все это мы автоматизируем на Java через WMS (Warehouse Management System).
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/7h/hg/bd/7hhgbd1ja2pfx_g4i05qmi2qrrq.png)
На нашем стенде мы рассказываем о том, как подружили Kotlin с бэкендом, строим модульную архитектуру, позволяем разработчикам разрабатывать, избегая лишних встреч. А еще мы будем травить байки на стенде — под катом расписание и игра-квест, где можно почувствовать себя частью команды.
Spring Security — пример REST-сервиса с авторизацией по протоколу OAuth2 через BitBucket и JWT
В предыдущем примере для авторизации запросов к серверу использовалась HTTP-сессия (и куки). Однако для реализации REST-сервиса данный способ авторизации не подходит, поскольку одним из требований REST архитектуры является отсутсвие состояния. В данной статье мы реализуем REST-сервис, авторизация запросов к которому будет осуществляться с помощью токена доступа (access token).
Мой путь к получению Oracle Certified Associate и Oracle Certified Professional
Хочу поделиться с вами моим опытом получения заветных званий Oracle Certified Associate, Java SE 8 Programmer (далее OCA) и Oracle Certified Professional, Java SE 8 Programmer (далее OCP).
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://cloudwars.co/wp-content/uploads/2020/03/oracle_logo-300x149.png)
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/qs/f2/uh/qsf2uhe_doy21v8ungnh3cbc5bm.png)
![image](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/webt/ke/kb/-8/kekb-8pmwy42ishzknv5xqrqtvy.png)
Да, я знаю, что на Хабре уже есть достаточное количество статей на эту тему: раз, два, три, четыре. На мой взгляд, они хороши, но не отвечают на главный вопрос, возникший у меня уже после того, как я начал готовиться к первому экзамену — OCA. Ответа на этот животрепещущий вопрос я так и не смог найти — а зачем оно мне надо с точки зрения разработчика, какие «профиты» кроме бейджа и электронного сертификата на сайте я получу? Не будет ли это пустой тратой денег и времени?
Динамическое создание Spring Bean в рантайме
![](https://webcf.waybackmachine.org/web/20230315195311im_/https://habrastorage.org/getpro/habr/upload_files/dc9/983/420/dc9983420c27efea690d059a4d545212.png)
Перевод подготовлен специально для будущих студентов курса "Разработчик на Spring Framework".
Эта статья о динамическом создании бинов за пять лет стала самой популярной в моем блоге (более 9300 просмотров). Пришло время ее обновить. Также я добавил пример на Github.
Сбор данных и отправка в Apache Kafka
Введение
Для анализа потоковых данных необходимы источники этих данных. Так же важна сама информация, которая предоставляется источниками. А источники с текстовой информацией, к примеру, еще и редки.
Из интересных источников можно выделить следующие: twitter, vk. Но эти источники подходят не под все задачи.
Есть источники с нужными данными, но эти источники не потоковые. Здесь можно привести следующее ссылки: public-apis.
При решении задач, связанных с потоковыми данными, можно воспользоваться старым способом.
Скачать данные и отправить в поток.
Для примера можно воспользоваться следующим источником: imdb.
Следует отметить, что imdb предоставляет данные самостоятельно. См. IMDb Datasets. Но можно принять, что данные собранные напрямую содержат более актуальную информацию.
Язык: Java 1.8.
Библиотеки: kafka 2.6.0, jsoup 1.13.1.
Обеспечение границ компонентов чистой архитектуры с помощью Spring Boot и ArchUnit
Когда мы создаем программное обеспечение, мы хотим создавать «-способности»: понятность, ремонтопригодность, расширяемость и - в тренде сейчас - декомпозицию (чтобы мы могли разложить монолит на микросервисы, если возникнет необходимость). Добавьте в этот список свою любимую «способность».
Большинство - возможно, даже все - из этих «возможностей» идут рука об руку с чистыми зависимостями между компонентами.
Если компонент зависит от всех других компонентов, мы не знаем, какие побочные эффекты будет иметь изменение одного компонента, что затрудняет поддержку кодовой базы и еще более затрудняет ее расширение и разложение.
Со временем границы компонентов в кодовой базе имеют тенденцию ухудшаться. Плохие зависимости закрадываются и усложняют работу с кодом. Это имеет всевозможные плохие последствия. В частности, разработка замедляется.
Это тем более важно, если мы работаем над монолитной кодовой базой, охватывающей множество различных областей бизнеса или «ограниченных контекстов», если использовать жаргон Domain-Driven Design.
Как мы можем защитить нашу кодовую базу от нежелательных зависимостей? С тщательным проектированием ограниченных контекстов и постоянным соблюдением границ компонентов. В этой статье показан набор практик, которые помогают в обоих случаях при работе со Spring Boot.
Обработка исключений в контроллерах Spring
Часто на практике возникает необходимость централизованной обработки исключений в рамках контроллера или даже всего приложения. В данной статье разберём основные возможности, которые предоставляет Spring Framework для решения этой задачи и на простых примерах посмотрим как всё работает. Кому интересна данная тема — добро пожаловать под кат!
Вклад авторов
-
olegchir 3868.0 -
tagir_valeev 2369.0 -
phillennium 1464.4 -
23derevo 1271.0 -
ARG89 1078.2 -
dbelob 892.0 -
igor_suhorukov 844.2 -
doom369 826.0 -
alizar 756.0 -
andreycheptsov 620.0