Библиотека джависта | 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
加入频道
Java Fundamentals (2019)
Авторы: Gazihan Alankus, Rogerio Theodoro de Brito, Basheer Ahamed Fazal, Vinicius Isola, Miles Obare
Количество страниц: 408

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

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

Уходящий год был непростым, и это не дежурная фраза. Кто-то перенес болезнь легко, другим повезло меньше – 2020-й оказался богатым на печальные новости. Пандемия ввела экономику в ступор, но из-за локдаунов и перевода сотрудников на удаленку цифровые технологии востребованы как никогда. Развиваются интернет-торговля и облачные вычисления, бьет рекорды аудитория стриминговых сервисов… всего не перечислишь.

Потребность в кадрах растет, потому есть работа и для нас. В 2020 году «Библиотека программиста» опубликовала 386 статей, 445 мероприятий и 198 вакансий. По данным Яндекс.Метрики, на сайте побывало почти 4 миллиона читателей – мы довольны таким результатом.

Коллектив издания поздравляет читателей с Новым годом! Желаем вам здоровья, благополучия и успехов в освоении профессии. Чтобы вы не скучали на каникулах, с 5 января мы запускаем математический онлайн-марафон.

Удачи и оставайтесь с нами!
Тест: насколько хорошо вы помните школьную математику?

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

https://proglib.io/tests/test-na-matematicheskuyu-intuiciyu
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «У рыбака есть удочка, у программиста — алгоритмы, у дата сайентиста — математика. Но не всем математика книг и курсов по Data Science даётся легко, приходится вспоминать школьные азы: логарифмы, прогрессии, тригонометрию. Есть мнение, что всё машинное обучение…»
Хотите начать путь в анализе данных, давно в школе изучали математику, и все забыли?

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

Подробности тут: https://proglib.io/w/d8af9b2c
Специально для подписчиков промокод JAVAPROGLIB на 10% до 05.01 18:00
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Хотите начать путь в анализе данных, давно в школе изучали математику, и все забыли? Мы запускаем марафон по школьной математике, который поможет наверстать упущенное. В режиме реального времени вы сможете послушать клевых спикеров, порешать задачки, задавать…»
📌 Последовательности и прогрессии

Первое занятие нашего интенсива по математике доступно онлайн! Мы рассмотрели основные понятия о последовательностях и прогрессиях и разобрали несколько ключевых примеров.

https://youtu.be/OjQ75pKKhIw

Пройти весь курс: https://proglib.io/w/96ebe487
Научись программировать на самом востребованном языке в сфере IT и стань Java-разработчиком.

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

📌 Тогда забирай курс «Профессия Java-разработчик» со скидкой до 60% в этом месяце!
📌 Все подробности по ссылке: https://clc.am/zm8v4A
Что тебя ждет:
✔️ интересная и продуманная программа курса;
✔️ решение бизнес-задач компании;
✔️ много часов практики;
✔️ доступ к этому курсу на веки-вечные (ну а вдруг ты что-то забудешь);

И самое главное, после обучения Skillbox гарантирует трудоустройство в IT-компанию!
Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод Thread.sleep() и передав в качестве параметра необходимое количество времени в миллисекундах. До истечения этого времени поток может быть выведен из состояния ожидания вызовом interrupt() с выбрасыванием InterruptedException.
#вопросы_с_собеседований
Когда в приложении может быть выброшено исключение ClassCastException?
ClassCastException (потомок RuntimeException) - исключение, которое будет выброшено при ошибке приведения типа.
LocalDateTime объединяет вместе LocaleDate и LocalTime, содержит дату и время в календарной системе ISO-8601 без привязки к часовому поясу. Время хранится с точностью до наносекунды. Содержит множество удобных методов, таких как plusMinutes, plusHours, isAfter, toSecondOfDay и т.д.
#вопросы_с_собеседований
Какие наиболее распространенные задачи выполняются в контейнере сервлетов?
☕️ Поддержка обмена данными. Контейнер сервлетов предоставляет легкий способ обмена данными между веб клиентом (браузером) и сервлетом. Благодаря контейнеру нет необходимости создавать слушателя сокета на сервере для отслеживания запросов от клиента, а так же разбирать запрос и генерировать ответ. Все эти важные и комплексные задачи решаются с помощью контейнера и разработчик может сосредоточиться на бизнес-логике приложения.
☕️ Управление жизненным циклом сервлетов и ресурсов. Начиная от загрузки сервлета в память, инициализации, внедрения методов и заканчивая уничтожением сервлета. Контейнер так же предоставляет дополнительные утилиты, например JNDI, для управления пулом ресурсов.
☕️ Поддержка многопоточности. Контейнер самостоятельно создает новую нить для каждого запроса и предоставляет ей запрос и ответ для обработки. Таким образом сервлет не инициализируется заново для каждого запроса и тем самым сохраняет память и уменьшает время до обработки запроса.
☕️ Поддержка JSP. JSP классы не похожи на стандартные классы джавы, но контейнер сервлетов преобразует каждую JSP в сервлет и далее управляется контейнером как обычным сервлетом.
☕️ Различные задачи. Контейнер сервлетов управляет пулом ресурсов, памятью приложения, сборщиком мусора. Предоставляются возможности настройки безопасности и многое другое.
Сборщик мусора (Garbage Collector) должен делать всего две вещи:
☕️ Находить мусор - неиспользуемые объекты. (Объект считается неиспользуемым, если ни одна из сущностей в коде, выполняемом в данный момент, не содержит ссылок на него, либо цепочка ссылок, которая могла бы связать объект с некоторой сущностью приложения, обрывается);
☕️ Освобождать память от мусора.

Существуют два подхода к обнаружению мусора:
☕️ Reference counting;
☕️ Tracing.

Reference counting (подсчёт ссылок). Суть этого подхода состоит в том, что каждый объект имеет счетчик. Счетчик хранит информацию о том, сколько ссылок указывает на объект. Когда ссылка уничтожается, счетчик уменьшается. Если значение счетчика равно нулю, - объект можно считать мусором. Главным минусом такого подхода является сложность обеспечения точности счетчика. Также при таком подходе сложно выявлять циклические зависимости (когда два объекта указывают друг на друга, но ни один живой объект на них не ссылается), что приводит к утечкам памяти.

Главная идея подхода Tracing (трассировка) состоит в утверждении, что живыми могут считаться только те объекты, до которых мы можем добраться из корневых точек (GC Root) и те объекты, которые доступны с живого объекта. Всё остальное - мусор.

Существует 4 типа корневых точки:
☕️ Локальные переменные и параметры методов;
☕️ Потоки;
☕️ Статические переменные;
☕️ Ссылки из JNI.

Самое простое java приложение будет иметь корневые точки:
☕️ Локальные переменные внутри main() метода и параметры main() метода;
☕️ Поток, который выполняет main();
☕️ Статические переменные класса, внутри которого находится main() метод.

Таким образом, если мы представим все объекты и ссылки между ними как дерево, то нам нужно будет пройти с корневых узлов (точек) по всем рёбрам. При этом узлы, до которых мы сможем добраться - не мусор, все остальные - мусор. При таком подходе циклические зависимости легко выявляются. HotSpot VM использует именно такой подход.
#вопросы_с_собеседований
Какое из следующих утверждений о потоках неверно?
☕️ Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
☕️ Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
☕️ Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
☕️ Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.
Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

Вызов метода start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.
Почему нельзя соглашаться на тестовый кодинг во время собеседования

Собеседования по программной инженерии часто включают в себя какое-то тестовое задание по программированию, и это не очень хорошо. Объясним, почему.

https://proglib.io/sh/2kaXGotdi0