В Java можно использовать прокси для динамического изменения поведения объектов во время выполнения.
🗣️ Это может быть полезно для внедрения кода, такого как логирование, безопасность или кэширование, без изменения исходного кода классов.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Пожалуй, создание объектов является одной из наиболее затратных операций в Java.
🗣️ Хорошая практика — создавать их лишь тогда, когда они действительно необходимы.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
😱12👍6🤔5😁2🎄1
👍13🔥1
Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно.
• Всегда захватывайте блокировки в одном и том же порядке во всех методах. Например, сначала lock1, затем lock2• Используйте ReentrantLock с таймаутом вместо synchronized, чтобы избежать бесконечного ожидания.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
В Java строки неизменяемы, и часто создание большого количества строк, содержащих одинаковые значения, приводит к избыточному использованию памяти.
intern() позволяет сократить количество дубликатов строк, оптимизируя использование памяти, за счет хранения только одной копии каждой уникальной строки в пуле строк.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
Использование метода sun.misc.Unsafe для низкоуровневой работы с памятью в Java
Хотя использование sun.misc.Unsafe не рекомендуется и является небезопасным, он предоставляет уникальные возможности для работы с памятью на низком уровне, аналогично тому, как это делается в языках, таких как C или C++.
Java Learning👩💻
Хотя использование sun.misc.Unsafe не рекомендуется и является небезопасным, он предоставляет уникальные возможности для работы с памятью на низком уровне, аналогично тому, как это делается в языках, таких как C или C++.
• sun.misc.Unsafe предоставляет методы для низкоуровневых операций с памятью, которые обычно недоступны в Java.• Доступ к Unsafe возможен только через рефлексию, так как он скрыт от обычных разработчиков.• Этот подход обычно используется в высокопроизводительных библиотеках и внутри JVM, но не рекомендуется для обычных приложений.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
MethodHandles предоставляют низкоуровневый доступ к методам, позволяя динамически вызывать их с минимальными накладными расходами.
🗣️ Этот подход может быть полезен для высокопроизводительных приложений, где отражение (reflection) слишком медленное.
• MethodHandles.Lookup используется для поиска методов в классе. В примере мы находим метод substring класса String.• MethodHandle позволяет вызывать метод с минимальными накладными расходами по сравнению с традиционным отражением (reflection), что делает его более производительным.• В отличие от рефлексии, MethodHandles могут использоваться для более эффективного вызова методов, что полезно в динамических и высокопроизводительных приложениях.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Ответ:
Anonymous Quiz
49%
1 2 3 4 5 6 7 8 9 10
8%
1 3 2 4 5 6 7 8 9 10
7%
1 2 4 3 6 5 7 8 9 10
37%
1 2 3 4 5 1 2 3 4 5
👍8🤔6❤3🔥1😱1
В Java 8 был введен метод
removeIf, который позволяет удалить элементы из коллекции, удовлетворяющие определенному условию, без необходимости явного использования цикла.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤🔥1
ASM позволяет динамически генерировать байт-код в Java. В этом примере создается класс с простым методом
hello(), который выводит сообщение в консоль.• Создается класс HelloClass с методом hello().• Метод hello() динамически генерируется и выводит строку "Hello, ASM!" в консоль.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😢3
В Java аннотация
@SuppressWarnings позволяет отключать определенные предупреждения компилятора в коде.🗣️ Это может быть полезно, когда вы уверены в безопасности используемого кода и хотите избежать лишних предупреждений, особенно при работе со старым кодом или нестандартными конструкциями.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В Java можно динамически изменять поведение объектов, используя
InvocationHandler и Proxy.🗣️ Это полезно для создания прокси-объектов, которые могут оборачивать существующие объекты и добавлять новые функции, такие как логирование, кеширование или контроль доступа.
• InvocationHandler позволяет перехватывать вызовы методов у прокси-объекта и добавлять дополнительное поведение, такое как логирование.• Использование Proxy позволяет динамически создавать новый объект, который ведет себя как реальный объект, но с добавленным поведением.• Этот подход позволяет добавлять новое поведение к существующим объектам без изменения их кода, что делает его мощным инструментом для реализации аспектно-ориентированного программирования (AOP).Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ:
Anonymous Quiz
75%
ABC
5%
abc
13%
java.lang.IllegalStateException
7%
Ничего не будет выведено
👍9🔥6
Stream API позволяет легко трансформировать коллекции. В данном примере используется
Collectors.toMap для создания мапы, где ключами являются строки из списка, а значениями — их длины.• Использование LinkedHashMap::new гарантирует сохранение порядка элементов, как в исходном списке, что может быть полезно в ситуациях, где порядок имеет значение.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
WeakHashMap — это специализированная реализация интерфейса Map, которая позволяет хранить ключи с использованием слабых ссылок.
• Это означает, что если объект-ключ больше не имеет сильных ссылок в программе, он может быть очищен сборщиком мусора, что помогает управлять памятью более эффективно.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9