Как стать автором
Обновить
39
0

Разработчик

Отправить сообщение

Задача на собеседовании, её решение и его разбор

Время на прочтение9 мин
Количество просмотров14K

Привет, обычно пару раз в год я хожу на собеседования без намерения менять работу, а для получения нового опыта и в поисках актуального ответа на вопрос "А что сейчас спрашивают?"


Часто там задают обычные, даже скучные вопросы вроде "расскажите о контракте между equals()и hashCode()", но иногда попадаются очень умные и приятные интервьюеры, проводящие собеседование вдумчиво, расспрашивающие о технологиях, используемых на целевом проекте (а не об абстрактном volatile), ставящие нестандартные вопросы и задачи. Сегодняшняя статья будет об одном из таких замечательных собеседований (вернее о задаче) и о вопросах, поднятых в ходе её обсуждения.

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии15

Разница между загрузкой и инициализацией классов в Java на любопытном примере

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров13K

Привет, сегодняшняя статья будет о некоторых тонкостях загрузки и инициализации классов и немного о производительности (совсем чуть-чуть и в самом конце).


Поводом для написания статьи стал вопрос на StackOverflow. Откройте, но не торопитесь читать ответ ;)

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии2

Профилирование, ассемблер и все-все-все

Уровень сложностиСложный
Время на прочтение19 мин
Количество просмотров5K

Привет, сегодня будет объёмная и обстоятельная статья о низкоуровневом профилировании и дигностике производительности. Многократно в комментариях к докладам и статьям пользователи высказывали пожелание увидеть не просто перечисление шаблонов "как нужно" и "как не нужно", а целостную историю. Поэтому вот вам статья про конкретный кейс и его историю :). Не удивляйтесь, что начнём мы с JPA, хотя казалось бы где оно и где ассемблер. По ходу дела вы всё поймёте.

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии7

Холостые циклы в Java

Время на прочтение19 мин
Количество просмотров15K

Привет, сегодня поговорим о тонкостях реализации холостых циклов (холостого ожидания) в Java. Эта задача встречается нечасто: за девять с небольшим лет работы я столкнулся с ней лишь пару раз. Тем не менее, тема видится интересной и по ней есть что сказать, так что добро пожаловать! Исходный код примеров доступен здесь.

Читать далее
Всего голосов 42: ↑41 и ↓1+40
Комментарии10

Производительность: нюансы против очевидностей. JDK edition

Время на прочтение51 мин
Количество просмотров8.5K

Привет, это продолжение статьи, в которой я разбирал разные неочевидные вещи из мира производительности. В этот раз будем копать ещё глубже, хоть и начнём с относительно простых примеров. И да, в этой статье будет много интересного про строки. Да, несмотря на "Катехизис j.l.String", "The Lord of the Strings: Two Scours" и несколько моих статей (раз, два, три, четыре) там всё ещё есть куда копать :)

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Комментарии4

Практическое использование JCStress

Время на прочтение8 мин
Количество просмотров3.4K

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

Цель данной статьи - показать читателям использование JCStress не только в лабораторных работах для демонстрации эффектов связанных с JMM, но и для доказательства правильности преобразований кода. Тренироваться будем на кошках JDK.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Как починить HotSpot с помощью Java

Время на прочтение8 мин
Количество просмотров4.1K

Приветствую, за время праздников подготовил статью про низкоуровневое профилирование и производительность.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии12

Профилирование с точностью до ассемблерных инструкций

Время на прочтение12 мин
Количество просмотров3.2K

Работая над темой низкоуровневого профилирования, я обнаружил отсутствие подробного руководства по настройке окружения и сбору материала. Всё пришлось делать самому путём проб и ошибок. Итогом стала эта статья, в которой я по шагам описал профилирование кода, горячее место в котором не в силах обнаружить не только какой-нибудь VisualVM, но и титаны вроде async-profiler-а. В качестве примера использован код из ранее упоминавшейся статьи The volatile read surprise.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Производительность: нюансы против очевидностей

Время на прочтение27 мин
Количество просмотров6.6K

Приветствую, это текстовая версия моего доклада на JPoint-2021. Как обычно я сделал упор на случаи из жизни и на повседневные вещи, используемые каждым разработчиком. Под кат приглашаются интересующиеся производительностью и им сочувствующие.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Ещё больше строковых оптимизаций

Время на прочтение7 мин
Количество просмотров4K

В продолжение своей предыдущей статьи о строках (напоминаю, это была текстовая версия доклада на ДжиПоинте-2020) решил дописать ещё одну заметку, куда вошли некоторые оптимизации, обнаруженные уже после вёрстки презентации.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии6

Ах, эти строки

Время на прочтение23 мин
Количество просмотров7.3K

Это текстовая версия моего доклада "Ах, эти строки" на конференции JPoint-2020.
Дабы не тратить время читателей зря, сразу расставим все точки над "ё".


О чём статья?


Статья об эффективном (или не очень) использовании строк.


Для кого статья?


Статья для разработчиков, занимающихся производительностью, и им сочувствующих.


Откуда всё это?


Что-то выловлено в коде проекта, что-то — во фреймворках и библиотеках.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии5

Маленькие тонкости java.lang.String

Время на прочтение9 мин
Количество просмотров15K

Приветствую,


перебирая накопленный материал по java.lang.String решил сделать небольшую подборку примеров из эффективного (и не очень) использования.

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии2

Моя попытка номер 5

Время на прочтение20 мин
Количество просмотров3.6K

А я пропатчил, я пропатчил SJ
Опять, опять, опять…
Ох, как намаялся я с тобой
Моя попытка номер пять.

Крутилось в голове


Это небольшой большой рассказ о попытке привнести сжатые строки в StringJoiner, а также о трудностях, вставших на моём пути. Предупреждение: внутри расчленёнка и кишки, уберите от мониторов детей и впечатлительных лиц.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии3

Вещи, которые вы [возможно] не знали о Java

Время на прочтение6 мин
Количество просмотров14K

Приветствую, читатель!


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

Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии38

Не все патчи одинаково полезны

Время на прочтение11 мин
Количество просмотров4.5K

Эта заметка продолжает разбор улучшений производительности, которые могли бы стать явью, если бы не разные "но". Предыдущая часть о StringBuilder-е находится здесь.


Здесь мы рассмотрим несколько "улучшений", отклонённых из-за непонимания тонкостей спецификации языка, неочевидных угловых случаев и других причин. Поехали!

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии10

Вкалывают роботы — счастлив человек

Время на прочтение6 мин
Количество просмотров4.3K

Позабыты хлопоты,
Остановлен бег,
Вкалывают роботы,
Счастлив человек!


Из фильма "Детство Терминатора" "Приключения Электроника"


Привет, сегодня мы снова поговорим о производительности. О производительности труда разработчиков.


Я расскажу о том, как средствами "Идеи" прокачать этот навык. Надеюсь, мои советы пригодятся вам, замечания и улучшения приветствуются. Поехали!

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Что мы делаем не так со Спрингом

Время на прочтение9 мин
Количество просмотров12K

В этой заметке хочу поделится наблюдениями о некоторых антипаттернах, встречающихся в коде приложений, работающих на Спринге. Все из них так или иначе всплывали в живом коде: либо я натыкался на них в уже существующих классах, либо вылавливал во время вычитки творчества коллег.


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

Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии81

Мины под производительностью ждут своего часа: часть 2

Время на прочтение6 мин
Количество просмотров5.6K

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

Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии11

Мины под производительностью ждут своего часа

Время на прочтение17 мин
Количество просмотров14K

В этой статье я расскажу о минах, заложенных под производительность, а также об их обнаружении (желательно ещё до взрыва) и обезвреживании.


Картинка для привлечения внимания

image

Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии21

Spring Data JPA: доводим напильником

Время на прочтение14 мин
Количество просмотров66K

Приветствую, это вторая заметка о Spring Data JPA. Первая часть была целиком посвящена подводным граблям, а также советам бывалых. В этой части мы поговорим о том, как заточить фреймворк под свои нужды. Все описанные примеры доступны здесь.

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии6
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность