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
#реклама
О рекламодателе
Какие типы ссылок существуют?
Существует 4 типа ссылок, которые определяют, как объект будет обрабатываться сборщиком мусора (Garbage Collector).
1️⃣ Strong Reference
Это ссылки, которые используются по умолчанию.
Объект, на который указывает сильная ссылка, никогда не будет удален сборщиком мусора, пока существует эта ссылка.
Используйте, когда объект нужен в течение всего времени выполнения.
2️⃣ Soft Reference
Создаются с помощью класса SoftReference. Soft ссылка удерживает объект в памяти, пока в JVM достаточно свободной памяти. Если памяти не хватает, объект будет удален.
Удобны для реализации кэшей. Например, если объект можно восстановить, но не хочется держать его в памяти постоянно.
Сборщик мусора удаляет объекты, на которые ссылаются мягкие ссылки, только в случае нехватки памяти.
3️⃣ Weak Reference
Создаются с помощью класса WeakReference. Объект, на который ссылается слабая ссылка, удаляется сборщиком мусора, как только на него больше нет сильных или мягких ссылок.
Часто используются в структурах данных, таких как WeakHashMap, для предотвращения удержания ненужных объектов.
Удобны для создания ссылок на временные объекты.
4️⃣ Phantom Reference
Создаются с помощью класса PhantomReference. Эти ссылки используются исключительно для отслеживания, когда объект будет удален сборщиком мусора.
Метод get() у фантомной ссылки всегда возвращает null.
Объекты, на которые ссылаются фантомные ссылки, добавляются в ReferenceQueue, когда сборщик мусора их удаляет.
✅ Java библиотека #java
Существует 4 типа ссылок, которые определяют, как объект будет обрабатываться сборщиком мусора (Garbage Collector).
Это ссылки, которые используются по умолчанию.
String strongRef = new String("Strong Reference");
Объект, на который указывает сильная ссылка, никогда не будет удален сборщиком мусора, пока существует эта ссылка.
Используйте, когда объект нужен в течение всего времени выполнения.
Создаются с помощью класса SoftReference. Soft ссылка удерживает объект в памяти, пока в JVM достаточно свободной памяти. Если памяти не хватает, объект будет удален.
SoftReference<String> softRef = new SoftReference<>(new String("Soft Reference"));
String softObj = softRef.get();
Удобны для реализации кэшей. Например, если объект можно восстановить, но не хочется держать его в памяти постоянно.
Сборщик мусора удаляет объекты, на которые ссылаются мягкие ссылки, только в случае нехватки памяти.
Создаются с помощью класса WeakReference. Объект, на который ссылается слабая ссылка, удаляется сборщиком мусора, как только на него больше нет сильных или мягких ссылок.
WeakReference<String> weakRef = new WeakReference<>(new String("Weak Reference"));
String weakObj = weakRef.get();
Часто используются в структурах данных, таких как WeakHashMap, для предотвращения удержания ненужных объектов.
Удобны для создания ссылок на временные объекты.
Создаются с помощью класса PhantomReference. Эти ссылки используются исключительно для отслеживания, когда объект будет удален сборщиком мусора.
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom Reference"), new ReferenceQueue<>());
Метод get() у фантомной ссылки всегда возвращает null.
Объекты, на которые ссылаются фантомные ссылки, добавляются в ReferenceQueue, когда сборщик мусора их удаляет.
Please open Telegram to view this post
VIEW IN TELEGRAM
🗓 24 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».
На вебинаре мы разработаем полноценное приложение «Блокнот» с графическим пользовательским интерфейсом, демонстрирующее базовые принципы создания текстового редактора на Java.
В процессе занятия мы реализуем такие функциональные возможности, как:
- создание нового текстового файла, его сохранение,
- загрузка уже существующего файла,
- редактирование текста, подсчет статистических данных и другие операции, характерные для текстовых редакторов.
Особое внимание будет уделено работе с файловой системой, потоками ввода/вывода и обработке событий, что позволит создать удобное и интуитивно понятное приложение.
Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
🔗 Ссылка на регистрацию: https://vk.cc/cJP6Du
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как эффективно управлять доступом пользователей к базе данных, используя роли?
Разберем основные механизмы безопасности PostgreSQL на практике: шифрование соединений (SSL/TLS), контроль доступа (pg_hba.conf, роли, RLS), аудит (pg_audit).
Приглашаем на открытый практический урок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» в рамках курса PostgreSQL для администраторов баз данных и разработчиков
✅ Практика: настройка SSL/TLS шифрование для защиты данных при передаче, обеспечивая конфиденциальность обмена информацией между клиентом и сервером PostgreSQL.
Покажем, как защититься от распространенных угроз:SQL-инъекции, DDoS-атаки.
👉 Регистрация и подробности:
https://otus.pw/W6xqV/?erid=2W5zFGbhT3e
#реклама
О рекламодателе
Разберем основные механизмы безопасности PostgreSQL на практике: шифрование соединений (SSL/TLS), контроль доступа (pg_hba.conf, роли, RLS), аудит (pg_audit).
Приглашаем на открытый практический урок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» в рамках курса PostgreSQL для администраторов баз данных и разработчиков
✅ Практика: настройка SSL/TLS шифрование для защиты данных при передаче, обеспечивая конфиденциальность обмена информацией между клиентом и сервером PostgreSQL.
Покажем, как защититься от распространенных угроз:SQL-инъекции, DDoS-атаки.
👉 Регистрация и подробности:
https://otus.pw/W6xqV/?erid=2W5zFGbhT3e
#реклама
О рекламодателе
Stream API (поток) — принципиально новый способ работы с коллекциями в Java (по крайней мере он был таким на момент релиза).
В данной статье речь пойдёт о наиболее интересных и показательных примерах использования Stream.
Обсудим, как применять Stream API эффективно, делая код лучше и избегая ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🗓 26 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework»
Использование нативного SQL с Spring JDBC позволяет создать безопасное, поддерживаемое и тестируемое DAO для эффективного доступа к данным.
О чём поговорим:
- Преимущества нативного SQL при разработке DAO.
- Основные возможности Spring JDBC для работы с запросами.
- Подходы к обеспечению безопасности и тестируемости DAO.
🔗 Ссылка на регистрацию: https://vk.cc/cJR2o7
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Секретная фича Docker Compose | Создаём несколько окружений для Spring Boot | Amplicode
В новом видео мы рассказали о нескольких способах создания различных окружений с Docker Compose: от использования Copy/Paste и Profiles до малоизвестных Include и Extends.
Узнали, в чём минусы и плюсы каждого из них, а также посмотрели на поддержку перечисленных вариантов со стороны Amplicode.
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
📝 🗣 СМОТРЕТЬ DZEN
В новом видео мы рассказали о нескольких способах создания различных окружений с Docker Compose: от использования Copy/Paste и Profiles до малоизвестных Include и Extends.
Узнали, в чём минусы и плюсы каждого из них, а также посмотрели на поддержку перечисленных вариантов со стороны Amplicode.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Устроиться бэкендером в Яндекс за несколько дней
12–17 апреля устраиваем Week Offer Backend. Ищем крутых бэкендеров с опытом работы от 3 лет на C++, Python, Java/Kotlin или Go, готовых работать в офисном или гибридном режиме в России.
До 9 апреля решите задачи в Контесте, 12–13 апреля пройдите два собеседования, а 13–17 апреля познакомьтесь с командами и получите офер.
В мероприятии участвует 6 команд: Яндекс Пэй, Яндекс ID, Яндекс Плюс, Яндекс Сплит, Яндекс Сейвы, Яндекс 360. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.
Узнать подробности и зарегистрироваться можно здесь.
Реклама. ООО "Яндекс". ИНН 7736207543
12–17 апреля устраиваем Week Offer Backend. Ищем крутых бэкендеров с опытом работы от 3 лет на C++, Python, Java/Kotlin или Go, готовых работать в офисном или гибридном режиме в России.
До 9 апреля решите задачи в Контесте, 12–13 апреля пройдите два собеседования, а 13–17 апреля познакомьтесь с командами и получите офер.
В мероприятии участвует 6 команд: Яндекс Пэй, Яндекс ID, Яндекс Плюс, Яндекс Сплит, Яндекс Сейвы, Яндекс 360. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.
Узнать подробности и зарегистрироваться можно здесь.
Реклама. ООО "Яндекс". ИНН 7736207543
DoubleAdder
DoubleAdder — это класс из пакета java.util.concurrent, предназначенный для эффективного параллельного суммирования значений типа double.
DoubleAdder оптимизирован для многопоточных приложений, когда нужно подсчитать сумму или другое агрегатное значение из большого числа потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Хорошо масштабируется на большом количестве CPU ядер.
✅ Java библиотека #java
DoubleAdder — это класс из пакета java.util.concurrent, предназначенный для эффективного параллельного суммирования значений типа double.
DoubleAdder оптимизирован для многопоточных приложений, когда нужно подсчитать сумму или другое агрегатное значение из большого числа потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Хорошо масштабируется на большом количестве CPU ядер.
Please open Telegram to view this post
VIEW IN TELEGRAM
Осталось несколько дней до закрытия набора.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
SeaTunnel - это высокопроизводительный инструмент распределенной интеграции данных нового поколения, способный ежедневно синхронизировать огромные объемы данных.
SeaTunnel способен стабильно и эффективно синхронизировать данные в режиме реального времени и уже используется в продакшене почти 100 компаниями.
Написан полностью на Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
24%
[10, 20, 30, 40]
6%
[20, 30, 40, 10]
56%
[20, 30, 40]
12%
[10, 20, 30]
2%
[30, 40, 20]