Библиотека джависта | 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
加入频道
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
#дайджест перед выходными

👩‍💻 Spring Boot 3.3: повышение производительности, безопасности и observability — Статья рассказывает о новых возможностях Spring Boot 3.3, включая улучшения производительности, безопасности и наблюдаемости. Обновление включает поддержку Class Data Sharing для быстрого запуска приложений, улучшенные настройки безопасности с JWT, поддержку Docker Compose и многое другое.

👩‍💻 Не используйте Lombok с JPA, пока не прочтете эту статью — Статья объясняет, почему использование библиотеки Lombok вместе с JPA может привести к различным проблемам, таким как некорректное сравнение сущностей, снижение производительности и даже ошибки выполнения. Автор делится конкретными примерами и рекомендациями, как правильно использовать Lombok с JPA, чтобы избежать этих проблем.

👩‍💻 Настройка почтового сервера Yandex spring boot — Статья подробно рассказывает, как настроить отправку электронной почты через Yandex с использованием Spring Boot. Автор описывает весь процесс — от создания пароля приложения до реализации класса для отправки писем.

👩‍💻 И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot — Статья рассматривает способы обработки ошибок в Spring Boot, делая акцент на создании информативных ответов для пользовательских интерфейсов и интеграций. Автор делится своим опытом, подробно описывая различные подходы и инструменты, такие как исключения, аннотации и аспекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋

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

Сталкивались ли вы когда-нибудь с ситуацией, когда пришлось преувеличить свои навыки в резюме? Как вы с этим справились?
Какой, по вашему мнению, самый эффективный способ исправить ситуацию, если вы немного приукрасили свое резюме?
Как вы думаете, какая «ложь» в резюме может быть простительной, а какая — абсолютно недопустимой?

Не стесняйтесь делиться своими историями и мнениями в комментариях! 💬 Ваш опыт может помочь другим избежать подобных ситуаций или найти выход, если они уже в них оказались. Спасибо за участие!
ℹ️ A Guide to CompletableFuture

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

Читать статью.
Please open Telegram to view this post
VIEW IN TELEGRAM
💪🛠️ Прокачай свой бэкенд: 9 инструментов, которые стоит знать

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

Читать статью
#дайджест #javadevjob

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

▪️Java developer
Самара. Тим — системный интегратор полного цикла
Подробнее

▪️Java-разработчик
Москва. Gridnine Systems — IT решения, повышающие эффективность бизнеса наших клиентов
Подробнее

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

▪️Java разработчик
Москва. DIGINETICA — разработка сфере искусственного интеллекта
Подробнее

▪️Backend-разработчик
Екатеринбург. Русофт — разработка, системная интеграция, инфраструктурных решений
Подробнее

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

▪️Java-разработчик
Санкт-Петербург. НПП ТЕЛДА — разработка индивидуальных бизнес-решений
Подробнее

▪️Java Developer
Удаленка. TIQUM — разработка и внедрение ПО
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🖥 10 Java-библиотек, которые изменят ваш код

Эта статья представляет 10 Java-библиотек, которые могут кардинально изменить ваш подход к программированию. Вы узнаете, как такие инструменты, как Lombok, Jackson и Apache Commons, могут существенно упростить ваш код, улучшить его производительность и сделать разработку более эффективной. Если вы хотите узнать, как сделать свой код чище и функциональнее, эта статья станет отличным гидом в мир передовых Java-библиотек​.

Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Что такое ElasticSearch

ElasticSearch — это распределенная поисковая система с открытым исходным кодом, которая позволяет быстро и эффективно обрабатывать и анализировать большие объемы данных. Она идеально подходит для приложений, требующих гибкости в поиске и высокой скорости обработки запросов. Благодаря интеграции с Kibana и Logstash, ElasticSearch становится мощным инструментом для мониторинга и анализа данных в реальном времени.

📌 Use cases:

▪️ Мгновенный поиск по большим объемам данных
▪️ Гибкая схема индексации и поиска
▪️ Легкость в масштабировании и интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
Укажите верный порядок дефолтных портов для программ: Tomcat, PostgreSQL, Redis, Kafka
Anonymous Quiz
5%
5432, 9092, 8080, 6379
9%
8080, 6379, 5432, 9092
3%
9092, 6379, 8080, 5432
82%
8080, 5432, 6379, 9092
2%
6379, 9092, 8080, 5432