Сегодня наткнулся на замечательный сайт e-maxx.ru. На сайте описано множество алгоритмов с реализацией на C++. А самое главное - это задачи, в которых применяются алгоритмы.
среда, 30 сентября 2015 г.
понедельник, 1 июня 2015 г.
Засекаем время в java
Предистория
Как-то раз я занимался оптимизацией сложной операции,
выполняемой на сервере, которая включала в себя несколько запросов
к базе данных с последующей группировкой и сортировкой по определенным
параметрам полученных данных. К сожалению, средствами SQL запросов
обойтись не получилось, так как в конечной выборке участвовали
данные полученные по веб-сервисам из внешних систем. Поэтому приходилось
выполнять группировку и сортировку данных с помощью кода приложения.
Когда я запустил первый раз этот код на реальных
данных, очевидно, все работало неприемлемо медленно и требовало
оптимизации. С чего начинать оптимизацию? Правило Парето никто
не отменял и оно гласит, что нужно начинать оптимизацию тех участков
кода, выполнение которых занимает львиную долю времени выполнения
операции. Возникла задача выяснить, какой из этапов крупной операции
выполняется дольше остальных, и насколько дольше. Для этого необходимо
"стоять с секундомером" и засекать начало и конец каждого этапа и
результат выводить в лог. На момент решения данной задачи я обошелся
собственным решением, в котором я запоминал System.currentTimeMillis()
в промежуточные значения в локальных переменных. Затем происходил
подсчет разниц времени вывод в лог описаний. У данного подхода я
обнаружил существенные недостатки:
- Код сильно загрязнился. Локальные переменные заполонили код, и его стало читать очень сложно.
- Сложно исправлять/добавлять новую операцию, так как логика о подсчету времени размазана.
Но есть и плюс, только он на мой взгляд один: это гибкость и возможность написать то, что тебе нужно.
Мне такое решение не давало покоя и я решил сделать небольшой обзор инструментов подсчета времени в java.
четверг, 28 мая 2015 г.
Rootconf: DevOps, мониторинг, метрики, алерты!

В некотором царстве в некотором государстве под названием Москва 21-22 мая 2015 года прошёл фестиваль Российские интернет технологии, на котором мне посчастливилось побывать. Проходил фестиваль в Крокус сити холле. В этом году Олег Бунин и его команда сделали из ежегодной конференции РИТ целый фестиваль. В рамках фестиваля было организовано 5 секций с различной тематикой.
- RootConf. Конференция по эксплуатации.
- FronfendConf. Конференция фронтэнд разработчиков.
- Highload++ Junior. Обучающая конференция разработчиков высоконагруженых систем.
- WhileRider. Профессиональная конференция по управлению и предпринимательству.
- Intersystems CacheConf. Конференция по различным типам доступа данных и быстрой разработке.
Подробнее можно ознакомиться с фестивалем на сайте. Я же посещал секцию rootconf, посмотрел на админов и попытался прочувствовать их проблемы посмотреть на эксплуатацию глазами разработчика.
DevOps, мониторинг, метрики, алерты!
Все выступления были пронизаны этими терминами. Основные направления докладов конференции - это хорошие практики использования систем мониторинга, улучшение процесса эксплуатации разработанного ПО.
Конференция расширила мой кругозор, и я пополнил багаж знаний.
- Открыл для себя пару новых терминов типа devops, гистерезис триггеров.
- Получил ссылки на незнакомые ранее для меня системы мониторинга: okmeter, graphite.
- Познакомился с интересными людьми.
- Понял, что разработчики и служба эксплуатации должны стать лучшими друзьями для более эффективной работы.
- И многое другое.
Считаю конференцию очень полезной. Если Вы хоть как-то связаны с администрированием и эксплуатацией ПО и есть потребность в мониторинге инфраструктуры, то обязательно посмотрите доклады, видео которых обещают уже выложить в ближайшее время. Доклады будут интересны как инженерам любого уровня, так и руководителям служб эксплуатации.
воскресенье, 16 ноября 2014 г.
Очень вкусный фрукт GUAVA. Мой доклад на первой встрече JUG.SEV
14.11.2014 прошла первая встреча JUG.SEV - сообщества java разработчиков Севастополя. Мне посчастливилось выступить на ней с докладом.
Слайды:
Видео:
Слайды:
Видео:
Подписаться на:
Сообщения (Atom)