Обновить
256K+

Java *

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

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

Безопасный Docker в продакшене

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели17K

В новом переводе от команды Spring АйО вы узнаете, как минимизировать риски и обеспечить безопасность Docker-контейнеров с помощью CIS Benchmark рекомендаций и автоматизированных инструментов вроде Docker Bench for Security.

Читать далее

10 миллиардов целых чисел входят в массив

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

Неожиданные результаты эксперимента с хранением большого количества числе в массиве в 64-битным Pharo Smalltalk, которые меня удивили.

Читать далее

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

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.5K

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

Читать далее

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

Время на прочтение10 мин
Охват и читатели7.2K
image


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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Миграция на новые версии фреймворков всегда сопровождается сложностями, особенно если в них произошли значительные изменения. В этой статье мы рассмотрим, с какими проблемами я столкнулся при переходе со 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 и использование новых возможностей фреймворка.

Читать далее

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

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели4.1K

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

HMAC-SHA256 и Telegram Mini App

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Два слова о ThreadLocal.

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

Читать далее

Вышел Spring AI 1.0.0 M3

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

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

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее