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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Какие области видимости переменных существуют в JSP?

Область видимости объектов определяется тем контекстом, в который помещается данный объект. В зависимости от той или иной области действия так же определяется время существования объекта.

В JSP предусмотрены следующие области действия переменных (объектов):
request область действия запроса - объект будет доступен на текущей JSP странице, странице пересылки (при использовании jsp:forward) или на включаемой странице (при использовании jsp:include);
session область действия сессии - объект будет помещен в сеанс пользователя, будет доступен на всех JSP страницах и будет существовать пока существует сессия пользователя, или он не будет из нее принудительно удален.
application область действия приложения - объект будет доступен для всех пользователей на всех JSP страницах и будет существовать на протяжении всей работы приложения или пока не будет удален принудительно и контекста приложения.
page область действия страницы - объект будет доступен только на той странице, где он определен. На включаемых (jsp:include) и переадресуемых (jsp:forward) страницах данный объект уже не будет доступен.

Таким образом, чтобы объект был доступен всем JSP страницам, необходимо указать область видимости application или session, в зависимости от того требуется ли доступ к объекту всем пользователям или только текущему.

Для указания требуемой области действия при определении объекта на JSP странице используется атрибут scope тега jsp:useBean:

<id="myBean" class="ru.javacore.MyBean" scope="session"/>

Если не указывать атрибут scope, то по умолчанию задается область видимости страницы page.
🎥 10 лучших каналов YouTube про ИТ для неайтишников

«Гугл в помощь!» – так говорят, когда не знают ответа. Представляем ТОП-10 каналов YouTube про ИТ для обычных людей, на которых действительно можно найти что угодно.

https://proglib.io/sh/JRBwmnheyu
🧩 5 интересных головоломок и задач, чтобы отвлечься от рутины и немного пошевелить извилинами (выпуск 7)

В новой еженедельной подборке мы подготовили 5 новых интересных алгоритмических, логических и математических задачек для отдыха и прокачки мозгов.

https://proglib.io/sh/qiS03LJQWM
Митап от SberDevices для разработчиков

8 декабря в 18:00 подключайтесь к онлайн-митапу от команды SberDevices, чтобы узнать, какое будущее ждет цифровых помощников, как создавать приложения для виртуальных ассистентов Салют и как на этом заработать.

Митап будет полезен Java-разработчикам, которые:

— создают навыки для виртуальных ассистентов и хотят узнать больше о новых направлениях в разработке;
— размещают смартапы на платформе SmartMarket и заинтересованы в развитии технологий и инструментов;
— только знакомятся с платформой и хотят понять, как заработать на своих приложениях;
— интересуется ИИ и развитием голосовых и мультимодальных интерфейсов.

👉🏻 Бесплатно зарегистрироваться на мероприятие можно по ссылке

До встречи на митапе! А пока заходите в приложение Салют и скажите ассистентам Салют: «Давай поболтаем». Две самые современные нейросети покажут вам, что уже сегодня с виртуальными ассистентами можно общаться почти как с живыми людьми 🤯
#вопросы_с_собеседований
Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
Если возникшее исключение - наследник RuntimeException:

☕️ для статических блоков инициализации будет выброшено java.lang.ExceptionInInitializerError;
☕️ для нестатических будет проброшено исключение-источник.

Если возникшее исключение - наследник Error, то в обоих случаях будет выброшено java.lang.Error. Исключение: java.lang.ThreadDeath - смерть потока. В этом случае никакое исключение выброшено не будет.
Метод hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смыле — битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть.

Если хэш коды разные, то и объекты гарантированно разные;
если хэш коды равны, то объекты могут не обязательно равны.
#вопросы_с_собеседований
Почему Map — это не Collection, в то время как List и Set являются Collection?
Collection представляет собой совокупность некоторых элементов. Map - это совокупность пар «ключ-значение».
Сбер показал пример геймификации: ко Дню самозанятых разработали игру «Я в деле». Задача — принимать заказы от клиентов и зарабатывать на любимом занятии. Ну и не забывать следить, чтобы ресурсы персонажа не закончились, иначе игра завершится раньше времени. Попробовать игру можно тут.
#вопросы_с_собеседований
Можно ли определить класс внутри JSP страницы?

Определить класс внутри JSP страницы можно, но это считается плохой практикой:

<%!
private static class ExampleOne {
//...
}
%>

<%
private class ExampleTwo {
//...
}
%>
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований Как вызывать static метод интерфейса?
Используя имя интерфейса:

interface Paper {
static void show() {
System.out.println("static show()");
}
}

class Licence {
public void showPaper() {
Paper.show();
}
}
🖥 Почему я повернул экран на 90° и вы тоже должны это сделать

Почему вы до сих пор не повернули ваш монитор вертикально? Ведь это так удобно и необычно. Или нет? Помогаем сомневающимся и рассказываем тем, кто еще не пробовал сменить ориентацию экрана.

https://proglib.io/sh/yRT5GHO3Uz
Enterprise Java Microservices (2018)
Автор: Ken Finnigan

Большие приложения легче разрабатывать и поддерживать, если вы создаете их из небольших простых компонентов. Разработчики Java теперь могут пользоваться широким набором инструментов, включая фреймворки и четко определённые шаблоны, позволяющие разрабатывать микросервисные приложения. Книга научит вас планировать и создавать проекты, основанные на микросервисной архитектуре. Она рассчитана на Java-разработчиков, знакомых с Java EE.

Скачать книгу
#вопросы_с_собеседований
Опишите процесс сериализации/десериализации с использованием Serializable.
При использовании Serializable применяется алгоритм сериализации, который с помощью рефлексии (Reflection API) выполняет:

✔️ запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор SerialVersionUID, идентификаторы полей класса);
✔️ рекурсивную запись в поток описания суперклассов до класса java.lang.Object (не включительно);
✔️ запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса;
✔️ рекурсивную запись объектов, которые являются полями сериализуемого объекта.

При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками.

Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.