Pull to refresh
39
0
Олег Анастасьев @m0nstermind

Главный инженер

Класс дедлоков про дедлок классов

Reading time 5 min
Views 38K


Знаете ли вы, как избежать дедлоков в своей программе? Да, этому учат, про это спрашивают на собеседованиях… И тем не менее, взаимные блокировки встречаются даже в популярных проектах серьёзных компаний вроде Google. А в Java есть особый класс дедлоков, связанный с инициализацией классов, простите за каламбур. Такие ошибки легко допустить, но трудно поймать, тем более, что сама виртуальная машина вводит программиста в заблуждение.

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

Читать дальше →
Total votes 45: ↑45 and ↓0 +45
Comments 18

Возвращение Джокера: как прошла главная российская Java-конференция

Reading time 6 min
Views 19K
Год назад в Петербурге впервые прошла конференция Joker, и на Хабрахабре появился подробный текст об этом. Теперь она вернулась с еще большим размахом, подтверждая делом свою заявку на статус «главной Java-конференции в России». Организаторы, возглавляемые Алексеем Федоровым (@23derevo), позвали меня оценить результат своей работы. Сразу оговорюсь, что я не Java-программист, а IT-журналист, поэтому далеко не во все технические детали докладов мог вникнуть — но того, что понял, было достаточно для выводов.



Читать дальше →
Total votes 37: ↑30 and ↓7 +23
Comments 39

Откуда растут ноги у hashCode

Reading time 2 min
Views 88K
Опять на собеседованиях по Java спрашивают про hashCode и equals? А кто из собеседующих сам ответит на вопрос, как вычисляется Object.hashCode() и System.identityHashCode()? Насколько дорог вызов этих методов? Как их можно ускорить в HotSpot JVM? Держу пари, едва ли кто даст правильный ответ. Разве что, кто прочитает эту статью.
Читать дальше →
Total votes 93: ↑91 and ↓2 +89
Comments 43

Использование разделяемой памяти в Java и off-heap кеширование

Reading time 6 min
Views 58K
На прошлой неделе состоялся успешный эксперимент по запуску нового решения для download-сервиса. Один достаточно скромный сервер (2 x Intel Xeon E5620, 64 GB RAM) под управлением Java-приложения собственной разработки принял на себя нагрузку восьми Tomcat'ов, обслуживая более 70 тысяч HTTP-запросов в секунду общей пропускной способностью 3000 Mb/s. Таким образом, весь трафик Одноклассников, связанный с пользовательскими смайликами, обрабатывался одним сервером.

Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
Читать дальше →
Total votes 65: ↑64 and ↓1 +63
Comments 74

Секреты JDK

Reading time 4 min
Views 25K

Про Unsafe в Java не слышал только ленивый, однако это не единственный магический класс в Sun/Oracle JDK, стирающий границы Java платформы и открывающий тропинки, не нанесенные на карту публичного API. Я расскажу про некоторые из них, принесшие пользу в реальных проектах. Но помните: недокументированные возможности лишают ваше приложение переносимости на другие Java платформы и, кроме того, являются потенциальным источником нетривиальных ошибок. Я даже зря написал слово «приложение». Лучше сказать, что описанные ниже классы вовсе не годятся для приложений! Скорее, они представляют интерес лишь для системного ПО и для любознательных программистов, т.е. для вас :)
Читать дальше →
Total votes 129: ↑127 and ↓2 +125
Comments 33

«Звонки» в iPhone-приложении Одноклассников

Reading time 4 min
Views 14K
В пятницу мы запустили новую версию нашего iPhone-приложения. В этом посте мы хотели бы поделиться с вами опытом разработки подобных сервисов.

Сервис «Звонки» — видеочат на сайте Одноклассники реализован средствами Flash. Но далеко не все наши пользователи заходят на Одноклассники с компьютера/ноутбука. Чтобы расширить аудиторию видеочата, мы решили поддержать его также в смартфонах.

В этой статье пойдет речь об опыте реализации видеозвонков в приложении для iOS.

Схема работы приложения:
Читать дальше →
Total votes 50: ↑36 and ↓14 +22
Comments 18

«Выглядит похоже». Как работает перцептивный хэш

Reading time 6 min
Views 120K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →
Total votes 149: ↑145 and ↓4 +141
Comments 46

Information

Rating
Does not participate
Location
Латвия
Works in
Date of birth
Registered
Activity