JavaRush /Java блог /Random /Кофе-брейк #42. Что делать, если вы чего-то не знаете. 5 ...

Кофе-брейк #42. Что делать, если вы чего-то не знаете. 5 лучших Java-библиотек для максимальной производительности

Статья из группы Random

Что делать, если вы чего-то не знаете

Источник: Dev.to Если вы разработчик, рано или поздно наверняка возникала ситуация, когда вы не знали способ решения проблемы. Это довольно неприятный момент на любом этапе карьеры. Ведь задачу вам все равно придется выполнить, несмотря на то, что вы чего-то не знаете. В этой статье я поделюсь личным опытом и расскажу, что поможет в поиске решения такой проблемы.Кофе-брейк #42. Что делать, если вы чего-то не знаете. 5 лучших Java-библиотек для максимальной производительности - 1

Задавайте вопросы

Когда я был новичком, я боялся задавать вопросы, до последнего пытаясь всё решить самостоятельно. Я тратил огромное количество времени на решение проблемы и молчал, пока мне, в конце концов, не приходилось поговорить с начальством или клиентами. Я понимал, почему поступал именно так. Я избегал задавать вопросы, потому что мне не хотелось выглядеть глупым в глазах других. Мне казалось, что все остальные, кроме меня, быстро вникали в суть и понимали, о чем речь. Только благодаря коллегам я, наконец, начал отставлять в сторону свою гордость и спрашивать о том, чего не понимаю.

Google и YouTube — ваши лучшие друзья

Когда-то я смотрел видео о том, как Google отвечал на абсурдные или забавные вопросы. Несмотря на то, что ответы на них тоже бывали очень смешными, я понял, что Google определенно может помочь при возникновении каких-либо вопросов. Поэтому если вы зашли в тупик, не забывайте искать ответ через этот поисковик. Также в решении проблем мне очень помогает YouTube. Особенно в тех случаях, когда нужно более глубокое понимание предмета. Тогда я всегда ищу тематические видео.

Лишняя пара глаз не помешает

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

Не ругайте себя, если на чем-то застряли

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

Делайте перерывы

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

Заключение

Первое, что нужно сделать при решении задачи, — составить список того, что вы знаете, и того, что не знаете. После этого следует задать уточняющие вопросы человеку, который поставил перед вами эту задачу. Возможно, на этом этапе что-то прояснится, и вы сможете удалить часть вопросов из категории «не знаю». Ответы на остальные вопросы следует поискать самостоятельно в Google или на YouTube. Выделите себе на поиски какое-то время. Если справиться с проблемой самостоятельно не удалось — не стесняйтесь обратиться за помощью к коллегам.

5 лучших Java-библиотек для максимальной производительности

Источник: Medium Вероятно, вы когда-нибудь писали код на Java и думали: «Должен же быть способ получше…». Помочь в решении подобных проблем могут библиотеки Java. Предлагаю вашему вниманию пять лучших, на мой взгляд, библиотек, использование которых повысит вашу продуктивность и эффективность работы.Кофе-брейк #42. Что делать, если вы чего-то не знаете. 5 лучших Java-библиотек для максимальной производительности - 2

1. Lombok

Project Lombok — это библиотека Java, которая использует аннотации для сокращения шаблонного кода. Вы можете использовать аннотации, такие как @Getter, для автоматической генерации методов getField (). Вот несколько поддерживаемых аннотаций:
  • @Getter и @Setter, которые генерируют геттеры и сеттеры;
  • @EqualsAndHashCode автоматически генерирует методы Equals и HashCode, которые соответствуют контрактам Equals и HashCode;
  • @ToString генерирует метод toString (), который соответствует формату ClassName (fieldName = value, fieldName2 = value…);
  • @Builder автоматически реализует шаблон построителя для упрощения создания вашего POJO;
  • @Data — это сокращение для @Getter, @Setter, @EqualsAndHashCode, @ToString и @RequiredArgsConstructor!
Существует еще много поддерживаемых и легко настраиваемых аннотаций. Работа с ними избавит вас от написания шаблонного кода.

2. Guava

Guava — это библиотека Java, созданная и поддерживаемая Google. Она содержит множество утилит, широко используемых в работе с кодом. Вот лишь некоторые из функций Guava:
  • расширения Collections, например, Multimap<k, v="">, где Map поддерживает несколько значений для данного ключа, что эквивалентно Map <k, collection="" <v="">> с более чистым API;</k,></k,>
  • пакет Graphs, который включает ряд утилит для моделирования данных графического типа;
  • concurrency утилиты, такие как MoreExecutors, Atomics и ListenableFuture.
В библиотеке Guava можно найти очень много. Поддержка Google делает ее весьма популярной, поэтому вы можете быть уверены, что их API тщательно протестированы и поддерживаются. Если вам необходимо решить какую-либо общую проблему с Java, с помощью Guava вы наверняка найдете решение!

3. Hibernate

Hibernate — это библиотека объектно-реляционного сопоставления, которая позволяет взаимодействовать с базой данных, не думая о переводе между таблицами SQL и POJO. На сайте Hibernate приводится следующая информация о библиотеке: “С Hibernate можно создавать долгоживущие классы в соответствии с естественными объектно-ориентированными принципами, включая наследование, полиморфизм, ассоциацию, композицию и Java Collections. Hibernate не требует наличия интерфейсов или базовых классов для долгоживущих классов и позволяет любому классу или структуре данных быть постоянными”. Используйте Hibernate, чтобы повысить уровень постоянного хранения данных и избавиться от тысяч строк кода базы данных.

4. Feign

OpenFeign — это библиотека от Netflix, которая позволяет легко создавать RESTful HTTP-клиенты на Java. Чтобы создать клиент Feign, вы просто описываете интерфейс с деталями запроса и ответа. Лучше всего это проиллюстрировать на примере:

@FeignClient(url = "https://github.com")
interface GitHubClient {
    @RequestLine("GET /users/{username}/repos?sort=full_name")
    List<repository> repos(@Param("username") String owner);

    @RequestLine("GET /repos/{owner}/{repo}/contributors")
    List<contributor> contributors(@Param("owner") String owner, @Param("repo") String repo);

    @RequestLine("POST /repos/{owner}/{repo}/issues")
    void createIssue(Issue issue, @Param("owner") String owner, @Param("repo") String repo);
}
</contributor></repository>
Упомянутый выше интерфейс GitHubClient будет выполнять запросы GET и POST, описанные в методах. Этот клиент по умолчанию будет использовать формат JSON для всех запросов. Для клиента Feign существует множество настроек:
  • кодеры и декодеры для выбора способа сериализации и десериализации POJO по сети;
  • Retryers для указания правил и логики повторных попыток;
  • RequestInterceptors для других задач предварительного запроса, таких как получение файлов cookie или авторизация.
Используя Feign, вы сможете избавиться от необходимости вручную писать HTTP-клиенты! Примечание: если вы используете Spring, вам следует использовать Spring Cloud OpenFeign, чья интеграция со Spring лучше, чем у OpenFeign самого по себе.

5. Spring Boot

И последняя, но не менее важная библиотека — это Spring Boot. Spring Boot упрощает процесс создания готовых к работе Java-приложений. Она позволяет:
  • создавать автономные приложения Spring;
  • напрямую встраивать Tomcat, Jetty или Undertow (без необходимости развертывания файлов WAR);
  • обеспечить «стартовые» зависимости для упрощения конфигурацию сборки;
  • автоматически конфигурировать Spring и сторонние библиотеки;
  • предоставляет готовые к работе функции, такие как метрики, проверка работоспособности и внешняя конфигурация.
Чтобы использовать Spring Boot, нужно потратить немало времени на обучение, но я уверяю, что оно того стоит. Spring Boot сократил время разработки всех моих проектов и продолжает приносить пользу благодаря своей стабильности, расширяемости и удобочитаемости.

Заключение

Несмотря на то, что Java многие считают «старым» языком, в котором отсутствуют некоторые возможности более новых ЯП, у него есть уникальная поддержка в виде большого количества библиотек и огромного сообщества разработчиков. Поэтому вы будете испытывать значительно меньше проблем в своей работе. Используя библиотеки Java, вы сумеете повысить свою продуктивность. Не изобретайте велосипед заново — сосредоточьтесь на основной компетенции!
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Евгений Уровень 35
17 сентября 2020
не знаю на счет Guava (не использовал ее раньше) а остальное маст хев
Марат Уровень 15
17 сентября 2020
Очень интересно. Из перечисленных библиотек работал с Lombok и Hibernate, но все впереди! 😉