Как стать автором
Обновить
209.77

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Скажем нет «Превращению», или анализ Kafka

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров228

Бывало ли вам интересно, какие баги может таить исходный код проектов, которыми пользуются большие компании по всему миру? Не упустите шанс познакомиться с интересными ошибками, которые нашёл статический анализатор PVS-Studio в исходном коде Open Source проекта Apache Kafka.

Читать далее
Всего голосов 4: ↑4 и ↓0+7
Комментарии1

Новости

Как спроектировать библиотеку для Spring Boot

Время на прочтение10 мин
Количество просмотров140
image


Принцип DRY (Не повторяйся) – это важная составляющая цикла разработки программного обеспечения. Его цель – избежать ненужной повторяемости в коде. В частности, имеется множество приложений, которые могут находиться в составе одной и той же микросервисной архитектуры и использовать один и тот же компонент. В результате код становится неудобно поддерживать, поскольку всякий раз, когда требуется внести изменение в этот компонент, с каждым из этих приложений приходится разбираться отдельно.
В этой статье давайте рассмотрим, как можно вынести такие компоненты из приложений в отдельный модуль. Тем самым мы одновременно стремимся упростить поддержку кода и сократить в нём количество повторов.
Читать дальше →
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Траст-менеджер здорового человека

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров330

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

Читать далее
Рейтинг0
Комментарии0

Знакомьтесь с Jmix AI Assistant: Инновация, которую стоит попробовать

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров944

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

В этой статье я хочу рассказать вам о нашем новом продукте – Jmix AI Assistant. Пока не понятно, кто увидит эту статью, и будет ли у этих замечательных людей базовое представление о фреймворке Jmix, так что с вашего позволения начну с его краткого описания. 

Читать далее
Всего голосов 9: ↑6 и ↓3+3
Комментарии0

Истории

Скриншот-тестирование: как заставить тесты «видеть» дефекты

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров748

Всем привет, меня зовут Александр Матюшенко, я инженер по автотестированию в одной из платформенных команд в Альфа-Онлайн. В статье хочу рассказать, как внедрить функционал скриншот-тестирования в проект E2E автотестов с использованием библиотеки aShot от Yandex. Возможно, в этой статье я добавил излишне много кода на Java, но хочется более подробно показать, как это работает.

Читать далее
Всего голосов 11: ↑10 и ↓1+10
Комментарии1

Kafka Streams ч1: Привет мир

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.6K

Привет сообщество HABR ! =)

Начав изучать Kafka Streams, я заметил, что для решения различных задач приходится искать информацию по разным источникам, поэтому со временем накопилось много собственных конспектов. Хочу поделиться ими в виде серии туториалов на Хабре.

Несмотря на обилие ресурсов по Kafka Streams и отличные статьи на Хабре [ноль, один, два], мне не хватало пошаговых руководств, которые детально раскрывают изъяны и преимущества этой технологии. Поэтому решил создать такой материал, чтобы помочь другим разобраться структурно и последовательно.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Переход со Spring Boot 2 на Spring Boot 3 в контексте Hibernate, или как не сойти с ума при миграции entity в монолите

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.8K

Миграция на новые версии фреймворков всегда сопровождается сложностями, особенно если в них произошли значительные изменения. В этой статье мы рассмотрим, с какими проблемами я столкнулся при переходе со Spring Boot 2.x.x на Spring Boot 3.3.1 и Hibernate 6.4+, а также предложим решения, которые могут помочь другим разработчикам избежать аналогичных трудностей при обновлении своих приложений.

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

С выходом Spring Boot 3.3.1 разработчики столкнулись с необходимостью перехода на более новые версии Hibernate (6.2+). Это обновление связано с изменениями в Hibernate, обеспечивающими совместимость с новыми версиями Spring Boot и использование новых возможностей фреймворка.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии3

Опыт разработки приложений java и оформления кода

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров893

В этой статье мы обсудим вопросы, с которыми столкнулись разработчики из компании «Наука» при создании Java-приложений и оформлении кода. Эти трудности, «выстраданные» через годы опыта, стали результатом многолетней работы над программным обеспечением для крупных предприятий нефтеперерабатывающей и нефтехимической отрасли.

Наша компания существует уже более 30-ти лет, и на сегодняшний день в ней работает более 100 разработчиков ПО на различных проектах. Одной из основных проблем в нашей компании, и, как мы полагаем, не только в нашей, является большая текучка кадров, в том числе и среди разработчиков. Чтобы упростить и ускорить процесс вхождения вновь пришедших разработчиков в проекты, для программистов, уже работающих в нашей компании, был рекомендован некоторый набор правил по разработке Java-приложений. Также был составлен перечень типовых ошибок при оформлении кода, подробно разобранный на примерах.

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

Мы надеемся, что данная статья может быть полезна back-end разработчикам enterprise-систем, работающим в других IT-компаниях.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Улучшаем процесс ревью в команде

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.9K

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

Что же можно сделать в каждой из трех ролей, чтобы все остались довольны (и целы)?

Читать далее
Всего голосов 9: ↑6 и ↓3+6
Комментарии7

ThreadLocal и проблемы с памятью: что вы должны знать

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K

Привет, Хабр!

ThreadLocal — вещь, которая на первый взгляд кажется отличным решением некоторых проблем многопоточности. Вроде бы просто: привязываешь переменную к каждому потоку, и никто из других потоков не может её трогать. Но за всей этим скрывается куча нюансов, которые могут навести некоторую долю шороха.

Читать далее
Всего голосов 13: ↑7 и ↓6+5
Комментарии0

HMAC-SHA256 и Telegram Mini App

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.1K

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

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

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

Читать далее
Всего голосов 5: ↑3 и ↓2+5
Комментарии4

Сага об агенте или как LLM может помочь в разработке на Jmix

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров640

Всем привет! В последние годы большие языковые модели (LLM) стали набирать огромную популярность в решении множества задач, начиная от классического поиска по документам и заканчивая анализом финансовых новостей для принятия решений. В этой статье мы расскажем, как применили эти технологии для создания интеллектуального помощника, готового ответить на ваши вопросы по Jmix и помочь в написании кода.

Читать далее
Всего голосов 8: ↑8 и ↓0+10
Комментарии0

Используем Buildpacks вместо Dockerfile

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров7K

Привет! На связи Александр Бархатов — DevOps-инженер в крупнейшем продуктовом холдинге и автор статей в медиа вАЙТИ.. Самое популярное средство для сборки контейнеризированного приложения — это Dockerfile, текстовый файл, в котором прописаны специальные инструкции для готовых Docker-образов. Несмотря на всеобщую популярность Docker, в 2011 году вышел инструмент под названием Buildpacks, принцип работы которого мы рассмотрим в этой статье.

Читать далее
Всего голосов 15: ↑6 и ↓9+2
Комментарии7

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Spring Patterns. Часть 2. Spring + ThreadLocal. AOP. Transaction cache

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K

Всем привет. Я разрабатываю приложения с использованием Java, Spring Boot, Hibernate.

В прошлой статье я показал реализацию паттерна Spring Fluent Interface. При помощи которого можно инкапсулировать похожие действия внутри приложения в модуль, предоставлять клиентскому коду удобный декларативный API, и при этом «кишки» модуля могут использовать «магию» Spring.

В этой статье я хочу поделиться опытом работы с Spring + ThreadLocal.

Два слова о ThreadLocal.

Это потокобезопасная переменная. Под капотом у которой ConcurrentHashMap. Ключ — текущий поток (там чутка сложнее, но для понимания будет достаточно). Значение может быть любым типом, ThreadLocal типизирована <T>. При этом можно инициализировать значение null, или сразу чем‑то, например пустым списком.

Читать далее
Всего голосов 4: ↑3 и ↓1+4
Комментарии2

Вышел Spring AI 1.0.0 M3

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.1K

Spring выпустил Spring AI 1.0.0 M3, который принес множество значительных улучшений и новых возможностей в разработку AI-приложений. 

В новом переводе от команды Spring АйО рассказывается про улучшения, связанные с observability, совершенствование системы advisor`ов и оптимизацию работы с функциями и embedding моделями.

Читать далее
Всего голосов 8: ↑8 и ↓0+10
Комментарии1

Принципы SOLID на примерах из жизни и разработки

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K

Задача этой статьи только одна - попробовать уложить принципы SOLID на понятных «бытовых» примерах, а уже потом посмотреть, как оно может работать на практике - в коде.

Итак, SOLID - это 5 принципов, которые используются при разработке приложений. На каждый принцип по букве:

1. S — Single Responsibility Principle (Принцип единственной ответственности)

Определение: Каждый класс должен выполнять только одну задачу.

Пример из жизни:

Например, мы купили шкаф для одежды. 

Читать далее
Всего голосов 23: ↑17 и ↓6+15
Комментарии23

Лучший способ создания нескольких окружений для Spring Boot приложения с помощью Docker Compose

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.8K

В новой статье от команды Amplicode я расскажу, как можно создать несколько Docker Compose файлов для разных нужд. Например, для продакшена и разработки, и при этом не утонуть в копипасте.

Читать далее
Всего голосов 13: ↑13 и ↓0+15
Комментарии0

Туториал по Spring Data Envers для начинающих

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.8K

Команда Spring АйО перевела статью, которая отлично подойдёт тем, кто ещё не знаком со Spring Data Envers. В статье на простых примерах объясняется, как отслеживать изменения данных в приложении, используя этот инструмент.

Читать далее
Всего голосов 9: ↑9 и ↓0+11
Комментарии2

Тестируем интеграцию с очередями сообщений правильно

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.1K

Наверняка в вашем проекте используется очередь сообщений (не важно kafka, pulsar или какой-нибудь зайчик). Основной проблемой является подробное тестирование работы вашей системы. Рассмотрим варианты решения и посмотрим, что там у автора в рукаве.

Отправлять сообщения
Всего голосов 5: ↑1 и ↓4-1
Комментарии1

Java Digest #17

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.6K

Всем привет! 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске детально рассмотрим новый релиз Java 23 и расскажем, какие JEPы в него вошли. Посмотрим несколько интересных докладов с JVM Language Summit, узнаем об опыте Netflix по переходу на Generation ZGC и почитаем интересную статью о низкоуровневых инструментах обеспечения гарантий порядка памяти.

Читать семнадцатый выпуск
Всего голосов 17: ↑17 и ↓0+20
Комментарии1
1
23 ...

Вклад авторов

Работа

Java разработчик
465 вакансий