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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Учебные материалы по Spring Web MVC

Друзья, хотим предложить вам подборку материалов по Spring MVC, которая поможет начать изучение или закрепит базовые знания по этому фреймворку.

Приятного обучения!

https://howtodoinjava.com/series/spring-mvc-tutorials/
Collection.removeIf

Метод перебирает коллекцию, и удаляет те элементы, которые соответствуют filter.

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

Раньше, чтобы добавить пару в Map, если её там нет, необходимо было делать следующее (часть 1 на картинке).

С появлением Java 8 всё стало гораздо проще (часть 2 на картинке).
Ключевое слово abstract в Java

abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract:

1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены).
2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract.
#вопросы_с_собеседований
Что такое ServletResponse?

Интерфейс ServletResponse используется для отправки данных клиенту. Все методы данного инструмента служат именно этой цели:
String getCharacterEncoding() - возвращает MIME тип кодировки (к примеру - UTF8), в которой будет выдаваться информация;
void setLocale(Locale locale)/Locale getLocale() - указывают на язык используемый в документе;
ServletOutputStream getOutputStream()/PrintWriter getWriter() - возвращают потоки вывода данных;
void setContentLength(int len) - устанавливает значение поля HTTP заголовка Content-Length;
void setContentType(String type) - устанавливает значение поля HTTP заголовка Content-Type.
void reset() - позволяет сбросить HTTP заголовок к значениям по-умолчанию, если он ещё не был отправлен
• и др.
Тест на знание алгоритмов и структур данных #2

Пришло время узнать, как хорошо вы разбираетесь в алгоритмах и структурах данных. Проверьте свои знания в нашем тесте из 10 вопросов. Сможете набрать максимальный балл?

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
В чем разница между композицией и агрегацией?

Ассоциация
обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».

Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.

Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
#вопросы_с_собеседований
Что такое статическое и динамическое связывание?

Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).

В свою очередь, позднее связывание (late binding) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.

Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).
Java 17: что нового по сравнению с Java 11

Версия Java 17 была выпущена не так уж давно. Отличие этого релиза в том, что это — новая LTS-версия (Long Term Support, с долговременной поддержкой) после Java 11.

https://nuancesprog.ru/p/16355/
🐕🖥️ 16 универсальных идей для пет-проектов вне зависимости от языка

Хотите создать что-нибудь эдакое, но вам не хватает фантазии и вдохновения? Держите 16 идей для разработки собственного проекта от «Библиотеки программиста».

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Для чего нужны функциональные интерфейсы Consumer<T>, DoubleConsumer, IntConsumer и LongConsumer?

Consumer<T> (потребитель) - интерфейс, с помощью которого реализуется функция, которая получает на вход экземпляр класса T, производит с ним некоторое действие и ничего не возвращает.

Consumer<String> hello = (name) -> System.out.println("Hello, " + name);
hello.accept("world");

☕️ DoubleConsumer — потребитель, получающий на вход Double;
☕️ IntConsumer — потребитель, получающий на вход Integer;
☕️ LongConsumer — потребитель, получающий на вход Long.
Метод trimToSize()

Метод trimToSize() класса ArrayList в Java обрезает емкость экземпляра ArrayList до текущего размера списка. Этот метод используется для обрезки экземпляра ArrayList по числу содержащихся в нем элементов.
🎃 В честь Хэллоуина мы устраиваем распродажу на все курсы нашей школы Proglib.academy.

➡️ Скидка 50% действует до 31 октября, выбирай курсы по ссылке: https://proglib.io/w/fb35e277

👉🏻 Алгоритмы и структуры данных
👉🏻 Математика для Data Science
👉🏻 Основы IT для непрограммистов
👉🏻 Основы программирования на Python
👉🏻 Frontend Basic: принцип работы современного веба
#вопросы_с_собеседований
Какие существуют модификаторы доступа?

private (приватный):
члены класса доступны только внутри класса. Для обозначения используется служебное слово private.

default, package-private, package level (доступ на уровне пакета): видимость класса/членов класса только внутри пакета. Является модификатором доступа по умолчанию - специальное обозначение не требуется.

protected (защищённый): члены класса доступны внутри пакета и в наследниках. Для обозначения используется служебное слово protected.

public (публичный): класс/члены класса доступны всем. Для обозначения используется служебное слово public.

Последовательность модификаторов по возрастанию уровня закрытости: public, protected, default, private.

Во время наследования возможно изменения модификаторов доступа в сторону большей видимости (для поддержания соответствия принципу подстановки Барбары Лисков).
"Вы - это будущее Java"! 😃

Так называется доклад на конференции JavaOne (LasVegas) о нескольких программах сообщества Java, которые дают разработчикам право голоса в формировании будущего Java.

Приятного просмотра!
#вопросы_с_собеседований
Чем отличаются и что общего у InputStream, OutputStream, Reader, Writer?

☕️ InputStream и его наследники нужны для получения байтовых данных из разных источников
☕️ OutputStream и его наследники — набор классов, определяющих потоковый байтовый вывод
☕️ Writer и его наследники определяют потоковый вывод символов в юникоде
☕️ Reader и его наследники определяют потоковый ввод символов в юникоде