Pull to refresh
0
0
Send message

Мониторинг и профилирование Spring Boot за две строчки

Level of difficultyEasy
Reading time2 min
Views1.8K

Эта статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot. Она предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).

GitHub https://github.com/litefunction/spring-boot-starter-actuator-profiling

Введение

Профилирующее приложение предназначено для помощи разработчикам в мониторинге и анализе времени выполнения методов, аннотацией @ActuatorProfiling. Данные профилирования экспонируются через Spring Boot Actuator.

Особенности

• Профилирование времени выполнения методов.

• Настраиваемые параметры профилирования.

• Информация получения данных профилирования в actuator.

• Потокобезопасное управление данными профилирования.

Читать далее
Total votes 7: ↑3 and ↓4+1
Comments0

Забытый порт 3c0, или видят ли камеры иллюзии

Level of difficultyHard
Reading time3 min
Views5.8K
Вы видите желто и синих цвета? Но у меня черно-белые изображение. Сам монитор черно-белые. Монохромное изображение — чёрно-белые компьютер монитор. У меня он был! Нет у меня желто и синих цвета.
А они есть в глазу! Но не только. Они есть в фотоапарата! Фотоапарат решил что желтый и синий цвета.
Снимок от фотоапарата.



Но нужно по порядку. 2004 год, 20 лет назад! Я читаю программирование видеоадаптеров.
Читать дальше →
Total votes 36: ↑29 and ↓7+34
Comments21

Нереальная локализация

Level of difficultyHard
Reading time25 min
Views4.4K

Давно хотелось раскрыть интересную тему локализации ПО, но так чтобы не повторяться и не цитировать прописные истины.

Поэтому рассказываю как локализовать обычное корпоративное Java-приложение на..  несуществующие фантастические языки: Клингонский и Р’льех.

Погрузиться
Total votes 19: ↑19 and ↓0+22
Comments21

Чистый код: Данные

Level of difficultyMedium
Reading time8 min
Views6.5K

Чистый код не набор внешних признаков, таких как наименование переменных и наличие или отсутствие комментариев, хотя они тоже важны. Чистый код — это архитектура программного продукта, которая позволяет легко читать и модифицировать программный код. Написание такого кода опирается на множество типовых шаблонов (SOLID, паттрерны проектирования и др.), выработанных в ходе практики программирования. Описание еще одного такого шаблона приведено в этой статье.

Неизменяемым называется объект (англ. immutable object), состояние которого не может быть изменено после создания(1). Это понятие не так широко используется в различной литературе, поэтому начну с более подробного разбора этого понятия и обоснования, почему стоит применять этот шаблон.

Классическое определение гласит - Объектно ориентированное программирование (ООП), парадигма программирования, в рамках которой программа представляется в виде совокупности объектов, а её выполнение состоит во взаимодействии между объектами. Объектом называется набор из данных и операций, которые можно выполнить над этими данными(2).

Практика программирования показывает, что не все операции которые можно выполнить над данными стоит помещать в один объект. Например, формулу расчет угла в прямоугольном треугольнике можно представить как константное выражение. Вероятность её изменения приближается к нулю, поэтому ее можно смело применять как часть объекта с данными. Другой пример, формирование цены на товар в магазине, тоже формула, но она может меняться в соответствии с требованиями маркетинга. Такую формулу не следует помещать в метод принадлежащий объекту с данными.

Читать далее
Total votes 8: ↑7 and ↓1+8
Comments5

Творим дичь с помощью инструментов веб-разработки

Level of difficultyHard
Reading time11 min
Views14K

Или что будет если заставить очень опытного разработчика заниматься не своим делом. Думаю после этой статьи термин «overqualified» заиграет для вас новыми красками.

Читать далее
Total votes 40: ↑40 and ↓0+51
Comments17

Тестирование асинхронного контракта Spring Boot приложения (Kafka Consumer+Producer)

Level of difficultyEasy
Reading time12 min
Views4.2K

Приветствую тебя, Хабр! Сегодня мы попробуем разобраться, как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью Kafka.

Начнем!
Total votes 7: ↑6 and ↓1+5
Comments0

Эффективность Spring-приложений в рантайме. Текущее состояние дел и планы на будущее

Level of difficultyMedium
Reading time12 min
Views8.6K

Несмотря на то, что данная статья была опубликована более полугода назад, команда Spring АйО по-прежнему считает ее актуальной, важной и интересной.

Себастьян Делойзе, контрибьютор Spring Framework, делится обзором усилий команды Spring по оптимизации эффективности приложений во время выполнения. Он рассматривает Virtual Threads, GraalVM Native Image, Project CRaC, Project Leyden и всё это в контексте Spring!

Читать далее
Total votes 19: ↑18 and ↓1+18
Comments0

Как сделать пароль менеджер

Level of difficultyEasy
Reading time55 min
Views20K

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

Читать далее
Total votes 20: ↑12 and ↓8+5
Comments39

Desktop приложение для хранения текстовой информации

Level of difficultyEasy
Reading time4 min
Views15K

В статье рассказываю о разработанном Desktop приложении для Windows, чтобы поделиться им со всеми желающими и получить обратную связь.

Читать далее
Total votes 16: ↑12 and ↓4+11
Comments81

Amplicode: учим IDE говорить на языке фреймворка

Level of difficultyEasy
Reading time8 min
Views8.6K

Вы когда-нибудь задумывались, как много кода, который мы пишем, предназначено именно для решения поставленных задач? Казалось бы, странный вопрос: зачем писать код, который не нужен? Но давайте подумаем, ставят ли разработчику бизнес-задачу написать скрипты миграции? Или подключить Kafka? А может быть, написать тесты? Настроить annotation processor? Можно утверждать, что большая часть кода, который мы пишем ежедневно, обслуживает другой код, который решает бизнес-задачи. Демаркационную линию между ними провести очень сложно. Да и нужно ли?  

Сегодня мы хотим представить вам наш новый продукт - Amplicode. Это целая коллекция инструментов, работающих на основе IntelliJ IDEA Community, Ultimate и VS Code. Amplicode учит вашу IDE говорить и думать на языке библиотек и фреймворков – Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct, StoryBook, ReactAdmin. Все эти инструменты объединены общими принципами, что гарантирует быстрое погружение и удобную работу, несмотря на обилие функций. В результате вы пишете «обслуживающий» код быстрее, эффективнее и качественнее. Как это работает? Расскажем под катом.

Читать далее
Total votes 20: ↑19 and ↓1+21
Comments9

Быстрее, выше, сильнее: оптимизируем Spring-контекст для тестов

Level of difficultyMedium
Reading time22 min
Views5.1K

Всем привет! Я Юнес, SDET в Тинькофф. Помогаю автоматизаторам создавать более эффективные и надежные тесты, готовить тестовые данные и настраивать CI/CD-пайплайны. 

Расскажу о доступных способах оптимизации Spring-контекста для тестов. Будет здорово, если у вас есть знания о Spring Framework и опыт написания тестов: тогда мы будем на одной волне. Давайте разберемся в хитросплетениях аннотаций и конфигураций вместе под катом!

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments4

Генерация OpenAPI из Spring Boot MVC

Level of difficultyMedium
Reading time7 min
Views6.7K

В этой статье посмотрим, насколько хороша генерация в OpenAPI из Spring MVC (спойлер — довольно хороша), какие есть подводные камни и костыли, чтобы с ними справится.

Наше API будет включать:
— валидацию тела и параметров с помощью JSR-303 
— различные коды ответа с помощью ControllerAdvice и без него
— работа с Page и Pageable
— авторизация запросов

Читать далее
Total votes 7: ↑7 and ↓0+10
Comments5

Как замерять и повышать производительность Java-кода: личный пример с JMH

Level of difficultyMedium
Reading time7 min
Views4.6K

Привет, Хабр! Большинство команд разработки так или иначе вовлечены в гонку за производительностью. Если понимать этот показатель как скорость работы системы, то вся деятельность по прокачке производительности — это, по сути, анализ метрик и поиск инструментов, которые эту скорость могут повысить.

Меня зовут Александр Певненко, я работаю в СберТехе, компании, которая разрабатывает ПО. Для большинства наших продуктов производительность — критичный фактор, поэтому анализ метрик и оптимизация кода — важная часть цикла разработки. Хочу поделиться личным опытом и мнением обо всём, что касается оптимизации и повышения скорости работы кода, а также нагрузочного тестирования как части этой работы. Тут представлены моя собственная практика использования набора библиотек JMH для нагрузочного тестирования и замеров производительности Java-кода. Всем, кому интересно, добро пожаловать под кат!

Читать далее
Total votes 14: ↑13 and ↓1+18
Comments1

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Level of difficultyMedium
Reading time11 min
Views7.6K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!
Total votes 23: ↑23 and ↓0+23
Comments8

Как ускорить базу данных при помощи шардирования

Reading time14 min
Views26K
image

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

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

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

Как справиться с таким невероятным объемом трафика, поступающим в кластер базы данных?
Можно попробовать шардирование. Возможно, вы никогда и не слышали о таком подходе, либо по-быстрому отбраковывали его как старомодное решение, не отвечающее современным вызовам. Сам феномен «шардирования баз данных» едва ли сулит полный набор примочек, какими могли бы похвастаться другие решения, но этот подход определенно эффективен и практичен.
Читать дальше →
Total votes 15: ↑14 and ↓1+16
Comments4

Мегагайд: культура работы с Git

Level of difficultyEasy
Reading time16 min
Views35K

Привет всем! Меня зовут Юля, я фронтенд-разработчик, наставник на курсах по JS и React и организатор профессионального сообщества Tbilisi JS. В Практикуме я помогаю студентам на курсе «React-разработчик».

За время работы в разных компаниях и над разными проектами я поняла, что Git — это не только (и не столько!) знание самой технологии и конкретных команд, но и определённая культура взаимодействия, практики, подходы, договорённости. Всё это помогает участникам команды лучше понимать друг друга и работать быстрее и чётче.

Поговорим как раз об этом — о том, что формирует культуру работы с Git: начнём с конвенций именования коммитов и закончим практиками работы в пуллреквесте. В конце статьи я поделюсь полезными ссылками на интерактивные обучалки, шпаргалки и гайды.

Читать далее
Total votes 36: ↑31 and ↓5+31
Comments23

Расширение Функциональных Интерфейсов Java

Level of difficultyMedium
Reading time12 min
Views5.8K

За годы прошедшие с их появления в Java8 у меня набралась коллекция полезных решений и шаблонов, которые я переносил из проекта в проект, и которые в стандартной версии так и не были осуществлены. Недавно я решил собрать все вместе в небольшом проекте с открытым кодом. В первом релизе проекта расширения охватывают следующие аспекты:

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments38

Java Digest #12

Level of difficultyEasy
Reading time6 min
Views5K

Всем привет! ? ? ??

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

В этом месяце в меню обновления: Intellij Idea с модным терминалом и AI-подсказками, миграции на новые версии Spring Boot за пару кликов в новой версии Java on VS Code, не забыли обновить и Micronaut, GraalVm, PMD и JMC. На горячее JEPы: Exception handling in switch, Derived Record Creation, Stream Gatherers, Vector API, String Templates. Не забыли и про бесплатный сыр — доступ к Spring Academy Pro. 

Утоляем голод по новым знаниям интересными статьями и видео, для любителей экзотики — новые инструменты сборки, если не пробовали bld. А на десерт стоит присмотреться презентациям с прошедшего Jpoint 2024. 

Читать двенадцатый выпуск
Total votes 22: ↑22 and ↓0+23
Comments5

Java Digest # 10

Level of difficultyEasy
Reading time6 min
Views5K

Всем привет! ? ? ?

Мы — Java-разработчики Тинькофф: Андрей Орлов, Арсений ЗайцевКонстантин Максимов, и Константин Польщиков. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.

?В этот весенний период, наполненный свежестью и обновлениями, ждите обзоров состояния jextract и новых функций терминала в JetBrains IDEs, включая его бета-версию. Готовьтесь к версии 0.8.0 Spring AI, где есть новые функции и улучшения. Вдохните аромат цветущей весны, пока мы погружаемся в обзор различных Java Enhancement Proposals (JEP), включая поддержку Markdown в JavaDoc, новые возможности для компиляции и выполнения Java-кода, а также превью функций Java 22. Вдохновляйтесь, ведь весна в мире Java приносит с собой обновления и новые возможности для всех нас. Stay tuned! ?

Читать десятый выпуск
Total votes 18: ↑17 and ↓1+17
Comments0

Как устроен Domain-Driven Design

Reading time13 min
Views49K

Многие проекты на Django начинаются просто: есть база данных и к приложению, которое крутится на сервере, идут обращения. Например, так начиналась Dodo IS (информационная система компании Додо Пицца, где работал автор сегодняшней статьи). Но если использовать Django из коробки, можно натворить много бед и встретить пачку антипаттернов. Возможно, вы встречали такое на старых legacy-проектах.

Евгений Пешков развивает сообщество DDD-практиков, рассказывая, какие проблемы решает Domain-Driven Design (предметно-ориентированное проектирование) в современном мире. На конференции Russian Python Week 2020 он выступил с рассказом об этом. Кстати, 19 августа пройдет встреча DDDevotion-сообщества, присоединяйтесь, будем о чем поговорить.

В сегодняшней статье будет его рассказ про то, как устроен Domain-Driven Design и какие инструменты использует, чтобы наиболее точно описать требования бизнеса и сам бизнес.

Читать далее
Total votes 36: ↑36 and ↓0+36
Comments28

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Backend Developer
Senior
PostgreSQL
REST
Apache Kafka
Java
SQL
OOP
Database
High-loaded systems
Designing application architecture
Creating project architecture