Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Сборка мусора в неисправных JVM, проактивный подход

Команда Netflix Cloud Data Engineering работает с различными приложениями для JVM, включая такие популярные хранилища данных, как Cassandra и Elasticsearch. Хотя большинство наших кластеров стабильно работают, обходясь выделенной им памятью, иногда «запрос смерти» или ошибка в самом хранилище данных приводят к перерасходу памяти, что может спровоцировать лишние циклы сборки мусора или даже привести к исчерпанию памяти в JVM.

https://netflixtechblog.medium.com/introducing-jvmquake-ec944c60ba70

👉@BookJava
👍3
На картинке приведён список контролируемых исключений (Checked Exceptions) в Java, определенных в java.lang.

👉@BookJava
👍3
Media is too big
VIEW IN TELEGRAM
Создание REST API с использованием Spring WebFlux и Security

00:00:00 Введение
00:00:20 Создание проекта
00:11:36 Создание миграций БД
00:15:40 Создание базовых классов
00:23:20 Реализация логики генерации JWT токена
00:46:30 Реализация логики валидации JWT токена
00:53:05 Построения цепочки аутентификации
01:04:22 Финальная конфигурация с использованием SecurityWebFilterChain
01:12:11 Реализация REST контроллеров
01:23:15 Проверка REST API средствами Postman
01:24:21 Добавление и конфигурация обработчика ошибок
01:25:40 Заключение

Ссылка на Github репозиторий https://github.com/proselytear/webfluxsecurity

источник

👉@BookJava
👍6
Что такое livelock?

livelock – тип взаимной блокировки, при котором несколько потоков выполняют бесполезную работу, попадая в зацикленность при попытке получения каких-либо ресурсов. При этом их состояния постоянно изменяются в зависимости друг от друга. Фактической ошибки не возникает, но КПД системы падает до 0. Часто возникает в результате попыток предотвращения deadlock.

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

👉@BookJava
👍4
Вопросы-ответы собеседования

Можно ли создать экземпляр абстрактного класса?
Что такое интерфейс?
Как вызвать нестатический метод в статическом?
Чем отличаются параметры от аргументов в методе?
Что такое конструктор? Как его создать и вызвать?
Что такое параметризованный конструктор?
Что такое конструктор по умолчанию?
Что такое приватный конструктор? Зачем он закрытый?
Что такое статическая переменная? Как работает static поле?
Что такое статический метод? Как вызвать static метод?

источник

👉@BookJava
🔥8👎21
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?

• В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
• Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
• Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 😍 default - методами с реализацией по-умолчанию, а поля - public static final.
• Интерфейсы позволяют создавать структуры типов без иерархии.
• Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса, и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.

👉@BookJava
👍9
Что такое механизм try-with-resources?

Данная конструкция, которая появилась в Java 7, позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после try, а компилятор уже сам неявно создаёт секцию finally, в которой и происходит освобождение занятых в блоке ресурсов. Под ресурсами подразумеваются сущности, реализующие интерфейс java.lang.Autocloseable.

Стоит заметить, что блоки catch и явный finally выполняются уже после того, как закрываются ресурсы в неявном finally.

👉@BookJava
👍9
Как сгенерировать UUID в качестве первичных ключей при помощи Hibernate

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

https://thorben-janssen.com/generate-uuids-primary-keys-hibernate/

👉@BookJava
👍5
Java 9.0 to 17.0 Cookbook: A Roadmap with Instructions for the Effective Implementation of Features, Codes, and Programs
Автор: Tejaswini Jog (2022)

Эта книга разработана с целью донести различные возможности Java всех версий от Java 9.0 до 17.0 при разработке конечных Java-приложений. Эта книга поможет любому пользователю Java, заинтересованному в изучении того, как использовать каждую значительную возможность, доступную в различных версиях Java.

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

Скачать

👉 @java_360
👍2🤔1
Media is too big
VIEW IN TELEGRAM
11 интересных фишек Java

Этим летом я получил сертификат по Java 11. Я ожидал, что это будет легко, ведь я занимаюсь Java-разработкой уже 14 лет и, конечно, должен был уже все это увидеть. Как же я ошибался! Я столкнулся со многими вещами, о которых даже не подозревал, что они возможны в Java.

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

Я надеюсь, что это именно так, поэтому в этом докладе я уделю 15 минут тому, чтобы рассказать об 11 вещах, на изучение которых у меня ушло 14 лет. А это значит, что у вас есть шанс научиться этим вещам в 490896 раз быстрее, чем я! 🚀

источник

👉@BookJava
👍3