[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Как стать автором
Обновить
167.21

Java *

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

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

Построение динамических запросов к базе данных с использованием Spring Data JPA Specifications

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

Spring Data JPA Specifications — мощный инструмент для написания динамических запросов в реляционных базах данных. Они позволяют строить сложные SQL-запросы в декларативной форме, комбинируя их с помощью предикатов, таких как ANDOR и т.д используя Java-код. В этой статье мы рассмотрим, зачем нужны Specifications, их преимущества и недостатки, а также лучшие практики для использования.

Читать далее

Новости

Кошмар работы с *.docx файлами на Java посредством класса XWPFDocument из API Apache POI

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

Использование *.docx файлов как шаблонов для формирования кастомных отчётов с помощью библиотеки Apache POI XWPF на Java и связанные с этим проблемы. Примеры кода выполняющие простейшие операции поиска, замены, удаления элементов документа.

Читать далее

Паттерн Data Mapper на котиках: Практическое руководство от разработчика, который не боится мурлыкать

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

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

В отличие от Active Record, где объекты сами знают, как сохранять себя в базу, Data Mapper разделяет эти ответственности.

Читать далее

Секреты в Java-сервисах на Spring: где брать и как обновлять

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

Привет, Хабр! Меня зовут Андрей Чернов, я Java‑архитектор в СберТехе, где разрабатываю архитектуру микросервисов. Сейчас я расскажу про нюансы работы с секретами в Java‑сервисах на всеми любимом Spring Boot и про наш опыт такой работы. В современном мире практически не осталось автономных, ни с чем не интегрированных, сервисов. А секреты в первую очередь нужны для безопасных интеграций.

Статья будет состоять из двух частей. В первой расскажу про особенности работы с секретами в Java на Spring Boot — где их брать и как применять к вашему сервису на примере того, как мы делаем это в Platform V Sessions Data (распределенный in‑memory кеш для клиентских сессий, который позволяет снизить нагрузку на внешние сервисы и базу данных). Также расскажу про стандартные варианты обновления секретов «на горячую» (не останавливая, не перезапуская сервисы, и даже не снимая с них нагрузку) и что с ними не так.

Во второй части подробно разберу, как мы обновляем секреты «на горячую». Эти советы помогут вам улучшить работу с секретами, а значит сделать сервисы более защищёнными. Ведь если секреты попадут в руки злоумышленников, те смогут атаковать ваш сервис — вывести его из строя, украсть конфиденциальные данные и т. п. А любая успешная атака чревата для компаний потерей денег, нервов, времени и репутации.

Читать далее

Истории

10 самых интересных ошибок в Java проектах за 2024 год

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

В 2024 году мы проверили много проектов, о чём регулярно писали в свой блог. Теперь же настала новогодняя пора, и самое время рассказывать новогодние истории. Вот и мы решили поведать о самых интересных Java ошибках, встреченных нами в Open Source проектах.

Читать далее

Параллелизм может быть только 1

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

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

Продолжить мяукать

Spring Boot, AspectJ. Введение в аспектно-ориентированное программирование

Время на прочтение12 мин
Количество просмотров2.7K

Привет, меня зовут Николай Пискунов, я руководитель направления Big Data и автор медиа вАЙТИ. Недавно мне в руки попался старый проект, написанный на Spring Boot. В нем я нашел пару десятков эндпоинтов, в которых метод обрамлен logger. Логирование в таком виде — это важный элемент как для ПО, так и для безопасности, но оно делает код объемнее, его становится сложнее читать. 

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

Читать далее

Как жить без IntelliJ IDEA? Часть №5. Заключение

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

Наступил конец года и вместе с ним завершается наш цикл статей. Команда Spring АйО рассмотрела некоторые последствия ухода Ultimate IDEA из РФ и как с этим теперь жить.

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

Читать далее

Автогенерация тестов для Java/Kotlin в IntelliJ IDEA: сравнение AI-инструментов

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

Для большинства разработчиков тесты – это нелюбимая часть работы. Недавно мы убедились в этом, опросив больше 400 разработчиков на конференциях Joker и Heisenbug об их отношении к AI-инструментам для тестирования. В статье расскажем, что еще интересного мы от них узнали, а также какие существуют AI-инструменты для автоматической генерации тестов, какие у них есть плюсы и минусы.

Читать далее

Барьеры и модели памяти – explained

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

Всем привет! 

Начну с предыстории.

Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы.

Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае.

Как родилась статья

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

Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка.

Что такое барьеры памяти и зачем это все нужно?

Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа. 

Читать далее

AI-ассистент с помощью Spring AI

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

Команда Spring АйО перевела туториал, в котором рассматриваются возможности Spring AI для интеграции с LLM.

Вы узнаете, как использовать API Function Calling для выполнения задач на естественном языке, генерировать ответы в JSON-формате и сохранять контекст диалога.

Читать далее

Создание и использование оберток (wrappers) в Java: подробный разбор

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

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

Читать далее

PVS-Studio соответствует требованиям ГОСТ Р 71207—2024 (статический анализ программного обеспечения)

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

ГОСТ Р 71207
Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207–2024, выявляет критические ошибки и может использоваться при разработке безопасного программного обеспечения. Рассмотрим функциональные возможности, реализованные в PVS-Studio на конец 2024 года в отношении анализа исходного кода программного обеспечения, написанного на компилируемых языках программирования C, C++, C#, Java.

Читать дальше →

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

Новые диагностические правила в PVS-Studio 7.34

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

С релизом PVS-Studio 7.34 в анализаторе появились новые диагностические правила: taint для Java, множество Unity-диагностик для C#, углубление в OWASP и многое другое! Расскажем о них в этой статье.

Читать далее

Gradle: Исправление зависимостей в один клик

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

Работаете с Gradle? Dependency Analysis Gradle Plugin помогает не только находить лишние зависимости, но и автоматически исправлять проблемы с ними.

Механизм fixDependencies переписывает скрипты сборки, чтобы они соответствовали реальной структуре проекта. Последние обновления сделали процесс анализа ещё точнее, а работу с Kotlin DSL — проще и надёжнее. Читайте про фикс зависимостей в один клик в новом переводе от команды SpringАйО.

Читать далее

Как мы делаем Java: 30 лет истории российской разработки

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

Банки, биржи, платежные системы — множество стратегически важных сервисов работает на Java. Не случайно язык, которому скоро исполнится 30 лет, уверенно держится в тройке лидеров рейтинга TIOBE. А еще Java — одна из «самых российских» технологий. Из всех разработчиков за пределами США именно россияне сделали наиболее заметный вклад в платформу — и продолжают развивать ее сейчас. Чтобы понять, как так вышло, мы вспомнили историю Java в России с девяностых годов до наших дней.

Дисклеймер: этот не историческое исследование. Текст собран из воспоминаний участников событий и инженеров, которые уже почти 30-лет заботятся о безопасности Java в России.

Читать далее

Анализ фильмов с интернет-портала Кинопоиск

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

Данное исследование посвящено анализу данных о фильмах, собранных с крупнейшей российской платформы КиноПоиск. Основная цель работы — выявить факторы, влияющие на популярность фильмов, их рейтинги и финансовую успешность. В ходе исследования были проанализированы жанровые предпочтения аудитории, проведено сравнение оценок фильмов на Кинопоиске и IMDb, а также исследована взаимосвязь между бюджетами фильмов и их кассовыми сборами.

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

Для эффективной работы системы был использован современный технологический стек. Обработка данных осуществлялась с помощью MongoDB, что обеспечило хранение и управление большими объёмами неструктурированной информации. RabbitMQ организовал асинхронный обмен сообщениями между компонентами системы, а серверная часть приложения разрабатывалась на базе Spring Boot, что ускорило процесс разработки и упростило развертывание приложения. Контейнеризация с использованием Docker обеспечила удобное развертывание и масштабирование системы. Основными языками программирования стали Java 17 и Python: Java использовалась для серверной части и микросервисов, а Python — для анализа данных и построения алгоритмов обработки информации.

Для анализа данных применялись библиотеки Pandas, Seaborn и SciPy, которые обеспечили эффективную обработку данных и визуализацию результатов. В рамках анализа строились графики, отображающие популярность жанров, исследовалась корреляция оценок на Кинопоиске и IMDb, а также визуализировалась связь между бюджетами и кассовыми сборами. Для представления результатов применялись такие инструменты, как matplotlib и seaborn, позволяя визуализировать ключевые закономерности в виде графиков и диаграмм.

Анализ выявил ключевые закономерности: популярность определённых жанров, зависимость коммерческого успеха фильма от его бюджета и значительное влияние известных актёров и режиссёров на успех фильма. Полученные результаты могут быть полезны для киностудий и продюсеров при планировании новых проектов, прогнозировании кассовых сборов и выборе жанров. Результаты также могут применяться для оптимизации маркетинговых стратегий при продвижении фильмов. В будущем планируется углубить исследование, проанализировать долгосрочные тренды в изменении популярности жанров и исследовать влияние пользовательских рецензий на успех фильмов.

Читать далее

Новый HTTP клиент от Amplicode на Kotlin Script для Spring приложений и не только

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

Команда Amplicode решила реализовать свой собственный HTTP-клиент и пару недель назад, в последнем мажорном релизе 2024-го года, мы его выпустили! 

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

Статья также доступна в формате видео на YouTube, VK Видео и RUTUBE, так что можно и смотреть, и читать — как вам удобнее! 

Читать далее

Пишем скрипты и маленькие программы на Java

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

У Java есть много возможностей, благодаря которым она хорошо подходит для больших и долгих проектов. Но я обнаружил, что она на удивление неплохо справляется и с небольшими задачами. Благодаря новым возможности языка это становится ещё удобнее. Киллер-фичи — это типизация во время компиляции и отличная поддержка инструментов.

В моей работе писателя и преподавателя есть множество повторяющихся задач, например, перемещение файлов и скучное преобразование их содержимого. Берясь за автоматизацию рутины, я обычно смотрю на задачу и думаю: «Никаких проблем, напишу шелл-скрипт». А затем происходит неизбежное: с появлением новых особых случаев скрипт превращается в ужасный хаос bash-кода. И я начинаю жалеть, что не написал его на настоящем языке программирования.

«Очевидный» выбор для этой задачи — Python, но Python API не так уж чудесен, а из-за динамической типизации мне понадобится слишком много времени на отладку. Поэтому я попробовал Java. Я знаю её API назубок; по крайней мере, то, что касается коллекций, файлов, regex и так далее. Java статистически типизируемая, поэтому я защищён от глупостей ещё на ранних этапах кодинга. А её среды разработки просто потрясающие.

Что вы говорите? Действительно ли я хочу создавать отдельный файл POM и иерархию src/main/java для каждого скрипта? Хм.

Нет, я этого не делаю. К счастью, современная Java и её инструменты этого не требуют. Давайте разбираться!

Читать далее

Борьба Добра со Злом в играх со скрытой информацией. Боты

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

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

В этой статье мы будем рассматривать игры со скрытой информацией, с ветвистыми и глубокими деревьями решений.

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

Итак, что будем делать? Будем писать ботов и, со временем, средства их обнаружения.

И тут важно согласиться, что боты – это не всегда Зло. Боты – это лишь инструмент в руках Зла. Или Добра...

Выбрать сторону)
1
23 ...

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

Работа

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