27 марта 2013 г.

java: конференция jpoint

Осталось чуть больше недели до независимой java конференции jpoint, организованной энтузиастами Java User Group, которая состоится 5го апреля 2013 года в конгрессном центре “ПетроКонгресс” по адресу Санкт-Петербург, ул. Лодейнопольская, д. 5.



Святые угодники! Кто все эти люди ?!?

Я буду рассказывать о шишках и фишках, которые мы набили с garbage collectorом, как мы научились не мешать друг другу работать, зачем родился на свет garbage free logger, а так же о своих наблюдениях и рекомендациях в оптимизации приложений с оглядкой на gc, которые, надеюсь, будут полезные другим разработчикам.

Организаторы сознательно сделали несколько шагов объявив конференцию для middle/senior разработчиков:
  • Участие для слушателей в конференции платное. Деньги не космические, но это создаёт порог отсева толпы, пришедшей за халявой в виде бесплатных ручек и блокнотов
  • Подбор тем докладов и самих докладчиков: определённо темы докладов для людей «глубоко женатых», т.е для тех, у кого за плечами гораздо больше, чем hello world и пары свистелок.

Мой предварительный план докладов, которые хочу послушать:
  • Динамическое обнаружение гонок в многопоточных Java-программах - ребята из Devexperts, явно есть чему поучиться у них и узнать новые способы варки автогеномтонкой работы в java
  • Java Runtime: повседневные обязанности виртуальной машины Java - очень мне близка тематика по духу, приятно удивлён, что и у нас есть горячие головы, которые лобзиком выпиливают gc из jvm.
  • и быть может, холивное Eclipse vs Intellij IDEA
  • хотел бы ещё сходить послушать GC: Friend or foe, но ведь не дадут послушать...

Ещё раз хотелось бы послать лучи поддержки организаторам - у нас всё получится !

Дополнение. Организаторы обещают сделать видеозаписи докладов, которые после будут доступны в интернетах. Не спрашивайте меня когда, сколько и по чём.

P.S. Да, и регистрация уже закрыта.

28 февр. 2013 г.

java: who has eaten my cpu ?

Приходит давеча коллега и показывает запущенное простенькое java приложение, которое выжирает > 100% cpu без какой-либо на то видимой причины.

Святые угодники! что делать ?

3 янв. 2013 г.

Задачка: Перестановки в массиве

Дан массив
[ a1, a2, ... an, b1, b2, ... bn ]

Необходимо переставить элементы в массиве, так, чтобы получился

[ a1, b1, a2, b2, ... an, bn ]

замечание: дополнительная память O(1), сложность < O(n2)

20 дек. 2012 г.

Задачка: зеркально отразить битовое представление

Как можно зеркально отобразить битовое представление 8 битного числа ? 16 битного числа ?

Например,
M(12310) = M(011110112) = 110111102 = 22210.

внимание! комментарии содержат ответ.

27 нояб. 2012 г.

java: Adaptive throttling, Part 1


Типичная проблема, которая возникает при обработке большого потока сообщений:

- нельзя пропихнуть большого слона через маленькую трубу, т.е. обработка сообщений не успевает «проглотить» все сообщения


При этом существуют некоторые ограничения на поток данных :

  • поток не равномерный и состоит из событий разного типа
  • количество типов событий заранее не известно, но конечное число
  • каждый тип события имеет свою актуальность во времени
  • все типы событий имеют равный приоритет

На диаграмме приведён пример разрешения проблемы: нагребатор™ работает на нитке T1, а следовательно разгребатор™ на нитке T2
  • за время обработки события типа A успевают прийти новые события как типа B, так и A
  • после обработки события типа B необходимо обработать наиболее актуальное событие типа A

Проблема осложняется ещё тем, что может быть несколько нагребаторов™, при этом каждый нагребатор™ может порождать только события одного типа; так и есть потребность в нескольких разгребаторах™ - при этом

Терминология. Stream есть поток данных, тогда как thread есть нитка или нить выполнения. И не стоит путать потоки с нитками.

14 нояб. 2012 г.

java: nanoTime

Пока одни заливали соляру в трактор, мы продолжаем копаться в своём.

Тёма очень хорошо написал о измерении времени в java с ссылками на источники, так, что казалось бы и добавить нечего, но вставлю я свои пять копеек.

Все мы хорошо знаем метод System.nanoTime()

Задачка: развернуть односвязанный список

Задан односвязанный список, например:

A -> B -> C -> ... -> X -> Y -> Z

Необходимо развернуть список, т.е, чтобы его крайний элемент стал первым, предпоследний вторым, и т.д, и в конце концов, первый элемент стал бы крайним элементом.

Z -> Y -> X -> ... -> C -> B -> A

Сложность: O(N), доступная память: O(1).

замечание: можно модифицировать исходный список.

внимание! комментарии содержат ответ.

java: garbage less

За время написания gflogger и борьбой за low latency в java накопился некоторый опыт о том как меньше плодить мусора и тем самым меньше нагружать сборщик мусора, и как следствие, меньше влиять на производительность самого приложения.

Такому тонкому троллиподходу придумали специальный термин garbage less design.

Впрочем, существую и некоторые другие вариации как заставить garbage collector меньше мешать нам жить.

31 окт. 2012 г.

Paragliding: U-Turn Blacklight

Добрых шесть лет верой и правдой служил мне мой крыл - триколор U-Turn Infinity II. Где мы только с ним не побывали, в каких жоусловиях не бывали, но его время пришло. Тем более, что летом на Юце имелась чудесная возможность немного попробовать U-Turn Blacklight (удлинение 5.8, качество 10.5) - и надо сказать, что его скорость просто впечатлила . Вполне очевидно, что драгдиллер сделал предложение от которого я не смог удержаться - и крыл был заказан.

Ранее уже опробовал obsession - как в динамике, так и в термичке. Надо сказать, что первый полёт мне больше всего запомнился, и прежде всего хлопаньем ушей, что впрочем никак не отражалось на безопасности или управляемости крыла.

И вот настал долгожданный момент - пришёл мой крыл в желаемой не серийной расцветке

lime/black/white