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
charBuffer
Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу
Этот метод возвращает объект
В этом примере создается строка "Hello". Затем из этой строки получаем буфер символов методом
В цикле посимвольно читаем из буфера символы и выводим их на экран.
Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу
String.Этот метод возвращает объект
CharBuffer, который представляет последовательность символов строки.CharBuffer позволяет эффективно читать и манипулировать символами строки без создания копий.В этом примере создается строка "Hello". Затем из этой строки получаем буфер символов методом
charBuffer().В цикле посимвольно читаем из буфера символы и выводим их на экран.
👍14❤3
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
• Блок инициализации возможно создать и в анонимном классе.
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
throws всех конструкторов класса.• Блок инициализации возможно создать и в анонимном классе.
👍19
Класс java.util.Date
Класс java.util.Date представляет дату и время.
Конструкторы
Методы
Методы как
Методы
Класс java.util.Date представляет дату и время.
Date хранит дату и время в миллисекундах с 1 января 1970 года 00:00:00 по UTC.Конструкторы
Date() и Date(long date) позволяют создать объект Date с текущей датой/временем или указанной датой/временем в миллисекундах.Методы
getTime() и setTime(long time) позволяют получить и установить время в миллисекундах.Методы как
getDay(), getMonth() и т. д. позволяют получить отдельные компоненты даты/времени.Методы
before() и after() позволяют сравнивать даты.👍8🤔2
Чем полезны неизменяемые объекты?
Неизменяемость (
Неизменяемость (
immutability) помогает облегчить написание многопоточного кода. Неизменяемый объект может быть использован без какой-либо синхронизации. К сожалению, в Java нет аннотации @Immutable, которая делает объект неизменяемым, для этого разработчикам нужно самим создавать класс с необходимыми характеристиками. Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX() вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.👍18
Для чего нужен метод hashCode()?
Метод
• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
Метод
hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смысле - битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть:• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
👍13