Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.65K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
#дайджест #javadevjob

Вакансии Java разработчиков уровня Junior

▪️Java Developer
Таганрог. JavaCode — работа в аутстафф направлении
Подробнее

▪️Java Frontend Developer
Новосибирск. Soft-logic — разработкa собственных коробочных продуктов
Подробнее

Вакансии Java разработчиков уровня Middle

▪️Java-разработчик
Удаленка. Datanomica — работа с данными
Подробнее

▪️Java разработчик
Удаленка. HolyCode — разработка IT решений
Подробнее

Вакансии Java разработчиков уровня Senior

▪️Java Developer
Удаленка. 8B WORLD — финтех-стартап
Подробнее

▪️Java разработчик
Москва. Платформа ОФД — оператор фискальных данных
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🤔 Нужна ли математика на собеседованиях?

🗓 Сегодня в 20:00 встречаемся в прямом эфире, чтобы обсудим роль математики на собеседовании, а также поделимся инсайдами как успешно пройти техническое собеседование! https://proglib.io/w/a928b7c2

🌟 Спикер: Станислав Петров – Senior Data Scientist.

😮 На вебинаре вы узнаете:

😱 Ошибаться — не страшно. Как ошибки и неудачные проекты могут стать ценным опытом. Почему «проекты в стол» способствуют профессиональному росту. И как преодолеть путь от junior до senior.

🙌🏻 Собеседования: можно ли к ним не готовиться?! Поделимся эффективными стратегиями подготовки и расскажем, на что работодатели обращают внимание в первую очередь.

✍️ Разберем реальные тестовые задачи, которые дают на собеседованиях на позицию Data Scientist.

🎁 Бонус: расскажем как проводить эффективное тестирование в маркетинге и их масштабируемость.

🎯 Почему важно посетить вебинар?

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

• Расширьте свой профессиональный кругозор и подготовьтесь к новым карьерным вызовам.

👉 Присоединяйтесь к нам и узнайте, как математика может помочь в вашей карьере https://proglib.io/w/a928b7c2
ℹ️ Как работает SSO

SSO (Single Sign-On) или Единая система аутентификации — это схема аутентификации, которая позволяет пользователю войти в разные системы, используя одну учетную запись.

На фото выше показан принцип работы SSO.

Шаг 1: Пользователь заходит в Gmail или любой другой сервис электронной почты. Gmail обнаруживает, что пользователь не авторизован, и перенаправляет его на SSO сервер аутентификации, который также обнаруживает отсутствие входа. Пользователь попадает на страницу авторизации SSO и вводит свои учетные данные.

Шаги 2-3: SSO сервер проверяет данные пользователя, создает глобальную сессию и выдает токен.

Шаги 4-7: Gmail проверяет токен на SSO сервере. Система аутентификации регистрирует Gmail и возвращает статус «действительно». Gmail отправляет пользователю защищенный ресурс.

Шаг 8: Из Gmail пользователь переходит на другой сайт Google, например, YouTube.

Шаги 9-10: YouTube обнаруживает, что пользователь не авторизован, и запрашивает подтверждение. SSO сервер находит уже активную сессию пользователя и выдает токен.

Шаги 11-14: YouTube проверяет токен на SSO сервере. Система аутентификации регистрирует YouTube и возвращает статус «действительно». YouTube отправляет пользователю защищенный ресурс.

✔️ Процесс завершен, и пользователь получает доступ к своим данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
🕯 Паттерн Хранитель (Memento)

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

Использование:

🔹 Когда необходимо сохранять промежуточные состояния объекта для возможности восстановления.
🔹 Когда прямой доступ к полям объекта ограничен, но нужно иметь возможность восстановить его состояние.
🔹 Когда требуется временно отменять изменения и потом возвращаться к сохранённым состояниям.

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

1️⃣ Обеспечивает сохранение и восстановление состояния объекта без раскрытия его внутренней структуры.
2️⃣ Поддерживает отмену изменений и возможность вернуться к предыдущему состоянию, сохраняя историю.
3️⃣ Позволяет реализовать функциональность undo-redo, гибко восстанавливая состояния объектов.

Недостатки:

1️⃣ Увеличивает расход памяти, так как каждое сохранённое состояние требует хранения.
2️⃣ Может усложнить реализацию при наличии множества состояний с большим количеством данных.
3️⃣ Может потребоваться создание большого количества объектов Memento для хранения истории изменений.

📌 Паттерн полезен, когда нужно сохранить и восстановить состояние объекта, например, при реализации истории действий пользователя или для поддержки функций отмены и возврата к ранее сохранённым состояниям.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨🔙🔚 Паттерн «Бэкенд для фронтенда»: преимущества, недостатки и лучшие практики для реализации

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

👉 Читать статью
👉 Зеркало
💻🤔 Код сожаления: 10 ошибок, о которых жалеют даже опытные программисты

В программировании полно разных путей и нет единственно правильного способа достичь вершины мастерства. Но есть общие ловушки.


✔️Читать статью
🚀💾 Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату

Protobuf — механизм бинарной сериализации данных, разработанный компанией Google. Протокол не зависит от языка и платформы, и обеспечивает более компактную и быструю сериализацию по сравнению с традиционными текстовыми форматами.

Особенно интересно, как решается проблема совместимости версий. Обо всем этом подробнее читайте в нашей статье👇

🔗 Читать статью
🔗 Зеркало
Привет, друзья! 👋

Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал ещё полезнее. Самые интересные ответы войдут в статью! 🏆
Какой ИИ-инструмент для программирования вы считаете самым полезным и почему? 🛠
Anonymous Poll
7%
GitHub Copilot
51%
ChatGPT
2%
Claude
3%
Codeium
2%
Локальные LLM
29%
Не пользуюсь ИИ
4%
Другой (укажите в комментариях)
Как изменилась ваша продуктивность после начала использования ИИ-инструментов в разработке? ⏱️
Anonymous Poll
17%
Значительно выросла (более чем на 50%)
21%
Умеренно выросла (20-50%)
27%
Незначительно выросла (до 20%)
32%
Не изменилась
4%
Снизилась
Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬
🔗 Хотите быстрее настроить Spring Boot проект?

Spring Initializr – инструмент, который поможет вам с начальной конфигурацией Spring-приложения. Выберите сборщик, зависимости, версию Java, и он сгенерирует базовую структуру проекта, готовую для импорта в вашу IDE и начала разработки.

🔼 Сразу переходите к разработке, избегая рутинной конфигурации.
🛡 Исключите риск несовместимых библиотек.
Начинайте с простого набора функций и по мере роста добавляйте новые зависимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋

Мы готовим статью о секретах мастерства в программировании и хотим узнать ваше мнение! 💻

Какие качества, по вашему мнению, отличают действительно выдающегося программиста? 🏆
ℹ️ Как устроен под капотом TreeMap?

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

🔹 Структура TreeMap

TreeMap основан на красно-чёрном дереве, что позволяет выполнять операции вставки, удаления и поиска за логарифмическое время:

▪️ Каждая запись (node) в TreeMap содержит ссылки на левый и правый дочерние узлы, а также на родительский узел. Красно-чёрное дерево поддерживает сбалансированность, что минимизирует высоту дерева.
▪️ Каждый узел имеет атрибут «цвет» — красный или чёрный, что позволяет TreeMap быстро балансировать дерево при добавлении или удалении элементов.

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

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

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

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

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

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

- Поддержание отсортированного порядка: TreeMap гарантирует, что элементы будут отсортированы по возрастанию (или согласно Comparator), что полезно для приложений, где важен порядок ключей.
- Быстрая навигация: TreeMap поддерживает методы для нахождения минимальных и максимальных элементов, а также диапазонные операции, такие как subMap, headMap и tailMap.
- Балансировка: Красно-чёрное дерево автоматически балансируется, что обеспечивает высокую производительность на больших наборах данных.

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

- Более высокие временные затраты на вставку и удаление: В отличие от HashMap и LinkedHashMap, TreeMap требует логарифмическое время на операции из-за необходимости поддержания баланса.
- Более высокое потребление памяти: Дополнительные ссылки и атрибуты для балансировки увеличивают использование памяти по сравнению с HashMap.
- Не поддерживает null ключи: В TreeMap нельзя использовать null в качестве ключа, что ограничивает его использование в некоторых сценариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈