Статьи

Советы по повышению производительности Java: лучшие отзывы сообщества

Сообщество высказалось. Мы собрали ваши лучшие и лучшие продуктивные хаки в одном посте.

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

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

Ваши собственные советы и хитрости

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

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

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

Сценарии: ваш собственный Джарвис

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

Большинство из вас упомянули использование скриптов bash. Ферран Дельгадо разработал и рассказал нам о разделенном проекте, над которым он работает. Он состоит из одной общей части для всей компании и другого конкретного Java-проекта для его отдела. Они используют скрипт для мониторинга и контроля правильности выполнения шагов Maven. Он также загружает файл JAR на удаленный компьютер для предварительного тестирования.

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

Поскольку мы в Takipi работаем со многими языками программирования, требуется время для перестройки кода, обновления IDE, перезапуска системы и так далее. Вот почему Дэвид создал среды, в которых Git-репозиторий содержит псевдонимы и удобные ярлыки, которые готовы к работе в течение нескольких минут и в течение двух нажатий клавиш. Таким образом он сможет подключиться к машине Amazon и работать на ней, как если бы он работал на своем компьютере в считанные секунды.

Например, он создал псевдоним для подключения к локальному MySQL:

1
alias mysql-local="mysql -A -u root -p123456"

И псевдоним, чтобы проверить, работает ли Jenkins:

1
alias psjenkins="ps -ef | grep jenkins"

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

1
2
3
4
function d2h()
{
    printf "%x\n" $1
}

И функция, которая извлекает все zip-файлы и помещает их в каталог:

01
02
03
04
05
06
07
08
09
10
function unzipAll()
{
    for file in `ls | /bin/grep zip`; do
        local base_name="${file%.*}"
        rm -rf $base_name
        mkdir $base_name
        unzip $file -d $base_name
        rm $file
    done
}

Одна из его любимых функций создает и диски во временную директорию с текущими временем и датой:

01
02
03
04
05
06
07
08
09
10
function temp()
{
    local root_dir=~/temp/temp
    local date_seconds=date +%s
 
    local temp_dir="$root_dir/$date_seconds"
     
    mkdir -p "$temp_dir"
    cd "$temp_dir"
}

И, конечно, у него есть функция для уничтожения процесса Tomcat:

1
2
3
4
5
6
function killtomcat()
{
    running_tomcats=ps -ef | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }' | tail -1
 
    kill -9 $running_tomcats
}

Моника Беквит , консультант по производительности Java / JVM и рок-звезда JavaOne, также предлагает несколько сценариев, которые могут ей помочь. Она использует автоматические сценарии для генерации JFreeChart для построения любой / всей соответствующей информации о файле GC.

Если вы испытываете трудности с сокращением затрат на сборку мусора Java, у нас есть несколько советов, которые могут помочь , независимо от того, какой сборщик мусора вы выберете.

Итог: используйте скрипты bash, создавайте псевдонимы и удобные ярлыки и пытайтесь автоматизировать все, что можете, когда загружаете свои машины или серверы.

Документация: подготовка к следующему разработчику

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

Лукас Эдер , основатель и генеральный директор Data Geekery и создатель jOOQ, заявил, что каждое программное обеспечение будет расти, и в какой-то момент станет невозможным написать код, который будет совершенно понятен.

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

Таким образом, спустя годы после любого данного исправления будет легко выяснить, почему было принято какое-либо решение, которое было бы невозможно в противном случае:

01
02
03
04
05
06
07
08
09
10
if {
  
        // [#1145] Bind variables only for true prepared statements
        // [#2414] Even if parameters are inlined here, child
        //         QueryParts may override this behaviour!
        executePreparedStatements(c.settings()) &&
  
        // [#1520] Renderers may enforce static statements, too
        !Boolean.TRUE.equals(ctx.data(DATA_FORCE_STATIC_STATEMENT))) {
        ...

Итог: объясните все, что можете, чтобы вам было легче (или просто возможно) понять ваш код и работать с ним.

Устранение неполадок: преследование после ошибок

Олег Шелаев , инженер по продукту в ZeroTurnaround , сказал нам, что то, что сделало его более продуктивным, это умение. Его совет состоит в том, чтобы научиться использовать отладчик IDE в полной мере. Определите и используйте правильные типы точек останова: точки останова исключений, ввод метода, доступ к полю и, конечно, условные, которые применяются только тогда, когда заданное вами условие истинно. Это значительно облегчит пошаговое выполнение кода, поскольку вы избежите ложных положительных остановок.

Олег также добавляет, что, когда вам нужно добавить дополнительные операторы журнала, вы должны поставить перед ними префикс чего-то различимого и нелепого, поэтому эту информацию будет легко найти и она никогда не ускользнет от проверки кода. Ему нравится использовать «Панда говорит:» ​​в качестве префикса, потому что тот, кто не любит панду & # 55357; & # 56898;

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

Итог: устранение неполадок является неотъемлемой частью разработки программного обеспечения, узнайте, как извлечь из него максимальную пользу.

Инструменты: Мониторинг и управление вашей системой

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

Двое, которые выделялись, были шеф-повар и кукольный. Оба являются инструментами с открытым исходным кодом, которые помогают вам контролировать производительность вашего продукта, функциональность, серверы и так далее. Если вы не уверены, в чем разница между двумя, или просто задаетесь вопросом, какой инструмент управления развертыванием вы должны выбрать, мы сравнили Chef с Puppet, Ansible, SaltStack и Fabric .

Говоря о поиске различий, мы также получили много предложений для различных инструментов сравнения, в том числе:

Мы обратились к Tzofia Shiftan , руководителю команды в Takipi, и спросили, что у нее за инструмент. Она использует Meld для сравнения файлов и каталогов, просмотра изменений кода и понимания слияния до того, как оно повлияет на код.

Цофия также использует другой удобный инструмент, индикатор , который помогает ей контролировать свою систему. Он показывает графики производительности процессора, сетевой активности, памяти и любых других системных ресурсов, которые вы хотите проверить. Если вам интересно, Дэвид контролирует свою систему с помощью htop .

Если вы ищете инструменты, которые помогут вам при написании кода, возможно, вы захотите взглянуть на JRebel . Он мгновенно перезагружает ваш код, поэтому вам не нужно перезапускать процесс Java, чтобы увидеть сделанные изменения.

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

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

Разное: закрой Chrome, убей Buzz

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

  • Читайте ваши письма только один или два раза в день
  • Настройте достижимую цель на каждый день (и фактически делайте их)
  • Найдите правильную музыку, которая поможет вам оставаться сосредоточенным
  • Очистите рабочий стол и спрячьте все, что вам не нужно
  • Закройте вкладки браузера, которые вы не используете
  • Получите постоянную рабочую станцию, это помогает течь крови
  • Не забывайте делать перерыв каждый раз

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

TL; DR

Вы находитесь в середине напряженного рабочего дня и хотите получить краткий обзор всего, что мы упомянули в посте? Вот все, что мы рассмотрели:

  • Псевдонимы — запустите группу удобных команд с помощью нескольких кликов
  • JFreeChart — отображать графики внутри приложений
  • Документация — Сделайте ваш код понятным для будущих разработчиков
  • Устранение неполадок — Узнайте, как упростить поиск ошибок и поиск ошибок
  • Такипи — Узнайте, почему Java-код не работает
  • Chef + Puppet — Используйте инструменты для обзора и управления вашими системами
  • Сравнить ++ , Guiffy , Kompare , Meld — использовать инструменты сравнения и слияния для сравнения и обнаружения изменений
  • Индикатор , htop — Мониторинг вашей системы и ресурсов в режиме реального времени
  • JRebel — Обновить код меняется мгновенно

Последние мысли

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

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