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

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

Send message

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

Reading time5 min
Views38K


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

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

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

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

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



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

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

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

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

Reading time6 min
Views58K
На прошлой неделе состоялся успешный эксперимент по запуску нового решения для 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
Comments68

Секреты JDK

Reading time4 min
Views25K

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

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

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

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

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

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

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

Reading time6 min
Views121K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

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

Information

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