статьи на русском языке
Видео о реактивном программировании в spring
Что такое реактивное программирование и какие возможности предоставляет java 9 и spring framework 5 для работы с ним. Git repository
статьи на русском языке
Что такое реактивное программирование и какие возможности предоставляет java 9 и spring framework 5 для работы с ним. Git repository
Сегодня, в этой небольшой статье, я хотел бы поделиться своими знаниями об оптимизациях центрального процессора. А именно: branch prediction cache levels false sharing prefetching loop unrolling Начнем в первой. В детали вдаваться не буду, а начну сразу с примера. Допустим у нас есть следующий метод: Выглядит вполне симпатично и на первый взгляд не представляет никаких угроз, но это только на первый взгляд. Если мы померим время выполнения данного метода для произвольного массива и для него же, но только отсортированного, результат…
Иногда требуется создать класс с определенным поведением во время работы программы. К сожалению, Java не обладает динамизмом, присущем таким языками как Python, Javascript, Groovy. Но все же, возможность такая существует, и есть несколько способов это сделать. Например, сгенерировать напрямую байткод. Но такой способ, довольно сложен. Мы же, в данной статье, напишем исходный код и затем скомпилируем его.
Хочется рассказать о такой задаче, как определение корректности расстановки скобок. Она так же известна, как balanced parenthesis problem. Суть ее в следующем: дана строка, содержащая открывающиеся и закрывающиеся скобки, и какие то другие символы. Нужно узнать правильно ли расставлены скобки. Т.е. для каждой открывающейся скобки должна быть закрывающаяся. Например, строки вида (()) или (()()) содержат корректную расстановку, а (()() и )()( уже нет.
Недавно познакомился с фреймворком Netty. В традиционной модели на каждое соединение создается один поток, который его обрабатывает. Это приводит к росту нагрузки на CPU и объема потребляемой памяти. Netty использует другой подход, позволяющий обрабатывать одновременно количество соединений большее, чем количество запущенных потоков. Реализован он с использованием библиотеки java.nio. В данной статье, я опишу как Netty работает и расскажу как реализовать с его помощью простой REST сервис. Для понимания принципа работы Netty с начало нужно обратиться к паттерну pipeline (Подробная статья…
Совсем недавно столкнулся с необходимостью уменьшения паузы «stop world» во время сборки мусора. Во время копания в данном вопросе, открыл для себя множество интересных параметров jvm. Чтобы знания не потерялись, решил зафиксировать их в табличку.
JavaMelody — это инструмент для мониторинга web приложений. Во время работы собирает различную статистику, например: количество http соединений, пользовательских сессий. количество jdbc соединений, более того можно узнать какие производились запросы и какие из них являются «горячие». Есть возможность увидить открытые в данный момент с точностью до метода из которого происходит обращение, это очень полезно для выявления так называемых утечек соединений. количество памяти и загруженность процессора и прочее. Всю эти данные он агрегируют и рисует графики в реальном времени. Более подробную…
На днях столкнулся с задачей кэширования запросов к БД. Приложение использовало, как это не странно, hibernate. В этой статье я расскажу, о том какие бывают кэши в hibernate, каким образом их использовать и как настраивать.
При парсинге xml файла наткнулся на следующую проблему. Даты ранее 1582 года содержащиеся в XMLGregorianCalendar некорректно конвертируются в GregorianCalendar. Вывод: Это происходит из-за перехода с Юлианского календаря на Грегорианский. Чтобы того не было, необходимо явно выставить дату. Вывод: