Как стать автором
Поиск
Написать публикацию
Обновить
46
0
Сергей Цыпанов @tsypanov

Разработчик

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

Прикладное руководство по настройке приёмников ГНСС для FPV

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

Привет, решил немного отвлечься от Java и поделиться своим опытом в любительском дроностроении, а именно в настройке приёмников ГНСС, с помощью которых птица сможет вернуться домой при обрыве сигнала или по крайней мере передать свои последние координаты. Это сильно облегчит поиск, особенно, если вы всё сделали правильно, передаёте координаты в телеметрии* и пишете их в лог в вашем пульте ;)

Полетели

Как положить приложение 21 запросом* к /actuator/health

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.2K
Уточнение для въедливых :)

* 21 и более параллельным запросом в определённых условиях :)


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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


О чём статья?


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


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


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


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


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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

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


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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


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


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


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

Читать дальше →

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

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

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


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

Читать дальше →

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

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

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

Читать дальше →
1

Информация

В рейтинге
1 022-й
Зарегистрирован
Активность