Содержание

вторник, 29 апреля 2014 г.

Android tricks

Последние полтора года я в основном программировал под Android, разработка под который хоть и включает в себя программирование на языке с синтаксисом Java 6, но все же runtime окружение значительно отличается от того к чему привыкли Java разработчики. Несмотря на это, я все таки решил написать здесь топик о некоторых вещах в Android, которые мне показались интересны, хотя они немного и отличаются от тематики данного блога.
  1. Созданние Bitmap в off-heap 
  2. Эффективная работа с базой данных
  3. GC и плавность UI (fluidity)
  4. Thread priority 
  5. Shared GLContext
  6. Wifi and DNS 
  7. Unsafe и MemoryFile

пятница, 17 августа 2012 г.

Как использовать фантомные ссылки

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

среда, 25 июля 2012 г.

Azul C4

Наконец-то появилась статья на русском как работает сборщик мусора Azul JVM, и за счет чего достигается полное отсутствие stop-the-world фаз. Полное официальное описание на английском доступно тут. Я же приведу краткое описание на русском, которое donjenya опубликовал в своей статье GC и большой heap: друзья или враги? на хабре.

пятница, 20 июля 2012 г.

Быстрая универсальная сериализация

Я уже работаю во второй компании, где для внутреннего ремоутинга написали свою собственную сериализацию. Вобщем-то не удивительно, ведь, каждый знает, что стандартная сериализация очень медленная и создает нагрузку на GC. В данном топике я расскажу, почему некоторые пишут свое собственное решение, какой подход используют и какие дополнительные плюшки из этого можно получить еще.

понедельник, 16 апреля 2012 г.

Измерение времени и засыпание потоков

В данном топике я хотел бы поговорить об инструментарии доступном в java для измерения времени и запуска таймеров, об их точности, производительности и возможных проблемах при работе с ними. Например, на Windows при определенных паттернах работы с Thread.sleep() системные часы могут начать идти заметно быстрее, добавляя по несколько секунд на каждом часе. Так же можно столкнуться с большим джиттером при работе с таким классом как ScheduledThreadPoolExecutor.

пятница, 10 февраля 2012 г.

Сортировка в Java

Я уверен, что абсолютное большинство java программистов знают как отсортировать коллекцию или массив средствами JDK в одну строчку. А вот в том, что все знают как внутри будет просиходит сортировка и от чего это зависит, я уже не очень уверен. Тем более в java 7 эта логика очень сильно поменялась. В этом топика я расскажу о принципиальном различии между сортировкой объектов и примитивов, о различии сортировок в зависимости от длины массива и типа примитивов, а так же упомяну о способах поддержания коллекций в сортировоном виде.

среда, 1 февраля 2012 г.

Java LRU cache

Недавно мне вместо одного простенького кэша в виде хешмапы потребовалось использовать LRU кэш. Т.е. я хотел, чтобы при достижении кэшом какого-то размера, из него начинали выкидываться старые значения, которые давно не использовались. Каково же было мое удивление, что для этого во всем приложении пришлось добавить всего три строчки и не потребовалось подключения какой-либо библиотеки. Но это прокатило только для самого простейшего случая. Если вы хотите использовать LRU кэш, за доступ к которому будет нехилая конкуренция со стороны нескольких потоков, то для того, чтобы это работало эффективно, придется напрячься побольше. Но, давайте, обо всем по порядку.