Библиотека джависта | 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
加入频道
Мы хотим провести большой розыгрыш и подарить победителю смартфон на выбор. Помимо iPhone, предлагаем вам выбрать, какой ещё смартфон вы бы хотели видеть среди призов. Какой смартфон вам по душе:
Anonymous Poll
9%
OnePlus Open 5G
2%
OPPO Find N3
57%
Samsung Galaxy S24 Ultra на 1ТБ
25%
Xiaomi 14 Ultra 512 ГБ
3%
Vivo X100 Ultra
4%
Свой вариант (напишу в комментариях)
🕯 Паттерн Decorator (Декоратор)

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

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

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

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

1️⃣ Паттерн позволяет гибко расширять поведение объектов на лету, не изменяя исходный код класса.
2️⃣ Устраняет необходимость создавать громоздкие подклассы с множеством вариаций, что уменьшает сложность системы.
3️⃣ Позволяет комбинировать несколько декораторов, чтобы получить более сложные поведения, сохраняя при этом структуру системы простой и модульной.
4️⃣ Реализует принцип единственной ответственности: каждая новая функциональность инкапсулируется в отдельный класс-декоратор.

Недостатки:

1️⃣ Усложнение отладки программы, так как наличие множества обёрток может затруднять понимание того, где и как обрабатываются запросы.
2️⃣ Создание большого числа мелких объектов-декораторов, что может увеличить потребление памяти и усложнить структуру системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
#дайджест #javadevjob

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

▪️Младший разработчик
Санкт-Петербург. Бизнес Технологии — разработкa и внедрение информационных систем для автоматизации бизнес-процессов
Подробнее

▪️Младший разработчик
Удаленка. Doczilla — разработчик продуктов в сфере LegalTech
Подробнее

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

▪️Java Разработчик
Воронеж. VISTAR — разработчик ПО
Подробнее

▪️Java Backend Developer
Екатеринбург. ФИТВЕНД — размещении и обслуживании вендинговых шейковых аппаратов
Подробнее

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

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

▪️Back-end разработчик
Москва. Центр Информатизации и Консалтинга — управление и консалтинг
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🤫 В чем разница между StringBuilder и StringBuffer?

StringBuilder и StringBuffer — классы для работы с изменяемыми строками в Java. Оба они позволяют изменять строку без создания новой строки на каждый шаг, что делает их эффективнее, чем String в некоторых ситуациях. Но есть важные отличия:

🔹 StringBuffer — синхронизированный, а значит потокобезопасный. Если несколько потоков работают с одной строкой, лучше использовать именно его. Минус — синхронизация делает его немного медленнее.
🔹 StringBuilder — не синхронизирован, поэтому быстрее при работе в одном потоке. Для многопоточных задач его использование может привести к проблемам.

🤔 Когда использовать?

StringBuilder — если задача однопоточная и важна скорость.
StringBuffer — если работа идет в многопоточном окружении.

💡 Совет: Если не требуется потокобезопасность, всегда выбирайте StringBuilder, чтобы сэкономить ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋

Готовим статью «Лучшие шрифты для программирования» и хотим узнать ваше мнение! 🖥️
Поделитесь своим опытом: какой шрифт, на ваш взгляд, самый удобный для долгих сессий кодинга и почему? 💻🕰️

Ждем ваши ответы в комментариях! Самые интересные и полезные советы войдут в нашу статью. 📝💡
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

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

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

Ждем ваших откликов 👾
🎁 256-й день года: 15 подарков, которые оценит каждый программист

Мы собрали 15 идей подарков — от практичных гаджетов до инструментов для профессионального роста. Эти подарки не только упростят рабочий процесс, но и вдохновят на новые достижения. Независимо от того, junior вы или senior, в нашем списке каждый найдёт что-то для себя.

👉 Смотреть список
🙌 Хардкорный вышмат для тех, кто интересуется ML, AI, DS

Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/3e093096

Что будет на демо?

🔹Вводный урок от CPO курса;

🔹Лекции со всеми преподавателями МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск;

🔹Практические задания и дополнительные материалы!

⚡️Переходите и активируйте – https://proglib.io/w/3e093096
Please open Telegram to view this post
VIEW IN TELEGRAM
🔼 Оптимизация обработки JSON с помощью JsonPath

JsonPath — это библиотека, которая позволяет извлекать данные из JSON-структур по пути, подобно тому, как это делает XPath для XML. В отличие от традиционного парсинга JSON в Java-объекты через такие библиотеки, как Jackson или Gson, JsonPath позволяет выбирать только те фрагменты данных, которые действительно нужны. Это экономит как время, так и память, что особенно важно при работе с большими JSON-документами.

Пример использования:

Допустим, у нас есть большой JSON, который представляет данные о магазине, и нужно вытащить категорию первой книги из списка:

{
"store": {
"book": [
{ "category": "fiction", "title": "The Great Gatsby" },
{ "category": "science", "title": "The Origin of Species" }
]
}
}


Вместо того, чтобы парсить весь JSON в объект, можно использовать JsonPath для выборки нужного значения:

String json = "{ \"store\": { \"book\": [ { \"category\": \"fiction\" }, { \"category\": \"science\" } ] } }";
String category = JsonPath.read(json, "$.store.book[0].category");
System.out.println(category); // Output: fiction


Обычно при парсинге JSON целиком, программа должна создать дерево объектов для всей структуры данных, даже если нужен лишь небольшой её фрагмент. JsonPath позволяет напрямую обратиться к интересующему полю, минуя необходимость обрабатывать весь JSON-объект.

✔️ Плюсы:

▪️ Эффективность: Можно выбирать только нужные данные.
▪️ Гибкость: поддерживает мощные выражения для фильтрации и выборки данных (например, выбор элементов по условию).
▪️ Лаконичность: Вместо написания громоздкого кода для обхода JSON-структуры использунтся один понятный запрос.
▪️ Простота интеграции: Легко интегрируется с такими библиотеками, как Jackson, Gson и другими популярными парсерами.

Минусы:

▪️ Меньшая безопасность типов: В отличие от полной десериализации JSON в строгие Java-объекты, данные получаются в виде строк, что может привести к ошибкам при обработке типов.
▪️ Отсутствие контроля над схемой: Если схема JSON изменится, запросы могут стать неактуальными, и ошибки появятся не сразу, так как нет строгой валидации типов на уровне компиляции.
▪️ Меньше гибкости при сложной логике: Когда нужно не просто вытащить данные, а, например, выполнить дополнительные преобразования или логику на основе полей JSON, десериализация в объекты может быть более подходящей.
Please open Telegram to view this post
VIEW IN TELEGRAM