ООП: худшее, что случалось с программированием
Смотреть статью ()
👩💻
@javaquiz
https://habr.com/ru/articles/885980/
Смотреть статью ()
👩💻
@javaquiz
https://habr.com/ru/articles/885980/
Хабр
ООП: худшее, что случалось с программированием
Если бы строили так, как пишут код ООП. В этой статье попробуем разобраться, почему ООП — худшее, что было придумано в программировании, как оно стало таким популярным, почему опытные программисты...
⚙️ VarHandle.compareAndExchange()
VarHandle.compareAndExchange() позволяет атомарно обновлять значения переменной, только если текущее значение соответствует ожидаемому. Это полезно для реализации lock-free структур данных и многопоточной синхронизации.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/VarHandle.html#compareAndExchange(T,...))
👩💻
@javaquiz
VarHandle.compareAndExchange() позволяет атомарно обновлять значения переменной, только если текущее значение соответствует ожидаемому. Это полезно для реализации lock-free структур данных и многопоточной синхронизации.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/VarHandle.html#compareAndExchange(T,...))
👩💻
@javaquiz
⚙️ FileDescriptor.sync()
FileDescriptor.sync() в Java позволяет принудительно записать все несохранённые данные из буфера операционной системы на диск. Это полезно для обеспечения целостности данных в случае сбоя или отключения питания.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileDescriptor.html#sync())
👩💻
@javaquiz
FileDescriptor.sync() в Java позволяет принудительно записать все несохранённые данные из буфера операционной системы на диск. Это полезно для обеспечения целостности данных в случае сбоя или отключения питания.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileDescriptor.html#sync())
👩💻
@javaquiz
⚙️ ProcessBuilder.redirectOutput()
ProcessBuilder.redirectOutput() позволяет перенаправлять стандартный вывод (stdout) запускаемого процесса в файл или в другой поток. Это полезно при работе с внешними процессами и логированием их вывода.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ProcessBuilder.html#redirectOutput(java.io.File))
👩💻
@javaquiz
ProcessBuilder.redirectOutput() позволяет перенаправлять стандартный вывод (stdout) запускаемого процесса в файл или в другой поток. Это полезно при работе с внешними процессами и логированием их вывода.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ProcessBuilder.html#redirectOutput(java.io.File))
👩💻
@javaquiz
👍1
⚙️ Micronaut
Micronaut — это лёгкий фреймворк для микросервисов, который быстро стартует, потребляет мало памяти и поддерживает компиляцию в нативные образы через GraalVM.
🔗 Документация (https://micronaut.io/)
👩💻
@javaquiz
Micronaut — это лёгкий фреймворк для микросервисов, который быстро стартует, потребляет мало памяти и поддерживает компиляцию в нативные образы через GraalVM.
🔗 Документация (https://micronaut.io/)
👩💻
@javaquiz
⚙️ InetAddress.getByAddress()
InetAddress.getByAddress() позволяет создать IP-адрес вручную из массива байтов, без необходимости использования DNS-резолвера. Это полезно для работы с сетевыми протоколами и тестирования.
👩💻
@javaquiz
InetAddress.getByAddress() позволяет создать IP-адрес вручную из массива байтов, без необходимости использования DNS-резолвера. Это полезно для работы с сетевыми протоколами и тестирования.
👩💻
@javaquiz
⚙️ Thread.getAllStackTraces()
Thread.getAllStackTraces() позволяет получить стек вызовов всех активных потоков. Это полезно для отладки многопоточных программ и анализа зависших потоков.
👩💻
@javaquiz
Thread.getAllStackTraces() позволяет получить стек вызовов всех активных потоков. Это полезно для отладки многопоточных программ и анализа зависших потоков.
👩💻
@javaquiz
👍1
👀 Мониторинг использования памяти с MemoryMXBean
В Java можно отслеживать текущее потребление памяти JVM с помощью MemoryMXBean. Это полезно для диагностики утечек памяти и анализа работы сборщика мусора.
✔️ Использование ManagementFactory.getMemoryMXBean() позволяет получить информацию о потреблении памяти в реальном времени.
👩💻
@javaquiz
В Java можно отслеживать текущее потребление памяти JVM с помощью MemoryMXBean. Это полезно для диагностики утечек памяти и анализа работы сборщика мусора.
✔️ Использование ManagementFactory.getMemoryMXBean() позволяет получить информацию о потреблении памяти в реальном времени.
👩💻
@javaquiz
👍1
⚙️ Thread.sleep(Duration)
Thread.sleep(Duration) (Java 9+) позволяет приостанавливать выполнение потока на заданное время с использованием Duration, что делает код более читаемым и удобным.
👩💻
@javaquiz
Thread.sleep(Duration) (Java 9+) позволяет приостанавливать выполнение потока на заданное время с использованием Duration, что делает код более читаемым и удобным.
👩💻
@javaquiz
⚙️ Cleaner.register()
Cleaner.register() позволяет выполнять код очистки перед удалением объекта сборщиком мусора. Это полезно для освобождения нативных ресурсов без явного вызова close().
👩💻
@javaquiz
Cleaner.register() позволяет выполнять код очистки перед удалением объекта сборщиком мусора. Это полезно для освобождения нативных ресурсов без явного вызова close().
👩💻
@javaquiz
👍3
⚙️ LockSupport.parkNanos()
LockSupport.parkNanos() позволяет приостанавливать поток на заданное количество наносекунд, обеспечивая более точный контроль пауз по сравнению с Thread.sleep().
👩💻
@javaquiz
LockSupport.parkNanos() позволяет приостанавливать поток на заданное количество наносекунд, обеспечивая более точный контроль пауз по сравнению с Thread.sleep().
👩💻
@javaquiz
👍1
👩💻 Ваши Java-приложения под нагрузкой едва дышат? Профилирование и оптимизация кода остаются за скобками?
🎯 Курс «Java Developer. Advanced» от OTUS — это глубокое погружение в устройство JVM, байткод, сборщики мусора, профилирование и оптимизацию в облаке.
Наши эксперты-практики покажут, как выбрать GC, снять дамп памяти и обнаружить утечки, как профилировать “горячие” места, настраивать интеграцию с Prometheus & Grafana и деплоить сервисы в Kubernetes.
✔️ Вы научитесь обосновывать выбор JVM-имплементации, анализировать heap-дампы, синхронизировать потоки, использовать Reactor и неблокирующие I/O, проектировать метрики и трассировку.
➡️ Пройдите короткий тест и присоединяйтесь к группе: https://clck.ru/3QSBiT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🎯 Курс «Java Developer. Advanced» от OTUS — это глубокое погружение в устройство JVM, байткод, сборщики мусора, профилирование и оптимизацию в облаке.
Наши эксперты-практики покажут, как выбрать GC, снять дамп памяти и обнаружить утечки, как профилировать “горячие” места, настраивать интеграцию с Prometheus & Grafana и деплоить сервисы в Kubernetes.
✔️ Вы научитесь обосновывать выбор JVM-имплементации, анализировать heap-дампы, синхронизировать потоки, использовать Reactor и неблокирующие I/O, проектировать метрики и трассировку.
➡️ Пройдите короткий тест и присоединяйтесь к группе: https://clck.ru/3QSBiT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ Arrays.mismatch()
Arrays.mismatch() сравнивает два массива и возвращает индекс первого несовпадающего элемента. Это полезно для эффективного поиска различий между данными.
👩💻
@javaquiz
Arrays.mismatch() сравнивает два массива и возвращает индекс первого несовпадающего элемента. Это полезно для эффективного поиска различий между данными.
👩💻
@javaquiz
👍1
😨SQL для QA без страха: как тестировщик перестал бояться и полюбил SQL?
Хочешь перестать бояться баз данных и наконец понять, как QA работают с SQL в реальных проектах?
На занятии ты узнаешь, что такое SQL, зачем он нужен тестировщику и как с его помощью проверять данные, искать ошибки и подтверждать фиксы.
Мы разберём самые важные операции, которые нужны тестировщику каждый день:
- выборка данных через SELECT
- поиск нужных строк с WHERE
- сортировка и анализ через ORDER BY и GROUP BY
- первые шаги к обновлению данных
На практике покажем, как запросами проверять корректность данных, находить ошибки и подтверждать работу функционала.
Регистрация и подробности о курсе: https://clck.ru/3QWvNQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Хочешь перестать бояться баз данных и наконец понять, как QA работают с SQL в реальных проектах?
На занятии ты узнаешь, что такое SQL, зачем он нужен тестировщику и как с его помощью проверять данные, искать ошибки и подтверждать фиксы.
Мы разберём самые важные операции, которые нужны тестировщику каждый день:
- выборка данных через SELECT
- поиск нужных строк с WHERE
- сортировка и анализ через ORDER BY и GROUP BY
- первые шаги к обновлению данных
На практике покажем, как запросами проверять корректность данных, находить ошибки и подтверждать работу функционала.
Регистрация и подробности о курсе: https://clck.ru/3QWvNQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ ProcessHandle.descendants()
ProcessHandle.descendants() возвращает поток потомков (дочерних процессов) данного процесса. Это полезно для мониторинга и управления иерархией процессов, например, при запуске подпроцессов через ProcessBuilder.
👩💻
@javaquiz
ProcessHandle.descendants() возвращает поток потомков (дочерних процессов) данного процесса. Это полезно для мониторинга и управления иерархией процессов, например, при запуске подпроцессов через ProcessBuilder.
👩💻
@javaquiz