FileHandler
#для_продвинутых
FileHandler — это класс в Java, который используется для записи журналов в файл. Он может записывать журналы в один файл или в набор вращающихся файлов.#для_продвинутых
👍9
Formatter
— Примитивные типы:
— Объекты:
#для_продвинутых
Formatter — это класс, который используется для форматирования вывода данных. Formatter поддерживает форматирование следующих типов данных:— Примитивные типы:
int, long, float, double, char, boolean— Объекты:
String, Date, Calendar, BigDecimal.#для_продвинутых
👍4
PathIterator
Основные возможности PathIterator:
—
— Для каждого сегмента
—
#для_продвинутых
PathIterator — это интерфейс в Java, который позволяет объектам, реализующим интерфейс Shape, возвращать геометрию своей границы, позволяя вызывающему объекту получать путь этой границы по одному сегменту за раз.Основные возможности PathIterator:
—
PathIterator позволяет перебирать сегменты пути объекта Shape по одному.— Для каждого сегмента
PathIterator может предоставить информацию о его типе (например, линия, кривая Безье), координатах и других атрибутах.—
PathIterator может использоваться для преобразования пути объекта Shape, например, для его масштабирования, поворота или перемещения.#для_продвинутых
👍8❤1
AccessibleObject
Контроль доступа в Java языке запрещает:
—Использование приватных членов за пределами их класса верхнего уровня;
— Членов пакета за пределами их пакета;
— Защищенных членов за пределами их пакета или подклассов;
— Публичных членов за пределами их модуля, если они не объявлены в экспортируемом пакете, и пользователь не читает их модуль.
Важно: использование AccessibleObject может привести к проблемам безопасности, поэтому его следует использовать с осторожностью.
#для_продвинутых
AccessibleObject — это базовый класс для объектов Field, Method и Constructor. Он позволяет помечать рефлектируемый объект как подавляющий проверки контроля доступа языка Java по умолчанию при его использовании.Контроль доступа в Java языке запрещает:
—Использование приватных членов за пределами их класса верхнего уровня;
— Членов пакета за пределами их пакета;
— Защищенных членов за пределами их пакета или подклассов;
— Публичных членов за пределами их модуля, если они не объявлены в экспортируемом пакете, и пользователь не читает их модуль.
Важно: использование AccessibleObject может привести к проблемам безопасности, поэтому его следует использовать с осторожностью.
#для_продвинутых
👍8❤1
AnnotatedElement
#для_продвинутых
AnnotatedElement — это интерфейс в Java, который представляет собой элемент программы, снабженный аннотациями. Он позволяет рефлексивно считывать аннотации.#для_продвинутых
👍9🔥1
FairSemaphore
В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью
#для_продвинутых
FairSemaphore — это класс, реализующий семафор, который обеспечивает справедливое распределение разрешений между потоками. Это означает, что потоки, ожидающие разрешения, будут получать его в порядке очереди, а не в случайном порядке.В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью
FairSemaphore. Потоки будут получать доступ к ресурсу по очереди, а не в случайном порядке.#для_продвинутых
👍9
BrokenBarrierException
Как исправить:
— Обработайте исключение
— Убедитесь, что все потоки, которые будут ждать на барьере, завершатся до того, как вы его сломаете.
— Используйте
#для_продвинутых
BrokenBarrierException — это исключение, которое возникает в Java, когда поток пытается ждать на барьере, который находится в сломанном состоянии или когда пытается войти в барьер, который переходит в сломанное состояние во время ожидания.Как исправить:
— Обработайте исключение
BrokenBarrierException в коде.— Убедитесь, что все потоки, которые будут ждать на барьере, завершатся до того, как вы его сломаете.
— Используйте
CyclicBarrier вместо Barrier, если вам нужно сбросить барьер и запустить его снова.#для_продвинутых
👍10
newCachedThreadPool
— Создание новых потоков по мере необходимости: пул создает новые потоки для выполнения задач, когда они поступают.
— Повторное использование существующих потоков: если в пуле есть неактивные потоки, они будут повторно использованы для выполнения новых задач.
— Бесконечное количество потоков: пул не имеет ограничений на количество потоков, которые он может создать.
— Удаление неактивных потоков: пул автоматически удаляет неактивные потоки через 60 секунд.
#для_начинающих
newCachedThreadPool — это метод класса Executors, который создает пул потоков, обладающий следующими характеристиками:— Создание новых потоков по мере необходимости: пул создает новые потоки для выполнения задач, когда они поступают.
— Повторное использование существующих потоков: если в пуле есть неактивные потоки, они будут повторно использованы для выполнения новых задач.
— Бесконечное количество потоков: пул не имеет ограничений на количество потоков, которые он может создать.
— Удаление неактивных потоков: пул автоматически удаляет неактивные потоки через 60 секунд.
#для_начинающих
👍9
Разбираемся с MavenGate, новой атакой на цепочку поставок для Java и Android-приложений
Смотреть статью
Смотреть статью
Хабр
Разбираемся с MavenGate, новой атакой на цепочку поставок для Java и Android-приложений
Всем привет! Сегодня с вами Юрий Шабалин, генеральный директор «Стингрей Технолоджиз», и я хотел бы разобрать в этой статье новый тип атаки на цепочку поставок под названием «MavenGate». А что в ней,...
👍2
Каким будет вывод этого кода?
Anonymous Quiz
7%
true true
34%
false false
49%
true false
3%
false true
6%
Посмотреть ответ
👍28
#Вопросы_с_собеседования
Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
- Метод должен удовлетворять условиям транзитивности, рефлексивности и симметричности.
- Метод должен быть согласованным - многократные вызовы с неизменными объектами должны возвращать один и тот же результат.
- Если x.equals(y) вернёт true, то x.hashCode() должен быть равен y.hashCode().
- Метод не должен выбрасывать исключения при сравнении допустимых значений.
Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
- Метод должен быть согласованным - многократные вызовы с неизменными объектами должны возвращать один и тот же результат.
- Если x.equals(y) вернёт true, то x.hashCode() должен быть равен y.hashCode().
- Метод не должен выбрасывать исключения при сравнении допустимых значений.
👍27
PreferencesFactory
Интерфейс
Он предоставляет два метода:
Поставщики новых реализаций
#для_продвинутых
Интерфейс
PreferencesFactory используется для создания объектов Preferences. Он предоставляет два метода:
systemRoot(): Возвращает корневой узел предпочтений системы.userRoot(): Возвращает корневой узел предпочтений пользователя, вызвавшего метод.Поставщики новых реализаций
Preferences должны предоставлять соответствующие реализации PreferencesFactory, чтобы их можно было установить вместо реализации по умолчанию, зависящей от платформы.#для_продвинутых
👍9
AtomicStampedReference
Что такое атомарный доступ?
Атомарный доступ означает, что операции чтения и записи выполняются целиком, без промежуточных состояний. Это гарантирует, что другие потоки не смогут увидеть частично обновленное значение.
#для_продвинутых
AtomicStampedReference — это класс в Java, который используется для обеспечения атомарного доступа к ссылке на объект и целочисленному «штампу».Что такое атомарный доступ?
Атомарный доступ означает, что операции чтения и записи выполняются целиком, без промежуточных состояний. Это гарантирует, что другие потоки не смогут увидеть частично обновленное значение.
#для_продвинутых
👍12
therapi-runtime-javadoc - небольшая библиотека, позволяющая читать Javadoc из Java-кода во время выполнения.
https://github.com/dnault/therapi-runtime-javadoc
https://github.com/dnault/therapi-runtime-javadoc
👍10
😱6👍4😢3
unmodifiableMap
UnmodifiableMap используется для создания неизменяемого представления отображения, это позволяет предоставить доступ к отображению, не давая возможности изменить его.
Как видно из примера, при попытке изменить неизменяемое отображение
UnmodifiableMap используется для создания неизменяемого представления отображения, это позволяет предоставить доступ к отображению, не давая возможности изменить его.
Как видно из примера, при попытке изменить неизменяемое отображение
unmodifiableMap выбрасывается исключение UnsupportedOperationException. Это гарантирует, что исходное отображение не будет случайно изменено.👍11