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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Реализация LinkedHashMap отличается от HashMap поддержкой двухсвязного списка, определяющего порядок итерации по элементам структуры данных. По умолчанию элементы списка упорядочены согласно их порядку добавления в LinkedHashMap (insertion-order). Однако порядок итерации можно изменить, установив параметр конструктора accessOrder в значение true. В этом случае доступ осуществляется по порядку последнего обращения к элементу (access-order). Это означает, что при вызове методов get() или put() элемент, к которому обращаемся, перемещается в конец списка.

При добавлении элемента, который уже присутствует в LinkedHashMap (т.е. с одинаковым ключом), порядок итерации по элементам не изменяется.
#вопросы_с_собеседований
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
Научись программировать на самом востребованном языке в сфере IT и стань Java-разработчиком.

Чем интересна именно эта профессия? Повторимся, что Java — самый востребованный язык, работать с ним несложно и интересно, заработок немаленький, и еще один большой плюс — можно работать удаленно из любой точки мира. Круто, да?

📌 Тогда забирай курс «Профессия Java-разработчик» со скидкой до 60% в этом месяце!
📌 Все подробности по ссылке: https://clc.to/3_4U1Q

Что тебя ждет:
✔️ интересная и продуманная программа курса;
✔️ решение бизнес-задач компании;
✔️ много часов практики;
✔️ доступ к этому курсу на веки-вечные (ну а вдруг ты что-то забудешь);

И самое главное, после обучения Skillbox гарантирует трудоустройство в IT-компанию!
ArrayList:
✔️Доступ к произвольному элементу по индексу за константное время O(1);
✔️Доступ к элементам по значению за линейное время O(N);
✔️Вставка в конец в среднем производится за константное время O(1);
✔️Удаление произвольного элемента из списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
✔️Вставка элемента в произвольное место списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
✔️Минимум накладных расходов при хранении.

LinkedList:
✔️На получение элемента по индексу или значению потребуется линейное время O(N);
✔️На добавление и удаление в начало или конец списка потребуется константное O(1);
✔️Вставка или удаление в/из произвольного места за константное O(N);
✔️Требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся ещё указатели на следующий и предыдущий элементы списка.

В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
#вопросы_с_собеседований
Как закрыть соединение с базой данных? (JDBC)
Соединение с базой данной закрывается вызовом метода close() у соответствующего объекта java.sql.Connection или посредством использования механизма try-with-resources при создании такого объекта, появившегося в Java 7.

NB! Предварительно необходимо закрыть все запросы созданные этим соединением.
#вопросы_с_собеседований
Какие конечные методы работы со стримами вы знаете?
Java MeetUp в Иннополисе
Бесплатный онлайн-митап от Иннополиса по Java 17 декабря.

Обсудим:
— распространенные уязвимостях в ПО и о стратегии его защиты
— основные ошибки при написании тестов в приложении и рекомендации по их недопущению
— production-системы на стыке Java-технологий и высшей математики, успешно работающие на глобальных финансовых рынках.

Наши спикеры:
🎙Дмитрий Янтер, аналитик, Deutsche Bank Technology Centre
📢Никита Куртин, Director of Research and Development, CubedMobile
🎤Александр Линьков, Tech Lead, Leroy Merlin

Эксперты митапа:
📣Дмитрий Чуйко, Senior Performance Architect, BellSoft
🔈Андрей Когунь, руководитель группы Java-разработчиков, КРОК

Когда: 17 декабря в 18:00
Регистрация и подробности докладов
Чат митапа
findFirst() возвращает первый элемент;
findAny() возвращает любой подходящий элемент;
collect() представление результатов в виде коллекций и других структур данных;
count() возвращает количество элементов;
anyMatch() возвращает true, если условие выполняется хотя бы для одного элемента;
noneMatch() возвращает true, если условие не выполняется ни для одного элемента;
allMatch() возвращает true, если условие выполняется для всех элементов;
min() возвращает минимальный элемент, используя в качестве условия Comparator;
max() возвращает максимальный элемент, используя в качестве условия Comparator;
forEach() применяет функцию к каждому объекту (порядок при параллельном выполнении не гарантируется);
forEachOrdered() применяет функцию к каждому объекту с сохранением порядка элементов;
toArray() возвращает массив значений;
reduce()позволяет выполнять агрегатные функции и возвращать один результат.
Для числовых стримов дополнительно доступны:

sum() возвращает сумму всех чисел;
average() возвращает среднее арифметическое всех чисел.
Курс для middle- и senior-разработчиков, которые хотят стать тимлидами

Новичком быть просто: все новое и интересное, море информации, но как быть уже прокаченным девелоперам? Мы тоже задавали себе этот вопрос и просто точечно обучали наших разработчиков, делая их мощными тимлидами.
В нашем понимании тимлид — это не просто крутой программист, но и тот, кто умеет аккумулировать свои знания, обучать команду и выстраивать работу в ней, понимает продукт и работает от бизнес-целей. Тут важны и hard, и soft skills, и эмоциональный интеллект. Поэтому мы собрали весь свой 14-летний опыт работы над сложными сервисами и высоконагруженными сайтами и создали 6-ти месячный курс именно тех, кто хочет вырасти и систематизировать свои знания. Договорились с Geekbrains, и теперь именно там можно пройти обучение. Второй поток стартует уже совсем скоро — 24 декабря, а тут должен быть призыв к действию, поэтому просто записывайтесь на курс: https://proglib.io/w/9236cebf

На связи была команда AGIMA!
#вопросы_с_собеседований
Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
2020 бросил вызов каждому человеку, бизнесу, государству. Впереди 2021 год и новые изменения. Как отбросить страх перед глобальными вызовами? Получить новый импульс? QIWI и Магнит объединились, чтобы напомнить о важной роли технологий в трансформации каждого из нас, а также в развитии бизнеса и общества.

17 декабря в 16:00 состоится бесплатный онлайн митап #MGNTQIWI «Новый мир: как технологии влияют на человека и общество» с участием Евгения Кузнецова – футуролога, руководителя московского отделения Университета Сингулярности, генерального директора ООО «Орбита Капитал Партнерз». Евгений расскажет, как оставаться на гребне цифровой волны, не отставать от трендов и справляться с вызовами технологической эпохи.

Регистрируйтесь по ссылке https://mgntqiwi.ru и присоединяйтесь к бесплатной лекции и Q&A сессии 17 декабря в 16:00.
ИЗМЕНЕНИЯ – вот о чем пойдет речь в рамках митапа. Трансформируется все, а значит, нужно и нам.
Давайте меняться вместе!
import java.util.ArrayList;
import java.util.List;

public class Main
{
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

for (Integer integer : list) {
list.remove(1);
}
}
}
Сервлет является интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.

Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах javax.servlet и javax.servlet.http.

Основные методы сервлета:
☕️ public void init(ServletConfig config) throws ServletException запускается сразу после загрузки сервлета в память;
☕️ public ServletConfig getServletConfig() возвращает ссылку на объект, который предоставляет доступ к информации о конфигурации сервлета;
☕️ public String getServletInfo() возвращает строку, содержащую информацию о сервлете, например: автор и версия сервлета;
☕️ public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException вызывается для обработки каждого запроса;
☕️ public void destroy() выполняется перед выгрузкой сервлета из памяти.
#вопросы_с_собеседований
В каком случае требуется переопределять метод service()?
Метод service() переопределяется, когда необходимо, чтобы сервлет обрабатывал все запросы (и GET, и POST) в одном методе.

Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода service(), который в зависимости от поступившего запроса вызывает или метод doGet() или метод doPost().
Object-Oriented Data Structures Using Java (2020)
Авторы: Nell Dale, Daniel T. Joyce, Chip Weems
Количество страниц: 694

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

Скачать книгу
#вопросы_с_собеседований
Что такое «абсолютный путь» и «относительный путь»?
Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.

Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.