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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Миф о 21 дне: как на самом деле формируются привычки

Проблема привить полезную привычку (или избавиться от вредной) касается каждого из нас. Рассказываем о самых популярных заблуждениях – смотрим фактам в лицо.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
На каком объекте происходит синхронизация при вызове static synchronized метода?

У синхронизированного статического метода нет доступа к this, но есть доступ к объекту класса Class, он присутствует в единственном экземпляре и именно он выступает в качестве монитора для синхронизации статических методов. Таким образом, следующая конструкция:

class SomeClass {

public static synchronized void someMethod() {
//code
}
}
эквивалентна такой:

public class SomeClass {

public static void someMethod(){
synchronized(SomeClass.class){
//code
}
}
}
Учебник по Java: инкапсуляция на простых примерах

Защищаем пользовательскую информацию от ошибочных действий с помощью фундаментальной концепции ООП — инкапсуляции.

🔗 Основной сайт
🔗 Зеркало
Станьте гуру кибербезопасности!

Сегодня компании становятся мишенью для атак со стороны хакеров в охоте за деньгами, информацией о готовящихся проектах и новых продуктах. Для проникновения хакеры используют различные методы: от вредоносных программ до специальной инженерии. А теперь представьте, что в 9 из 10 компаний отсутствуют специалисты по информационной безопасности! Представляете, насколько это популярное направление?

На курсе вы научитесь:
– основам веб-разработки;
– управлять базами данных;
– защищать сайты;
– организовывать пен-тесты;
– проверять сайты на защищенность;
– искать уязвимости.

Сейчас IT-специалисты нужны как никогда! Освойте профессию, без которой не обойдётся ни один бизнес!
🔥 Также для IT-специалистов действуют специальные плюшки от государства!
Подробности по ссылке: https://clc.to/aVAewQ
В чём различия между volatile и Atomic переменными?

volatile принуждает использовать единственный экземпляр переменной, но не гарантирует атомарность. Например, операция count++ не станет атомарной просто потому, что count объявлена volatile. C другой стороны class AtomicInteger предоставляет атомарный метод для выполнения таких комплексных операций атомарно, например getAndIncrement() – атомарная замена оператора инкремента, его можно использовать, чтобы атомарно увеличить текущее значение на один. Похожим образом сконструированы атомарные версии и для других типов данных.
Создайте погодный бот и бот-генератор паролей за 3 дня на бесплатном интенсиве

Бесплатный интенсив — это возможность протестировать профессию «Разработчик на Python» и решить, подходит ли она вам.

За три дня вы:
— научитесь писать телеграм-боты и программировать на Python;
изучите запросы рынка и требования работодателей c высокими зарплатами;
— создадите два телеграм-бота по «отслеживание погоды» и телеграм-бота «генератор паролей»
— А еще сможете выиграть призы за выполнение домашних заданий на сумму более 500 000 рублей

🔹Станьте на три дня разработчиком на Python
запишитесь на интенсив — https://clc.to/86ct2g

🎁Подарок за регистрацию — карьерный гид с 30+ лайфхаками по освоению профессии разработчика.
#вопросы_с_собеседований
Что значит «приоритет потока»?

Приоритеты потоков используются планировщиком потоков для принятия решений о том, когда какому из потоков будет разрешено работать. Теоретически высокоприоритетные потоки получают больше времени процессора, чем низкоприоритетные. Практически объем времени процессора, который получает поток, часто зависит от нескольких факторов помимо его приоритета.

Чтобы установить приоритет потока, используется метод класса Thread: final void setPriority(int level). Значение level изменяется в пределах от Thread.MIN_PRIORITY = 1 до Thread.MAX_PRIORITY = 10. Приоритет по умолчанию - Thread.NORM_PRlORITY = 5.

Получить текущее значение приоритета потока можно вызвав метод: final int getPriority() у экземпляра класса Thread.
🗿➡️ От монолита к микросервисам: как металлурги переходят с Oracle и SQL на Java-стек

Поддерживать старый код или шагнуть в продвинутое настоящее? Сложно, но можно, если все рассчитать. История перехода металлургического комбината на современный стек.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Чем отличаются JRE, JVM И JDK?

JRE кратко - для работы. Java Runtime Environment (сокр. JRE) - минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки. Состоит из виртуальной машины - Java Virtual Machine и библиотеки Java-классов.

JDK кратко - для программирования. Java Development Kit (сокращенно JDK) - бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

Java Virtual Machine (сокращенно Java VM, JVM) - виртуальная машина Java - основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования.
#вопросы_с_собеседований
Можно ли сделать основной поток программы демоном?

Нет. Потоки-демоны позволяют описывать фоновые процессы, которые нужны только для обслуживания основных потоков выполнения и не могут существовать без них.
#вопросы_с_собеседований
Что значит «усыпить» поток?

Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод Thread.sleep() передав в качестве параметра необходимое количество времени в миллисекундах. До истечения этого времени поток может быть выведен из состояния ожидания вызовом interrupt() с выбрасыванием InterruptedException.
Подготовка к интервью по Spring Data JPA

Одним из самых популярных модулей в приложениях Spring Boot является Spring Data JPA. Следовательно, у вас почти нет шансов избежать вопросов на собесе, связанных с этой темой. В этой статье будут рассмотрены наиболее часто задаваемые вопросы с подробными ответами по JPA/JDBC/Hibernate.

Читать статью
💡 Как генерировать новые идеи: 7 творческих методик решения задач

Объясняем «на пальцах» алгоритмы семи творческих методик решения задач.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Чем отличаются два интерфейса Runnable и Callable?

• Интерфейс Runnable появился в Java 1.0, а интерфейс Callable был введен в Java 5.0 в составе библиотеки java.util.concurrent;
• Классы, реализующие интерфейс Runnable для выполнения задачи должны реализовывать метод run(). Классы, реализующие интерфейс Callable - метод call();
• Метод Runnable.run() не возвращает никакого значения, Callable.call() возвращает объект Future, который может содержать результат вычислений;
• Метод run() не может выбрасывать проверяемые исключения, в то время как метод call() может.
🧑🏼‍🏫 Ментор в IT: для чего нужен и как его выбрать

Отыскать действительно хорошего ментора – задача не из легких. Подскажем, по каким критериям его выбрать и как заинтересовать.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Что такое FutureTask?

FutureTask представляет собой отменяемое асинхронное вычисление в параллельном Java приложении. Этот класс предоставляет базовую реализацию Future, с методами для запуска и остановки вычисления, методами для запроса состояния вычисления и извлечения результатов. Результат может быть получен только когда вычисление завершено, метод получения будет заблокирован, если вычисление ещё не завершено. Объекты FutureTask могут быть использованы для обёртки объектов Callable и Runnable. Так как FutureTask реализует Runnable, его можно передать в Executor на выполнение.
#вопросы_с_собеседований
В чем заключаются различия между CyclicBarrier и CountDownLatch?

CountDownLatch (замок с обратным отсчетом) предоставляет возможность любому количеству потоков в блоке кода ожидать до тех пор, пока не завершится определенное количество операций, выполняющихся в других потоках, перед тем как они будут «отпущены», чтобы продолжить свою деятельность. В конструктор CountDownLatch(int count) обязательно передается количество операций, которое должно быть выполнено, чтобы замок «отпустил» заблокированные потоки.

Примером CountDownLatch из жизни может служить сбор экскурсионной группы: пока не наберется определенное количество человек, экскурсия не начнется.

CyclicBarrier реализует шаблон синхронизации «Барьер». Циклический барьер является точкой синхронизации, в которой указанное количество параллельных потоков встречается и блокируется. Как только все потоки прибыли, выполняется опционное действие (или не выполняется, если барьер был инициализирован без него), и, после того, как оно выполнено, барьер ломается и ожидающие потоки «освобождаются». В конструкторы барьера CyclicBarrier(int parties) и CyclicBarrier(int parties, Runnable barrierAction) обязательно передается количество сторон, которые должны «встретиться», и, опционально, действие, которое должно произойти, когда стороны встретились, но перед тем когда они будут «отпущены».

CyclicBarrier является альтернативой метода join(), который «собирает» потоки только после того, как они выполнились.

CyclicBarrier похож на CountDownLatch, но главное различие между ними в том, что использовать «замок» можно лишь единожды - после того, как его счётчик достигнет нуля, а «барьер» можно использовать неоднократно, даже после того, как он «сломается».
Учебник по Java: введение в класс String

Оттачиваем навык работы со строчками: создание, форматирование, конкатенация строк и самые часто используемые методы.

https://proglib.io/sh/Va21eG9L4R

Зеркало: https://proglib.tech/p/uchebnik-po-java-vvedenie-v-klass-string-2022-08-26