Java библиотека
31.7K subscribers
2.08K photos
61 videos
6 files
1.78K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Media is too big
VIEW IN TELEGRAM
Знакомство с Micronaut

Пример CRUD приложения на Micronaut.

🌐🗣СМОТРЕТЬ VKVIDEO

📺🗣СМОТРЕТЬ RUTUBE

📝🗣СМОТРЕТЬ DZEN

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
23 шаблона проектирования для 99% разработчиков на Java

В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.

Шаблоны проектирования  —  это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.


Читать статью
🖥 hibernate-orm — популярный фреймворк для Java, который упрощает взаимодействие между объектно-ориентированными приложениями и реляционными базами данных!

🌟 Hibernate реализует спецификацию JPA (Java Persistence API) и предоставляет дополнительные возможности для работы с базами данных, такие как кэширование и трансакции.

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом компиляции этого кода?
Media is too big
VIEW IN TELEGRAM
7+1 программа для тех, кто изучает Java.

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

🌐🗣СМОТРЕТЬ VKVIDEO

📺🗣СМОТРЕТЬ RUTUBE

📝🗣СМОТРЕТЬ DZEN

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает ConcurrentSkipListMap под капотом?

ConcurrentSkipListMap — это потокобезопасная и отсортированная реализация интерфейса NavigableMap, которая работает на основе skip list (списка с пропусками). Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков: нижний уровень содержит все элементы в порядке сортировки, а верхние уровни — лишь часть элементов для ускорения поиска. При добавлении элемента случайно выбирается его "высота" (количество уровней, на которых он присутствует), что позволяет "перепрыгивать" через блоки данных на верхних уровнях и выполнять операции со сложностью O(log n).

Пример структуры:
lvl 3: 1 ------ 8
lvl 2: 1 --- 7 -- 8
lvl 1: 1 - 3 - 7 - 8 - 10


💡 Основные механизмы:

🟡Skip List: Многослойный список с пропусками, где верхние уровни помогают быстро достигать нужного диапазона элементов, снижая количество переходов по связям.
🟡Потокобезопасность обеспечивается за счёт использования CAS (Compare-And-Swap) операций и минимального блокирования. Модификации происходят безопасно без полной блокировки структуры.
🟡Элементы всегда хранятся в отсортированном порядке по их ключам, что позволяет выполнять операции вроде поиска диапазонов или итераций по упорядоченным ключам очень эффективно.
🟡Высокая доступность: чтение не блокируется, даже если выполняются параллельные операции вставки или удаления.

⚠️ Особенности:

🔘Операции чтения (например, get или containsKey) выполняются быстро и без блокировок благодаря структуре skip list.
🔘Операции записи (например, put и remove) синхронизированы, но производительность сохраняется за счёт оптимизации с использованием CAS.
🔘Поддерживает натуральный порядок ключей или порядок, определённый переданным компаратором.
🔘Эффективен для сценариев, где важны отсортированные данные и параллельный доступ, но количество обновлений не слишком велико.

🚀 Когда использовать ConcurrentSkipListMap?

- Если нужен параллельный доступ к отсортированной мапе.
- Для обработки диапазонов данных или частых операций чтения в упорядоченном виде.

🔗 Документация

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Динамический массив

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

Он реализуется с помощью класса ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между throw и throws?

- throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
public void readFile() throws FileNotFoundException { ... }


Здесь throws не выбрасывает исключение, а только предупреждает, что оно может возникнуть.

- throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
if (file == null) {
throw new FileNotFoundException("Файл не найден");
}


Здесь throw запускает исключение, когда возникает определённое условие.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом кода?
Что такое S3 и как его использовать в Java?

Amazon S3 (Simple Storage Service) — это облачное хранилище от AWS, которое позволяет безопасно сохранять и извлекать данные любого объёма и формата. S3 предоставляет масштабируемое решение для хранения файлов, данных резервного копирования, статического контента для веб-приложений и многого другого.

🟡Ключевые особенности S3:

- Данные хранятся в виде объектов (файлов), которые организуются в бакеты.
- S3 легко интегрируется с приложениями благодаря API.
- Поддержка шифрования данных и управление доступом через IAM.
- От небольших проектов до огромных хранилищ данных.
- 99,999999999% (11 девяток!) долговечности данных.

🟡Как начать работу с S3 в Java?

1️⃣Подключите SDK:
Добавьте зависимость в ваш проект.

<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>{actualVersion}</version>
</dependency>


2️⃣Настройте доступ:
Создайте учетные данные AWS (Access Key и Secret Key). Эти ключи позволяют вашему приложению взаимодействовать с S3.

3️⃣Пример загрузки/выгрузки файла в/из S3:

public class S3Example {
public static void main(String[] args) {
S3Client s3 = S3Client.create();

// Загрузка файла в S3
s3.putObject(
PutObjectRequest.builder()
.bucket("my-bucket-name")
.key("example.txt")
.build(),
Paths.get("path/to/local/file.txt")
);
System.out.println("Файл успешно загружен в S3");

// Выгрузка файла из S3
s3.getObject(
GetObjectRequest.builder()
.bucket("my-bucket-name")
.key("example.txt")
.build(),
Paths.get("path/to/downloaded/file.txt")
);
System.out.println("Файл успешно выгружен из S3");
}
}


💡 Где это пригодится?

- Хранение статического контента для веб-приложений.
- Бэкапы данных и журналов.
- Интеграция с микросервисами для обмена файлами.
- Хранение обучающих наборов данных для ML.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучшие практики по работе с DTO в IntelliJ IDEA | Amplicode

🌐🗣СМОТРЕТЬ VKVIDEO

📺🗣СМОТРЕТЬ RUTUBE

📝🗣СМОТРЕТЬ DZEN
Please open Telegram to view this post
VIEW IN TELEGRAM
Trie

Trie (дерево префиксов) — это структура данных в виде дерева, используемая для хранения ассоциативных данных, например словарей.
Она позволяет эффективно хранить и находить слова по их префиксам.

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

Поиск слова заключается в прохождении от корня по ветвям символов этого слова. Добавление нового слова — добавление отсутствующих узлов для его символов.

Trie оптимальна для хранения словарей и поиска по префиксам благодаря эффективности этих операций.
В Java для реализации Trie удобно использовать HashMap в узлах для связей с дочерними узлами.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Где вы чаще всего пишете код?

❤️ IntelliJ IDEA
🔥 Vim/Emacs
👍🏼 Eclipse
⚡️ VS Code
😁 Notepad++

Пишите в комментарии интересные/полезные фичи вашего инструмента
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом кода?
👩‍💻 Spring Security 6.4: RestClient Support for OAuth2

🔒 Learn OAuth2 authentication in Spring Boot with the new Rest Client support in Spring Security 6.4! This tutorial walks you through building a secure multi-module application from scratch, complete with authorization server, resource server, and client applications.

In this step-by-step guide, we'll build a OAuth2 implementation using Spring Boot 3.4's latest features. Perfect for developers looking to implement secure authentication in their Spring applications!

What You'll Learn:
• Setting up a multi-module Maven project in Spring Boot
• Implementing an OAuth2 authorization server
• Creating a secure resource server with protected endpoints
• Building client applications with Rest Client OAuth2 support
• Understanding OAuth2 flow and architecture
• Best practices for Spring Security configuration
• Handling unauthorized access and security exceptions


🌐🗣СМОТРЕТЬ VKVIDEO

📺🗣СМОТРЕТЬ RUTUBE

📝🗣СМОТРЕТЬ DZEN

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите прокачать скиллы в автоматизации тестирования на Java?

Ждем вас на бесплатном практическом уроке от OTUS — «gitlab-ci и написание пайплайнов для сборки»

Практика: gitlab-ci и методики написания пайплайнов для сборки докер образа с тестами и его публикации в реджестри

👉 Регистрация и подробности:
https://otus.pw/32R8/?erid=2W5zFJ7Aifz

#реклама
О рекламодателе