izebit

izebit

From time to time I code and publish posts about it on my web blog

TF-IDF with HADOOP STREAMING

Today I want to talk about how we can calculate tf-idf with hadoop streaming. First of all, for those who don’t know what TF-IDF is, I can explain. It’s statistical metrics of words, which reflects the importance of each word to a document. The bigger TF-IDF value of a particular word and a particular document the more frequently this word appears in a document and the rarely in other documents. You can gather more information from the Wikipedia article. It’s…

0
Read More

Stop java application gracefully

Today we are talking about how to stop java process gracefully. How can we shutdown your application? The first thing cames to my mind is to kill the application by next shell command kill -9 <application-pid>. It is possible to save PID app to somewhere, for instance into a file, and then read PID and execute the command. However in reality sometimes it’s an appropriate way.Imagine the situation — there is an application and this app has some work to…

0
Read More

Getting started with Selenide

Today we are talking about how to create a simple application based on selenide framework. Show me the code!© First of all, the selenide framework is a wrapper of selenium framework with a more convenient API. Very often it is used to test UI. However, there is another way of using selenide. Recently, I have faced that our partner did not provide any API except UI panel. It was very sad news for me because I have to scope with…

0
Read More

Why should you try android development?

I know, I had to write this article several years ago, but not it could be too late 😀 It is for you if you write java for backend and have never tried to do something. If you are already a mobile developer, I am not sure you will find something useful in the article so you can surely skip it. I try to describe why you should try to develop apps for Android. Currently, I am a backend java…

0
Read More

CPU оптимизации

Сегодня, в этой небольшой статье, я хотел бы поделиться своими знаниями об оптимизациях центрального процессора. А именно: branch prediction cache levels false sharing prefetching loop unrolling Начнем в первой. В детали вдаваться не буду, а начну сразу с примера. Допустим у нас есть следующий метод: Выглядит вполне симпатично и на первый взгляд не представляет никаких угроз, но это только на первый взгляд. Если мы померим время выполнения данного метода для произвольного массива и для него же, но только отсортированного, результат…

0
Read More

Генерирование классов во время выполнения

Иногда требуется создать класс с определенным поведением во время работы программы. К сожалению, Java не обладает динамизмом, присущем таким языками как Python, Javascript, Groovy. Но все же, возможность такая существует, и есть несколько способов это сделать. Например, сгенерировать напрямую байткод. Но такой способ, довольно сложен. Мы же, в данной статье, напишем исходный код и затем скомпилируем его.

0
Read More

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

Хочется рассказать о такой задаче, как определение корректности расстановки скобок. Она так же известна, как 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