мне 3 года,один годCRUD
десятилетний опытmarkdown
программист👨🏻💻
Сегодня поговорим о том, что ускоряет разработку:Инструментарий,LombokиОбщая библиотека
01. Что такое набор инструментов
По сути, в каждом проекте есть пакет с именемutils
. Этот пакет специально содержит классы инструментов наших собственных проектов, такие как общиеDateUtils
,HttpUtils
,Collections
Так называемые Utils:Мы часто используем эту штуку, но исходный API не прост в использовании, поэтому мы инкапсулируем его как более общий метод.
Если вы новичок, много раз сталкиваясь с таким похожим классом инструментов, вы не будете напрямую писать его сами, а сначала пойдете в поисковик, чтобы его найти. Найдя его, кажется, что я могу только одинctrl+c
,Одинctrl +v
владетьmain
Метод первый, получить некоторые тестовые данные, чтобы увидеть, может ли он работать.
Если это может работать, дайте ему имя и поместите его вutils
под пакет. После одной операции я обнаружил, что эта операционная осанка идеальна!
Как всем известно, инструменты, которые вам нужныСкорее всегоЛюди уже написали соответствующееjar
Пакет гораздо надежнее, чем код блога, найденный поисковиком.
знаю такихjar
Люди, которые его используют, всегда были пахучими, а люди, которые не знают, всегда могут скопировать то, чего им не хватает, и код очень беспорядочный.
02. Рекомендации по набору инструментов JAVA
В области Java есть два хорошо известных в отрасли инструментария:commons
иguava
Набор инструментов, поддерживаемый китайцами:Hutool
Если есть соответствующие требования, мы можем максимально использовать эти инструменты в коде проекта. их кодВ целомВсе лучше, чем то, что мы написали сами, и класс инструментов поможет нам сократить повторяющийся код, а более широкое использование сделает проект более читабельным.
Что касается того, что они могут сделать, если вы не знаете о них, вы можете сначала посетить их.Guide
, чтобы немного понять, какую функциональность инкапсулируют эти наборы инструментов. Когда вы понимаете, что вам нужно инкапсулировать функцию, сначала просмотрите документацию этих наборов инструментов.Когда я действительно не могу найти это, я не осознаю этого сам..
Не повторяй колесо, не повторяй колесо, не повторяй колесо.
Я выложу ссылки на эти инструменты🔗 Если вы не знаете об этом, то предлагаю вам взглянуть
я перехватилhutool
Часть информации в документе можно немного пощупать, лично я считаю ее относительно полной:
модуль | вводить |
---|---|
hutool-aop | Инкапсуляция динамического прокси-сервера JDK, обеспечивающая поддержку аспектов без IOC |
hutool-bloomFilter | Фильтрация Блума, которая обеспечивает некоторую фильтрацию Блума алгоритмов хеширования. |
hutool-cache | Простая реализация кэша |
hutool-core | Core, включая операции Bean, даты, различные утилиты и т. д. |
hutool-cron | Модуль задач синхронизации, предоставляющий задачи синхронизации, такие как выражения Crontab. |
hutool-crypto | Модуль шифрования и дешифрования, обеспечивающий инкапсуляцию симметричного, асимметричного и дайджест-алгоритма. |
hutool-db | Обработка данных после инкапсуляции JDBC на основе идеи ActiveRecord |
hutool-dfa | Поиск по нескольким ключевым словам на основе модели DFA |
hutool-extra | Модули расширения, инкапсулирующие третьи стороны (движок шаблонов, электронная почта, сервлет, QR-код, эмодзи, FTP, сегментация слов и т. д.) |
hutool-http | Пакет HTTP-клиента на основе HTTPURLCONNECTION |
hutool-log | Бревенчатый фасад, который автоматически идентифицирует бревенчатую реализацию |
hutool-script | Инкапсуляция выполнения скрипта, например Javascript |
hutool-setting | Более мощный файл конфигурации настроек и пакет свойств |
hutool-system | Инкапсуляция вызова системных параметров (информация JVM и т. д.) |
hutool-json | Реализация JSON |
hutool-captcha | Реализация кода подтверждения изображения |
hutool-poi | Упаковка для Excel и Word в POI |
hutool-socket | Инкапсуляция сокетов NIO и AIO на основе Java |
hutool-jwt | Реализация пакета JSON Web Token (JWT) |
03. ЛОМБОК
Я наткнулся на Ломбок как на инструмент во время стажировки. Первое впечатление, которое он произвел на меня, было: мне больше не нужно самому генерировать методы set/get.
На самом деле, после использования IDE генерация методов set/get — это вопрос сочетания клавиш, но всякий раз, когда мы хотим добавить/удалить/изменить свойства класса, нам нужно сгенерировать дополнительный для этих изменений. Однако, похоже, это не имеет значения. Ведь работы по добавлению/удалению/изменению не так уж и много.
На самом деле, Lombok может делать больше, чем просто устанавливать/получать методы, и после его использования я все еще рекомендую его. рисунок@Builder
,@Slf4j
,@Data
Эти аннотации часто используются в моих проектах.Если вы еще не знаете о Ломбоке, то можете зайти на его официальный сайт и посмотреть.
проект Lombok.org/features/ali…
Кому-нибудь интересно, как Ломбок это делает? Друг в группе однажды столкнулся с этим вопросом интервью: Вы знаете, каков принцип Ломбока?
Это моя первая статья из цикла "Онлайн-интервьюер"аннотация"Поговорили. На самом деле это не особо сложно, пока мы можем разобраться с общими этапами компиляции Java и базовыми знаниями об аннотациях, мы можем ответить на этот вопрос.
- Аннотации имеют жизненный цикл
@Retention
Есть три константы: SOURCE, CLASS и RUNTIME.Аннотация с использованием Lombok — это этап SOURCE. -
.java
Когда файл скомпилирован, его можно разделить на несколько шагов после небольшого упрощения: синтаксический анализ -> семантический анализ ->Обработка аннотаций-> файл класса - JDK предоставляет Hook. Если мы хотим делать вещи, связанные с аннотациями, во время компиляции, мы можем наследовать AbstractProcessor и реализовать метод процесса (это то, что делает Lombok)
04. JSON-библиотека
Теперь разработка бэкенда на Java практически неотделима от JSON, поэтому нам нужно иметьJSON-библиотекаПомогите нам сделать сериализацию и десериализацию
- Взаимодействие между внешним и внутренним интерфейсами в основном осуществляется в формате JSON.
- Иногда для удобства мы также напрямую конвертируем данные в JSON для хранения (хранилищем здесь может быть MySQL, HBase, Redis и т.д.)
- ...
Написано здесь, я просмотрел свои предыдущие учебные заметки в колледже. Когда я впервые изучил JSON, я следил за видео, чтобы изучить Spring и Strtus2, оба из которых имеют встроенные библиотеки синтаксического анализа JSON. На моем тогдашнем уровне мне было несложно научиться настраивать API по видео, поэтому я не воспринимал это всерьез.
Неожиданно в то время видеоурок также научил меня: Если выйти из среды Spring и Struts2, как легко манипулировать JSON, а затем вclasspath
решительно введенjson-lib
Сумка... Оглядываясь на записи из предыдущего университета, она действительно полна воспоминаний...
Без дальнейших церемоний, давайте вернемся к настоящему. Теперь бэкэнд Java обычно использует больше библиотек JSON:fastjson
,Gson
иJackson
Я использовал его в компанииFastJson
более,API очень прост в использовании и удобен для повседневного использования.. Тем не менее, мне когда-либо приходилось принудительно обновлять версию fastjson! Это должно быть лет 19. В то время команда безопасности сказала нам, что нам нужно принудительно обновить версию fastjson, вероятно, потому, что fastjson имеет лазейки и должен быть обновлен. Как пользователь библиотеки, у нас нет другого выбора, кроме как обновить ее.
В результате в течение нескольких дней. Команда безопасности подтянула другую группу и сказала, что все еще необходимо обновить версию xxx или выше.С ранее обновленной версией все еще есть проблемы... Команда также столкнулась с другими ямами, чтобы обновить версию fastjson, и это все равно раздражало.
В интернете также много статей, сравнивающих эти JSON-библиотеки (основные показатели — производительность и стабильность), и заинтересованные друзья могут их прочитать.
Однако проект austin по-прежнему выбирает fastjson в качестве основной библиотеки сериализации для JSON (Будьте более инклюзивными)
05. HTTP-библиотека
Изначально я забыл о библиотеке HTTP. Но как раз когда я собирался реализовать функцию отправки текстовых сообщений, я вдруг вспомнил, что часто используется HTTP! Поэтому я поспешил добавить его перед отправкой статьи.
Я не знаю, как вы себя чувствовали, когда впервые использовали Java для вызова HTTP. На мой взгляд, я чувствую, что это слишком сложно, и настроить HTTP действительно хлопотно! Позже, после работы, в проекте уже есть большие ребята, которые инкапсулировали HTTP. Но иногда я чувствую, что HTTP-вызовы настолько сложны (эй, все виды информации заголовка, случайно установленные неправильно, это полдня)
Но несмотря ни на что, HTTP-вызовы очень распространены, и многие компании почти всегда предоставляют HTTP-вызовы для своих внешних интерфейсов. Например, мы вызываем API Tencent для отправки сообщений WeChat, обращаемся к различным поставщикам каналов для отправки коротких сообщений и так далее.
Давайте сначала вернемся к библиотеке HTTP. В экосистеме Java библиотеки HTTP можно условно разделить на три категории:
- HttpURLConnection
- Apache HttpClient
- OkHttp
HttpURLConnection — это оригинальная HTTP-библиотека, предоставляемая JDK. Она не реализует пул соединений HTTP (пул соединений по-прежнему очень важен, и я не буду здесь слишком подробно объяснять концепцию пула). Все HTTP-библиотеки, которые я использовал в предыдущих проектах, были инкапсулированы на основе Apache HttpClient (качество продуктов Apache также гарантировано), а OkHttp можно назвать восходящей звездой (теперь HTTP-библиотеки на Android в основном основаны на OkHttp). )
Как правило, когда мы используем эти библиотеки инструментов HTTP, нам нужно писать Utils на исходной основе, чтобы упростить вызов HTTP.В среде Utils есть различные наборы инструментов:
- Например, упомянутый выше
Hutool
на родномHttpURLConnection
Инкапсулировать (но его инкапсуляция - бесполезный пул потоков) - Собственная продукция компании Square
OkHttp
Второй пакет с открытым исходным кодомRetrofit
(Это часто используется на Android) - Доступно в среде Spring
RestTemplate
Несколько способов доступа к удаленным службам Http (по умолчанию нет пула потоков, но вы можете использоватьApache HttpClient
иOkHttp
упаковать его вRestTemplate
- Предоставляется в среде SpringCloud
OpenFeign
А затем вызовите службу HTTP - Внутренняя библиотека инструментов HTTP
Forest
: правильноHttpclient
иOkHttp
инкапсулировать - ...
На этот раз я выбираюOkHtpp
как http-библиотека Остина
ПочемуOkHtpp
? ждать с нетерпением,OkHtpp
Как Http-библиотека, она действительно стала эталоном (по крайней мере, Android популярен, а Okhttp используется многими компаниями в составе SDK как зависимость Http-библиотеки). В весенней средеRestTemplate
Он не очень прост в использовании, я не использовал SpringCloud для этого проекта, поэтому, естественно, я его не использовал.OpenFeign
.Retrofit
Он больше используется на Android (бэкенд на Java встречается относительно редко).
поэтому я выбралOkHttp
.
06. Резюме
Эта статья о наборе инструментов, используемых в проекте austin.Те, кто уже понимает, могут почувствовать себя немного водянистыми после прочтения, да это и не нужно.
Но есть много студентов, которые хотят изучить этот проект со мной, и я все еще чувствую, что это необходимо сделать. Много раз мы что-то делаем, другие чувствуют себя очень подавленными, на самом делеплохая информация.
Я думаю, что, читая эту статью, должны быть некоторые друзья, которые работали, которые не слышали о ломбоке или гуаве (Коммонс должен был использовать его более или менее и, возможно, использовал его), но я не знаю, есть ли специальная библиотека классов инструментов Apache).
На самом деле частота использования таких наборов инструментов в проектах будет очень высокой.Использование этих инструментов сделает код нашего проекта более лаконичным.Читаемость кода и ремонтопригодность очень важны для проекта.
Для этого типа инструмента я предлагаю подняться и посмотреть, что он может предоставить, когда у вас будет время. Когда вы обнаружите, что хотите инкапсулировать класс инструмента, зайдите и посмотрите, были ли они реализованы.Если они реализованы, все готово. Если вам интересна функция, посмотрите, как ее реализуют большие ребята, если будете реализовывать сами, то можете чего-то не ожидать.
Должно быть много наборов инструментов, которые я еще не знаю, но они очень полезны. Пожалуйста, порекомендуйте их в области комментариев! ! ! ЭтоОстин проектТретья статья была обновлена до 11 статей, добро пожаловать в мой темп, чтобы сделать проект вместе!
Обратите внимание на мой публичный аккаунт WeChat【Java3y】Давайте поговорим о другом![Онлайн-интервьюер + написание Java-проектов с нуля]Непрерывное высокоинтенсивное обновление! попросить звезду! !Оригинал это не просто! ! Проси три! !
Ссылка на гите:gitee.com/austin
Ссылка на гитхаб:github.com/austin