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

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
Как устроен под капотом LinkedHashMap?

LinkedHashMap — это реализация интерфейса Map, которая сохраняет порядок добавления элементов. В отличие от обычного HashMap, где элементы могут быть расположены случайным образом, LinkedHashMap поддерживает последовательность вставки или порядок доступа. Это достигается благодаря использованию двусвязного списка, который связывает все элементы карты.

🔹 Структура LinkedHashMap

Основой LinkedHashMap является та же хэш-таблица, что и в HashMap, но с дополнительной структурой двусвязного списка для сохранения порядка элементов:

▪️ Каждая запись (entry) в LinkedHashMap содержит ссылки на предыдущий и следующий элементы. Это позволяет поддерживать порядок добавления или порядок последнего доступа.
▪️ Сначала выполняется хэширование ключей для быстрой вставки и поиска, как в HashMap, а уже потом запись связывается в список.

🔹 Производительность

▪️ Вставка: Добавление новых элементов выполняется за O(1), поскольку элементы добавляются в конец двусвязного списка, а хэш-таблица используется для поиска свободной позиции.
▪️ Удаление: Удаление элемента требует корректировки ссылок в двусвязном списке, что увеличивает накладные расходы, но также выполняется за O(1).
▪️ Поиск: Операция поиска по ключу происходит с использованием хэш-таблицы и выполняется за O(1), как и в HashMap.
▪️ Множественные коллизии: в худшем случае все операции будут выполняться с O(n), если допустить множественные коллизии.

🔹 Использование памяти

Каждая запись LinkedHashMap содержит дополнительные ссылки на предыдущий и следующий элементы, что увеличивает потребление памяти по сравнению с HashMap. Однако это оправдано, если важен порядок элементов.

🔹 Преимущества и недостатки

▪️ Преимущества:

- Сохранение порядка вставки: LinkedHashMap гарантирует, что элементы будут извлекаться в том порядке, в котором они были добавлены.
- Порядок доступа: Можно настроить LinkedHashMap на удаление самых старых элементов, что полезно для кэшей, где используется политика LRU (Least Recently Used).
- Предсказуемость итераций: В отличие от HashMap, где порядок элементов может изменяться, LinkedHashMap всегда сохраняет стабильный порядок.

▪️ Недостатки:

- Более высокое потребление памяти: Дополнительные ссылки на предыдущие и следующие элементы увеличивают память на каждую запись.
- Скорость: LinkedHashMap немного медленнее HashMap из-за поддержания порядка элементов.

@javalib #java
5 декабря пройдет онлайн-митап для java-разработчиков от Naumen. Спикеры поделятся опытом в промышленной java-разработке, реальными кейсами и полезными рекомендациями.

В программе три доклада:
🔸 Как приручить JSON — Максим Осипов, руководитель группы разработки Naumen SMP
🔸 Прагматика микросервисов: строим большую систему с помощью пачки монолитов — Дмитрий Черкасов, DevRel Jmix
🔸 Бэкэнд изображений в ОК — Руслан Измайлов, ведущий java-разработчик в ОК, VK

Старт митапа 5 декабря в 16:00 мск | 18:00 екб.

Участие как всегда бесплатное, нужна только регистрация.

→ Зарегистрироваться на митап.

Реклама, АО «Нау-сервис», ИНН 6671116364
https://www.naumen.ru/
erid: 2VtzqxDtiJB
Java. Самое полное руководство по разработке в примерах от сообщества Stack Overflow (2024) PDF

Эта книга – не академический учебник по Java, а скорее сборник своеобразных рецептов по применению этого универсального языка программирования, которые могут пригодиться в самых разных случаях, связанных с написанием кода. Ее можно использовать для разрешения сложных ситуаций, возникающих у пользователей при работе с Java. Многое из представленного здесь материала ранее не публиковалось в русскоязычных учебниках по языку Java, например, в книге рассмотрены особенности разработки приложений на основе применения параллельного программирования, работа с потоками, а также использование Java при вызове цепочки методов.

Данное издание может стать незаменимым помощником как для начинающего программиста, стремящегося разобраться во всех тонкостях языка Java, так и для более опытных разработчиков, которые смогут использовать книгу в качестве справочника для решения повседневных задач при написании кода.
Событийный подход в разработке процессных приложений с помощью Jmix BPM

Нагромождение проверок после каждого шага процесса делает BPMN диаграмму запутанной и нечитаемой.

Разработчики BPMN учли это и заложили соответствующие возможности в нотацию.

Однако не все аналитики и разработчики умеют ими пользоваться, что является одной из причин, почему диаграммы часто остаются украшением кабинетов, а не автоматизированными процессами.

Хотите перейти от громоздких и запутанных процессов к набору простых, взаимодействующих между собой? Приходите на наш вебинар!

📆 5 декабря, 16:00 (по Москве)

Вы узнаете:
- Как на практике применить событийно-ориентированный подход к автоматизации бизнес-процессов
- Какие инструменты BPMN для этого применяются
- Как организовано межпроцессное взаимодействие

📍Регистрируйтесь на бесплатный онлайн-вебинар по ссылке!

#реклама
О рекламодателе
Forwarded from Java Guru 🤓
Что выведет данный код?
⚡️ Приглашаем на открытый урок «Разрабатываем Kafka-appender для логгера».

🗓 05 декабря в 20:00 МСК

Интеграция логирования с системами обмена сообщениями, такими как Apache Kafka, становится все более востребованной в современных Java-приложениях. Однако найти готовый функционал для этой задачи не всегда просто, поэтому часто возникает необходимость разработки собственного Kafka-appender для логгера.

На вебинаре разберем:

✔️ Зачем нужен Kafka-appender для логгера.
✔️ Подходы к разработке собственного Kafka-appender.
✔️ Шаги по созданию Kafka-appender для логгера.
✔️Практические рекомендации

Вебинар пройдет в рамках курса «Java Developer. Professional», все посетители получат welcome-скидку на обучение.

🔗 Ссылка на регистрацию: https://vk.cc/cFpnap

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Узнаем размер памяти компьютера

Для получения информации о памяти компьютера в Java можно использовать класс Runtime.

@javalib #java
Как работает 𝐠𝐑𝐏𝐂

gRPC (Google Remote Procedure Call) — это современный фреймворк с открытым исходным кодом, разработанный компанией Google для эффективной и масштабируемой коммуникации между микросервисами. Он основан на RPC (удалённый вызов процедур) и используется для построения распределённых систем и микросервисных архитектур.

Выше показана диаграмма, иллюстрирующая общий поток данных для 𝐠𝐑𝐏𝐂.

Шаг 1: Клиент отправляет REST-запрос, обычно в формате JSON.

Шаги 2 - 4: Сервис заказа (клиент gRPC) получает REST-запрос, преобразует его и делает RPC-вызов к сервису оплаты. gPRC кодирует клиентский stub в бинарный формат и отправляет на транспортный уровень.

Шаг 5: gRPC передаёт пакеты по сети через HTTP/2. Благодаря бинарному кодированию и сетевым оптимизациям gRPC работает в 5 раз быстрее, чем JSON.

Шаги 6 - 8: Сервис оплаты (сервер gRPC) получает пакеты, декодирует их и вызывает серверное приложение.

Шаги 9 - 11: Результат возвращается с серверного приложения, кодируется и передаётся на транспортный уровень.

Шаги 12 - 14: Сервис заказа получает пакеты, декодирует их и отправляет результат клиентскому приложению.

@javalib #java
Онлайн-курс «JAVA-разработчик» от EdMe: 6 месяцев, гарантия работы, оплата после трудоустройства

Образовательный проект EdMe открывает набор на курс по Java-разработке. Программа подойдет для начинающих с нуля и для тех, кто стремится улучшить свои навыки. Обучение построено на менторстве и направлено на комплексную подготовку к трудоустройству. За 6 месяцев вы сможете достичь уровня middle-разработчика, для этого нужно уделять обучению от 20 часов в неделю.

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

Плюсы курса:

Гарантированное трудоустройство с зарплатой от 140 000 рублей;
Оплата курса только после выхода на работу – 20% от зарплаты в течение 18 месяцев;
Бесплатная карьерная поддержка после окончания курса;
Возможность завершения обучения без оплаты и штрафов, если вы по каким-либо причинам не сможете закончить курс.

Во время обучения вы будете использовать Jira, Confluence, Bitbucket, GitLab – те самые системы, с которыми вы столкнетесь на реальных проектах.

Программа курса:

▪️ Основы Java: Java Core, List, JDBC, Hibernate, Spring (Core, MVC, Security), Spring Boot, Git.
▪️ Проект.
▪️ Подготовка к собеседованиям (составление резюме, прохождение тестовых собеседований).
▪️ Прохождение реальных собеседований.

Посмотреть подробности и записаться можно на EdMe.pro

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

Реклама. ООО "БАКСЭТ", ИНН 4345115602. Erid 2VtzqwFLhVq
System.arraycopy

System.arraycopy используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Параметры метода включают:

src: Исходный массив, из которого вы хотите скопировать элементы.
srcPos: Начальная позиция в исходном массиве, с которой начнется копирование.
dest: Целевой массив, в который вы хотите скопировать элементы.
destPos: Начальная позиция в целевом массиве, куда будут скопированы элементы.
length: Количество элементов, которое вы хотите скопировать.


@javalib #java
👩‍💻 Хотите стать востребованным Java-разработчиком, освоить Spring и выйти на новый уровень в карьере и доходе?

Обучение на курсе «Разработчик на Spring Framework» — ваш шанс прокачаться и выйти на более серьёзные проекты!

✔️ Вы освоите Spring Boot, Spring MVC, Spring Security и ещё большое количество технологий.
✔️ Оттачивайте навыки на практике — каждое домашнее задание превратится в полноценное приложение!
✔️ У нас практикующие эксперты, живые лекции и проектный подход — всё, что сделает из вас сильного специалиста.

Станьте профессионалом, который уверенно работает с микросервисной архитектурой, быстро доносит идеи до production-grade и владеет Spring на уровне, который ценят в топовых компаниях. Диплом OTUS откроет вам двери к новым возможностям и амбициозным проектам.

🎁 В "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

➡️ Последний шанс попасть в этот набор! Пройдите короткий тест и получите скидку: https://vk.cc/cFv1jA

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод insert()

Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.

Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.

*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.


@javalib #java
Media is too big
VIEW IN TELEGRAM
Разбор исключений в Java (Checked&Unchecked): руководство для начинающих разработчиков

Погружаемся в мир исключений в Java! 🚀 В этом видео вы узнаете, что такое проверяемые (checked) и непроверяемые (unchecked) исключения, чем они отличаются, и как правильно их использовать в коде. Разберёмся с базовым классом Exception, научимся создавать свои исключения и обрабатывать их с помощью @ExceptionHandler.
Этот ролик идеально подходит для начинающих разработчиков, а также для тех, кто хочет систематизировать знания по обработке ошибок в Java.

В видео:
✔️ Что такое исключения и зачем они нужны
✔️ Checked vs Unchecked: основное различие
✔️ Класс Exception и его структура
✔️ Как создать своё исключение
✔️ Реальная обработка ошибок в Spring Boot с @ExceptionHandler
✔️ Полезные советы по работе с исключениями

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Security в действии (2025) PDF

Spring Security значительно упрощает защиту корпоративных приложений, разработанных на Java. Этот мощный фреймворк идеально интегрируется с приложениями Spring, обеспечивая защиту с первых шагов проекта и предоставляя готовые к использованию функции, которые помогут вам реализовать надежную авторизацию и аутентификацию, а также защитить от кражи данных и вторжений. Как и все остальное в экосистеме Spring, этот фреймворк бесплатен, имеет открытый исходный код и поддерживается замечательной командой VMWare.
Понятные объяснения и наглядные примеры научат вас создавать собственные серверы авторизации, настраивать защищенные конечные точки и предотвращать атаки с использованием межсайтового скриптинга и подделки запросов.

Издание адресовано программистам Java и Spring.
⚡️ Только что закончили ВУЗ?
Начните карьеру Java-разработчика с прочной базой!

Java — один из ключевых языков программирования, который используют в банковском деле, корпоративных приложениях и IT-гигантах. Курс поможет вам освоить современные инструменты, такие как Spring, Docker, Hibernate и PostgreSQL.

Обучение на примерах реальных задач, опытные наставники и живая практика с кодом. С дипломом от OTUS вы станете заметным кандидатом для работодателей!

💪 Готовы сделать первый шаг в IT?

👉 Присоединяйтесь к курсу «Java-разработчик» и получите скидку на обучение: https://vk.cc/cFD7pN

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Создаём Telegram Бота с Нуля на Java и Spring Boot | Часть 2: Вырезка из процесса разработки

🖖Приветствую! Мы с вами вместе напишем реальный проект Telegram бота. В этой части я даю вам вырезку того, как проходит процесс.

Первая часть

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM