Telegram Web Link
🖥 Огромная шпаргалка с готовыми запросами SQL (SQLite)

Смотреть

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥Oblivion - Unofficial Warp Client for Android

Oblivion обеспечивает безопасный, оптимизированный доступ в интернет через приложение для Android, написанное на Java с использованием технологии cloudflare warp.

Используя bepass-sdk и WireGuard, инструмент предназначен для быстрого и конфиденциального доступа в интернет.

Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Совет по Java API🚀

java.nio.file.WatchService

Отслеживайте события файловой системы в режиме реального времени.

Инструмент для обнаружения изменений в файлах и каталогах независимым от платформы способом. 🔥

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/WatchService.html

#Java #JavaAPI

@javatg
Совет Spring Framework💡

Optional — это контейнер, который может содержать какое-то значение или не содержать ничего.
Он используется для обозначения отсутствия значения вместо null. Это позволяет избежать ошибок
NullPointerException.

Optional появился в Java 8. Он представлен классом java.util.Optional.
Чтобы создать экземпляр Optional, используются статические методы:
empty() для пустого Optional.
of() для Optional с заданным значением.


Для получения значения из Optional используются методы
get(), или orElse() с указанием значения по умолчанию. Также есть методы фильтрации значений, например filter(), map() и flatMap().

Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в java.util.Optional.

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

@javatg
🚀 Совет по Spring🚀

Используйте SSEEvent от Spring для плавного обновления приложений в режиме реального времени 🔥

@javatg
💫 Встречайте #ApachePekko - фреймворк с открытым исходным кодом, предназначенный для упрощения разработки параллельных, распределенных, устойчивых и эластичных приложений.

Pekko позволяет разработчикам сосредоточиться на бизнес-логике, а не на низкоуровневых деталях реализации.

Подробнее
Github

@javatg
Machine Learning на Java

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

▪️Deeplearning4J — набор инструментов для глубокого обучения
▪️Weka — коллекция алгоритмов машинного обучения
▪️MALLET — библиотека для обработки естественного языка

🔗 репозиторий
🚀 Spring Совет 🚀

AnnotationAwareOrderComparator

Утилитный класс для сравнения объектов на основе @Order или аннотации Ordered. Он используется там, где необходимо определить порядок выполнения компонентов. 🔥

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/AnnotationAwareOrderComparator.html

@javatg
Spring AI 0.8.0 уже доступен 🎉

Он предоставляет удобный API для моделей искусственного интеллекта, API для хранения векторов, вызов функций, ETL-фреймворк для инженерии данных с Spring Boot.

https://spring.io/blog/2024/02/23/spring-ai-0-8-0-released

Примеры работы: https://github.com/ThomasVitale/llm-apps-java-spring-ai

@javatg
🖥 #Java #SpringFramework Совет:

При использовании
@SpringSecurity вы можете получить доступ к текущим данным аутентификации, добавив объект Authentication в качестве параметра метода в классе @RestController.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Quarkus — горячий тренд Java-разработки

Quarks ускоряет загрузку Java-приложений в CloudEra

Если вы занимаетесь разработкой Java-приложений, наверняка слышали о революционном фреймворке Quarkus. Если же еще не слышали, вот его краткое описание: Quarkus — это Kubernetes-нативный Java-стек, созданный для разработчиков, ставящих во главу угла производительность, гибкость и облачную нативную архитектуру.

В Quarkus реализован тот же подход, что и в Spring Boot, но с дополнительными преимуществами — меньшими артефактами с быстрой загрузкой, сокращением ресурсопотребления и повышением эффективности.

Ключевые особенности Quarkus, доказывающие его уникальность:

📌Читать

@javatg
Apache Kafka 3.7.0 только что вышел! 🔥

Что входит в этот новый релиз?

Вот основные функции, о которых вы должны знать: https://www.confluent.io/blog/introducing-apache-kafka-3-7/

@javatg
🖥 Проклятие дженериков 💀

Дженерики могут показаться очень простой темой.
Например, вот так в Java выглядят классные и простые методы интерфейса List:

interface List<E> extends Collection<E> {
boolean add(E e);
E set(int index, E element);
}

Но у обобщений много нюансов: вложенность, вариантность, границы и т.д. Это сильно усложняет их использование.

Вот не менее классный, но совсем непростой flatMap интерфейса Stream 🙈:
interface Stream<T> extends BaseStream<T, Stream<T>> {
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
}


Реализация дженериков — всегда трейдоф. Мы либо получаем большой исполняемый файл, из-за того, что приходится генерировать код для разных типов. Либо получаем дополнительную нагрузку в рантайме, из-за различных проверок.

Такие вот дела ¯\_(ツ)_/¯
А вы что думаете по поводу дженериков в Java?

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Java 21 API 🚀

Новый метод string:

split With Delimiters(String regex, int limit)

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

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html#splitWithDelimiters(java.lang.String,int limit)

@javatg
🖥 Мок-конструкторы Java с использованием Mockito

Функция MockedConstruction из Mockito позволяет моделировать конструкцию объектов во время тестирования.
Традиционно, когда новый объект создается внутри тестируемого метода, сложно менять его поведение. MockedConstruction устраняет это ограничение, перехватывая процесс создания объекта, позволяя разработчикам указывать собственное поведение или возвращаемые значения для конструкторов.

Вот некоторые базовые понятия:

🔵 MockedConstruction(Class<T>): создает макет для конструкций класса T, управляя макетами в пределах его области действия
🔵 Блок try-with-resources: инкапсулирует область имитации, обеспечивая автоматическую очистку ресурсов в конце блока
🔵 whenever(mock.method(...)).thenReturn(...): настраивает макет поведения, динамически определяя ответы метода
🔵 assertEquals(mock, times(n)).method(...): утверждает частоту взаимодействия с макетами.

К примеру, вот так можно протестировать Calculator.java:
public class Calculator {

public Calculator(){}

public int add(int a, int b) {
return a + b;
}

public int subtract(int a, int b) {
return a - b;
}
}

Теперь создадим тестовый класс CalculatorTest с использованием MockedConstruction:
public class CalculatorTest {

@Test
public void testAddition() {

try (MockedConstruction<Calculator> mocked = mockConstruction(Calculator.class)) {

// creating a mock instance
Calculator calculator = new Calculator();

// Mock behaviour
when(calculator.add(10, 20)).thenReturn(30);
when(calculator.subtract(30, 20)).thenReturn(10);

// Test the methods
assertEquals(30, calculator.add(10, 20));
assertEquals(10, calculator.subtract(30, 20));

// Get a list of all created mocks
List<Calculator> constructed = mocked.constructed();
assertEquals(1, constructed.size());

}
}
}


@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
1️⃣0️⃣ идей для пет-проектов на Java

Написать с нуля небольшой, но полноценный проект на Java — отличный способ прочувствовать особенности языка, потренировать полезные паттерны программирования. Вот 10 идей для пет-проектов, код к каждому прилагается

приложение чата

конвертер валют

игра "Угадай число"

игра "Разбей кирпичи"

приложение для визуализации данных

интерфейс банкомата

система управления веб-сервером

система бронирования авиабилетов

интернет-магазин книг

"Змейка"

🔗 Код для этих пет-проектов здесь

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 ИИ-чатбот + веб-интерфейс менее чем за 20 строк на Java с использованием Spring AI и Vaadin

А в качестве нативного образа GraalVM он запускается за 0.1 секунды (!)

🖥 GitHub

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Интересное видео и статья о том как Netflix использует Java

"Примерно за год или около того мы полностью стандартизировали Spring Boot". "Это довольно удивительно...что этот фреймворк был настолько стабильным и так хорошо развит". -

https://infoq.com/presentations/netflix-java

@javatg
2024/11/17 01:10:28
Back to Top
HTML Embed Code: