🚫 Антипаттерн недели: Использование null вместо Optional
В Java часто используют null для обозначения отсутствия значения, но это может привести к NullPointerException и усложнить код.
✔️ Используйте Optional, чтобы избежать null и сделать код безопаснее.
🗣 Почему это важно?
🟢Optional явно показывает, что значение может отсутствовать.
🟢Избегает null-проверок и улучшает читаемость кода.
🟢Позволяет удобно работать с цепочками вызовов (map(), orElse()).
👩💻
@javaquiz
В Java часто используют null для обозначения отсутствия значения, но это может привести к NullPointerException и усложнить код.
✔️ Используйте Optional, чтобы избежать null и сделать код безопаснее.
🗣 Почему это важно?
🟢Optional явно показывает, что значение может отсутствовать.
🟢Избегает null-проверок и улучшает читаемость кода.
🟢Позволяет удобно работать с цепочками вызовов (map(), orElse()).
👩💻
@javaquiz
👎3
⚙️ Locale.getDefault()
Locale.getDefault() позволяет получить текущую локаль системы, что полезно для работы с форматированием дат, чисел и текста.
👩💻
@javaquiz
Locale.getDefault() позволяет получить текущую локаль системы, что полезно для работы с форматированием дат, чисел и текста.
👩💻
@javaquiz
👍2
⚙️ Thread.getState()
Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.
👩💻
@javaquiz
Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.
👩💻
@javaquiz
👍2
⚙️ ProcessHandle.isAlive()
ProcessHandle.isAlive() позволяет проверить, запущен ли процесс в данный момент. Это полезно при мониторинге фоновых процессов и управлении системными ресурсами.
👩💻
@javaquiz
ProcessHandle.isAlive() позволяет проверить, запущен ли процесс в данный момент. Это полезно при мониторинге фоновых процессов и управлении системными ресурсами.
👩💻
@javaquiz
⚙️ JLine TerminalBuilder.build (TerminalBuilder.build)()
TerminalBuilder.build() из библиотеки JLine позволяет создавать интерактивные терминалы с поддержкой ANSI-цветов, автодополнения и управления вводом. Это полезно для создания CLI-приложений с удобным интерфейсом.
🔗 Документация (https://jline.github.io/)
👩💻
@javaquiz
TerminalBuilder.build() из библиотеки JLine позволяет создавать интерактивные терминалы с поддержкой ANSI-цветов, автодополнения и управления вводом. Это полезно для создания CLI-приложений с удобным интерфейсом.
🔗 Документация (https://jline.github.io/)
👩💻
@javaquiz
⚙️ AnsiConsole.out.println()
AnsiConsole.out.println() из библиотеки Jansi позволяет выводить цветной текст в консоль, упрощая создание стилизованных CLI-приложений с поддержкой ANSI-escape последовательностей.
🔗 Документация (https://fusesource.github.io/jansi)
👩💻
@javaquiz
AnsiConsole.out.println() из библиотеки Jansi позволяет выводить цветной текст в консоль, упрощая создание стилизованных CLI-приложений с поддержкой ANSI-escape последовательностей.
🔗 Документация (https://fusesource.github.io/jansi)
👩💻
@javaquiz
⚙️ Optional.orElseThrow()
Optional.orElseThrow() — это метод, который выбрасывает исключение, если Optional пуст. В отличие от orElse(), он не требует значения по умолчанию, а вместо orElseGet() не создаёт ненужные объекты.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html#orElseThrow())
👩💻
@javaquiz
Optional.orElseThrow() — это метод, который выбрасывает исключение, если Optional пуст. В отличие от orElse(), он не требует значения по умолчанию, а вместо orElseGet() не создаёт ненужные объекты.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html#orElseThrow())
👩💻
@javaquiz
⚙️ MethodHandles.lookup().findVirtual()
MethodHandles.lookup().findVirtual() позволяет динамически получать и вызывать методы классов без рефлексии, обеспечивая лучшую производительность и безопасность. Это полезно для метапрограммирования и динамических вызовов.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.html#findVirtual(java.lang.Class,java.lang.String,java.lang.invoke.MethodType))
👩💻
@javaquiz
MethodHandles.lookup().findVirtual() позволяет динамически получать и вызывать методы классов без рефлексии, обеспечивая лучшую производительность и безопасность. Это полезно для метапрограммирования и динамических вызовов.
🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.html#findVirtual(java.lang.Class,java.lang.String,java.lang.invoke.MethodType))
👩💻
@javaquiz
👍1
ООП: худшее, что случалось с программированием
Смотреть статью ()
👩💻
@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
🎥 Открытый урок «Java Memory Model: как синхронизировать потоки».
🗓 20 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
Что будет на вебинаре:
✔️ Схематичное устройство памяти и взаимодействие с ядрами процессора.
✔️ Проблемы многопоточности: memory ordering, data race, race condition.
✔️ Правило happens-before и его практическое применение.
✔️ Какие гарантии дают synchronized и volatile.
В результате вебинара вы:
- Научитесь распознавать проблемный многопоточный код и понимать, где применять synchronized и volatile для корректной синхронизации.
Кому будет интересно:
Java-разработчикам и инженерам, работающим с многопоточностью и производительностью.
🔗 Ссылка на регистрацию: https://clck.ru/3QCBSA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 20 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
JMM определяет, как JVM видит память: что наблюдают потоки и где нужна синхронизация — база корректного многопоточного кода.
Что будет на вебинаре:
В результате вебинара вы:
- Научитесь распознавать проблемный многопоточный код и понимать, где применять synchronized и volatile для корректной синхронизации.
Кому будет интересно:
Java-разработчикам и инженерам, работающим с многопоточностью и производительностью.
🔗 Ссылка на регистрацию: https://clck.ru/3QCBSA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ 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
Кризис в диджитал
Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.
Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.
Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.
В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»
🔴 Там 30 файлов, которые помогают выстроить управление, аналитику и внутренние процессы:
– Мотивация сотрудников в IT,
– Контроль сроков диджитал-проекта,
– Шаблон CSI,
– Фреймворк для проведения исследований через ИИ,
– Как создать продающее КП.
📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
А чтобы добавить немного азарта — среди подписавшихся разыграют:
🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.
Как участвовать:
1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте
🗓 Итоги — 25 ноября.
Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.
Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.
Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.
В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»
– Мотивация сотрудников в IT,
– Контроль сроков диджитал-проекта,
– Шаблон CSI,
– Фреймворк для проведения исследований через ИИ,
– Как создать продающее КП.
📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
А чтобы добавить немного азарта — среди подписавшихся разыграют:
🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.
Как участвовать:
1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте
🗓 Итоги — 25 ноября.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🎉1