Библиотека джависта | 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 создавать собственные установочные пакеты JDK

Демонстрируем одну из новых возможностей Java 14 – создание нативных установочных версий JDK.

https://proglib.io/sh/v5MIDuL9Wh
Прояви себя в цифре! Участвуй в региональных Онлайн-Хакатонах Цифрового Прорыва!

Тебя ждет насыщенная серия конкурсов с актуальным кейсами от бизнеса и государства, а призовой фонд каждого хакатона до 3 млн. руб.!

Выбирай удобные даты, понравившийся кейс, собирай команду и покажи, на что ты способен:

16.10 - 18.10 - Центральный Хаб: https://leadersofdigital.ru/event/63007

24.10 - 26.10 - Северо-Кавказский Хаб: https://leadersofdigital.ru/event/63006

31.10 - 02.11 - Уральский Хаб: https://leadersofdigital.ru/event/63009

14.11 - 16.11 - Северо-Западный Хаб: https://leadersofdigital.ru/event/63011

Стань частью цифрового будущего России!
Практический онлайн-курс «Enterprise-технологии в Java-разработке» — это курс, где ты научишься создавать корпоративные приложения и встраивать их в инфраструктуру бизнеса.

За шесть месяцев обучения ты сможешь сделаешь шаг от junior-разработчика к middle+ и в разы повысить свое конкурентное преимущество на рынке труда.

Здесь ты узнаешь:
- как работать с легаси-проектами и докручивать их, а не переписывать;
- как получать, хранить, обрабатывать данные через микросервисы;
- как подключать новые сервисы, не ломая работу старых;
- как работать с экосистемой микросервисов;
- как делать приложения отказоустойчивыми.
А главное, уже после вводных модулей ты включишься в командную разработку и сразу начнёшь применять полученные знания на практике.

Тебя ждут 22 тематических модуля и 170+ онлайн уроков, которые будут вести эксперты из SimbioWay и Сбербанка.

Результатом твоего обучения станет создание эмулятора работы инфраструктуры Netflix. Ты продумаешь архитектуру и разработаешь аналог популярного стримингового сервиса.


Переходи по ссылке https://clc.am/X_5-Tg записывайся на курс, пока действует скидка!
Распространённые способы решения race condition:

☕️ Использование локальной копии — копирование разделяемой переменной в локальную переменную потока. Этот способ работает только тогда, когда переменная одна и копирование производится атомарно (за одну машинную команду), использование volatile.
☕️ Синхронизация - операции над разделяемым ресурсом происходят в синхронизированном блоке (при использовании ключевого слова synchronized).
☕️ Комбинирование методов - вышеперечисленные способы можно комбинировать, копируя «опасные» переменные в синхронизированном блоке. С одной стороны, это снимает ограничение на атомарность, с другой — позволяет избавиться от слишком больших синхронизированных блоков.

Очевидных способов выявления и исправления состояний гонки не существует. Лучший способ избавиться от гонок — правильное проектирование многозадачной системы.
#вопросы_с_собеседований
В equals() требуется проверять, что аргумент equals(Object that) такого же типа, что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
Оператор instanceof сравнивает объект и указанный тип. Его можно использовать для проверки является ли данный объект экземпляром некоторого класса, либо экземпляром его дочернего класса, либо экземпляром класса, который реализует указанный интерфейс.

this.getClass() == that.getClass() проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals() необходимо использовать точное сравнение с помощью метода getClass().
🤔 Ищешь первую работу или стажировку? В этом тебе поможет бот Энди! У него всегда есть инфа об адекватных вакансиях и стажировках, где тебя не будут эксплуатировать за печеньки.

Сейчас Энди проводит онлайн-ярмарку вакансий trANDY career 2.0, которая будет длиться до 18 октября! Эта неделя посвящена IT-индустрии и соответствующим вакансиям 🔥

Тебя ждут встречи с представителями IT-отделов крупных компаний, новые конкурсы, топовые IT-вакансии и многое другое. Так что следи за новостями чтобы не пропустить анонсы и мероприятия! 🤩

И да, все вакансии уже есть в чат-боте! Переходи по ссылке, заходи в диалог с сообществом, жми на кнопку Участвовать в trANDY career и выбирай, куда отправить свое резюме (можно сразу на все!) 😉
👉🏻 https://vk.com/andy_for_you
Через вызов метода finalize() (который наследуется от Java.lang.Object) JVM реализуется функциональность, аналогичная функциональности деструкторов в С++, используемых для очистки памяти перед возвращением управления операционной системе. Данный метод вызывается при уничтожении объекта сборщиком мусора (garbage collector) и, переопределяя finalize(), можно запрограммировать действия, необходимые для корректного удаления экземпляра класса - например, закрытие сетевых соединений, соединений с базой данных, снятие блокировок на файлы и т.д.

После выполнения этого метода объект должен быть повторно собран сборщиком мусора (и это считается серьезной проблемой метода finalize() т.к. он мешает сборщику мусора освобождать память). Вызов этого метода не гарантируется, т.к. приложение может быть завершено до того, как будет запущена сборка мусора.

Объект не обязательно будет доступен для сборки сразу же - метод finalize() может сохранить куда-нибудь ссылку на объект. Подобная ситуация называется «возрождением» объекта и считается антипаттерном. Главная проблема такого трюка - в том, что «возродить» объект можно только один раз.
Стать ближе к сфере кибербезопасности и получить первые знания и навыки вы сможете уже 20 октября на интенсиве «Старт в кибербезопасности: Level 0».

За 4 дня практических занятий с экспертом вы научитесь:

— Устанавливать и настраивать Linux-системы на виртуальные машины
— Устанавливать и настраивать сеть на Linux-системах
— Детально понимать взаимодействие между виртуальной и физической машиной
— Осуществлять ряд сетевых и связанных с уязвимостью ОС атак, и разрабатывать защиту от них
— Анализировать безопасность ОС

Что это вам даст?

— Получите необходимые знания о профессии, чтобы оценить свои силы и перспективы
— Детально разберетесь с чего начинается эффективная система информационной безопасности.
— Поймете принципы осуществления кибератак и получите реальный опыт
— Подготовитесь к поступлению на профессиональную программу «Специалист по информационной безопасности»

Эксперт интенсива — Ильдар Садыков, действующий руководитель отдела ИБ Федерального бюро МСЭ Министерство труда и социальной защиты РФ. Управляет 2 000 системами в 85 регионах РФ.

Примите участие в интенсиве и обеспечьте себе уверенный старт на пути к востребованной профессии!

Записаться на интенсив: https://is.gd/wYORYn
#вопросы_с_собеседований
Какой класс предназначен для работы с элементами файловой системы?
File работает непосредственно с файлами и каталогами. Данный класс позволяет создавать новые элементы и получать информацию существующих: размер, права доступа, время и дату создания, путь к родительскому каталогу.
#вопросы_с_собеседований
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
Cтек – участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, который хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.

Куча – общий участок памяти, который делится между всеми потоками. Объекты (неважно, локальные или любого другого уровня) создаются в куче. Для улучшения производительности поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
#вопросы_с_собеседований
1. Дайте определение понятию «конструктор».
2. Что такое «конструктор по умолчанию»?
1. Конструктор — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия, необходимые для его инициализации.
2. Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов - так называемый «конструктор по умолчанию».

public class ClassName() {}

Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
#вопросы_с_собеседований
Каким образом реализованы методы hashCode() и equals() в классе Object?
Хочешь работать в IT, но не хватает практики? Присоединяйся к бесплатному Java-интенсиву, где тебя ждут реальные задачи, которые помогут закрепить знания и понять, в каком направлении двигаться дальше.

Регистрируйся по ссылке: 👉 https://clc.am/nxzpFg.

Своими навыками делится программист с 15-летним опытом Даниил Пилипенко.

Что тебя ждёт?
✔️ Основы программирования на Java.
✔️ Работа с файлами и библиотеками.
✔️ Разработка приложения, которое непрерывно записывает звук с микрофона компьютера и отправляет файлы в Dropbox.
✔️ Анализ работ и разбор типичных ошибок.
✔️ Практические советы и инсайты от опытного программиста.

🎉 Если твой проект будет одним из лучших — получишь сертификат на 30 000 рублей для поступления на любой онлайн-курс университета Skillbox!
Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:

public boolean equals(Object obj) {
return (this == obj);
}

Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:

public native int hashCode();