Software development
16
подписчиков
Канал посвящен программированию на Java. Технологиям Spring.
Проблема с N+1 запросами в JPA и Hibernate
Проблема N + 1 возникает, когда фреймворк доступа к данным выполняет N дополнительных SQL-запросов для получения тех же данных, которые можно получить при выполнении одного SQL-запроса. Подробнее о каждом варианте будет чуть позже, ссылки приложу...
Java. Многопоточность №2. ExecutorService.
ExecutorService – это интерфейс Java, который предоставляет удобный способ управления потоками исполнения. Он позволяет создавать пул потоков исполнения и выполнять задачи в этих потоках. Java. Multithreading #2...
Java. Многопоточность №1. Создание потоков.
Способ №1 Способ №2 Способ №3 Ссылка на проект: Java. Multithreading #1. Creating streams
Оснновные характеристики Java Collections
ArrayList Поддерживает динамические массивы.
По мере добавления элементов в список, емкость внутреннего массива автоматически увеличивается. LinkedList Использует для хранения двусвязный список.
Поэтому Итератор поддерживает обход в обе стороны. Помимо интерфейса List реализует интерфейсы Dequeue и Queue.
Соединяет функциональность работы со списком и функциональность очереди. Используется когда необходимо часто добавлять или удалять элементы, особенно в начало списка. Либо когда нужна вставка элемента в конец за гарантированное время...
Теорема CAP
Модель памяти Java. Happens before.
«Выполняется прежде» (англ. happens before) — отношение строгого частичного порядка (антирефлексивное, антисимметричное, транзитивное), введённое между атомарными командами (++ и -- не атомарны), придуманное Лесли Лэмпортом и не означающее «физически прежде»...
Распространение и изоляция транзакций Spring Data JPA
Распространение транзакций Распространение определяет границу транзакции нашей бизнес-логики. Spring удается запустить и приостановить транзакцию в соответствии с нашими настройками распространения . Spring вызывает TransactionManager::getTransaction , чтобы получить или создать транзакцию в соответствии с распространением. Он поддерживает некоторые варианты распространения для всех типов TransactionManager , но некоторые из них поддерживаются только определенными реализациями TransactionManager ...
Принцип ACID
Atomicity (атомарность) Атомарность гарантирует, что каждый запрос в транзакции будет выполнен успешно, либо вообще никакой, в случае ошибки одного. Не получится так, что часть запросов выполнятся успешно, а часть с ошибкой. Если хоть одна часть транзакции выполнится с ошибкой, вся транзакция не выполнится. Другими словами под атомарностью можно понимать «всё или ничего». Consistency (консистентность, согласованность) Это свойство даёт гарантию того, что все данные будут целостны. Данные будут корректны...
Принципы SOLID, о которых должен знать каждый разработчик
Вот как расшифровывается акроним SOLID: Рассмотри подробнее каждый из принципов. Single Responsibility Principle (Принцип единственной ответственности) Класс должен быть ответственен лишь за что-то одно. Если класс отвечает за решение нескольких задач, его подсистемы, реализующие решение этих задач, оказываются связанными друг с другом. Изменения в одной такой подсистеме ведут к изменениям в другой. Пример: class Animal {
public Animal(String name){ }
public String getAnimalName() { }
...
Иерархия коллекция Java (Java collection framwork)
Рассмотрим основные более подробно. На вершине иерархии в Java Collection Framework располагаются 2 интерфейса: Collection и Map. Эти интерфейсы разделяют все коллекции, входящие во фреймворк на две части по типу хранения данных: простые последовательные наборы элементов и наборы пар «ключ — значение» (словари). При чём Collection Наследуется от интерфейса Iterable. Iterable представляет собой простое представление ряда однородных элементов, которые могут повторяться определенное количество раз...
Настройка mapstruct в SpringBoot
Mapstruct — это библиотека для Java, которая генерирует код для передачи данных между разными сущностями в программе. Она помогает сопоставлять объекты из одной сущности с другой. Этот процесс называется маппингом данных, а инструмент для передачи — маппером, или Java mapper...
Factory (фабрика)
Паттерн Factory (фабрика) в Java - это способ создания объектов, который позволяет определить интерфейс для создания объектов и предоставить реализацию для этого интерфейса. Относится к категории пораждающих. Пример использования паттерна Factory в Java: public interface CarFactory {
public Car createCar();
} public class HondaCarFactory implements CarFactory {
@Override
public HondaCar createCar() {
return new HondaCar();
}
}
public class ToyotaCarFactory implements CarFactory{
@Override
public ToyotaCar createCar(){
return new ToyotaCar();
}
}...