mind.out.stream().filter(e -> e.contains("java") || e.contains("programming")).forEach(e -> blog::write)

Задача о корректности расстановки скобок

Хочется рассказать о такой задаче, как определение корректности расстановки скобок. Она так же известна, как balanced parenthesis problem. Суть ее в следующем: дана строка, содержащая открывающиеся и закрывающиеся скобки, и какие то другие символы. Нужно узнать правильно ли расставлены скобки. Т.е. для каждой открывающейся скобки должна быть закрывающаяся. Например, строки вида (()) или (()()) содержат корректную расстановку, а (()() и )()( уже нет.

0
Read More

Rest сервис на Netty

Недавно познакомился с фреймворком Netty. В традиционной модели на каждое соединение создается один поток, который его обрабатывает. Это приводит к росту нагрузки на CPU и объема потребляемой памяти. Netty использует другой подход, позволяющий обрабатывать одновременно количество соединений большее, чем количество запущенных потоков. Реализован он с использованием библиотеки java.nio. В данной статье, я опишу как Netty работает и расскажу как реализовать с его помощью простой REST сервис. Для понимания принципа работы Netty с начало нужно обратиться к паттерну pipeline (Подробная статья…

0
Read More

JVM параметры для тонкой настройки сборщика мусора

Совсем недавно столкнулся с необходимостью уменьшения паузы «stop world» во время сборки мусора. Во время копания в данном вопросе, открыл для себя множество интересных параметров jvm. Чтобы знания не потерялись, решил зафиксировать их в табличку.

0
Read More

Находим утечки соединений при помощи JavaMelody

JavaMelody — это инструмент для мониторинга web приложений. Во время работы собирает различную статистику, например: количество http соединений, пользовательских сессий. количество jdbc соединений, более того можно узнать какие производились запросы и какие из них являются «горячие». Есть возможность увидить открытые в данный момент с точностью до метода из которого происходит обращение, это очень полезно для выявления так называемых утечек соединений. количество памяти и загруженность процессора и прочее. Всю эти данные он агрегируют и рисует графики в реальном времени. Более подробную…

0
Read More

Кэширование в hibernate

На днях столкнулся с задачей кэширования запросов к БД. Приложение использовало, как это не странно, hibernate. В этой статье я расскажу, о том какие бывают кэши в hibernate, каким образом их использовать и как настраивать.

0
Read More

Конвертирование дат из XMLGregrorianCalendar в GregorianCalendar

При парсинге xml файла наткнулся на следующую проблему. Даты ранее 1582 года содержащиеся в XMLGregorianCalendar некорректно конвертируются в GregorianCalendar. Вывод: Это происходит из-за перехода с Юлианского календаря на Грегорианский. Чтобы того не было, необходимо явно выставить дату. Вывод:

0
Read More

Ускоряем сборку проекта с использованием maven и git

Всем привет, хочу предложить небольшой Proof of Concept, который должен ускорить сборку сложного, многомодульного мавен проекта. Как мы обычно собираем проект? В любимом терминале вводим: mvn clean installПосле этого maven компилирует весь проект и копирует созданные артифакты в локальный репозиторий. Все тривиально, но здесь есть ряд проблем. Это долго. Даже если убрать clean, запустятся тесты, после них произойдет упаковка в jar или какой другой тип артифакта, и наконец копирование полученного артифакта в $HOME/.m2/repository Давайте подумаем над тем, как мы можем…

0
Read More

Коротко: Экстремальное программирование

Вступление. После прочтения книги Кент Бек «Экстремальное программирование» подытожу и напишу основные тезисы об этой методологии разработки. Принципы лежащие в основе методологии покажутся неновыми, так и есть, она не несет никаких волшебных пилюль. Основная идея заключается в грамотном использовании и комбинировании устоявшихся и проверенных приемов. Автор книги предлагает использовать эти методы доходя до крайностей, из за чего методология и обязана такому названию. Основные моменты. Команда не должна быть слишком большая, не более 10 человек. Увеличение численности происходит постепенно, по мере…

0
Read More

Коротко: Методология SCRUM

Вдохновленный прочтением «Scrum. Революционный метод управления проектами«, хочется немного подвести итоги и написать об основных моментах методологии scrum.

0
Read More

10 заповедей Zen программиста

1. Внимательность. Если вы работаете над решением задачи, делаете её хорошо,  на столько насколько вы можете. Не переключайтесь на другие вещи. Работайте только над чем то одним, в один момент времени. Вы не станете быстрее, если будете работать в многозадачном режиме. Если вы работаете над несколькими задачами, вы раньше устанете и сделаете больше ошибок и потратите больше времени на переключение между задачами. Это применимо к различным областям, не только к программированию. «Если вам нужен сон, спите» Кодо Саваки Не планируйте процесс разработки, когда…

0
Read More