Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.
Я ненавижу писать какой-то бизнес-код не только потому, что их первоначальный замысел разработан не мной, успех — это заслуга продукта, а код несет ответственность за неудачу. Важная причина заключается в том, что существует слишком много повторяющихся кодов, а сложная бизнес-логика должна быть «кули», чтобы найти свои ошибки. Здесь действительно крутизна, а не сила ума, что показывает, что по большей части это некачественная повторяющаяся работа. О, о, я пошел против элитарной риторики.
Так как я имею право выступать в проекте, я буду очень хорошо относиться к этим бедным студентам. Проблема не обнаружена, пока не обнаружена, но она низкоуровневая, а вот перипетии посередине просматриваются редко, и нетехническому менеджеру в этом сложно разобраться. Чем выше должность, тем больше внимания уделяется достижению общей цели, но мало внимания уделяется чувствам личности, что не является хорошим явлением. Насыпь в тысячу миль рушится в муравейнике. Общий уровень общих НИОКР представляет собой конкурентоспособность компании.
Отодвинься. Далее представлены несколько наборов инструментов, обычно используемых при разработке, которые могут преобразовывать исходные файлы Java, синтаксические деревья и байт-коды. С их помощью можно не только реализовать некоторые черные технологии, но и значительно повысить нашу производительность.
1, ДжаваПоэт
Иногда нам нужно использовать некоторые инструменты для генерации кода и создавать некоторые исходные файлы классов Java. Если вы используете строки для конкатенации, легко запутаться. Чтобы освободить руки, вы можете использовать инструмент JavaPoet для создания методов или блоков кода. Он также предоставляет ряд удобных операций, таких как заполнители, которые делают создаваемый вами код красивым и читабельным, четким и освежающим.
Особенно при написании некоторых фреймворков вы можете передать ему некоторые очень грязные и очень утомительные задачи.
Пример кода.
MethodSpec main = MethodSpec.methodBuilder("main")
.addStatement("int total = 0")
.beginControlFlow("for(int i=0;i<10;i++)")
.addStatement("total +=i;")
.endControlFlow()
.build();
2. JavaCC
JavaCC — это генератор синтаксиса и синтаксический анализатор, который можно прочитать, прочитав.jj
(Это Dick I Seys сестра) Файл описания для генерации файла Java. Это звучит так же, как Javapoet, но он находится на уровне синтаксиса, процесс является переводом, а не «Construction», а принцип компиляции, который мы узнали, является уровнем. И файлы, сгенерированные JAVACC, обычно нечитаемыми, кто делает его больше похожи на YACC и LEX.
Вы можете использовать его, если хотите настроить некоторые выражения или сделать парсер для специального формата.
Аналогично этому ANTLR. С точки зрения приложения, и Velocity, и FreeMarker используют JavaCC в качестве интерпретатора грамматики; Hibernate использует ANTLR в качестве интерпретатора грамматики для HQL.
Я все же предпочитаю Ragel (не Java). Для этих сценариев больше не нужно полагаться на эти инструменты после создания файла, и важнее быть эффективными и простыми в использовании.
2. Явапарсер
Вышеупомянутое предназначено для создания файлов Java (или других файлов) через синтаксическое дерево Javaparser генерирует синтаксическое дерево (AST) через файл Java, а затем анализирует и модифицирует код Java на основе этого синтаксического дерева. Обратите внимание, что он может напрямую генерировать файлы Java в обратном порядке на основе дерева синтаксиса.
В соответствии с этим синтаксическим деревом вы можете напрямую анализировать независимый файл Java, даже если файл Java запутан и не может быть скомпилирован, без использования отражения и других функций во время выполнения. С JavaPoet вы можете выполнять очень интересные функции. Например, Javaparser извлекает комментарии или аннотации из файлов Java, а затем генерирует некоторые автоматические документы (Swagger) с помощью JavaPoet или автоматически заполняет тестовые примеры.
В дополнение к этому, Javaparser может указать очень строгий синтаксический формат, поэтому также можно использовать его в качестве инструмента обзора кода, или даже сделать некоторый анализ зависимости кода.
4, Ломбок
По сути, это всего лишь вспомогательный инструмент разработки, который следует использовать при проведении множества исследований и разработок, и он позволяет значительно сократить объем кода. Давайте избавимся от надоедливых get, set, hashCode, equals и даже log и т.д.
Lombok на самом деле отчасти похож на упомянутый выше Javaparser, но он находится на уровне JDK.
После того, как javac преобразует файл Java в абстрактное синтаксическое дерево (AST), Lombok динамически изменяет AST и добавляет новые коды узлов в соответствии со своим собственным процессором аннотаций. Затем сгенерируйте наш окончательный байт-код.
Эта технология реализована API-интерфейсом аннотаций javac (JSR-269), который позволяет javac выполнять некоторые действия во время компиляции.
JDK выполняет гораздо больше работы, чем мы якобы используем.
5. Байтбадди
Вышеупомянутые инструменты преобразуют некоторые другие коды в исходные файлы Java, и эти исходные файлы Java необходимо скомпилировать, прежде чем их можно будет использовать.
Bytebuddy может идти дальше и напрямую генерировать классы Java динамически. Да, это тот тип, который непосредственно загружен в мета-пространстве, а класс может быть динамически изменен во время работы программы. Нет необходимости вести обмоток путь к месту назначения.
Его нижний уровень — ASM, поэтому ByteBuddy может напрямую изменять байт-код, что является своего родаИнструмент улучшения байт-кода.
Подобными инструментами являются JAVASIST, CGLiB и т. д.
Если вы выполняете какую-либо работу с прокси, или выполняете некоторые APM и т. д., и хотите реализовать такие функции, как Aspectj, или инструменты для устранения неполадок, такие как Arthas, то эти инструменты подходят.
End
Несколько инструментов выше, некоторые сравнимы, но они совершенно крутые. Не только круто, но и очень полезно. В руководстве часто встречаются, используя различные методологии, чтобы обсудить, как управлять документами, как автоматизировать, как проверить, выполнили ли вы функцию.
Не говори им!
Об авторе:Мисс сестра вкус(xjjdog), публичная учетная запись, которая не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус. Мой личный WeChat xjjdog0, добро пожаловать в друзья для дальнейшего общения.