Библиотека джависта | 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
加入频道
С технологической точки зрения интеграционное тестирование является количественным развитием модульного, поскольку так же, как и модульное тестирование, оперирует интерфейсами модулей и подсистем и требует создания тестового окружения, включая заглушки на месте отсутствующих модулей. Основная разница между модульным и интеграционным тестированием состоит в целях, то есть в типах обнаруживаемых дефектов, которые, в свою очередь, определяют стратегию выбора входных данных и методов анализа.

Допустим, есть класс, который при определенных условиях взаимодействует с web-сервисом через зависимый объект. И нам надо проверить, что определенный метод зависимого объекта действительно вызывается. Если в качестве зависимого класса передать:
☕️ реальный класс, работающий с web-сервисом, то это будет интеграционное тестирование.
☕️ заглушку, то это будет тестирование состояния.
☕️ шпиона, а в конце теста проверить, что определенный метод зависимого объекта действительно был вызван, то это будет тест взаимодействия.
Бесплатный webinar по docker'у. Обсудим:
- как задизайнить и развернуть в докере систему из БД и java микросервисов
- какие вопросы могут задать по докеру на собеседовании
- как упомянуть docker во время собеседования и получить оффер не отходя от ZOOM 😉

Присоединяйся
SQL, Structured query language («язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД).
☕️ ListIterator расширяет интерфейс Iterator;
☕️ ListIterator может быть использован только для перебора элементов коллекции List;
☕️ Iterator позволяет перебирать элементы только в одном направлении при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();
☕️ ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().
☕️ При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
Если вам нравится делиться знаниями, мы принесли приятную новость – прямо сейчас Geekbrains ищет 30 преподавателей, авторов и ревьюеров:

👨‍🏫 Преподаватель ведет онлайн-занятия по любимым темам и видит, как растут новые кадры.
👨‍🎤 Автор разрабатывает собственную программу и делится знаниями с новичками.
🕵️ Ревьюер дает обратную связь на практические работы студентов и помогает освоить лучшие практики.

Не страшно, если нет опыта в образовательной сфере – компания ищет профессионалов в своей отрасли, а остальному научат. Можно даже совмещать преподавание с работой.

Станьте экспертом в GeekBrains и помогите тысячам людей найти себя в IT 👉 https://proglib.io/w/55057cc5
Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный веб-сервер, быть поставщиком страниц для другого веб-сервера, или интегрироваться в Java EE сервер приложений.

Контейнер сервлетов обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.

Наиболее известные реализации контейнеров сервлетов:

☕️ Apache Tomcat
☕️ Jetty
☕️ JBoss
☕️ WildFly
☕️ GlassFish
☕️ IBM WebSphere
☕️ Oracle Weblogic
Android Programming: The Big Nerd Ranch Guide (2017)
Авторы: Bill Phillips, Chris Stewart, Kristin Marsicano
Количество страниц: 624

Это руководство, основанное на популярных учебных курсах по Android от Big Nerd Ranch, отлично подойдет всем, кто хочет начать писать приложения для мобильных устройств. Работая с книгой, вы можете писать и запускать код на каждом этапе обучения, используя Android Studio для создания приложений. Каждая глава и программа были разработаны и протестированы, чтобы проиллюстрировать конкретные актуальные знания, необходимые любому мобильному разработчику.

Скачать книгу
В этом году для GopherCon команда Ozon Tech подготовила пару часов докладов на самые разные темы: от классических — о микросервисной архитектуре, до по-настоящему гошных.
Итак для всех, кто пропустил онлайн, в нашем плейлисте доклады от разработчиков одной из самых больших Golang-команд России.
Наслаждайтесь!

https://habr.com/ru/company/ozontech/blog/516044/
HTML, HyperText Markup Language («язык гипертекстовой разметки») — стандартизированный язык разметки документов в WWW. На данный момент актуальна 5 версия этого языка - HTML5.
#вопросы_с_собеседований
Почему HttpServlet класс объявлен как абстрактный?
Класс HTTPServlet предоставляет лишь общую реализацию сервлета для HTTP протокола. Реализация ключевых методов doGet() и doPost(), содержащих основную бизнес-логику, перекладывается на разработчика и по умолчанию возвращает HTTP 405 Method Not Implemented error.
ReadWriteLock – это интерфейс расширяющий базовый интерфейс Lock. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор пока не появится записывающий. Блокировка записи является эксклюзивной.

Существует реализующий интерфейс ReadWriteLock класс ReentrantReadWriteLock, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.

ReadWriteLock rwLock = new ReentrantReadWriteLock();
Lock rLock = rwLock.readLock();
Lock wLock = rwLock.writeLock();

wLock.lock();
try {
// exclusive write
} finally {
wLock.unlock();
}

rLock.lock();
try {
// shared reading
} finally {
rLock.unlock();
}
OutOfMemoryError выбрасывается, когда виртуальная машина Java не может создать (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить достаточное её количество.

Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:

☕️ java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
☕️ java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
☕️ java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
☕️ java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.