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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Какие два класса не наследуются от Object?

Ответ:
Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!
Привет, друзья! 👋

Мы готовим статью на тему: «5 признаков зависимости от программирования». Нам очень важно ваше мнение! Поделитесь своим опытом и советами, и самые интересные из них мы включим в статью.

Как вы понимаете, что программирование начинает занимать слишком много места в вашей жизни? Какие признаки вы замечаете?

🏄 Какие методы и стратегии вы используете, чтобы сохранить баланс между работой и личной жизнью?

😔 Был ли у вас опыт, когда программирование негативно влияло на ваши отношения с близкими или здоровье? Как вы справились с этим?

Ваши ответы помогут многим! Спасибо за участие!
Какое поведение корзины реализовано в этом фрагменте кода?
Свежий #дайджест по Java

👩‍💻 Как заставить code coverage работать на вас — статья объясняет, как использовать code coverage для повышения качества тестов и настройки надежного покрытия в проектах на Gradle и Maven.

👩‍💻 JPA Entity. Загрузи меня не полностью — статья рассказывает, как оптимизировать работу с базой данных в Spring, загружая только необходимые данные, чтобы ускорить приложение и избежать избыточного использования ресурсов​.

👩‍💻 Знакомство с BeanPostProcessor — статья рассказывает, как с помощью BeanPostProcessor в Spring можно создавать мощные кастомные аннотации, которые динамически изменяют значения полей объектов, превращая рутинную настройку бинов в гибкий и автоматизированный процесс.

👩‍💻 Spring Data JDBC. Проблемы известные, проблемы неизвестные — в докладе идёт речь об опыте работы над проектом Spring Data JDBC, в котором докладчик является контрибьютором. Доклад предоставляет отличное введение в технологию, обсуждая также её проблемы и возможные сложности.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ 7 эффективных стратегий для масштабирования базы данных

🔵 Индексация: Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
🔵 Материализованные представления: Предварительно вычисляйте результаты сложных запросов и сохраняйте их для быстрого доступа.
🔵 Денормализация: Упрощайте сложные соединения для повышения скорости выполнения запросов.
🔵 Вертикальное масштабирование: Увеличивайте ресурсы сервера (процессоры, оперативную память, хранилище) для улучшения производительности.
🔵 Кэширование: Храните часто запрашиваемые данные в быстром хранилище, чтобы снизить нагрузку на базу данных.
🔵 Репликация: Создавайте копии основной базы данных на разных серверах для увеличения объема операций чтения.
🔵 Шардинг: Разделяйте таблицы на более мелкие части и распределяйте их по серверам для улучшения работы с записью и чтением.

💬 Какие еще методы масштабирования используете вы?
🤔 Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам

🗓 22 августа в прямом эфире разберем как математика применяется в разных отраслях бизнеса. И какие математические навыки необходимы для успешной работы в каждой из них.

Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний.

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

🔵 Математика в бизнесе: Чем отличаются разные сферы друг от друга. Почему стоит понимать специфику сферы
🔵 ML и продуктовое IT: Чем различается математическая сложность от индустрии к индустрии. Какие к ним необходимы уровни подготовки
🔵 Баевская математика в GameDev. Баевская математика как альтернатива AB тестированию. Как математические методы применяются в разработке игр
🔵 Finance: Что такое количественные финансы и математическое моделирование. Обсудим текущие индустриальные тренды в отрасли
🔵 Backtest: Как знания математики делают ваши активы более надежными
🔵 На практике подробно разберем два математических кейса по GameDev и Backtest.

➡️ Зарегистрироваться: https://proglib.io/w/ea48f88a
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋

Мы готовим статью о том, как гарантированно провалить собеседование, и нам нужна ваша помощь! Поделитесь своим опытом и мнением, а самые интересные и полезные советы мы обязательно включим в нашу статью.

Какую самую нелепую ошибку вы когда-либо совершали на собеседовании?
Что, по вашему мнению, может мгновенно испортить впечатление о кандидате?

Не стесняйтесь делиться своими историями и мнениями в комментариях! Самые интересные и полезные советы попадут в нашу статью. 🚀 Спасибо за участие!
API Gateway vs. Load Balancer: В чём разница?

Отличное понимание ролей API Gateway и Load Balancer является ключевым для проектирования масштабируемых и эффективных архитектур.

— API Gateway: Почтальон цифрового мира 📬

Работает как почтальон, направляя API-запросы к нужному сервису. А также выполняет роль охранника, управляя аутентификацией и авторизацией, переводчика, преобразуя запросы и ответы, и регулировщика движения, контролируя частоту запросов.

— Load Balancer: Регулировщик движения 🚦

Его задача — равномерно распределять трафик между серверами, предотвращая их перегрузку, улучшая надежность и обеспечивая автоматическое переключение в случае сбоя одного из серверов.

Оба компонента необходимы в современных архитектурах, но выполняют разные функции! 🌐
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋

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

Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
Deprecated Event

В статье рассмотрен новый ивент в JDK 22, который позволяет отслеживать вызовы устаревших методов в вашем коде. Особенно полезен для обнаружения зависимостей от библиотек, которые могли быть удалены. Это помогает выявить потенциальные проблемы на раннем этапе и принять меры до того, как они приведут к сбоям в приложении.

Читать статью.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
🖥 JHipster: думали, распаковка, оказалось — вскрытие

JHipster — платформа для быстрой генерации веб-приложений, использующая генераторы и язык JDL, что позволяет разработчику за пару минут получить монолитное или микросервисное решение, описав архитектуру одним файлом. В докладе рассматривается качество сгенерированного JHipster проекта, где автор анализирует его структуру и выявляет возможные проблемы.

Смотреть видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
Integer i1= Integer.valueOf(100); Integer i2= Integer.valueOf(100); Integer i3= Integer.valueOf(200); Integer i4= Integer.valueOf(200);
Anonymous Quiz
36%
i1 == i2 : true; i3 == i4 : true
2%
i1 == i2 : false; i3 == i4 : true
36%
i1 == i2 : true; i3 == i4 : false
26%
i1 == i2 : false; i3 == i4 : false
Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap

Ответ на картинке.
🤫 Некоторые популярные методы аутентификации

🔵 Базовая аутентификация:
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.

🔵 Аутентификация с помощью токенов:
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.

🔵 Аутентификация OAuth:
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.

🔵 Аутентификация с использованием API-ключей:
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.

💬 Какой метод аутентификации вы считаете наиболее эффективным с точки зрения обеспечения безопасности и удобства использования в ваших приложениях?
Please open Telegram to view this post
VIEW IN TELEGRAM
Shallow-Copy-vs-Deep-Copy-1-2 (1).gif
2.7 MB
💡 Shallow Copy vs Deep Copy

🔹 Поверхностное копирование:
Создается новая переменная, которая ссылается на тот же объект в памяти, что и оригинал. Это означает, что любые изменения в копии будут отражаться и на исходном объекте.
Используется:
▪️ Когда объект содержит только примитивные типы данных.
▪️ Когда две ссылки на один объект запланированы или допустимы.

🔹 Глубокое копирование:
Создается полностью независимый дубликат объекта, включая все вложенные структуры. Это гарантирует, что изменения в копии никак не повлияют на оригинальный объект.
Используется:
▪️ Когда объекты содержат вложенные объекты или массивы.
▪️ Когда вам нужна полная независимость между копиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов

Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:

🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.

Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:

🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?

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

Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.

🔗 Читать статью
🔗 Зеркало