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

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
MethodHandle

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

#для_продвинутых
👍13
ManagementFactory

ManagementFactory — это класс-фабрика, предназначенный для получения управляемых beans для платформы Java. Он состоит из статических методов, каждый из которых возвращает один или несколько platform MXBeans, представляющих собой интерфейс управления компонентом виртуальной машины Java (JVM).

#для_продвинутых
👍15
MessageDigest

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

#для_продвинутых
👍12
CopyOnWriteArrayList

CopyOnWriteArrayList — это реализация интерфейса List, оптимизированная для работы в многопоточном окружении.

Основное отличие этой коллекции в том, что все модифицирующие операции (добавление, удаление элементов) не изменяют существующий массив, а создают его копию.
Это позволяет избежать необходимости синхронизации для потокобезопасного чтения.

CopyOnWriteArrayList полезен в ситуациях, когда чтение данных происходит гораздо чаще, чем изменение. Например, при реализации общего кэша в многопоточном приложении.
👍18🤔2
AlgorithmParameters

Класс AlgorithmParameters используется для представления криптографических параметров в виде непрозрачного объекта. Он позволяет управлять параметрами для конкретного алгоритма.

#для_продвинутых
👍11
KeyFactory

KeyFactory — это класс, который используется для преобразования ключей (непрозрачных криптографических ключей типа Key) в спецификации ключей (прозрачные представления базового материала ключа) и наоборот.

Функциональные возможности:
— Преобразование ключей из спецификаций ключей (например, ASN.1 DER) и обратно.
— Генерация ключей на основе алгоритма и параметров.
— Поддержка различных алгоритмов ключей, таких как RSA, DSA, Elliptic Curve Cryptography (ECC).

#для_продвинутых
👍10
ZipInputStream

ZipInputStream — это класс в Java, который используется для чтения файлов ZIP. Он представляет собой фильтр входного потока, который декомпрессирует данные ZIP по мере их чтения.

#для_продвинутых
👍13
GZIPInputStream

GZIPInputStream — это класс в Java, который используется для декомпрессии данных, сжатых с помощью алгоритма gzip. Gzip – это популярный формат сжатия, который используется для уменьшения размера файлов без значительной потери данных.

#для_продвинутых
👍10
Какое из следующих утверждений о потоках неверно?

1. Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
4. Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.

Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

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

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

#для_начинающих
👍11
CharBuffer

CharBuffer в Java представляет собой класс, который используется для хранения и манипулирования последовательностями символов. Он является частью пакета java.nio и реализует интерфейс CharSequence.

#для_начинающих
👍10
Semaphore

Semaphore — это класс, который позволяет ограничивать количество потоков, одновременно работающих с каким-либо ресурсом.

Поток должен получить разрешение, чтобы войти в критическую секцию.
Semaphore управляет набором разрешений (permits), а конструктор принимает количество разрешений.
Если разрешений нет, поток ставится в очередь до освобождения.

Метод acquire() получает разрешение, release() — освобождает.
👍16
LambdaMetafactory

LambdaMetafactory — это класс в Java, который используется для создания объектов функциональных интерфейсов.

Как работает LambdaMetafactory:

1. LambdaMetafactory используется для создания CallSite, который представляет собой фабричный метод, возвращающий обработчик целевого метода.
2. Обработчик метода — это реализация функционального интерфейса, которая использует invokeExact для вызова целевого метода.
3. Если в лямбда-выражении есть захваченные переменные, то invokeExact принимает эти переменные как фактические параметры.
4. В Oracle JRE 8 metafactory динамически генерирует Java-класс, используя ObjectWeb Asm, который и создает класс-реализацию функционального интерфейса.

#для_продвинутых
👍8
SocketHandler

SocketHandler — это класс в Java, который используется для отправки сообщений журнала на сервер журнала. Он наследуется от класса Handler и реализует интерфейс StreamHandler.

#для_продвинутых
👍8
FileHandler

FileHandler — это класс в Java, который используется для записи журналов в файл. Он может записывать журналы в один файл или в набор вращающихся файлов.

#для_продвинутых
👍9
Formatter

Formatter — это класс, который используется для форматирования вывода данных. Formatter поддерживает форматирование следующих типов данных:
— Примитивные типы: int, long, float, double, char, boolean
— Объекты: String, Date, Calendar, BigDecimal.

#для_продвинутых
👍4
PathIterator

PathIterator — это интерфейс в Java, который позволяет объектам, реализующим интерфейс Shape, возвращать геометрию своей границы, позволяя вызывающему объекту получать путь этой границы по одному сегменту за раз.

Основные возможности PathIterator:

PathIterator позволяет перебирать сегменты пути объекта Shape по одному.
— Для каждого сегмента PathIterator может предоставить информацию о его типе (например, линия, кривая Безье), координатах и других атрибутах.
PathIterator может использоваться для преобразования пути объекта Shape, например, для его масштабирования, поворота или перемещения.

#для_продвинутых
👍81
AccessibleObject

AccessibleObject — это базовый класс для объектов Field, Method и Constructor. Он позволяет помечать рефлектируемый объект как подавляющий проверки контроля доступа языка Java по умолчанию при его использовании.

Контроль доступа в Java языке запрещает:
—Использование приватных членов за пределами их класса верхнего уровня;
— Членов пакета за пределами их пакета;
— Защищенных членов за пределами их пакета или подклассов;
— Публичных членов за пределами их модуля, если они не объявлены в экспортируемом пакете, и пользователь не читает их модуль.

Важно: использование AccessibleObject может привести к проблемам безопасности, поэтому его следует использовать с осторожностью.

#для_продвинутых
👍81