Java Learning
18.6K subscribers
1.62K photos
1 video
3 files
1K links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
➡️ Использование методов по умолчанию в интерфейсах Java

ℹ️ Методы по умолчанию введены в Java 8 для предоставления возможности добавлять новые функции в существующие интерфейсы без необходимости изменения классов, которые эти интерфейсы реализуют.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ Подключение к базе данных с использованием JDBC

Импорт пакетов и классов: Импортируем необходимые классы для работы с JDBC.

Настройка подключения: Задаем URL, имя пользователя и пароль для подключения к базе данных MySQL. Замените их соответствующими значениями для вашей базы данных.

Подключение к базе данных: В блоке try создаем соединение с базой данных, используя метод DriverManager.getConnection(url, username, password). Здесь используется try-with-resources, что автоматически закрывает соединение после завершения блока try.

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

🗣️ Этот короткий пример демонстрирует основные шаги для подключения к базе данных MySQL с использованием JDBC в Java.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
➡️ Как объединить два списка в Java?

Этот код демонстрирует, как объединить два списка list1 и list2 в Java, создав новый список mergedList, который содержит все элементы из обоих исходных списков. В результате выполнения кода будет напечатан объединенный список.

🗣️ Этот подход часто используется на практике при работе с коллекциями в Java.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Что будет выведено при выполнении кода?

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Удобное логирование с использованием Java Logger

Логирование — это важный аспект разработки приложений, который помогает отслеживать выполнение программы и диагностировать проблемы.

🗣️ В Java для этого можно использовать java.util.logging.Logger, который предоставляет гибкие возможности для логирования сообщений разного уровня.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
⚙️ Хотите убедиться, что JVM ничего про них не знает?

Эта программа не только компилируется, но и на самом деле кидает SQLException. Вам даже не нужен SneakyThrows из Lombok'а.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3
👀 Случайные целочисленные числа

Теперь более трудное задание. Не читайте решение. Посмотрите сможете ли вы найти
ответ самостоятельно. Когда я запущу следующую программу:

for (int i = 0; i < 10; i++) {
System.out.println((Integer) i);
}


Иногда я получаю следующий вывод:

92
221
45
48
236
183
39
193
33
84


➡️ Но как такое вообще возможно? Ответ в кроется в переопределении JDK кеша Integer через рефлексию, и затем в использовании auto-boxing и auto-unboxing.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔5
➡️ Вложенные в интерфейсы классы

Вложенный (nested) в интерфейс класс является открытым (public) и статическим (static) даже без явного указания этих модификаторов. Помещая класс внутрь интерфейса, мы показываем, что он является неотъемлемой частью API этого интерфейса и более нигде не используется.

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

Colorable.Color color = new Colorable.Color(0, 0, 0);
color = new Triangle.Color(255, 255, 255);


🗣️ Самым, наверное, известным примером этой идиомы является класс Map.Entry<K, V>, содержащий пары ключ-значение ассоциативного словаря.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
👀 У Java есть GOTO!

goto это неиспользуемое зарезервированное слово, просто на всякий
случай…

🗣️ Но это не самая захватывающая часть. Самое интересное то что вы можете включить
goto в паре с break, continue и помеченных блоков


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁1🤔1
⚙️ Оптимизация сборщика мусора с помощью -XX:+UseG1GC

Java предоставляет множество возможностей для оптимизации производительности приложений.

✔️ Одной из таких возможностей является использование современного сборщика мусора G1 (Garbage First), который улучшает работу приложений с большим объемом данных и снижает задержки.

➡️ Чтобы включить использование G1GC, необходимо добавить флаг -XX:+UseG1GC при запуске Java-приложения:

java -XX:+UseG1GC G1GCExample


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️ Псевдонимы типов

В Java мы не можем просто так определить псевдоним на верхнем уровне. Но мы можем сделать так для потребностей класса либо метода. Давайте предположим что нас не устраивают такие имена как Integer, Long и т.д. и мы хотим имена по короче: I и L. Да легко:

class Test {
void x(I i, L l) {
System.out.println(
i.intValue() + ", " +
l.longValue()
);
}
}


🗣️ В примере выше, Integer преобразован в I для видимости класса Test в то время как Long
преобразован в L для нужд метода х(). Теперь мы можем вызвать этот метод следующим
образом:

new Test().x(1, 2L);


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😁21
➡️ Delay Queue

DelayQueue - особый тип коллекции Java для сортировки элементов по времени задержки.

🗣️ Принадлежит пакету java.util.concurrent, реализует интерфейс BlockingQueue. Элементы извлекаются только при истечении задержки. Для использования необходимо реализовать метод getDelay из интерфейса Delayed.

✔️ Допустим, мы хотим задержать элемент на 10 секунд. Нам просто нужно установить текущее время, увеличенное на 10 секунд для нашего класса DelayedEvent.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81😢1
✉️ Улучшение логирования с использованием Java Logging API

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

✔️ Использование Java Logging API (java.util.logging) позволяет гибко настраивать и контролировать логирование в ваших приложениях.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
Что будет выведено при выполнении кода?

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ:
Anonymous Quiz
32%
2
4%
1.8
9%
2.5
56%
2.0
👍141
⚙️ Время суток в Time Format

Java 8 значительно улучшила API обработки времени, и дополнительная библиотека, такая как Joda Time, стала часто не нужна.

✔️ С Java 16 можно даже выражать время суток, например, «утром» или «днем», используя стандартный форматер с новым шаблоном формата B.

Только не спрашивайте, почему он называется B. Кстати, вот фрагмент шаблонных букв и символов, обрабатываемых DateTimeFormatter.


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
⚙️ Stamped Lock

Java Concurrent - один из самых интересных и в то же время малоизвестных пакетов Java, особенно среди разработчиков, работающих с веб-фреймворками.

🗣️ Lock - более гибкий механизм синхронизации потоков, чем synchronized. Начиная с Java 8, можно использовать StampedLock вместо ReadWriteLock, что обеспечивает лучшую производительность и оптимистичную блокировку операций чтения.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10