Библиотека джависта | 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
加入频道
☕️ 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: Выбрасывается, когда нет возможности создавать новые потоки.
#вопросы_с_собеседований
Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
Привет, меня зовут Артём, я являюсь CEO IT-издания Библиотека программиста, и сейчас ищу редактора. Нам нужен грамотный специалист, не понаслышке знакомый с информационными технологиями.

Предстоит:
— писать, редактировать и оформлять новые публикации на сайте Библиотеки программиста (статьи и тесты-викторины)
— редактировать старые публикации по замечаниям читателей
— взаимодействовать с авторами, разработчиками и другими членами команды
— предлагать темы, формировать контент-план и ТЗ для публикаций
писать и редактировать тексты под рекламные кампании
— реагировать на комментарии читателей

Как мы вас себе представляем:
— владеете терминологией, принятой в сообществе IT-разработчиков
— умеете выполнять задания в сжатые сроки
— готовы постоянно поддерживать контакт, оперативно отвечать на возникающие вопросы
— знакомы с HTML, чтобы корректно править старые публикации
— любите объяснять сложные вещи понятным читателю языком, знакомы с инфостилем
— стремитесь увлечь читателя, но не в ущерб фактам
— готовы ежедневно выпускать не менее 1 материала (своего или авторского)

У нас уже есть:
— аудитория (в том числе 350 тыс. VK, свыше 150 тыс. Telegram)
— база публикаций, тестов, обсуждений
— редакционная политика (не придется писать с нуля)
— инструменты оформления и публикации материалов, в том числе планирования
— метрики анализа популярности материалов
— система push-уведомлений
— несколько регулярно пишущих авторов, контент-менеджеры, занимающиеся публикациями в соцсетях, рекламный отдел, команда разработчиков

Если вы подходите:
— зарплатная вилка от 50 до 70 тысяч рублей в месяц
— будем регулярно оплачивать труд 📅 дважды в месяц
— поможем освоиться в команде и работе с инструментами сайта

Чтобы откликнуться, вы можете прислать портфолио из релевантных публикации на ящик [email protected] или выполнить тестовое задание и прислать результат на тот же email.
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.

Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.

Среди методов открытой реализации различают:

☕️ линейное пробирование;
☕️ квадратичное пробирование;
☕️ двойное хэширование.

Недостатки структур с методом открытой адресации:

☕️ количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
☕️ сложно организовать удаление элемента.
☕️ первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.

Преимущества хэш-таблицы с открытой адресацией:

☕️ отсутствие затрат на создание и хранение объектов списка;
☕️ простота организации сериализации/десериализации объекта.
#вакансия #java #middle #удаленка

Требуется Backend java разработчик (не ниже middle) на постоянную работу.

Основная задача разработка бэкэнда приложений на java с нуля, доработка текущих проектов.

Работа удаленно, с возможными оплачиваемыми командировками в будущем.

На испытательный срок -2000 $
После испытательного - 2500 $
По итогам работы премии.

Требования:
* Хорошее знание Java EE или Spring
* Опыт разработки на Java/Kotlin
* Умение работать с SQL и не-SQL базами данных
* Знание C/C++
* Знание базового английского

Контакт для связи @viksantana