Memory Fences и volatile в Java: низкоуровневые гарантии порядка памяти
Сегодня рассмотрим интересную тему для тех, кто сталкивается с многопоточностью в Java – это управление порядком памяти. Базовых инструментов синхронизации, например как synchronized или блокировки, порой недостаточно. Именно здесь могут помочь низкоуровневые механизмы, такие как Memory Fences и ключевое слово volatile.
Эти инструменты позволяют контролировать порядок выполнения операций с памятью. В этой статье мы рассмотрим, как volatile влияет на поведение программы, что такое Memory Fences, и как они могут помочь в сложных ситуациях с потоками.
Читать статью
Сегодня рассмотрим интересную тему для тех, кто сталкивается с многопоточностью в Java – это управление порядком памяти. Базовых инструментов синхронизации, например как synchronized или блокировки, порой недостаточно. Именно здесь могут помочь низкоуровневые механизмы, такие как Memory Fences и ключевое слово volatile.
Эти инструменты позволяют контролировать порядок выполнения операций с памятью. В этой статье мы рассмотрим, как volatile влияет на поведение программы, что такое Memory Fences, и как они могут помочь в сложных ситуациях с потоками.
Читать статью
Teletype
Memory Fences и volatile в Java: низкоуровневые гарантии порядка памяти
Привет!
👍1🔥1
Опыт отладки хитрой утечки прямой памяти
Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов в реальном времени. Всё это основано на потоковых конвейерах обработки данных, созданных с помощью на Apache Flink. Доступность заданий (job) Flink для пользователей находится на уровне 99-го перцентиля. Но время от времени некоторые задачи (task) «валятся» под ударами неприятных ошибок, вызванных утечками прямой памяти (Out-Of-Memory, OOM), возникающими сразу в нескольких операторах.
Читать статью
Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов в реальном времени. Всё это основано на потоковых конвейерах обработки данных, созданных с помощью на Apache Flink. Доступность заданий (job) Flink для пользователей находится на уровне 99-го перцентиля. Но время от времени некоторые задачи (task) «валятся» под ударами неприятных ошибок, вызванных утечками прямой памяти (Out-Of-Memory, OOM), возникающими сразу в нескольких операторах.
Читать статью
Teletype
Опыт отладки хитрой утечки прямой памяти
Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов...
🔥1
Путешествие к центру Spring Security
Я вас категорически приветствую! В этой статье я хотел бы поглубже разобрать такую штуку как Spring Security, а в частности Security фильтры, как они работают в целом и как объединяются в цепочку ApplicationFilterChain.
Скажу сразу, эта статья является скорее финальной точкой моего ночного дебагинга кишочков Spring Security, а также одной из основных целей этой статьи является закрепление знаний, которые я получил. Но это не отменяет тот факт, что статья кому-то (и я уверен что многим) будет полезна. Поехали.
Читать статью
Я вас категорически приветствую! В этой статье я хотел бы поглубже разобрать такую штуку как Spring Security, а в частности Security фильтры, как они работают в целом и как объединяются в цепочку ApplicationFilterChain.
Скажу сразу, эта статья является скорее финальной точкой моего ночного дебагинга кишочков Spring Security, а также одной из основных целей этой статьи является закрепление знаний, которые я получил. Но это не отменяет тот факт, что статья кому-то (и я уверен что многим) будет полезна. Поехали.
Читать статью
Teletype
Путешествие к центру Spring Security
Я вас категорически приветствую! В этой статье я хотел бы поглубже разобрать такую штуку как Spring Security, а в частности Security...
👍4🔥3
Разбираем float на части
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать статью
Teletype
Разбираем float на части
Я буду использовать в статье стандартное 32-х битное представление числа IEEE 754 для примера. Другие форматы, в основном отличаются...
Создаем байт-код для JVM без компилятора
Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.
Читать статью
Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.
Читать статью
Teletype
Создаем байт-код для JVM без компилятора
Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами...
🔥2
Отладка API Java Message Service с использованием Lightrun
API Java Message Service (JMS) был разработан Sun Microsystems во времена Java EE. Он предоставляет простые абстракции для обмена сообщениями, в том числе производителя сообщений (Message Producer), потребителя сообщений (Message Consumer) и т.д.
Читать статью
API Java Message Service (JMS) был разработан Sun Microsystems во времена Java EE. Он предоставляет простые абстракции для обмена сообщениями, в том числе производителя сообщений (Message Producer), потребителя сообщений (Message Consumer) и т.д.
Читать статью
Teletype
Отладка API Java Message Service с использованием Lightrun
API Java Message Service (JMS) был разработан Sun Microsystems во времена Java EE. Он предоставляет простые абстракции для обмена...
👍1
Сопоставление с шаблоном в Java — 5 примеров для занятых разработчиков
Будучи занятым разработчиком, трудно следить за новыми возможностями и глубоко понимать, где и как их можно использовать.
В этой статье блога я расскажу о 5 местах, где вы можете использовать сопоставление с шаблоном в Java, не погружаясь в тонкие детали. Когда вы решите, что готовы к дальнейшему изучению, посмотрите ссылки, включенные в эту статью.
Читать статью
Будучи занятым разработчиком, трудно следить за новыми возможностями и глубоко понимать, где и как их можно использовать.
В этой статье блога я расскажу о 5 местах, где вы можете использовать сопоставление с шаблоном в Java, не погружаясь в тонкие детали. Когда вы решите, что готовы к дальнейшему изучению, посмотрите ссылки, включенные в эту статью.
Читать статью
Teletype
Сопоставление с шаблоном в Java — 5 примеров для занятых разработчиков
Будучи занятым разработчиком, трудно следить за новыми возможностями и глубоко понимать, где и как их можно использовать.
👍2🔥2
Шаблон проектирования: Chain of Responsibility
Данная статья будет полезна начинающим Java разработчиком понять зачем нужен шаблон проектирования «Цепочка ответственности» и как его можно использовать на примерах.
Итак начнем с самого начала. Основная суть данного шаблона: связывание объектов‑получателей в цепочку и передача запроса по ней.
Читать статью
Данная статья будет полезна начинающим Java разработчиком понять зачем нужен шаблон проектирования «Цепочка ответственности» и как его можно использовать на примерах.
Итак начнем с самого начала. Основная суть данного шаблона: связывание объектов‑получателей в цепочку и передача запроса по ней.
Читать статью
Teletype
Шаблон проектирования: Chain of Responsibility
Всем привет.
🔥3
Продвинутый GraphQL со Spring Boot
В этой статье вы узнаете, как использовать Spring for GraphQL в своем приложении Spring Boot.
Spring for GraphQL — относительно новый проект. Версия 1.0 была выпущена несколько месяцев назад. До этого релиза нам приходилось подключать сторонние библиотеки, чтобы упростить реализацию GraphQL в приложении Spring Boot.
Читать статью
В этой статье вы узнаете, как использовать Spring for GraphQL в своем приложении Spring Boot.
Spring for GraphQL — относительно новый проект. Версия 1.0 была выпущена несколько месяцев назад. До этого релиза нам приходилось подключать сторонние библиотеки, чтобы упростить реализацию GraphQL в приложении Spring Boot.
Читать статью
Teletype
Продвинутый GraphQL со Spring Boot
В этой статье вы узнаете, как использовать Spring for GraphQL в своем приложении Spring Boot.
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 Корпоративная архитектура и язык, который всё объясняет 🔹
Управлять сложной организацией становится проще, когда есть универсальный язык. Такой язык — Archimate. Он помогает формализовать архитектуру, говорить с бизнесом и IT на одном уровне.
📅 19 ноября в 20:00 МСК приглашаем на открытый урок, где вы узнаете:
✅ как Archimate облегчает создание и анализ архитектурных моделей
✅ ключевые элементы стандарта и их связи
✅ практические навыки связывания элементов в осмысленные схемы
Используют этот стандарт ведущие архитекторы и аналитики для превращения хаоса процессов в управляемую структуру. После урока вы будете знать, как применять Archimate в своей работе — без лишней теории, с упором на практику.
🚀 В преддверии старта курса «Архитектура корпорации. TOGAF 10» — специальная возможность освоить моделирование, понятное бизнесу и IT.
Регистрируйтесь сейчас: https://vk.cc/cRgLNw
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Управлять сложной организацией становится проще, когда есть универсальный язык. Такой язык — Archimate. Он помогает формализовать архитектуру, говорить с бизнесом и IT на одном уровне.
📅 19 ноября в 20:00 МСК приглашаем на открытый урок, где вы узнаете:
✅ как Archimate облегчает создание и анализ архитектурных моделей
✅ ключевые элементы стандарта и их связи
✅ практические навыки связывания элементов в осмысленные схемы
Используют этот стандарт ведущие архитекторы и аналитики для превращения хаоса процессов в управляемую структуру. После урока вы будете знать, как применять Archimate в своей работе — без лишней теории, с упором на практику.
🚀 В преддверии старта курса «Архитектура корпорации. TOGAF 10» — специальная возможность освоить моделирование, понятное бизнесу и IT.
Регистрируйтесь сейчас: https://vk.cc/cRgLNw
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍2🔥2
Java на стероидах, или опыт работы с Jmix
Как после привычного Spring за месяц сделать сайт с платформой быстрой разработки Jmix. Коротко о технологии, особенностях, возникающих в процессе вопросах и ответах на них.
Читать статью
Как после привычного Spring за месяц сделать сайт с платформой быстрой разработки Jmix. Коротко о технологии, особенностях, возникающих в процессе вопросах и ответах на них.
Читать статью
Teletype
Java на стероидах, или опыт работы с Jmix
Как после привычного Spring за месяц сделать сайт с платформой быстрой разработки Jmix. Коротко о технологии, особенностях, возникающих...
🔥2❤1
С выходом Java 25 LTS платформа снова изменилась: от синтаксиса и потоков до инструментов миграции.
На Podlodka Java Crew (17–21 ноября) обсудят, как новые фичи влияют на код, и как не потерять стабильность при обновлениях.
📌 В программе:
• как упрощённые исходники и «простые» методы меняют подход к разработке;
• где виртуальные потоки реально вредят производительности;
• что нового готовит Spring Boot 4 и как готовиться к переходу без боли;
• как автоматизировать апдейты и держать код в актуальном состоянии.
💡 Всё с реальными кейсами, метриками и инженерными решениями.
🔗Подробности и билеты: https://podlodka.io/javacrew
На Podlodka Java Crew (17–21 ноября) обсудят, как новые фичи влияют на код, и как не потерять стабильность при обновлениях.
📌 В программе:
• как упрощённые исходники и «простые» методы меняют подход к разработке;
• где виртуальные потоки реально вредят производительности;
• что нового готовит Spring Boot 4 и как готовиться к переходу без боли;
• как автоматизировать апдейты и держать код в актуальном состоянии.
💡 Всё с реальными кейсами, метриками и инженерными решениями.
🔗Подробности и билеты: https://podlodka.io/javacrew
❤1🔥1
Заменят ли потоки данных циклы в Java?
Выпуск версии Java 8 стал знаменательным событием в истории Java. В нем были представлены потоки данных (англ. Streams) и лямбда-выражения, которые сейчас широко применяются. Если вы не знакомы с потоками данных или никогда не слышали о них, то ничего страшного. В большинстве случаев можно обойтись без них, задействуя циклы.
И зачем тогда, спрашивается, нужны потоки данных? Есть ли у них преимущества перед циклами? Могут ли они их заменить? В статье мы изучим соответствующий код, сравним производительность и посмотрим, смогут ли потоки данных стать полноценной заменой циклов.
Читать статью
Выпуск версии Java 8 стал знаменательным событием в истории Java. В нем были представлены потоки данных (англ. Streams) и лямбда-выражения, которые сейчас широко применяются. Если вы не знакомы с потоками данных или никогда не слышали о них, то ничего страшного. В большинстве случаев можно обойтись без них, задействуя циклы.
И зачем тогда, спрашивается, нужны потоки данных? Есть ли у них преимущества перед циклами? Могут ли они их заменить? В статье мы изучим соответствующий код, сравним производительность и посмотрим, смогут ли потоки данных стать полноценной заменой циклов.
Читать статью
Teletype
Заменят ли потоки данных циклы в Java?
Выпуск версии Java 8 стал знаменательным событием в истории Java. В нем были представлены потоки данных (англ. Streams)...
🔥1
Перестаём бояться генерировать байт-код
Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия, доступная только продвинутым разработчикам с особенно крутым опытом. На самом деле, я считаю такую точку зрения ошибочной. JVM устроена гораздо проще, чем CPU; она оперирует такими высокоуровневыми понятиями как классы, интерфейсы, методы, а не просто лопатит байты в памяти. В отличие от CPU, который легко уронить криво сгенерированным машинным кодом, JVM заботливо отверифицирует любой байт-код и в общем не даст выстрелить в ногу.
Но с чего начать погружение в байт-кодную магию? В сети есть некоторое количество туториалов по этому вопросу. Как мне кажется, они либо показывают слишком простые случаи, от которых непонятно, как перейти к чему-то более интересному, либо очень основательные и требуют вникать в теорию, собирать целиком картину в голове по кусочкам. Я хотел бы попробовать внести свой вклад в эту тему — надеюсь, у меня получится показать, как можно побороть первый страх и написать что-то похожее на реалистичный сценарий без особого вникания в теорию на первом этапе.
Читать статью
Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия, доступная только продвинутым разработчикам с особенно крутым опытом. На самом деле, я считаю такую точку зрения ошибочной. JVM устроена гораздо проще, чем CPU; она оперирует такими высокоуровневыми понятиями как классы, интерфейсы, методы, а не просто лопатит байты в памяти. В отличие от CPU, который легко уронить криво сгенерированным машинным кодом, JVM заботливо отверифицирует любой байт-код и в общем не даст выстрелить в ногу.
Но с чего начать погружение в байт-кодную магию? В сети есть некоторое количество туториалов по этому вопросу. Как мне кажется, они либо показывают слишком простые случаи, от которых непонятно, как перейти к чему-то более интересному, либо очень основательные и требуют вникать в теорию, собирать целиком картину в голове по кусочкам. Я хотел бы попробовать внести свой вклад в эту тему — надеюсь, у меня получится показать, как можно побороть первый страх и написать что-то похожее на реалистичный сценарий без особого вникания в теорию на первом этапе.
Читать статью
Teletype
Перестаём бояться генерировать байт-код
Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия...
🔥2
Скачайте бесплатно пошаговый гайд по технической подготовке интернет-магазинов к «Чёрной пятнице»🛠
Секунда задержки во время распродажи отнимает 7% конверсии. А простой даже в несколько минут и вовсе равен катастрофе не только для магазина, но и для репутации разработчиков.
Если вам кажется, что к «Чёрной пятнице» всё готово, то вспомните, что было на 11.11? Судя по запросам к тестировщикам «Лаборатории качества», не всем удалось пройти пиковые нагрузки без проблем: товары из корзины не оплачивались, промокоды обнулялись, мобильная версия и API неприятно удивляли.
🚀Чтобы помочь всем джавистам, которые работают с e-com проектами, мы объединили опыт тестирования (от инфраструктуры до UX и безопасности) в один практический гайд на 14 страниц. Да, информации много, но она максимально полезная, структурированная и прикладная.
Поверьте нашему опыту: если что‑то может сломаться, то оно обязательно сломается в «Чёрную пятницу». Причём именно там, где больше всего денег. Пиковые нагрузки беспощадны – не рискуйте!
🔗Скачайте гайд бесплатно прямо сейчас в нашем телеграм‑боте. Там есть и другие полезные гайды по тестированию и разработке. Заходите!
#реклама
О рекламодателе
erid: 2W5zFH6Ww3W
Секунда задержки во время распродажи отнимает 7% конверсии. А простой даже в несколько минут и вовсе равен катастрофе не только для магазина, но и для репутации разработчиков.
Если вам кажется, что к «Чёрной пятнице» всё готово, то вспомните, что было на 11.11? Судя по запросам к тестировщикам «Лаборатории качества», не всем удалось пройти пиковые нагрузки без проблем: товары из корзины не оплачивались, промокоды обнулялись, мобильная версия и API неприятно удивляли.
🚀Чтобы помочь всем джавистам, которые работают с e-com проектами, мы объединили опыт тестирования (от инфраструктуры до UX и безопасности) в один практический гайд на 14 страниц. Да, информации много, но она максимально полезная, структурированная и прикладная.
Поверьте нашему опыту: если что‑то может сломаться, то оно обязательно сломается в «Чёрную пятницу». Причём именно там, где больше всего денег. Пиковые нагрузки беспощадны – не рискуйте!
🔗Скачайте гайд бесплатно прямо сейчас в нашем телеграм‑боте. Там есть и другие полезные гайды по тестированию и разработке. Заходите!
#реклама
О рекламодателе
erid: 2W5zFH6Ww3W
О SOLID с примерами их использования в JDK
В данной статье Eric J. Bruno коротко рассказывает о принципах SOLID, приводя подходящие примеры их применения из JDK.
Понимание SOLID — обязанность любого Java-разработчика, т.к. их правильное использование способствует написанию понятного и поддерживаемого кода.
Читать статью
В данной статье Eric J. Bruno коротко рассказывает о принципах SOLID, приводя подходящие примеры их применения из JDK.
Понимание SOLID — обязанность любого Java-разработчика, т.к. их правильное использование способствует написанию понятного и поддерживаемого кода.
Читать статью
🔥3👍2