Реализация двухфакторной аутентификации с помощью Spring Security
В статье рассматривается использование двухфакторной аутентификации (когда клиент должен предоставить дополнительный токен безопасности помимо учетных данных) с помощью Spring Security. Хоть в Spring и нет встроенной двухфакторной аутентификации, эту функциональность легко добавить.
Читать статью
В статье рассматривается использование двухфакторной аутентификации (когда клиент должен предоставить дополнительный токен безопасности помимо учетных данных) с помощью Spring Security. Хоть в Spring и нет встроенной двухфакторной аутентификации, эту функциональность легко добавить.
Читать статью
Java Development Journal
Two Factor Authentication with Spring Security | Java Development Journal
In this article of spring security tutorials, we will look at the two factor authentication with Spring security. We are going to use the soft token with Spring Security. Two ... <a title="Two Factor Authentication with Spring Security" class="read-more"…
👍11
👍25😱11👎1
#Вопросы_с_собеседования
❓Какой способ клонирования предпочтительней?
Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования:
• Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод clone());
• Поля для клонирования указываются явно;
• Возможность клонировать даже final поля.
❓Какой способ клонирования предпочтительней?
Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования:
• Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод clone());
• Поля для клонирования указываются явно;
• Возможность клонировать даже final поля.
👍16
Java Learning
Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 1 Смотреть статью
Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 2
Смотреть статью
Смотреть статью
Tproger
Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 2
В этой части мы попытаемся добавить безопасности в наше приложение — сделаем отдельный микросервис аутентификации/авторизации, а в нашем приложении BookStore запретим вызов методов неавторизованными пользователями.
👍17❤1
#Вопросы_с_собеседования
Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()?
Если итератор указывает на последний элемент коллекции, то возникнет исключение
Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()?
Если итератор указывает на последний элемент коллекции, то возникнет исключение
NoSuchElementException
, иначе будет возвращен следующий элемент.👍14😱1
#вопросы_с_собеседований
При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
☕️
☕️
☕️
Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection:
☕️
☕️
☕️
При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
☕️
java.sql.Statement
- для операторов SQL без параметров;☕️
java.sql.PreparedStatement
- для операторов SQL с параметрами и часто выполняемых операторов;☕️
java.sql.CallableStatement
- для исполнения хранимых в базе процедур.Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection:
☕️
java.sql.createStatement()
возвращает объект Statement;☕️
java.sql.prepareStatement()
возвращает объект PreparedStatement;☕️
java.sql.prepareCall()
возвращает объект CallableStatement;👍25
👍16😱9
Узнаем IP-адрес своего компьютера
Подробнее объяснение кода можно найти здесь.
InetAddress.getLocalHost()
используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.Подробнее объяснение кода можно найти здесь.
👍25😱3
#Вопросы_с_собеседования
❓Что будет, если добавлять элементы в TreeSet по возрастанию?
В основе
❓Что будет, если добавлять элементы в TreeSet по возрастанию?
В основе
TreeSet
лежит красно-черное дерево, которое умеет само себя балансировать. В итоге, TreeSet все равно в каком порядке вы добавляете в него элементы, преимущества этой структуры данных будут сохраняться.👍19
Vector API в Java: краткий обзор и тестирование
Vector API в Java сейчас — это модуль, который предоставляет возможность выполнять векторные вычисления, ускоряемые аппаратно.
Смотреть статью
Vector API в Java сейчас — это модуль, который предоставляет возможность выполнять векторные вычисления, ускоряемые аппаратно.
Смотреть статью
Хабр
Vector API в Java: краткий обзор и тестирование
Некоторое время назад попалась на глаза статья про Vector API в Java. Прочитал, заинтересовался. Наконец, недавно дошли руки посмотреть, что же это такое и как работает. Результаты немного...
👍11
Замер времени с помощью Instant и Duration
В Java 8 добавили новый java.time API. В частности, ля измерения времени подойдут два новых класса – Instant и Duration. Оба эти класса иммутабельны.
Instant обозначает момент времени с начала эпохи Unix (1970-01-01T00:00:00Z). Для создания момента мы используем метод Instant.nоw(). После того, как мы создали два момент, вычислим разницу в миллисекундах.
Рекомендуется использовать именно этот подход в Java 8 и выше.
В Java 8 добавили новый java.time API. В частности, ля измерения времени подойдут два новых класса – Instant и Duration. Оба эти класса иммутабельны.
Instant обозначает момент времени с начала эпохи Unix (1970-01-01T00:00:00Z). Для создания момента мы используем метод Instant.nоw(). После того, как мы создали два момент, вычислим разницу в миллисекундах.
Рекомендуется использовать именно этот подход в Java 8 и выше.
👍28😱1
Обзор Spring-компонентов. Часть 1 – Spring Boot и фреймворк интеграции
В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.
Смотреть статью
В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.
Смотреть статью
Хабр
Обзор Spring-компонентов. Часть 1 – Spring Boot и фреймворк интеграции
В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте. Вторая часть...
👍12
#Вопросы_с_собеседования
❓Сравните Iterator и ListIterator
•
•
•
• При помощи
❓Сравните Iterator и ListIterator
•
ListIterator
расширяет интерфейс Iterator
• ListIterator
может быть использован только для перебора элементов коллекции List
;•
Iterator
позволяет перебирать элементы только в одном направлении, при помощи метода next()
. Тогда как ListIterator
позволяет перебирать список в обоих направлениях, при помощи методов next()
и previous()
;•
ListIterator
не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous()
и next()
.• При помощи
ListIterator
вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add()
и remove()
. Iterator
не поддерживает данного функционала.👍23
#Вопросы_с_собеседования
Какой самый надежный способ проверить, равны ли два значения типа double?
Наиболее надежный и точный способ проверить это — использовать Dоuble.соmpare() и сравнить значение с нулем.
Какой самый надежный способ проверить, равны ли два значения типа double?
Наиболее надежный и точный способ проверить это — использовать Dоuble.соmpare() и сравнить значение с нулем.
👍39
Проверка нечетности
Можно ли использовать первый код для точного определения нечетности числа?
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный второй метод.
Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
Можно ли использовать первый код для точного определения нечетности числа?
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный второй метод.
Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
👍34👎4
#Вопросы_с_собеседования
❓Что такое механизм try-with-resources?
Данная конструкция, которая появилась в Java 7, позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после
Стоит заметить, что блоки
❓Что такое механизм try-with-resources?
Данная конструкция, которая появилась в Java 7, позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после
try
, а компилятор уже сам неявно создаёт секцию finally
, в которой и происходит освобождение занятых в блоке ресурсов. Под ресурсами подразумеваются сущности, реализующие интерфейс java.lang.Autocloseable
.Стоит заметить, что блоки
catch
и явный finally
выполняются уже после того, как закрываются ресурсы в неявном finally
.👍23