Pull to refresh
39
0

Разработчик

Send message

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

Reading time9 min
Views14K

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


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

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments15

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

Level of difficultyMedium
Reading time9 min
Views13K

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


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

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments2

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

Level of difficultyHard
Reading time19 min
Views4.9K

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

Читать далее
Total votes 30: ↑30 and ↓0+30
Comments7

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

Reading time19 min
Views15K

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

Читать далее
Total votes 42: ↑41 and ↓1+40
Comments10

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

Reading time51 min
Views8.5K

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

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments4

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

Reading time8 min
Views3.4K

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

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

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments2

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

Reading time12 min
Views3.2K

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments2

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

Reading time27 min
Views6.6K

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

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

Reading time7 min
Views4K

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

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments6

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

Reading time23 min
Views7.3K

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


О чём статья?


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


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


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


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


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

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments5

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

Reading time20 min
Views3.6K

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

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


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

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

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

Reading time6 min
Views14K

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


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

Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments38

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

Reading time11 min
Views4.5K

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


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

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

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

Reading time6 min
Views4.3K

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


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


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


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

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

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

Reading time9 min
Views12K

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


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

Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments81

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

Reading time6 min
Views5.6K

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

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments11

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

Reading time17 min
Views14K

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


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

image

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments21

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

Reading time14 min
Views66K

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

Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments6
1

Information

Rating
Does not participate
Registered
Activity