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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
🧑‍💻 Всем привет! На связи «Библиотека программиста»

Мы переезжаем с текущего офиса в центре Москвы с идеальной локацией — рядом метро и все необходимое.

Если у кого-то есть знакомые, которым нужно хорошее пространство на 5 человек, например, взамен коворкингу, то это идеальный вариант.

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

Адрес: https://yandex.ru/maps/-/CCUfFIa2-D

Записаться на просмотр: https://proglib.tech/w/c9e8bf63
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Если посмотреть код внутри созданной JSP страницы, то он будет выглядеть как HTML и не будет похож на java класс. Конвертацией JSP страниц в HTML код занимается контейнер, который так же создает и сервлет для использования в веб приложении.

#вопросы_с_собеседований
Расскажите об этапах (фазах) жизненного цикла JSP.

Жизненный цикл JSP состоит из нескольких фаз, которыми руководит JSP контейнер:
• Translation – проверка и парсинг кода JSP страницы для создания кода сервлета.
• Compilation – компиляция исходного кода сервлета.
• Class Loading – загрузка скомпилированного класса в память.
• Instantiation – внедрение конструктора без параметра загруженного класса для инициализации в памяти.
• Initialization – вызов init() метода объекта JSP класса и инициализация конфигурации сервлета с первоначальными параметрами, которые указаны в дескрипторе развертывания (web.xml). После этой фазы JSP способен обрабатывать запросы клиентов. Обычно эти фазы происходят после первого запроса клиента (т.е. ленивая загрузка), но можно настроить загрузку и инициализацию JSP на старте приложения по аналогии с сервлетами.
• Request Processing – длительный жизненный цикл обработки запросов клиента JSP страницей. Обработка является многопоточной и аналогична сервлетам — для каждого запроса создается новый поток, объекты ServletRequest и ServletResponse, происходит выполнение сервис методов.
• Destroy – последняя фаза жизненного цикла JSP, на которой её класс удаляется из памяти. Обычно это происходит при выключении сервера или выгрузке приложения.
Друзья, Spring Boot 3.0 стал доступен в репозитории Maven! 😃

Spring Boot 3.0 это:
✔️ 12 месяцев работы 151 разработчика
✔️ 5700 коммитов
✔️ Работа в Java 17+
✔️ Работа в пространстве имен Jakarta EE9+ и Jakarta EE 10 API
и многое другое.

Подробности в предложенном релизе.

Читать статью
Рекомендации по миграции на Spring 6

Буквально на днях вышла новая версия Spring Framework, особенностью которой является поддержка Java 17, Hibernate 6.1/Jakarta Persistence 3.1 и др. 😃

Статья от Vlad Mihalcea представляет собой рекомендации по миграции с более ранних версий фреймворка к новой версии.

Хорошей практики!

Читать статью
Какие области видимости переменных существуют в 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.
📜 15 лучших практик SQL после 20 лет программирования

Даже если ваш SQL-код работает правильно, его все равно можно улучшить, в частности в том, что касается производительности и читаемости. В статье перечислены лучшие практики составления SQL-запросов, которым вы должны следовать, чтобы сделать ваш код более легким для чтения и понимания.

🔗 Основной сайт
🔗 Зеркало
Создаем умные типы данных при помощи records и enums

Друзья, предложенную сегодня статью написал Брюс Эккель, автор книги "Философия Java".

Основываясь на функциональном подходе конструирования типов Java, используя "записи" (records) и перечисляемые типы (enums), Брюс научит вас получать объекты с корректными значениями. 🤔

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

Читать статью
#вопросы_с_собеседований
Каким образом из вложенного класса получить доступ к полю внешнего класса?

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

Простой внутренний класс, может обратиться к любому полю внешнего класса напрямую. В случае, если у вложенного класса уже существует поле с таким же литералом, то обращаться к такому полю следует через ссылку на его экземпляр. Например: Outer.this.field.
🧵 Введение в многопоточность в Java. Часть 2. Жизненный цикл потоков, Thread.join() и потоки-демоны

В этой части узнаем, какие состояния проходят потоки в своем жизненном цикле, что такое ожидание потоков и что такое потоки-демоны.

🔗 Основной сайт
🔗 Зеркало
Сборка мусора в неисправных JVM, проактивный подход

Команда Netflix Cloud Data Engineering работает с различными приложениями для JVM, включая такие популярные хранилища данных, как Cassandra и Elasticsearch. Хотя большинство наших кластеров стабильно работают, обходясь выделенной им памятью, иногда «запрос смерти» или ошибка в самом хранилище данных приводят к перерасходу памяти, что может спровоцировать лишние циклы сборки мусора или даже привести к исчерпанию памяти в JVM.

https://habr.com/ru/company/timeweb/blog/700224/
Создаем умные типы данных при помощи records и enums

Друзья, предложенную сегодня статью написал Брюс Эккель, автор книги "Философия Java".

Основываясь на функциональном подходе конструирования типов Java, используя "записи" (records) и перечисляемые типы (enums), Брюс научит вас получать объекты с корректными значениями.
🤔

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

https://blogs.oracle.com/javamagazine/post/java-smarter-types-records-enums
В следующем году состоится релиз Java 20, но мы уже сегодня можем говорить о том, что нового будет в новой версии.

В предложенном сегодня видео рассмотрены:
✔️ Последовательные коллекции
✔️ Фабричные методы для коллекций
✔️ Сопоставление с образцом для оператора Switch
✔️ Паттерны для записей
✔️ Примитивные классы
и др.

Приятного просмотра!