Java Developer – Telegram
Java Developer
15.7K subscribers
1.86K photos
141 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Параллельная редукция

Параллельная редукция в Java — это процесс сокращения (редукции) коллекции элементов с использованием параллельных вычислений. В Java для этого можно использовать параллельные потоки и функциональные интерфейсы, такие как reduce(), collect() и stream().

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 «Монитор» в Java

Монитор, мьютекс (mutex) — это средство обеспечения контроля за доступом к ресурсу. У монитора может быть максимум один владелец в каждый текущий момент времени. Следовательно, если кто-то использует ресурс и захватил монитор для обеспечения единоличного доступа, то другой, желающий использовать тот же ресурс, должен подождать освобождения монитора, захватить его и только потом начать использовать ресурс.

Удобно представлять монитор как id захватившего его объекта. Если этот id равен 0 — ресурс свободен. Если не 0 — ресурс занят. Можно встать в очередь и ждать его освобождения.

В Java у каждого экземпляра объекта есть монитор, который контролируется непосредственно JVM. Используется он так: любой нестатический synchronized-метод при своем вызове прежде всего пытается захватить монитор того объекта, у которого он вызван (на который он может сослаться как на this). Если это удалось — метод исполняется. Если нет — поток останавливается и ждет, пока монитор будет отпущен.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие из методов отсутствуют в String?
Anonymous Quiz
18%
isEmpty()
6%
length()
32%
capacity()
44%
codePointBefore()
👩‍💻 Возведение в степень методом Math.pow()

Метод Math.pow() возводит значение первого аргумента в степень второго аргумента, позволяя осуществить быстрое возведение в степень любых значений. Следует отметить, что для вывода на экран целого значения используется "%.0f", так как метод Math.pow() возвращает double значение.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Структура веб-проекта

src/main/java — Исходники приложения/библиотеки;

src/main/resources — Ресурсные файлы приложения/библиотеки;

src/main/filters — Файлы сервлетных фильтров;

src/main/webapp — Исходники веб-приложения;

src/test/java — Исходники тестов;

src/test/resources — Ресурсные файлы тестов;

src/test/filters — Тесты сервлетных фильтров;

src/it — Интеграционные тесты;

src/assembly — Описание сборки;

src/site — Сайт;

LICENSE.txt — Лицензия проекта;

NOTICE.txt — Замечания и определения библиотек зависимостей;

README.txt — Описание проекта;

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Что такое Instance Variable?

Ответ: Instance Variable — переменная, которая определена внутри класса, и она существует вплоть до того момента, пока существует объект.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Docker

Docker — это программное обеспечение, позволяющее запускать приложения в изолированных контейнерах. Каждый контейнер содержит все необходимые компоненты приложения и может быть запущен на любой операционной системе, где установлен Docker. Docker упрощает развертывание приложений и избавляет от проблем совместимости с различными ОС.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Извлекаем имя из адреса электронной почты

Метод extractNameFromEmail принимает строку с адресом электронной почты и возвращает подстроку до символа "@" (если символ "@" присутствует в строке) в качестве имени.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какие типы ключевых слов используются в обработке исключений Java?

Ответ: try, catch, finally, throw, throws.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Маркерный интерфейc и примеры таких интерфейсов в Java

Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:

Serializable — используется для явного указания того, что этот класс может быть сериализован;
Cloneable — позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException);
Remote — используется в RMI для указания интерфейса, методы которого можно вызывать удаленно.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Hibernate

Hibernate — это ORM фреймворк для Java с открытым исходным кодом. Эта технология является крайне мощной и имеет высокие показатели производительности.

Hibernate создаёт связь между таблицами в базе данных и Java-классами и наоборот. Это избавляет разработчиков от огромного количества лишней, рутинной работы, в которой крайне легко допустить ошибку и крайне трудно потом её найти.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой сборщик мусора самый медленный?
Anonymous Quiz
15%
Parallel
23%
G1
42%
Serial
20%
CMS
👩‍💻 Механизм try-with-resources

try-with-resources — конструкция, которая появилась в Java 7. Она позволяет использовать блок try-catch не заботясь о закрытии ресурсов, используемых в данном сегменте кода. Ресурсы объявляются в скобках сразу после try, а компилятор уже сам неявно создаёт секцию finally, в которой и происходит освобождение занятых в блоке ресурсов. Под ресурсами подразумеваются сущности, реализующие интерфейс java.lang.Autocloseable.

Стоит заметить, что блоки catch и явный finally выполняются уже после того, как закрываются ресурсы в неявном finally.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какие два класса не наследуются от Object?

Ответ: таких классов нет: все классы прямо или через предков наследуются от класса Object.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
В каком классе или интерфейсе реализованы (объявлены) методы wait(), notify(), notifyAll()?
Anonymous Quiz
19%
Runnable
35%
Thread
6%
Callable
40%
Object
1
👩‍💻 Метод Map.of()

Map.of() — это метод, представленный в Java 9, позволяющий разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.

Map.of() является улучшением по сравнению с предыдущим способом создания небольших Map с использованием конструктора класса HashMap, который может быть довольно громоздким и многословным.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Узнаем версию Java

В Java можно узнать версию текущего экземпляра JVM (Java Virtual Machine) с помощью функции System.getProperty("java.version");

Этот код вернет текущую версию Java, установленную на компьютере.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Узнаем размер файла с помощью Java

Здесь создается объект класса File, указывающий на файл, размер которого нужно узнать. Затем вызывается метод length(), который возвращает размер файла в байтах. Результат выводится на консоль с помощью метода println().

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 Класс Object и его методы

Object — это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:

public boolean equals(Object obj) — служит для сравнения объектов по значению;

int hashCode() — возвращает hash код для объекта;

String toString() — возвращает строковое представление объекта;

Class getClass() — возвращает класс объекта во время выполнения;

protected Object clone() — создает и возвращает копию объекта;

void notify() — возобновляет поток, ожидающий монитор;

void notifyAll() — возобновляет все потоки, ожидающие монитор;

void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что выведет код сверху?

Ответ: так как "a" больше 20, а "b" больше 25, будет выведена "1". Второй оператор if не будет истинным, так как "a" не больше 30, поэтому будет выполнен блок else, который выведет "3". Таким образом, на выходе будет "1", а затем "3". Обратите внимание на операторы if и else if. Если бы вместо второго оператора if был оператор else if, то на выходе была бы только "1".

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1