Библиотека джависта | 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
加入频道
🤔 Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам

🗓 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 для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться.

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

🔗 Читать статью
🔗 Зеркало
Свежий #дайджест по Java

👩‍💻 Запускаем таски по расписанию — статья рассказывает о том, как команда Яндекс Телемоста решила проблему с запуском тасков с высокой частотой, обеспечивая отказоустойчивость и эффективность системы.

👩‍💻 Почему стоит перейти с JUnit4 на JUnit5 — статья на Хабре раскрывает, почему команда разработчиков из Сбера решила перейти с JUnit4 на JUnit5, детализируя ключевые улучшения, такие как модульная архитектура и новые аннотации, которые значительно упрощают и ускоряют процесс тестирования.

👩‍💻 Простые коммуникации в Java-приложении — статья описывает, как разработать простую систему коммуникации в Java-приложении, используя платформу Jmix, чтобы упростить взаимодействие между пользователями, включая создание интерактивных веб-приложений без глубокого знания фронтенда.

👩‍💻 Создание микросервисов на Java с Dropwizard — статья объясняет, как создавать микросервисы на Java с помощью фреймворка Dropwizard, включая настройку, реализацию CRUD-операций и тестирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
1715316072490 (1).gif
260.5 KB
Что такое ACID?

🔹 Атомарность (Atomicity)
Гарантирует, что транзакция не будет зафиксирована частично. Все записи в транзакции выполняются одновременно и не могут быть разбиты на меньшие части. Если при выполнении транзакции возникают ошибки, все записи откатываются.

🔹 Согласованность (Consistency)
Любые данные, записанные в ходе транзакции, должны быть валидны в соответствии со всеми определёнными правилами и поддерживать базу данных в корректном состоянии.

🔹 Изоляция (Isolation)
Параллельные транзакции не должны оказывать влияния друг на друга. Изолированность сложно достижима, поэтому существуют различные уровни изоляции.

🔹 Надежность (Durability)
Данные сохраняются после завершения транзакции, даже в случае сбоя системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?

Ответ: Not equal. Переменная real не равна самой себе. Арифметика с плавающей запятой реализована в соответствии со стандартом IEEE 754, который требует возвращения специального значения «NaN» (от английского «Not a Number» — не число), когда ноль делится на ноль. В спецификации также указано, что NaN не равно никакому значению с плавающей запятой, включая само себя.
🗑 Понимание различных сборщиков мусора в Java:

🔵 Serial Garbage Collector: Лучший вариант для однопоточных приложений с небольшими кучами. Он использует один поток для выполнения как малых, так и больших сборок мусора, что приводит к значительным паузам, но минимальной нагрузке на систему.

🔵 Parallel Garbage Collector: Подходит для приложений с высокими требованиями к пропускной способности. Использует несколько потоков для выполнения как малых, так и больших сборок мусора, уменьшая время пауз, но при этом увеличивая использование CPU.

🔵 Concurrent Mark-Sweep (CMS) Garbage Collector: Разработан для минимизации пауз за счёт выполнения основной части работы по сборке мусора параллельно с выполнением приложений. Подходит для приложений, где критически важна низкая задержка.

🔵 G1 Garbage Collector: Сбалансированный сборщик мусора, который стремится обеспечить предсказуемое время пауз, разделяя кучу на регионы и выполняя сборку мусора поэтапно. Является хорошим выбором по умолчанию для большинства приложений.

🔵 Z Garbage Collector и Shenandoah: Сборщики мусора с ультранизкой задержкой, разработанные для работы с большими кучами. Основная часть работы по сборке мусора выполняется параллельно, что позволяет минимизировать время пауз даже при очень больших кучах.
Please open Telegram to view this post
VIEW IN TELEGRAM