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

Java *

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

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

Версионная миграция данных в мире DTO

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 2.1K
Программирование *Java *Системы управления версиями *
Из песочницы

Доброе время суток, уважаемое Хабр коммьюнити. В этой публикации я хотел бы показать несколько известных мне подходов к версионной миграции данных в контексте DTO. Примеры будут продемонстрированы на языке Java.

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

Новости

Sealed классы Java в действии: создание надежных и безопасных приложений

Время на прочтение 16 мин
Количество просмотров 1.3K
Блог компании OTUS Java *
Перевод

Sealed (закрытые или запечатанные) классы были представлены в Java 15 в качестве способа ограничить иерархию наследования класса или интерфейса.

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

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

KeyCloak и микро-сервисы. Как облегчить жизнь программисту

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 6.2K
Информационная безопасность *Java *Микросервисы *
Туториал

Привет! Если ты так же как и я решил использовать keycloak для аутентификации и авторизации в своей микро‑сервисной архитектуре, то я расскажу вам как правильно настроить сам keycloak, его рабочую среду а в конце мы подключим Active Directory к нашему приложению.

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

MapReduce: как и зачем?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 4.7K
Java *Администрирование баз данных *Hadoop *
Туториал
Из песочницы

Пример задачи.

Хотим автоматизировать огромный фруктовый рынок. На каждое событие будем писать строчку в структурированный лог. Этот лог не является частью runtime функционирования рынка, но может быть полезен для изучения статистики и аналитики.

Например, на основании лога продавец может сделать вывод, что свежие яблоки выгоднее привозить к 13:00.

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

Истории

Spring Cloud OpenFeign и авторизация (OAuth2). Ещё проще

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.4K
Программирование *Java *
Recovery mode
Из песочницы

Несколько дней назад была поставлена задача сделать запросы между сервисами с токеном. У нас используется Keycloak в качестве SSO. В силу того,что нужно всё на базовом уровне (ничего специфического),то имеет смысл использовать Feign Client (OpenFeign) для Spring Boot.

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

Руководство по возможностям языка Java версий 8-19

Уровень сложности Простой
Время на прочтение 18 мин
Количество просмотров 9.4K
Java *
Обзор
Перевод

Вы можете использовать это руководство для получения практической информации о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), а также получить обзор функций языка Java, включая версии 8–19.

Читать далее
Всего голосов 38: ↑36 и ↓2 +34
Комментарии 8

Spring Data JPA и upsert

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 2.9K
Java *
Туториал

Всем привет! Есть достаточно распространенная задача: нужно вставить новую запись в БД, но если она уже там есть, то её следует обновить. Эта ситуация может встретиться, например, если у вас есть 2 источника данных, каждый из которых передает половину информации об объекте, и ваш сервис должен склеить части вместе по какому‑то внешнему идентификатору. Но вы не знаете, в каком порядке к вам попадут эти половинки. Предлагаю посмотреть, как это можно сделать, если сервис использует Spring Data JPA.

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

Анализ дампа кучи Java: разбираем на примерах

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 2.3K
Блог компании Timeweb Cloud JavaScript *Java *
Обзор
Перевод
image

Я увлекаюсь управлением памятью в Java и в этой статье попробую объяснить, как взять и проанализировать дамп кучи – разберём на примерах. Но для начала давайте вспомним, что известно об этой предметной области. Немного освежив теорию, мы возьмем дамп кучи и проанализируем, каким он получится в простом приложении.
Читать дальше →
Всего голосов 23: ↑17 и ↓6 +11
Комментарии 5

Instagram* сможет работать без VPN?

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 11K
Java *C++ *GitHub *Реверс-инжиниринг *IT-компании
Из песочницы

Популярная социальная сеть была запрещена в России в 2022 году. Для многих поклонников приложения это стало настоящим ударом, а трафик Instagram* понес огромные потери: по данным Brand Analytics на октябрь 2022 года, количество авторов (блогеров) сократилось с 38 млн до 17 млн за год, а количество отправленных сообщений упало со 135 млн до 40 млн за тот же период. Теперь, вероятно, владельцы соцсети ищут новые способы вернуть свою аудиторию. Одним из них может стать работа Instagram* с уже встроенным модулем обхода блокировок в странах-цензорах.

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

Не придумывайте данные для интеграционных тестов — генерируйте их

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 5.1K
Тестирование IT-систем *Java *
Туториал


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


Testcontainers "по щелчку пальцев" запускают базы данных, но для того, чтобы тесты начали проходить, нужно кое-что ещё: начальные данные внутри базы. Их необходимо подготовить перед запуском тестов, а по мере того, как схема растёт и усложняется, делать это становится всё труднее.


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

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

Репликация между SQL- и NoSQL-базами данных: туда и обратно

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 1.9K
Блог компании VK Oracle *PostgreSQL *Java *Tarantool *


Часто при построении высоконагруженных проектов задействуют несколько хранилищ. При этом нередко одновременно используют как SQL-, так и NoSQL-базы данных. Такая реализация оправдана, но для её корректной работы надо правильно настроить репликацию данных в одну из сторон. 

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

Статья написана по моему выступлению на HighLoad++ 2022. Вы можете посмотреть его здесь.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 6

Spring Security и архитектура наследования ролей в не плоской модели

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 2.5K
Программирование *Java *ООП *Промышленное программирование *
Туториал
Перевод

Когда речь заходит об авторизации, роли вступают в игру. Если модель плоская, то все просто. Пользователь обладает определенным набором привелегий и при запросе достаточно лишь проверить, что нужное право доступа присутствует в коллекции. Но как быть, если у пользователя могут быть разные наборы ролей для разных сущностей? Например, я обладаю ролью EDITOR в посте в социальной сети, но имею только VIEWER в другом. Также могут быть определены правила наследования. Если админ выдает дает мне роль EDITOR, то я автоматически приобретаю привилегию VIEWER. При этом, если я EDITOR, роль ADMIN у меня не появляется.

Как увязать все эти детали в коде и при этом не превратить продукт в большую кучу грязи? В рамках этой статьи я расскажу вам:

1. Как реализовать наследование ролей в Java?

2. Как протестировать полученную иерархию?

3. Как применить решение в рамках Spring Security?

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

Основы OkHttp в Android-разработке

Уровень сложности Простой
Время на прочтение 17 мин
Количество просмотров 2.4K
Java *Разработка под Android *Kotlin *
Туториал

OkHttp — библиотека и по совместительству HTTP-клиент с открытым исходным кодом для Java и Kotlin, разработанная Square, которая также создала Retrofit.

Порой стоит использовать не вездесущий Retrofit, а OkHttp из-за его производительности и большего функционала.

В статье подробно рассмотрены основные объекты и методы библиотеки и представлены основы работы с ней в Android-разработке.

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

Самодостаточный системный подход с применением мультиплатформенного Kotlin

Время на прочтение 7 мин
Количество просмотров 1.5K
Блог компании Издательский дом «Питер» Java *Профессиональная литература *Kotlin *Микросервисы *
Перевод
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех, кто уже имеет опыт работы с Kotlin? Поделюсь моим опытом по созданию веб-UI для JVM-микросервиса при помощи Kotlin Multiplatform.

image

Введение


Не буду здесь вдаваться в детали о том, с какой целью применяется микросервисный подход, а также не стану углубляться в теорию микросервисов. Начнём этот пост с допущения, что вы хотите улучшить микросервисный ландшафт, имеющийся у вас в настоящий момент, либо собираетесь мигрировать на микросервисную систему, чтобы улучшить удобство использования и/или администрирования – предоставив для этого веб-UI. Идеально, если при этом вы уже знакомы с Kotlin.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Spring Cloud DataFlow overview

Время на прочтение 6 мин
Количество просмотров 964
Блог компании OTUS Java *
Обзор

Хабр, добрый день! Что первое приходит в голову, когда вы слышите «ETL»? Скорее всего airflow?

По сути airflow — это стандарт де‑факто в мире обработки и трансформации данных. Но в случае если в разработка ведется на java, то тогда придется либо переучивать разработчиков на python, либо нанимать еще python разработчиков. В большинстве случаев хочется вносить минимум изменений в процесс разработки и тех. стек. Решение есть! Фреймворк Spring Cloud предоставляет DataFlow — фреймворк для организации ETL в spring среде.

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

Деплой Telegram бота на VPS | Webhooks + Java + Spring Boot

Время на прочтение 4 мин
Количество просмотров 2.4K
Хостинг Программирование *Java *Серверное администрирование *API *
Из песочницы

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

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

Читать далее
Всего голосов 10: ↑2 и ↓8 -6
Комментарии 12

Топ вопросов на Junior собеседованиях

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 5.3K
Python *Программирование *Java *Разработка под iOS *Разработка под Android *
Дайджест

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

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

Читать далее
Всего голосов 18: ↑2 и ↓16 -14
Комментарии 29

ChatGPT и Java Back-End Spring Boot

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 2.8K
Java *
Из песочницы

Ускорение Back-End Java Spring Boot разработки с помощью Chat GPT.

При создании обычного CRUD контроллера разработчик обычно делает несколько вещей.

1. Создает Entity

2. Пишет миграцию в БД

3. Создает DTO для Entity

4. Создает слой Repository

5. Создает слой Service

6. Создает слой Controller

Многие из этих вещей можно сделать автоматически с помощью ChatGPT. И так сразу к делу, и посмотрим на что способен ChatGPT. В качестве Entity будем использовать простой класс.

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

Spring Cloud OpenFeign и авторизация

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.7K
Программирование *Java *Kotlin *
Из песочницы

В статье я хочу показать, каким образом можно реализовать отправку запросов с авторизацией при использовании Spring Cloud OpenFeign клиента для работы с АПИ.

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

Радиотелефончик на смартфоне

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 17K
Java *Беспроводные технологии *DIY или Сделай сам Лайфхаки для гиков Звук
Туториал
image

Немало воды утекло со времени публикации цикла про стриминг видео на Андроид устройствах, но вот ручки добрались и до аудио потоков. Не то, чтобы это была какая-то более заковыристая тема про сравнению с видео, даже наоборот, сложно придумать что-то проще, ибо Audio API не менялось, дай бог памяти, с 2012 года, если не раньше. И не стоило бы, ради этого пилить короткий пост, если бы не зудящая мысля — а на какое расстояние и каким образом можно передать сей аудио поток, если мы будем использовать для этого только два смартфона без всякой мобильной связи и внешних точек доступа.

Если вам интересно узнать, что из этого получилось, то прошу проследовать под кат…
Читать дальше →
Всего голосов 60: ↑60 и ↓0 +60
Комментарии 65

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

Работа

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