Media is too big
VIEW IN TELEGRAM
Знакомство с Micronaut
Пример CRUD приложения на Micronaut.
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
📝 🗣 СМОТРЕТЬ DZEN
✅ Java библиотека #java
Пример CRUD приложения на Micronaut.
Please open Telegram to view this post
VIEW IN TELEGRAM
23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Читать статью
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Читать статью
VK
23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом компиляции этого кода?
Anonymous Quiz
30%
Код скомпилируется, и метод будет иметь дефолтную реализацию
3%
Код скомпилируется, но метод будет помечен как protected
52%
Код не скомпилируется, т.к. модификатор default недопустим в абстрактных классах
7%
Код скомпилируется, но метод будет помечен как abstract
8%
Компилятор выдаст предупреждение, но код запустится без ошибок
Media is too big
VIEW IN TELEGRAM
7+1 программа для тех, кто изучает Java.
В этом выпуске автор предлагают список программ, которые надо установить тому, кто собирается изучать Java.
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
📝 🗣 СМОТРЕТЬ DZEN
✅ Java библиотека #java
В этом выпуске автор предлагают список программ, которые надо установить тому, кто собирается изучать Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает ConcurrentSkipListMap под капотом?
ConcurrentSkipListMap — это потокобезопасная и отсортированная реализация интерфейса NavigableMap, которая работает на основе skip list (списка с пропусками). Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков: нижний уровень содержит все элементы в порядке сортировки, а верхние уровни — лишь часть элементов для ускорения поиска. При добавлении элемента случайно выбирается его "высота" (количество уровней, на которых он присутствует), что позволяет "перепрыгивать" через блоки данных на верхних уровнях и выполнять операции со сложностью O(log n).
Пример структуры:
💡 Основные механизмы:
🟡 Skip List: Многослойный список с пропусками, где верхние уровни помогают быстро достигать нужного диапазона элементов, снижая количество переходов по связям.
🟡 Потокобезопасность обеспечивается за счёт использования CAS (Compare-And-Swap) операций и минимального блокирования. Модификации происходят безопасно без полной блокировки структуры.
🟡 Элементы всегда хранятся в отсортированном порядке по их ключам, что позволяет выполнять операции вроде поиска диапазонов или итераций по упорядоченным ключам очень эффективно.
🟡 Высокая доступность: чтение не блокируется, даже если выполняются параллельные операции вставки или удаления.
⚠️ Особенности:
🔘 Операции чтения (например, get или containsKey) выполняются быстро и без блокировок благодаря структуре skip list.
🔘 Операции записи (например, put и remove) синхронизированы, но производительность сохраняется за счёт оптимизации с использованием CAS.
🔘 Поддерживает натуральный порядок ключей или порядок, определённый переданным компаратором.
🔘 Эффективен для сценариев, где важны отсортированные данные и параллельный доступ, но количество обновлений не слишком велико.
🚀 Когда использовать ConcurrentSkipListMap?
- Если нужен параллельный доступ к отсортированной мапе.
- Для обработки диапазонов данных или частых операций чтения в упорядоченном виде.
🔗 Документация
✅ Java библиотека #java
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
🚀 Когда использовать ConcurrentSkipListMap?
- Если нужен параллельный доступ к отсортированной мапе.
- Для обработки диапазонов данных или частых операций чтения в упорядоченном виде.
Please open Telegram to view this post
VIEW IN TELEGRAM
Динамический массив
В Java динамический массив представляет собой структуру данных, которая позволяет хранить и управлять коллекцией элементов переменного размера.
Он реализуется с помощью класса ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.
✅ Java библиотека #java
В Java динамический массив представляет собой структуру данных, которая позволяет хранить и управлять коллекцией элементов переменного размера.
Он реализуется с помощью класса ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между throw и throws?
- throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
Здесь throws не выбрасывает исключение, а только предупреждает, что оно может возникнуть.
- throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
Здесь throw запускает исключение, когда возникает определённое условие.
✅ Java библиотека #java
- throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
public void readFile() throws FileNotFoundException { ... }
Здесь throws не выбрасывает исключение, а только предупреждает, что оно может возникнуть.
- throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
if (file == null) {
throw new FileNotFoundException("Файл не найден");
}
Здесь throw запускает исключение, когда возникает определённое условие.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
19%
Ошибка компиляции
31%
Static method in A
41%
Static method in B
2%
RuntimeException
7%
Static method in A, Static method in B
Что такое S3 и как его использовать в Java?
Amazon S3 (Simple Storage Service) — это облачное хранилище от AWS, которое позволяет безопасно сохранять и извлекать данные любого объёма и формата. S3 предоставляет масштабируемое решение для хранения файлов, данных резервного копирования, статического контента для веб-приложений и многого другого.
🟡 Ключевые особенности S3:
- Данные хранятся в виде объектов (файлов), которые организуются в бакеты.
- S3 легко интегрируется с приложениями благодаря API.
- Поддержка шифрования данных и управление доступом через IAM.
- От небольших проектов до огромных хранилищ данных.
- 99,999999999% (11 девяток!) долговечности данных.
🟡 Как начать работу с S3 в Java?
1️⃣ Подключите SDK:
Добавьте зависимость в ваш проект.
2️⃣ Настройте доступ:
Создайте учетные данные AWS (Access Key и Secret Key). Эти ключи позволяют вашему приложению взаимодействовать с S3.
3️⃣ Пример загрузки/выгрузки файла в/из S3:
💡 Где это пригодится?
- Хранение статического контента для веб-приложений.
- Бэкапы данных и журналов.
- Интеграция с микросервисами для обмена файлами.
- Хранение обучающих наборов данных для ML.
✅ Java библиотека #java
Amazon S3 (Simple Storage Service) — это облачное хранилище от AWS, которое позволяет безопасно сохранять и извлекать данные любого объёма и формата. S3 предоставляет масштабируемое решение для хранения файлов, данных резервного копирования, статического контента для веб-приложений и многого другого.
- Данные хранятся в виде объектов (файлов), которые организуются в бакеты.
- S3 легко интегрируется с приложениями благодаря API.
- Поддержка шифрования данных и управление доступом через IAM.
- От небольших проектов до огромных хранилищ данных.
- 99,999999999% (11 девяток!) долговечности данных.
Добавьте зависимость в ваш проект.
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>{actualVersion}</version>
</dependency>
Создайте учетные данные AWS (Access Key и Secret Key). Эти ключи позволяют вашему приложению взаимодействовать с 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.
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
Trie (дерево префиксов) — это структура данных в виде дерева, используемая для хранения ассоциативных данных, например словарей.
Она позволяет эффективно хранить и находить слова по их префиксам.
Trie состоит из узлов, каждый из которых может ссылаться на несколько дочерних узлов. Каждая ветвь от корня до листа представляет одно слово, а символы слова образуют путь от корня до узла-листа.
Узлы, которые являются концом слова, помечаются специальным флагом.
Поиск слова заключается в прохождении от корня по ветвям символов этого слова. Добавление нового слова — добавление отсутствующих узлов для его символов.
Trie оптимальна для хранения словарей и поиска по префиксам благодаря эффективности этих операций.
В Java для реализации Trie удобно использовать HashMap в узлах для связей с дочерними узлами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Где вы чаще всего пишете код?
❤️ IntelliJ IDEA
🔥 Vim/Emacs
👍🏼 Eclipse
⚡️ VS Code
😁 Notepad++
❓ Пишите в комментарии интересные/полезные фичи вашего инструмента
❤️ IntelliJ IDEA
🔥 Vim/Emacs
👍🏼 Eclipse
⚡️ VS Code
😁 Notepad++
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
14%
Caught exception: Exception in process
51%
Processing resource Closing resource Caught exception: Exception in process
23%
Processing resource Caught exception: Exception in process
5%
Closing resource
7%
Closing resource Caught exception: Exception in process
🔒 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите прокачать скиллы в автоматизации тестирования на Java?
Ждем вас на бесплатном практическом уроке от OTUS — «gitlab-ci и написание пайплайнов для сборки»
✅ Практика: gitlab-ci и методики написания пайплайнов для сборки докер образа с тестами и его публикации в реджестри
👉 Регистрация и подробности:
https://otus.pw/32R8/?erid=2W5zFJ7Aifz
#реклама
О рекламодателе
Ждем вас на бесплатном практическом уроке от OTUS — «gitlab-ci и написание пайплайнов для сборки»
✅ Практика: gitlab-ci и методики написания пайплайнов для сборки докер образа с тестами и его публикации в реджестри
👉 Регистрация и подробности:
https://otus.pw/32R8/?erid=2W5zFJ7Aifz
#реклама
О рекламодателе