Blog Posts

Jasypt: шифрование конфигурационных файлов spring-boot

В современном мире редко можно встретить приложение, которое не использует в своей работе внешние источники данных, будь то база данных или какой-нибудь сервис. Как правило, подобные внешние источники всегда защищены и требуют, как минимум, базовой аутентификации в виде логина и пароля. Принято логин и пароль хранить в properties файле приложения, но, если вы выложите подобный файл в общее хранилище (на гитхаб, к примеру), его все увидят. Поэтому многие разработчики идут другим путем и подставляют значения логина и пароля в файл

Читать далее

Многопоточность. Класс CyclicBarrier

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

Читать далее

Многопоточность. Класс CountDownLatch

Иногда возникают ситуации, когда поток необходимо приостановить до наступления какого-то события (или событий). Для этих целей в Java предусмотрен класс CountDownLatch (представлен в Java 1.5). Объект класса CountDownLatch создается со счетчиком событий, который уменьшается по мере возникновения событий, как только счетчик будет равен 0, блокировка потока будет снята. Во время ожидания снятия блокировки может возникнуть исключения вида InterruptedException, поэтому вызов метода ожидания должен быть обернут в блок try/catch или в самом методе должно быть объявлено, что в нем может возникнуть

Читать далее

Java 8 DateTime API и JPA

JPA

Интеграция Java 8 DateTime API и JPA может стать достаточно нетривиальной задачей для неподготовленного разработчика. Как известно JPA вплоть до версии 2.1 (включительно) не поддерживает новый API для работы с датой и временем, который был представлен в Java 8. Это досадное ограничение можно с легкостью обойти с использованием конвертера атрибутов, не все разработчики знают об этом очень простом и крайне эффективном инструменте. Для создания своего конвертера атрибутов достаточно реализовать интерфейс AttributeConverter и переопределить два метода convertToDatabaseColumn и convertToEntityAttribute. Рассмотрим небольшой

Читать далее

Горячие клавиши Netbeans

Горячие клавиши Netbeans

Большинство программистов пользуются интегрированными средами разработки, не используя и 10% их возможностей. К примеру, мало кто использует в своей работе горячие клавиши Горячие клавиши Netbeans значительно сокращают время разработки. Помимо горячих клавиш, в NetBeans представлены шаблоны кода. Для применения шаблона достаточно набрать аббревиатуру кода, например Ex, нажать клавишу Tab и NetBeans вставит Exception. Для того, чтобы приучить себя использовать шаблоны кода или горячие клавиши, достаточно просто начать их использовать, как бы банально это не звучало. Возьмите одно сочетание клавиш и один

Читать далее

Паттерн Фасад

Паттерн Фасад

Паттерн Фасад — структурный шаблон проектирования, позволяющий скрыть сложность системы путем сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Несмотря на мудреное определение, наверное, самый простой шаблон проектирования и очень скоро вы в этом сами сможете убедиться. Реализация: давайте попробуем разработать навигационную систему автомобиля. Перед поездкой водитель будет включать GPS, загружать данные о пробках, прокладывать путь и выключать после поездки. За каждое описанное действие будет отвечать отдельный класс, кроме включения и выключения. И так, класс

Читать далее

try с ресурсами

try с ресурсами

Одним из основных нововведений, которые были включены в Java 7, стало введение нового оператора «try c ресурсами». «try c ресурсами» это оператор try, в котором объявляются один или несколько ресурсов. Ресурс — это объект, который должен быть закрыт после того, как программа закончит с ним работу. «try c ресурсами» берет всю работу по закрытию ресурсов на себя. Прежде, чем подробно его рассмотреть давайте разберемся в причинах, которые вызвали его появление. Закрытие ресурсов до Java 7. Предположим нам нужно написать метод,

Читать далее

Паттерн Адаптер

Паттерн Адаптер

Паттерн Адаптер – структурный шаблон проектирования, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс. Паттерн адаптер предусматривает создание класса-оболочки с требуемым интерфейсом. Является, наверное, одним из самых часто употребляемых шаблонов проектирования, который можно встретить практически в любой программе, причем применяется программистами зачастую неосознанно и позволяет эффективно устранять проблему дублирования кода в определенных ситуациях. Одну из таких ситуаций мы рассмотрим далее. Реализация: предположим, что мы работаем на заводе по производству машин в Германии и у нас

Читать далее

Функциональные интерфейсы в Java 8

Функциональные интерфейсы в Java 8

Функциональные интерфейсы в Java 8 – это интерфейсы, которые содержат в себе только один абстрактный метод. Функциональные интерфейсы имеют тесную связь с лямбда выражениями и служат как основа для применения лямбда выражений в функциональном программировании на Java. Хотелось бы напомнить один нюанс — до появления Java 8 все методы в интерфейсе неявно считались абстрактными. С выходом JDK 8 появилось такое понятие как метод по умолчанию. Метод по умолчанию – это метод объявленный в интерфейсы, поведение которого предопределено, иначе говоря, метод

Читать далее

Site Footer