Для того что бы определить лямбда-выражение, нам нужен функциональный интерфейс. Изобретём свой:
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
Функциональный интерфейс
MathOperation
содержит один абстрактный метод operate
, который принимает два значения типа int
и возвращает int
. Аннотация @FunctionalInterface
указывает на то, что интерфейс предназначен для использования в функциональном программировании и должен содержать только один абстрактный метод. Но аннотация не обязательна.Использование лямбда-выражения:
public class LambdaExample {
public static void main(String[] args) {
// Реализация интерфейса с помощью лямбда-выражения
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> a - b;
MathOperation multiplication = (a, b) -> a * b;
MathOperation division = (a, b) -> a / b;
int x = 10;
int y = 5;
System.out.println("Addition: " + operate(x, y, addition)); // 15
System.out.println("Subtraction: " + operate(x, y, subtraction)); // 5
System.out.println("Multiplication: " + operate(x, y, multiplication)); // 50
System.out.println("Division: " + operate(x, y, division)); // 2
}
// Метод, принимающий MathOperation и применяющий его к данным
private static int operate(int a, int b, MathOperation operation) {
return operation.operate(a, b);
}
}
В нашем примере лямбда-выражения используются для создания экземпляров интерфейса
MathOperation
для выполнения различных математических операций (сложение, вычитание и т.д.).Метод
operate
принимает два целых числа и функциональный интерфейс MathOperation
, затем выполняет переданную операцию. В метод в третьем параметре можно передать непосредственно лямбда-выражение, не используя промежуточную переменную.Elasticsearch — открытая распределенная система управления данными и поиска по ним, основанная на поисковом движке Apache Lucene.
Он предоставляет мощные возможности по индексированию, хранению, поиску и анализу больших объемов информации в реальном времени.
. Она идеально подходит для приложений, требующих гибкости в поиске и высокой скорости обработки запросов. Благодаря интеграции с Kibana и Logstash, ElasticSearch становится мощным инструментом для мониторинга и анализа данных в реальном времени.
▪️ Мгновенный поиск по большим объемам данных
▪️ Гибкая схема индексации и поиска
▪️ Легкость в масштабировании и интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Слышали про var? Его добавили в Java 10, чтобы облегчить нам жизнь. Но когда его лучше использовать, а когда стоит быть осторожнее?💡
Когда использовать var:
var list = new ArrayList<String>(); // Это список, и это сразу видно
var map = new HashMap<String, List<Integer>>(); // Чисто и просто
А вот где лучше избегать:
var result = process(); // И что за процесс тут?
Итог: var — отличный инструмент, но используйте его с умом. Вопрос к вам: а вы уже используете var в своих проектах? Если да, поделитесь опытом в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Object
это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object
и, соответственно, наследуют его методы:public boolean equals(Object obj)
– служит для сравнения объектов по значению;int hashCode()
– возвращает hash код для объекта;String toString()
– возвращает строковое представление объекта;Class getClass()
– возвращает класс объекта во время выполнения;protected Object clone()
– создает и возвращает копию объекта;void notify()
– возобновляет поток, ожидающий монитор;void notifyAll()
– возобновляет все потоки, ожидающие монитор;void wait()
– остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify()
или notifyAll()
для этого объекта;void wait(long timeout)
– остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify()
или notifyAll()
для этого объекта;void wait(long timeout, int nanos)
– остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify()
или notifyAll()
для этого объекта;protected void finalize()
– может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🎮 Cross-platform Game Development Framework
Это кроссплатформенная среда для разработки Java-игр на основе OpenGL, которая предоставляет надежную и проверенную временем платформу для быстрого прототипирования и создания игр.
▪️ Github
👉 Java Rocks | #java
Это кроссплатформенная среда для разработки Java-игр на основе OpenGL, которая предоставляет надежную и проверенную временем платформу для быстрого прототипирования и создания игр.
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1