среда, 16 ноября 2016 г.

Производительность параллельных вычислений. Java 8 [5 min reading]


Benchmark


В предыдущих двух постах мы разобрались с тем, как устроен data parallelism в Stream API. Теперь можем двигаться к самому важному - что все это нам дает. Вроде бы все очевидно - чем больше ядер - тем больше задач мы можем выполнить параллельно - тем быстрее мы получаем результат. Но давайте по порядку.

пятница, 11 ноября 2016 г.

Stream API и Fork/Join. Параллельные вычисления. Java 8 [10 min reading]

Stream. Что это?


Определим Stream как свободную последовательность элементов, которая не хранит никаких данных и использует коллекции как ресурс. Соответственно Stream не предоставляет непосредственного доступа к данным, а дает возможность применить к ресурсу данных вычислительные операции, которые могут быть выполнены последовательно либо параллельно. Эти вычисления в свою очередь "ленивые" и будут выполнены только после вызова терминальной операции.

Все вместе(ресурс данных, последовательность агрегирующих операций и терминальная операция) это называется stream pipeline.


Stream и параллельные вычисления


В разрезе данной темы для нас важным моментом является как раз возможность выполнять вычисления параллельно. И это не требует от нас ни единой строчки многопоточного кода. Или parallel(), когда мы работаем с готовым stream'ом или parallelStream(), когда создаем его сами.

Но все же интересно, как это работает.

среда, 9 ноября 2016 г.

Fork/Join Framework. Параллельные вычисления. Java 8 [5 min reading]

1. Fork/Join Framework


Запустить вычисления параллельно в Java 8 можно всего лишь изменением вызова одного метода. Если у вас уже есть Stream объект вы можете вызвать у него parallel(). Если у вы получаете Stream из коллекции, тогда делайте это через parallelStream().

Параллельные вычисления основаны в Java на разбивке задачи на подзадачи, решение каждой из них параллельно в отдельном потоке, последующием объединение результатов. За это отвечает fork/join framework.

понедельник, 7 ноября 2016 г.

Знакомство с Optional монадой в Java 8

Когда я слышал слово "монада", то представлял себе экзотические языки программирования как Haskell, Scala. После встретил, очередной раз погружаясь в изучение Javascript. Ну а как же Java?

Теперь и в Java можно найти монаду, приложив усилие.

суббота, 29 октября 2016 г.

Закусочная Боба или Facebook Chatbot на Spring Boot

Год назад мы с другом покупали хот-доги в закусочной в холле офиса. Алгоритм такой: прийти заказать хот-дог, потом в зависимости от нагрузки вернуться через 10-15 мин. Мы еще тогда шутили, что надо просто делать заказ через ФБ и приходить после того как они напишут, что хот-дог готов.

Это было как раз перед запуском бот-платформы у ФБ. После запуска платформы собирался написать приложение, чтобы познакомиться с технологией. Решил что идея с ботом для закусочной подойдет. Для запуска бота нужны 3 составляющие ФБ приложение, создать публичную страницу, добавить поддержку бота в приложении связав со страницей.

пятница, 24 июня 2016 г.

Spring Security. Простая конфигурация

При разработке вэб приложения рано или поздно необходимо решать задачу безопасности. В этом вопросе Spring Security предоставляет комплексные решения безопасности, аутентификации и авторизации. Построенный на основе Spring Framework, Spring Security имеет все преимущества Dependecy Injection и AOP

Конфигурация Spring Security начинается со следующих моментов:


  package spitter.config;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.security.config.annotation.web.
  configuration.WebSecurityConfigurerAdapter;
  import org.springframework.security.config.annotation.web.servlet.
  configuration.EnableWebMvcSecurity;

  @Configuration//1
  @EnableWebMvcSecurity//2
  public class SecurityConfig 
   extends WebSecurityConfigurerAdapter { //3
  }

понедельник, 15 февраля 2016 г.

Как работают грейдеры наподобиe Codility, Hackerrank. Демистификация

Думаю вам не раз на этапе собеседования приходилось проходить онлайн тест на одном из популярных ресурсов: Codility, Hackerrank.

Методика простая - ознакомившись с условием задачи, вписать свой решение в соответствующей textarea, предварительно выбрав язык. И если вы выбираете javascript, то ваш код обработается сразу браузером.