Несколько дней назад была поставлена задача сделать запросы между сервисами с токеном. У нас используется Keycloak в качестве SSO. В силу того,что нужно всё на базовом уровне (ничего специфического),то имеет смысл использовать Feign Client (OpenFeign) для Spring Boot.
![](http://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/hub/4c9/821/d2a/4c9821d2ad5a9844eb6d0f8c77991772.png)
Java *
Объектно-ориентированный язык программирования
Руководство по возможностям языка Java версий 8-19
Вы можете использовать это руководство для получения практической информации о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), а также получить обзор функций языка Java, включая версии 8–19.
Spring Data JPA и upsert
Всем привет! Есть достаточно распространенная задача: нужно вставить новую запись в БД, но если она уже там есть, то её следует обновить. Эта ситуация может встретиться, например, если у вас есть 2 источника данных, каждый из которых передает половину информации об объекте, и ваш сервис должен склеить части вместе по какому‑то внешнему идентификатору. Но вы не знаете, в каком порядке к вам попадут эти половинки. Предлагаю посмотреть, как это можно сделать, если сервис использует Spring Data JPA.
Анализ дампа кучи Java: разбираем на примерах
![image](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/webt/aj/lo/_k/ajlo_k5ijkm10klkx8gidql0868.png)
Я увлекаюсь управлением памятью в Java и в этой статье попробую объяснить, как взять и проанализировать дамп кучи – разберём на примерах. Но для начала давайте вспомним, что известно об этой предметной области. Немного освежив теорию, мы возьмем дамп кучи и проанализируем, каким он получится в простом приложении.
Истории
Instagram* сможет работать без VPN?
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/958/8a4/ace/9588a4aceb458e73349cb7959b82cac1.png)
Популярная социальная сеть была запрещена в России в 2022 году. Для многих поклонников приложения это стало настоящим ударом, а трафик Instagram* понес огромные потери: по данным Brand Analytics на октябрь 2022 года, количество авторов (блогеров) сократилось с 38 млн до 17 млн за год, а количество отправленных сообщений упало со 135 млн до 40 млн за тот же период. Теперь, вероятно, владельцы соцсети ищут новые способы вернуть свою аудиторию. Одним из них может стать работа Instagram* с уже встроенным модулем обхода блокировок в странах-цензорах.
Не придумывайте данные для интеграционных тестов — генерируйте их
Если вы разработчик и когда-либо писали интеграционные тесты — скорее всего, вы использовали TestContainers. Появившись в 2015 году, эта библиотека изменила то, как мы производим автоматизацию тестирования, позволив разработчикам запускать интеграционные тесты с участием баз данных на локальных машинах, что существенно сократило сложность интеграционных тестов и время, необходимое для их запуска и прогона.
Testcontainers "по щелчку пальцев" запускают базы данных, но для того, чтобы тесты начали проходить, нужно кое-что ещё: начальные данные внутри базы. Их необходимо подготовить перед запуском тестов, а по мере того, как схема растёт и усложняется, делать это становится всё труднее.
Комбинируя Testcontainers с одной из доступных на сегодня библиотек для синтеза реляционных данных, мы теперь можем заполнять любую Testcontainers-базу данных сгенерированными данными, что позволяет быстро разрабатывать тесты для логики, предполагающие взаимодействие с базой данных, избегая при этом необходимости разрабатывать и поддерживать большие объемы кода.
Репликация между SQL- и NoSQL-базами данных: туда и обратно
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/webt/hx/kp/ip/hxkpipwoyy-qv8ccfjyelbgs6j8.jpeg)
Часто при построении высоконагруженных проектов задействуют несколько хранилищ. При этом нередко одновременно используют как SQL-, так и NoSQL-базы данных. Такая реализация оправдана, но для её корректной работы надо правильно настроить репликацию данных в одну из сторон.
Меня зовут Александр Горякин, я разработчик высоконагруженных систем хранения данных в пресейле Tarantool. Не так давно наша команда столкнулась с необходимостью репликации между SQL- и NoSQL-базами данных и успешно решила эту задачу. Я расскажу, что нам нужно было от репликации, какие механизмы и инструменты мы рассматривали, с какими проблемами столкнулись и что получили в итоге.
Статья написана по моему выступлению на HighLoad++ 2022. Вы можете посмотреть его здесь.
Spring Security и архитектура наследования ролей в не плоской модели
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/868/2df/e65/8682dfe652a2d55a56678e5c36472166.jpg)
Когда речь заходит об авторизации, роли вступают в игру. Если модель плоская, то все просто. Пользователь обладает определенным набором привелегий и при запросе достаточно лишь проверить, что нужное право доступа присутствует в коллекции. Но как быть, если у пользователя могут быть разные наборы ролей для разных сущностей? Например, я обладаю ролью EDITOR
в посте в социальной сети, но имею только VIEWER
в другом. Также могут быть определены правила наследования. Если админ выдает дает мне роль EDITOR
, то я автоматически приобретаю привилегию VIEWER
. При этом, если я EDITOR
, роль ADMIN
у меня не появляется.
Как увязать все эти детали в коде и при этом не превратить продукт в большую кучу грязи? В рамках этой статьи я расскажу вам:
1. Как реализовать наследование ролей в Java?
2. Как протестировать полученную иерархию?
3. Как применить решение в рамках Spring Security?
Основы OkHttp в Android-разработке
OkHttp — библиотека и по совместительству HTTP-клиент с открытым исходным кодом для Java и Kotlin, разработанная Square, которая также создала Retrofit.
Порой стоит использовать не вездесущий Retrofit, а OkHttp из-за его производительности и большего функционала.
В статье подробно рассмотрены основные объекты и методы библиотеки и представлены основы работы с ней в Android-разработке.
Самодостаточный системный подход с применением мультиплатформенного Kotlin
![image](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/webt/nw/jr/pb/nwjrpbqi79co99irluwyx7ludto.png)
Введение
Не буду здесь вдаваться в детали о том, с какой целью применяется микросервисный подход, а также не стану углубляться в теорию микросервисов. Начнём этот пост с допущения, что вы хотите улучшить микросервисный ландшафт, имеющийся у вас в настоящий момент, либо собираетесь мигрировать на микросервисную систему, чтобы улучшить удобство использования и/или администрирования – предоставив для этого веб-UI. Идеально, если при этом вы уже знакомы с Kotlin.
Spring Cloud DataFlow overview
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/d15/b28/1fa/d15b281faf477d64c415afb72a76aa3b.png)
Хабр, добрый день! Что первое приходит в голову, когда вы слышите «ETL»? Скорее всего airflow?
По сути airflow — это стандарт де‑факто в мире обработки и трансформации данных. Но в случае если в разработка ведется на java, то тогда придется либо переучивать разработчиков на python, либо нанимать еще python разработчиков. В большинстве случаев хочется вносить минимум изменений в процесс разработки и тех. стек. Решение есть! Фреймворк Spring Cloud предоставляет DataFlow — фреймворк для организации ETL в spring среде.
Деплой Telegram бота на VPS | Webhooks + Java + Spring Boot
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/87d/766/ac3/87d766ac337c163ff6a6731673d73bec.jpg)
Привет, Хабр!
В процессе работы над проектом мне понадобилось выгрузить telegram-бота на VPS. Я не нашёл источника, в котором были бы собраны все детали этого процесса под мой конкретный случай. Поэтому в этой статье я бы хотел поделиться опытом с теми, кто столкнулся с такой же задачей.
Топ вопросов на Junior собеседованиях
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/0f2/b6b/b08/0f2b6bb087055736a918d03cec907bb7.png)
Процесс прохождения собеседований – важный навык, который нужно прокачивать, как и все остальные. С таким запросом часто приходят и наши ученики, а мы знаем, как решить это: зачастую вопросы на собеседованиях повторяются, поэтому для вас мы решили собрать подборку популярных вопросов, которые вам могут задать на собеседовании на Junior позиции по популярным технологиям.
Так что, если вам интересно, какие вопросы задают на собеседовании, то эта статья для вас. А если хотите узнать ответы на них, то переходите по ссылкам на наш YouTube канал и смотрите записи трансляций моковых собеседований с менторами Solvery. Там можно было узнать, как проходят реальные интервью и задать вопросы менторам Solvery.
ChatGPT и Java Back-End Spring Boot
Ускорение Back-End Java Spring Boot разработки с помощью Chat GPT.
При создании обычного CRUD контроллера разработчик обычно делает несколько вещей.
1. Создает Entity
2. Пишет миграцию в БД
3. Создает DTO для Entity
4. Создает слой Repository
5. Создает слой Service
6. Создает слой Controller
Многие из этих вещей можно сделать автоматически с помощью ChatGPT. И так сразу к делу, и посмотрим на что способен ChatGPT. В качестве Entity будем использовать простой класс.
Spring Cloud OpenFeign и авторизация
В статье я хочу показать, каким образом можно реализовать отправку запросов с авторизацией при использовании Spring Cloud OpenFeign клиента для работы с АПИ.
Радиотелефончик на смартфоне
![image](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/webt/8i/vm/j1/8ivmj1ox1wjjjmzoncckiiyexms.jpeg)
Немало воды утекло со времени публикации цикла про стриминг видео на Андроид устройствах, но вот ручки добрались и до аудио потоков. Не то, чтобы это была какая-то более заковыристая тема про сравнению с видео, даже наоборот, сложно придумать что-то проще, ибо Audio API не менялось, дай бог памяти, с 2012 года, если не раньше. И не стоило бы, ради этого пилить короткий пост, если бы не зудящая мысля — а на какое расстояние и каким образом можно передать сей аудио поток, если мы будем использовать для этого только два смартфона без всякой мобильной связи и внешних точек доступа.
Если вам интересно узнать, что из этого получилось, то прошу проследовать под кат…
Java-сертификация: как мы заняли место ушедшего из РФ Oracle
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/dcf/59a/1c5/dcf59a1c502e7ca74491dba54873187b.jpg)
Привет, Хабр! Oracle ушел, а сертифицироваться Java‑разработчикам где‑то нужно. Мы с партнерами решили занять освободившуюся нишу, и у нас это получилось. В этой статье расскажем о том, как мы создали аналог сертификации для джавистов, докрутили концепцию, а также дадим рекомендации, как подготовиться к тестированию, и поделимся полезными материалами.
Spring Boot. Настройка профилирования времени выполнения
В процессе работы над одной из задач возникла необходимость промониторить время исполнения отдельных участков кода одного из микросервисов для того, чтобы отловить узкие места и попытаться эту ситуацию исправить.
Т.к. речь шла о сервисе, который был написан довольно давно, и в него многие месяцы не вносились изменения, повинуясь принципу “работает - не трогай”, я решил постараться сделать это, не прикасаясь к самому коду сервиса.
Создание мобильного приложения для рисования на Android Studio
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/091/3fd/a48/0913fda4871157f3560ff07150393451.jpg)
Java, Android Studio и приложение для рисования, сделанное на них для самых "маленьких".
Мессенджеры на работе — это не прокрастинация, или как мы сделали сервис для автотестирования. Часть 2
![](https://webcf.waybackmachine.org/web/20230315195307im_/https://habrastorage.org/getpro/habr/upload_files/f38/7f3/332/f387f3332e61992e88583259d2d57802.png)
Это вторая часть статьи «Мессенджеры на работе — это не прокрастинация, или как мы сделали сервис для автотестирования». Как и обещали, в данной статье мы расскажем о том, как масштабировали наш сервис, как развивали функциональность автотестов и как в итоге вышли за рамки обычного репорт-бота.
Вклад авторов
-
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