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

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

Для обратной связи: @proglibrary_feeedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Абстрактный класс в Java

Вы пишете код для обслуживания банковских операций и определяете в нем три класса:

🔹 Person, описывает человека;
🔹 Employee, описывает банковского служащего;
🔹 Client, представляет клиента банка.

Классы Employee и Client будут производными от класса Person, так как оба класса имеют общие поля и методы. Поскольку все объекты будут представлять сотрудника или клиента банка, то напрямую мы от класса Person создавать объекты не будем.

Поэтому имеет смысл сделать его абстрактным, как на картинках.

Тем самым мы придерживаемся принципам ООП — наследование и полиморфизм (переопределяем метод display()). Также есть Инкапсуляция благодаря private полям класса Person.

С помощью всего этого, ваш код более гибкий для изменений, более читабельный и поддерживаемый.
This media is not supported in your browser
VIEW IN TELEGRAM
💬 Open Source по-русски: путь к технологической независимости или обочина прогресса?

Для одних организаций open source является ключом к преодолению зависимости от иностранных вендоров и драйвером инноваций, для других — дырой в безопасности и обочиной технологического прогресса.

Мы хотим изучить текущее состояние и возможности открытого ПО в России. Пройдите опрос и помогите нам увидеть ситуацию глазами IT-профессионалов.

👉 Ссылка на опрос 👈

Прохождение займёт примерно 4 минуты
💥🍾 Project Leyden: Capturing Lightning in a Bottle

Project Leyden нацелен на сокращение времени запуска, горячего старта, и занимаемого пространства Java-приложений. Автор углубится в разъяснение, что это все такое, как это могло бы работать, и покажет на пальцах процесс эксплуатации.

Смотреть

#видео
Каково максимальное число значений hashCode()?
Anonymous Quiz
3%
2*8
11%
2*16
56%
2*32
29%
2*64
💪 Что не так с MVP: как создать конкурентоспособный продукт

Традиционная концепция MVP нуждается в пересмотре — авторы предлагают альтернативный подход, основанный на тесном взаимодействии с целевой аудиторией и непрерывных итерациях для создания действительно ценного продукта.

👉 Читать статью
👉 Зеркало
Очередной #дайджест для джависта

🌿 Декомпозиция систем по ограниченным контекстам DDD — глубокое погружение

🌿 Семь принципов хорошей разработки — принципы разработки ПО при создании высококачественных, удобных в сопровождении и эффективных программных систем

🌿 Хакатон: умный помощник для тендеров — пройдет на площадке РЭУ им. Г.В. Плеханова

🌿 Java's Custom Runtime Builder — про мощный инструмент командной строки для создания кастомных сред выполнения Java

🌿 Java в контейнере — особенности эксплуатации
📈 По просьбе подписчиков «Библиотеки программиста» мы провели опрос и выяснили, что у большинства айтишников зарплата в 2023 году выросла.

⚡️ Как выглядит доход среднего айтишника и какие факторы окажут влияние на динамику ИТ-зарплат в 2024 году — расскажем в статье на VC.

👉 Читать

P. S. Свои предложения для исследований пишите в комменты👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Java-программа для преобразования десятичной системы счисления в двоичную

Воспользуемся побитовыми операторами для решения данной задачи.

Временная сложность: O (1)
Вспомогательное пространство: O (1).
Хеш-таблицы в Java: секреты производительности

Посмотрим на проблемы, которые возникают при имплементации хеш-таблицы, когда сложность добавления или удаления из нее не O(1), а линейная, и какие потенциальные атаки можно провести на эту структуру данных (и как их избегают в современных языках программирования на примере Java).

Читать статью

#туториал
Библиотека Apache Commons BeanUtils

Это набор утилит для работы с Java-бинами в проектах на Java. Java-бин — это простой класс Java, который следует определенным соглашениям:

Он имеет поля (атрибуты) для хранения данных.
Он предоставляет методы доступа (геттеры и сеттеры) для чтения и записи значений этих полей.
Обычно он имеет пустой конструктор по умолчанию.

Библиотека BeanUtils упрощает работу с такими классами, избавляя вас от необходимости вручную вызывать методы доступа.
Плавный переход с Java 11 на Java 21: пошаговое руководство для разработчиков

Наше пошаговое руководство поможет вам осуществить плавную миграцию вашего проекта с Java 11 на Java 21, избегая подводных камней и извлекая максимум пользы из новых возможностей.


Читать статью

#гайд
BrokenBarrierException

Это исключение, которое возникает в Java, когда поток пытается ждать на барьере, который находится в сломанном состоянии или когда пытается войти в барьер, который переходит в сломанное состояние во время ожидания.

Как исправить:

👉 Обработайте исключение BrokenBarrierException в коде.
👉 Убедитесь, что все потоки, которые будут ждать на барьере, завершатся до того, как вы его сломаете.
👉 Используйте CyclicBarrier вместо Barrier, если вам нужно сбросить барьер и запустить его снова.
Очередной #дайджест для джавистов

🔅 JEP 467: Markdown Documentation Comments — про Markdown в JavaDoc, перешел в статус Candidate

🔅 Гексагональная Архитектура и Spring Boot — про опыт применения гексагональной архитектуры в микросервисе

🔅 Data Oriented Programming в Java 21, решение задачи обратного отсчета — речь пойдет о новых фичах: Records, Sealed Types, Pattern Matching, Unnamed Patterns и Exhaustive Switches

🔅 Hibernate StatelessSession JDBC Batching — теперь StatelessSession можно использовать для создания INSERT, DELETE и UPDATE батч-запросов

🔅 Оптимизация Java для современного оборудования — непрерывная эволюция Vector API
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🧑‍💻 Путь разработчика: один язык на всю жизнь или постоянное переобучение?

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

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

Опрос займёт у вас примерно 4 минуты.
😎 Покупайте сейчас — учитесь, когда удобно!

До 1 апреля мы снизили цены на все наши курсы, чтобы вы могли сформировать свой карьерный трек и например подготовится и поступить в ШАД.

👀 Советуем обратить внимание на наши самые популярные курсы:
Математика для Data Science
Алгоритмы и структуры данных

🔥 Все цены на сайте уже включают скидку 35%, поэтому не упустите возможность зайти на курс по самой выгодной цене.

📚А если вы не уверенны, подойдет ли вам курс, то вы можете оставить заявку на вводные занятия. И наш менеджер пришлет вам всю необходимую информацию, где вы познакомитесь с преподавателями и форматом обучения — https://proglib.io/w/47905349
Задача с LeetCode (Minimum Path Sum)

Дана двумерная матрица M x N, заполненная неотрицательными числами. Необходимо найти путь из левого верхнего угла в правый нижний, который будет иметь наименьшую сумму чисел на своем пути. Двигаться при этом можно только вниз и вправо.

Для решения воспользуемся динамическим программированием:

⏺️ Первые два цикла for обновляют значения в первой строке и первом столбце, добавляя значения ячеек сверху и слева соответственно.

⏺️ Последний цикл for обновляет остальные значения внутри массива grid, выбирая минимальное значение из верхней и левой ячейки и добавляя его к текущей ячейке.

⏺️ Конечный результат возвращается из последней ячейки массива grid.