Alex Sergeenko

News

Hi! From the 9 of July 2019 all new posts in the blog will be published in English. I’ve made such decision based on the blog statistics: for the last two month 90% of visitors were from non-Russian-speaking countries so they probably use translation services to read my articles. Since...

Continue reading...

Масштабирование NIO-потоков Reactor-Netty в docker-контейнере и getAvailableProcessors()

При подготовке использовались материалы статьи “CPU considerations for Java applications running in Docker and Kubernetes”, автор – Christopher Batey. Reactor-netty Как гласит Википедия, Netty – это неблокирующий, event-driven, клиент-серверный фреймворк для разработки сетевых Java-приложений. Reactor-Netty, в свою очередь – TCP/HTTP/UDP клиент /сервер, который использует Java Reactor поверх Netty. Для обеспечения...

Continue reading...

LeetCode: Find The Difference – найти единственное отличие в строках

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

Continue reading...

Как перестать беспокоится и начать работать с лямбда-выражениями в Java

Это – перевод статьи How to start working with lambda expressions, автора Luis Santiago. Прежде чем лямбда-выражения появились в Java 8 я успел попробовать их аналоги в других языках, например в C# и C++. Появление лямбда-выражений расширило синтаксис Java, придав ему дополнительную выразительность. В этой статье я хочу сосредоточиться на...

Continue reading...

Improve your vocabulary

Если честно, то идею этой рубрики я подсмотрел в блоге Фёдора Урванова, который почитываю уже довольно давно. Раз уж блог – это такая штука, которая используется для складирования собственных мыслей “на будущее”, к которой иногда возвращаешься, чтобы вспомнить “что-то”, что помнил “когда-то”, но со временем подзабыл, то почему бы не...

Continue reading...

Latency vs. Response Time

Latency (время ожидания) и response time (время ответа) часто используют как синонимы, но это не совсем правильно. Response time – это то, что видно из клиентской части приложения. Помимо непосредственно времени обработки запроса это время включает всевозможные сетевые задержки и задержки в очередях обработки. Latency – это период времени, когда...

Continue reading...

Внедрение зависимостей в класс, не являющийся частью контекста Spring

Или, другими словами, как быть, если внедрить зависимость нужно, а класс собирается где-то в недрах проекта через new, то есть контекст Spring о нём даже не догадывается (а значит и никаких зависимостей в него не добавляет)? А столкнулся я с этим на текущем проекте. Есть некий клиентский API для работы...

Continue reading...

Метрики асинхронных вызовов в Spring WebFlux (Java Reactor)

Существует множество фреймворков для работы с метриками Java-приложений (например Micrometer, который, к тому же, еще и включён в новые версии Spring Boot). Но когда дело доходит до мониторинга времени выполнения асинхронных запросов у некоторых (у меня!) сразу возникает множество проблем. Передо мной стояла задача настроить JMX-мониторинг для отслеживания асинхронных вызовов...

Continue reading...

Backpressure в Spring WebFlux (Java Reactor)

Оригинальные источники: StackOverflow, Medium [Jay Phelps], StackOverflow Backpressure (back pressure) – это то, с чем рано или поздно сталкивается почти любой разработчик, а для некоторых это становится частой и серьезной проблемой. В мире программирования термин “backpressure” является аналогией, позаимствованной из физики. В двух словах, backpressure – это сопротивление или некоторая...

Continue reading...