Реализация стека с помощью интерфейса Deque
Deque<Integer> stack = new LinkedList<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.pop()); // 3
System.out.println(stack.pop()); // 2
System.out.println(stack.pop()); // 1
Deque (Double-ended queue) представляет собой интерфейс, который расширяет функциональность обычной очереди (Queue). Он позволяет добавлять и удалять элементы как в начале, так и в конце очереди. Deque является частью Java Collections Framework и введен в Java 6.
...
Читать дальшеПринцип программирования YAGNI — «Вам это не понадобится»
Cледование данному принципу заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться. Это позволяет вести разработку, руководствуясь экономическими критериями: Заказчик не должен оплачивать ненужные ему функции, а разработчики не должны тратить своё оплачиваемое время на реализацию того, что не требуется.
Основная проблема, которую решает принцип YAGNI — это устранение тяги программистов к излишней абстракции, к экспериментам «из интереса» и к реализации функционала, который сейчас не нужен, но, по мнению разработчика, может вскоре понадобиться или просто будет полезен, хотя в реальности такого часто не происходит.
...
Читать дальшеJDBC, Java DataBase Connectivity
JDBC, Java DataBase Connectivity (соединение с базами данных на Java) — промышленный стандарт взаимодействия Java-приложений с различными СУБД. Реализован в виде пакета java.sql, входящего в состав Java SE.
JDBC основан на концепции драйверов, которые позволяют получать соединение с базой данных по специально описанному URL. При загрузке драйвер регистрирует себя в системе и в дальнейшем автоматически вызывается, когда программа требует URL, содержащий протокол, за который этот драйвер отвечает.
Преимущества JDBC:
...
Читать дальшеLaunch4j
Launch4j — это кроссплатформенный инструмент для упаковки Java-приложений, распространяемых в виде jar-файлов, в облегченные собственные исполняемые файлы Windows, Linux и Mac OS X. Исполняемый файл можно настроить для поиска определенной версии JRE или использования встроенной версии, а также можно установить параметры времени выполнения, такие как начальный/максимальный размер кучи.
Некоторые особенности:
...
Читать дальшеSpring. Query Methods
Spring Framework предоставляет множество способов взаимодействия с базой данных, и одним из основных инструментов для этого являются Query Methods. Query Methods предоставляют простой способ создания запросов к базе данных на основе именованных методов в интерфейсах репозиториев.
Пример репозитория, если у нас есть сущность User с полями username и email:
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByUsername(String username);
List<User> findByUsernameAndEmail(String username, String email);
}
...
Читать дальшеМетод Arrays.fill() для инициализации массива
Класс java.util.Arrays имеет несколько методов с именем fill(), которые принимают разные типы аргументов и заполняют весь массив одним и тем же значением:
long array[] = new long[5];
Arrays.fill(array, 30);
У метода также есть несколько альтернатив, которые устанавливают диапазон массива в определенное значение:
int array[] = new int[5];
Arrays.fill(array, 0, 3, -50);
Обратите внимание, что метод принимает массив, индекс первого элемента, индекс последнего элемента (не включительно) и значение.
Читать дальшеЧто такое «конструктор по умолчанию»?
Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов - так называемый «конструктор по умолчанию».
public ClassName() {}
Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
Читать дальшеПочему строка является популярным ключом в HashMap в Java?
Поскольку строки неизменяемы, их хэш код вычисляется и кэшируется в момент создания, не требуя повторного пересчета при дальнейшем использовании. Поэтому в качестве ключа HashMap они будут обрабатываться быстрее.
Читать дальшеПочему char[] предпочтительнее String для хранения пароля?
С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
Читать дальшеМетод containsAll()
List<String> list = List.of("Jack", "Bill", "Dave");
List<String> subList = List.of("Dave", "Bill");
System.out.println(list.containsAll(subList)); // true
Метод containsAll() интерфейса Collection проверяет входят ли в коллекцию все элементы переданной в параметре коллекции.
...
Читать дальше