Полное руководство по виртуальным потокам Java
В этой статье
1. Настройка
2. Почему виртуальные потоки?
3. Как создать виртуальный поток
4. Как работают виртуальные потоки
5. Планировщик и совместное планирование
6. Закрепленные виртуальные темы
7. ThreadLocal и пулы потоков
8. Некоторые внутренности виртуальных потоков
9. Выводы
10. Приложение: Конфигурация Maven
https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
В этой статье
1. Настройка
2. Почему виртуальные потоки?
3. Как создать виртуальный поток
4. Как работают виртуальные потоки
5. Планировщик и совместное планирование
6. Закрепленные виртуальные темы
7. ThreadLocal и пулы потоков
8. Некоторые внутренности виртуальных потоков
9. Выводы
10. Приложение: Конфигурация Maven
https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
Rock the JVM
The Ultimate Guide to Java Virtual Threads
Project Loom and virtual threads: Explore how they promise to bring modern concurrency paradigms from Kotlin and Scala to Java, even while still in preview
Ну Тинькофф как всегда — предлагает крутые условия для опытных Java/Kotlin-разработчиков. Будут масштабные финтех-задачи, продукты для 30 млн пользователей и хорошая зарплата.
Еще можно работать из любого города и получить ДМС со стоматологией. Детали тут: https://v.tinkoff.ru/java_kotlin
Еще можно работать из любого города и получить ДМС со стоматологией. Детали тут: https://v.tinkoff.ru/java_kotlin
Возведение в степень
Возвести число в степень можно двумя способами:
1)простое умножение;
2)используя метод Math.pow() (двойное основание, двойной показатель степени).
Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.
Возвести число в степень можно двумя способами:
1)простое умножение;
2)используя метод Math.pow() (двойное основание, двойной показатель степени).
Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.
Java-разработчик (middle/senior)
#гибрид #удаленка #офис
Локация: Москва, Саратов, Пенза, Уфа, Нижний Новгород
Компания: Bell Integrator
Обязанности:
- развитие self-service
- подключения клиентов потребителей к BusinessAPI,
- вывод новых продуктовых методов в канале API и создание новых кроссотраслевых сервисов.
Требования:
• Высшее техническое образование
• Опыт работы с технологиями по направлению Java: Spring, Hibernate, Gradle/Maven, JMS, JAX-WS, Git, Jenkins, UML, JUnit
• Опыт работы с Postgess, Oracle DB, Openshift, Docker, Kafka
• Готовность участия в автоматизации основных бизнес-процессов финансовых организаций
• Навыки командной разработки с использованием Confluence, Jira
Откликнуться: @Alexey_Sh_HR
#гибрид #удаленка #офис
Локация: Москва, Саратов, Пенза, Уфа, Нижний Новгород
Компания: Bell Integrator
Обязанности:
- развитие self-service
- подключения клиентов потребителей к BusinessAPI,
- вывод новых продуктовых методов в канале API и создание новых кроссотраслевых сервисов.
Требования:
• Высшее техническое образование
• Опыт работы с технологиями по направлению Java: Spring, Hibernate, Gradle/Maven, JMS, JAX-WS, Git, Jenkins, UML, JUnit
• Опыт работы с Postgess, Oracle DB, Openshift, Docker, Kafka
• Готовность участия в автоматизации основных бизнес-процессов финансовых организаций
• Навыки командной разработки с использованием Confluence, Jira
Откликнуться: @Alexey_Sh_HR
3 способа мониторинга изменений лог-файлов в Java
Изучая механизм правил (англ. Rule Engine), следует учитывать следующее обстоятельство: в случае хранения правил в формате файлов необходимо контролировать конкретную директорию или файл, чтобы проверять их на предмет изменений и затем загружать.
Похожие принципы действуют и в других бизнес-сценариях, таких как динамическая загрузка конфигурационных файлов, мониторинг лог-файлов и файлов FTP (англ. File Transfer Protocol, протокол передачи файлов).
В статье мы рассмотрим 3 способа решения этой задачи.
https://nuancesprog.ru/p/16207/
Изучая механизм правил (англ. Rule Engine), следует учитывать следующее обстоятельство: в случае хранения правил в формате файлов необходимо контролировать конкретную директорию или файл, чтобы проверять их на предмет изменений и затем загружать.
Похожие принципы действуют и в других бизнес-сценариях, таких как динамическая загрузка конфигурационных файлов, мониторинг лог-файлов и файлов FTP (англ. File Transfer Protocol, протокол передачи файлов).
В статье мы рассмотрим 3 способа решения этой задачи.
https://nuancesprog.ru/p/16207/
NOP::Nuances of programming
3 способа мониторинга изменений лог-файлов в Java
Научимся отслеживать изменения файлов тремя разными способами: запланированная задача + File.lastModified, WatchService и Apache Commons-IO.
Java Чистый код: Как его писать? Лучшие практики от экспертов
Разработка программного обеспечения - сложное ремесло.
Всегда существует множество способов написания определенных частей кода или разработки новых функциональных возможностей. В конечном счете, они могут делать одно и то же, но некоторые из них могут быть на порядки более эффективными и простыми для понимания, чем другие.
Именно разработчики должны определить, какой подход будет работать лучше всего и как написать качественный чистый код.
В этой статье мы сосредоточимся на написании чистого кода на Java. Почему так важно писать легко читаемый код? Каковы лучшие практики разработки кода на Java? Продолжайте читать, чтобы узнать!
https://stratoflow.com/java-clean-code/
👉@BookJava
Разработка программного обеспечения - сложное ремесло.
Всегда существует множество способов написания определенных частей кода или разработки новых функциональных возможностей. В конечном счете, они могут делать одно и то же, но некоторые из них могут быть на порядки более эффективными и простыми для понимания, чем другие.
Именно разработчики должны определить, какой подход будет работать лучше всего и как написать качественный чистый код.
В этой статье мы сосредоточимся на написании чистого кода на Java. Почему так важно писать легко читаемый код? Каковы лучшие практики разработки кода на Java? Продолжайте читать, чтобы узнать!
https://stratoflow.com/java-clean-code/
👉@BookJava
👩💻 Java. Алгоритм генерации фрактального шума.
В этом видео рассказывается о том, что такое фрактальный шум, и для чего он применяется. В частности, речь идет о процедурной генерации изображений.
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java. Так же в процессе написания кода затрагивается алгоритм билинейной интерполяции, который необходим для реализации базового шума.
В этом видео рассказывается о том, что такое фрактальный шум, и для чего он применяется. В частности, речь идет о процедурной генерации изображений.
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java. Так же в процессе написания кода затрагивается алгоритм билинейной интерполяции, который необходим для реализации базового шума.
YouTube
Java. Алгоритм генерации фрактального шума.
В этом видео рассказывается о том, что такое фрактальный шум, и для чего он применяется. В частности, речь идет о процедурной генерации изображений.
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java.…
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java.…
Что такое bridge method?
В Java отсутствует ковариантность переопределенных методов по параметрам – их типы должны совпадать с типами параметров метода в родительском классе. Когда дженерик параметр конкретизируется в наследнике, методы с аргументами этого дженерик типа больше не совпадают в байткоде – в наследнике тип конкретный, а в родителе стертый до верхней границы.
Проблема решается простым и безопасным кастом. Компилятор генерирует новый метод, который совпадает по сигнатуре с родительским. В его теле параметр кастуется и вызов делегируется в пользовательский метод. Это и называется bridge методом.
Bridge method можно увидеть с помощью рефлекшна. Его имя совпадает с оригинальным методом, но параметр имеет тип, в который сотрется дженерик родителя. Этот метод будет помечен флагом synthetic, что значит, что он написан не программистом а компилятором.
Попытка написать такой же метод вручную приведет к ошибке компиляции.
В Java отсутствует ковариантность переопределенных методов по параметрам – их типы должны совпадать с типами параметров метода в родительском классе. Когда дженерик параметр конкретизируется в наследнике, методы с аргументами этого дженерик типа больше не совпадают в байткоде – в наследнике тип конкретный, а в родителе стертый до верхней границы.
Проблема решается простым и безопасным кастом. Компилятор генерирует новый метод, который совпадает по сигнатуре с родительским. В его теле параметр кастуется и вызов делегируется в пользовательский метод. Это и называется bridge методом.
Bridge method можно увидеть с помощью рефлекшна. Его имя совпадает с оригинальным методом, но параметр имеет тип, в который сотрется дженерик родителя. Этот метод будет помечен флагом synthetic, что значит, что он написан не программистом а компилятором.
Попытка написать такой же метод вручную приведет к ошибке компиляции.
Какую версию JDK следует использовать?
Для создания и запуска приложений Java требуются компилятор Java, библиотеки времени выполнения Java и виртуальная машина, которые реализуют спецификацию платформы Java Standard Edition («Java SE»).
OpenJDK — это эталонная реализация спецификации Java SE с открытым исходным кодом, но это только исходный код . Бинарные дистрибутивы предоставляются разными поставщиками для ряда поддерживаемых платформ. Эти дистрибутивы различаются лицензиями, коммерческой поддержкой, поддерживаемыми платформами и частотой обновлений.
Этот сайт дает независимые, но самоуверенные рекомендации.
https://whichjdk.com/
Для создания и запуска приложений Java требуются компилятор Java, библиотеки времени выполнения Java и виртуальная машина, которые реализуют спецификацию платформы Java Standard Edition («Java SE»).
OpenJDK — это эталонная реализация спецификации Java SE с открытым исходным кодом, но это только исходный код . Бинарные дистрибутивы предоставляются разными поставщиками для ряда поддерживаемых платформ. Эти дистрибутивы различаются лицензиями, коммерческой поддержкой, поддерживаемыми платформами и частотой обновлений.
Этот сайт дает независимые, но самоуверенные рекомендации.
https://whichjdk.com/
Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют
Простой ключ состоит из одного атрибута (поля). Составной - из двух и более.Потенциальный ключ - простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись.Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют
альтернативными.Разбираем float на части
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Teletype
Разбираем float на части
Я буду использовать в статье стандартное 32-х битное представление числа IEEE 754 для примера. Другие форматы, в основном отличаются...
Техника «10 тестов в день» – одна из самых эффективных в изучении Java.
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
Если бы Даша обратилась к нам — уже хвасталась бы оффером перед друзьями)
Мы в codereview помогаем junior и middle разработчикам с трудоустройством👇
🎢 Разрабатываем стратегию поиска: знаем источники вакансий, о которых многие и не слышали.
🔥 Делаем огненное резюме + оформляем LInkedIn и Github. На этом моменте шанс на оффер увеличивается на 70%.
🗣 Проводим серию Mock Interview, чтобы ты уверенно чувствовал себя на собеседовании.
👨🏫 Рекомендуем тебя партнерам. Мы сотрудничаем с OZON, Сбером, VK и другими крупными компаниями.
И самое главное: будем саппортить тебя в течение полугода, пока ты не получишь оффер.
✌️Пора переходить к активным действиям, если хочешь найти работу в этом году! Оставляй заявку на бесплатную консультацию с нашим HR или Senior разработчиком. Ждем 🙂
Мы в codereview помогаем junior и middle разработчикам с трудоустройством👇
🎢 Разрабатываем стратегию поиска: знаем источники вакансий, о которых многие и не слышали.
🔥 Делаем огненное резюме + оформляем LInkedIn и Github. На этом моменте шанс на оффер увеличивается на 70%.
🗣 Проводим серию Mock Interview, чтобы ты уверенно чувствовал себя на собеседовании.
👨🏫 Рекомендуем тебя партнерам. Мы сотрудничаем с OZON, Сбером, VK и другими крупными компаниями.
И самое главное: будем саппортить тебя в течение полугода, пока ты не получишь оффер.
✌️Пора переходить к активным действиям, если хочешь найти работу в этом году! Оставляй заявку на бесплатную консультацию с нашим HR или Senior разработчиком. Ждем 🙂
Разработчик интеграционных сервисов (middle)
#офис #удаленка
ЗП: от 270 000 до 300 000 ₽
Локация: Москва
Компания: Почта Банк
Обязанности:
- Реализовывать задачи и проекты по разработке новых и доработке существующих модулей на платформах IBM Integration Bus, IBM MQ, IBM Datapower.
- Обеспечивать контроль сроков и результатов выполненных работ, их соответствие стратегическим и архитектурным требованиям к информационным системам банка.
- Проводить анализ существующих внутренних информационно-технологических процессов и вырабатывать предложения по их оптимизации.
- Разрабатывать и согласовать внутренние технологические документы.
Требования:
- Опыт работы: 1–3 года.
- Опыт работы в сфере разработки интеграционных систем (с использованием SOAP, REST, MQ, хранимых SQL процедур) на платформе IBM Integration Bus.
- Опыт разработки с использованием инструментов для контроля версий (exp. Git, Mercurial), непрерывной интеграции (exp. Jenkins, Artifactory).
- Опыт анализа поступающих бизнес-требований, взаимодействия с заказчиками.
- Опыт оценки качества реализации проектов и разработки технической документации.
- Навыки проведения анализа существующих процессов в автоматизированных системах и выработка предложений по их оптимизации.
#офис #удаленка
ЗП: от 270 000 до 300 000 ₽
Локация: Москва
Компания: Почта Банк
Обязанности:
- Реализовывать задачи и проекты по разработке новых и доработке существующих модулей на платформах IBM Integration Bus, IBM MQ, IBM Datapower.
- Обеспечивать контроль сроков и результатов выполненных работ, их соответствие стратегическим и архитектурным требованиям к информационным системам банка.
- Проводить анализ существующих внутренних информационно-технологических процессов и вырабатывать предложения по их оптимизации.
- Разрабатывать и согласовать внутренние технологические документы.
Требования:
- Опыт работы: 1–3 года.
- Опыт работы в сфере разработки интеграционных систем (с использованием SOAP, REST, MQ, хранимых SQL процедур) на платформе IBM Integration Bus.
- Опыт разработки с использованием инструментов для контроля версий (exp. Git, Mercurial), непрерывной интеграции (exp. Jenkins, Artifactory).
- Опыт анализа поступающих бизнес-требований, взаимодействия с заказчиками.
- Опыт оценки качества реализации проектов и разработки технической документации.
- Навыки проведения анализа существующих процессов в автоматизированных системах и выработка предложений по их оптимизации.
Мы создали практическую онлайн-программу «Java-разработчик», которая позволит за 10 месяцев плотной практики стать высокооплачиваемым специалистом.
Учиться на Хекслете удобно:
✔️Все лекции доступны 24/7 на платформе — занимайтесь в удобное время
✔️ Практика прямо в браузере
✔️Наставники, которые помогут в процессе обучения, и кураторы, контролирующие прогресс
Вы также сможете принять участие в открытых проектах Хекслета на GitHub. Научитесь работать с реальными приложениями и закреплять навыки, полученные на курсе, прямо в браузере.
А самое главное — вы станете участником Карьерного трека уже во время обучения.
Пройдете вебинары, которые охватывают все темы по трудоустройству: от составления резюме и рабочих профилей до психологических аспектов собеседования и адаптации на рабочем месте. Получите рекомендации по своему первому резюме от HR-специалистов и более опытных разработчиков.
Мы заинтересованы, чтобы вы нашли первую работу. Получите полную консультацию по профессии и карьере в IT!
Учиться на Хекслете удобно:
✔️Все лекции доступны 24/7 на платформе — занимайтесь в удобное время
✔️ Практика прямо в браузере
✔️Наставники, которые помогут в процессе обучения, и кураторы, контролирующие прогресс
Вы также сможете принять участие в открытых проектах Хекслета на GitHub. Научитесь работать с реальными приложениями и закреплять навыки, полученные на курсе, прямо в браузере.
А самое главное — вы станете участником Карьерного трека уже во время обучения.
Пройдете вебинары, которые охватывают все темы по трудоустройству: от составления резюме и рабочих профилей до психологических аспектов собеседования и адаптации на рабочем месте. Получите рекомендации по своему первому резюме от HR-специалистов и более опытных разработчиков.
Мы заинтересованы, чтобы вы нашли первую работу. Получите полную консультацию по профессии и карьере в IT!
#Вопросы_с_собеседования
Что такое Map.of()?
Map.of() — это метод, представленный в Java 9, который позволяет разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.
Map.of() является улучшением по сравнению с предыдущим способом создания небольших Map с использованием конструктора класса HashMap, который может быть довольно громоздким и многословным.
Что такое Map.of()?
Map.of() — это метод, представленный в Java 9, который позволяет разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.
Map.of() является улучшением по сравнению с предыдущим способом создания небольших Map с использованием конструктора класса HashMap, который может быть довольно громоздким и многословным.
Как разработчику увеличить скорость работы и повысить качество продукта?
Научитесь проектировать высоконагруженные системы как в Big Tech и менять существующие на курсе System Design.
Всего за 4 недели вы научитесь собирать требования, оценивать нагрузку, выбирать подходящие СУБД, масштабировать системы и повышать их отзывчивость, а также создавать подсистемы для хранения данных, поиска и аналитики как своими силами, так и с помощью готовых продуктов.
Вы научитесь дизайнить сервис такси, приложение для знакомств и любую высоконагруженных систем — всё под руководством Валерия Бабушкина, Vice President, Data Science в Blockchainꓸcom.
Новый поток стартует 10 апреля!
[Зарегистрироваться]
Научитесь проектировать высоконагруженные системы как в Big Tech и менять существующие на курсе System Design.
Всего за 4 недели вы научитесь собирать требования, оценивать нагрузку, выбирать подходящие СУБД, масштабировать системы и повышать их отзывчивость, а также создавать подсистемы для хранения данных, поиска и аналитики как своими силами, так и с помощью готовых продуктов.
Вы научитесь дизайнить сервис такси, приложение для знакомств и любую высоконагруженных систем — всё под руководством Валерия Бабушкина, Vice President, Data Science в Blockchainꓸcom.
Новый поток стартует 10 апреля!
[Зарегистрироваться]
Разбираем float на части
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Teletype
Разбираем float на части
Я буду использовать в статье стандартное 32-х битное представление числа IEEE 754 для примера. Другие форматы, в основном отличаются...