UI Profiling: обзор возможностей тестирования производительности приложений и инструменты оптимизации
Никто не любит тормозящие приложения, верно? Готовы избавить мир от них?
Ждём вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:
- какие приложения пользователи считают «тормозящими»;
- последовательный путь по поиску и оптимизации проблемных мест;
- как выполнять мониторинг производительности на устройствах пользователей.
Спикер Артур Бадретдинов — Team Lead at Squire Technologies, ведущий разработчик в американском стартапе.
Встречаемся в преддверии старта курса «Android Developer. Professional». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.
☕ Java Academy - обучающий канал для разработчиков в Telegram, посвященный Java!
По контенту:
1. Собрали для вас лучшие бесплатные курсы по Java 2024 года.
2. 1930 вопросов с собесов с разбором от Senior разработчика.
3. Пишем пет-проекты на JAVA - лучшая практика.
А здесь цела папка курируемых Java ресурсов для разработчиков
Подписывайтесь, такие знания в 2024-м году на вес золота: @javatg
Метод valueOf()
Метод valueOf()
возвращает соответствующий числовой объект, содержащий значение переданного аргумента, простыми словами — преобразует в нужный тип данных. Аргумент можно преобразовать в int, double, float
и другие типы данных, например, можно преобразовать строку в число.
Метод valueOf() в Java является статическим. Он может принимать два аргумента, где один является строкой и другой является системой счисления.
Метод Character.toString()
Метод Character.toString() — возвращает строковый объект (String) и представляет указанное char-значение как одну символьную строку.
ИЩЕМ 10 ЧЕЛОВЕК, КОТОРЫХ НАУЧИМ ПРОГРАММИРОВАТЬ НА PYTHON. ПОКА ТЫ НЕ НАЙДЕШЬ РАБОТУ РАЗРАБОТЧИКОМ, МЫ ОПЛАЧИВАЕМ ОБУЧЕНИЕ ЗА ТЕБЯ!
Zerocoder. Мы обучили программированию более 8 000 человек и теперь открыли возможность входа в IT для всех — оплачиваем твое обучение до тех пор, пока ты не найдешь работу.
Курс рассчитан на новичков, поэтому даже если ты никогда не программировал и не работал в IT, у тебя получится освоить перспективную профессию, работать в престижных IT-компаниях, купить квартиру по льготной ипотеке под 6% и получить отсрочку от армии.
Во время прохождения курса ты освоишь самый популярный язык программирования Python и основные фреймворки, сделаешь 18 PET-проектов, создашь портфолио и резюме, получишь свою первую работу.
Кликай на ссылку и узнавай подробности, заявки принимаются только до конца этой недели. По акции доступно всего 10 мест.
erid: LjN8KFSgQ
ООО Зерокодер, ИНН 9715401631
Примитивные типы
Компьютеры работают в основном с числами, поэтому были придуманы несколько ключевых слов, которые обозначают разные типы данных, по-другому их называют примитивные типы данных. Так как компьютеры развивались постепенно, то на разных этапах своей жизни они могли хранить число, которое не выше разряда процессора, на котором они работают. Поэтому появилась такая битовая таблица различных чисел.
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Регистрируйтесь по ссылке: https://telega.in/n/seniorjavist
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
#вопросы_с_собеседований
Что выведет эта программа?
Ответ:
Первый оператор вывода напечатает «false», второй — «true». Так происходит из-за ошибки округления чисел с плавающей точкой. Только степени двойки можно точно представить в двоичной записи. Числа, которые не являются степенями двойки, округляются так, чтобы поместиться в ограниченное количество битов. В этом примере Java использует использует тип double, поэтому для представления десятичных чисел доступно только 64 бита. Следовательно, 0.1*3 не будет равняться 0.3.
➡️ MapStruct
MapStruct — это библиотека для автоматического преобразования данных между Java объектами. Она упрощает создание мапперов и конвертеров, минимизируя необходимость ручного написания кода для преобразования данных между различными слоями приложения.
🗣 MapStruct — это отличный инструмент для разработчиков, которые хотят автоматизировать преобразование данных и улучшить читаемость и поддержку кода. Если вам нужно легко маппировать объекты без лишнего шаблонного кода, MapStruct поможет вам достичь этого.
🔗 Ссылочка на доку
➡️ Objenesis
Objenesis — это Java-библиотека, которая позволяет создавать объекты классов без вызова их конструкторов. Это особенно полезно в тех случаях, когда нужно создать объект для сериализации, прокси или в ситуациях, когда конструктор имеет побочные эффекты, которые следует избегать.
🗣 Objenesis — это отличный инструмент для тех, кто работает с фреймворками, связанными с сериализацией или AOP, и нуждается в возможности создания объектов без вызова их конструкторов. Если вы сталкивались с проблемами при создании экземпляров классов с приватными конструкторами или сложной инициализацией, Objenesis может стать вашим незаменимым помощником.
🔗 Ссылочка на доку
Сочи, встречаемся 12 сентября на митапе IT Talk by Sber! ⛱
Must visit событие для разработчиков, тестировщиков, инженеров по сопровождению и владельцев продуктов. Ведь мы собрали экспертов из разных команд и городов, чтобы рассказать об автоматизации работы при помощи AI-ассистента, инженерных процессах и кейсах крупных IT-компаний.
Спикеры и темы 👇
✔️ Владимир Ярославский, Сбер: «Giga IDE: зачем Сберу собственная платформа разработки?»
✔️ Анатолий Шипов, СберТех: «GitVerse – дом для вашего кода»
✔️ Максим Вишневский, Циан: «Функциональные тесты: развёртывание, интеграция в CI и сбор покрытия»
Место сбора: конференц-зал «Панорама» отеля SEA GALAXY, ул. Черноморская, 4.
Обязательно регистрируйтесь и приходите 12 сентября в 18:30 – не пожалеете! 😉
Нижний Новгород, встречай Сезон кода — большой ИТ-фестиваль
Фестиваль для опытных специалистов в Data, .NET, Java и Python. Время собраться всем ИТ-сообществом, обменяться опытом и просто повеселиться. В программе доклады, знакомство с коллегами, ИТ-квиз, настольные игры и живая музыка.
Успейте зарегистрироваться на Сезон кода
📍Пройдет в Нижнем Новгороде 14 сентября
Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673
➡️ Использование MethodHandles для эффективного вызова методов в Java
MethodHandles предоставляют низкоуровневый доступ к методам, позволяя динамически вызывать их с минимальными накладными расходами.
🗣️ Этот подход может быть полезен для высокопроизводительных приложений, где отражение (reflection) слишком медленное.
•
MethodHandles.Lookup используется для поиска методов в классе. В примере мы находим метод substring класса String.•
MethodHandle позволяет вызывать метод с минимальными накладными расходами по сравнению с традиционным отражением (reflection), что делает его более производительным.•
В отличие от рефлексии, MethodHandles могут использоваться для более эффективного вызова методов, что полезно в динамических и высокопроизводительных приложениях.
Читать полностью…
Использование метода sun.misc.Unsafe для низкоуровневой работы с памятью в Java
Хотя использование sun.misc.Unsafe не рекомендуется и является небезопасным, он предоставляет уникальные возможности для работы с памятью на низком уровне, аналогично тому, как это делается в языках, таких как C или C++.• sun.misc.Unsafe
предоставляет методы для низкоуровневых операций с памятью, которые обычно недоступны в Java.•
Доступ к Unsafe возможен только через рефлексию, так как он скрыт от обычных разработчиков.•
Этот подход обычно используется в высокопроизводительных библиотеках и внутри JVM, но не рекомендуется для обычных приложений.
➡️ Javassist
Javassist (Java Programming Assistant) — это библиотека для динамической обработки классов на уровне байт-кода. Она позволяет разработчикам изменять существующие классы или создавать новые во время выполнения программы, что может быть полезно для создания прокси, выполнения аспектно-ориентированного программирования (AOP) и других задач, связанных с динамическим изменением поведения кода.
🗣️ Javassist — отличный инструмент для тех, кто хочет глубже погрузиться в работу с байт-кодом и динамическим модифицированием классов. Если вам нужны гибкие средства для работы с классами во время выполнения, Javassist может стать вашим надежным помощником.
🔗 Ссылочка на доку
➡️ Javalin — лёгкий и универсальный фреймворк для создания веб-приложений
Javalin — это лёгкий веб-фреймворк для Java и Kotlin, который предоставляет минималистичный и гибкий API для создания веб-приложений и RESTful сервисов. Он вдохновлён фреймворками, такими как Express.js и Koa.js, и предлагает простоту и удобство использования.
🗣 Javalin — отличный выбор, если вам нужно быстро создать веб-приложение или API на Java или Kotlin без лишней сложности. Этот фреймворк подойдёт для создания как небольших, так и масштабируемых приложений.
🔗 Ссылочка на доку
➡️ Jooby — Легковесный веб-фреймворк для Java
Jooby — это модульный веб-фреймворк для Java, который упрощает создание современных веб-приложений. Он поддерживает множество популярных библиотек и инструментов, таких как MVC, WebSockets, и многие другие, предоставляя простой интерфейс для разработки.
🗣 Jooby — это отличный выбор для разработчиков, которые ищут простой и расширяемый веб-фреймворк с хорошей производительностью.
🔗 Ссылочка на доку
👩💻 Как правильно использовать области действия переменных в Java и как этот навык поможет вам при подготовке к сертификации?
🔌 Ждем вас на открытом вебинаре 16 сентября в 20:00 мск.
Где мы разберем:
✔️ обзор областей действия переменных;
✔️ практические примеры: как области действия переменных влияют на поведение программы и как их правильно использовать;
✔️ подготовку к сертификации: как знание областей действия переменных может помочь вам при подготовке к экзаменам, таким как OCAJP.
Урок будет полезен для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.
🎙 Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.
Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!
🎁 Подарок личная консультация с руководителем курса Дмитрием Коганом, всем купившим курс после открытого урока.
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAB0Yz
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
Чем различаются JRE, JVM и JDK?
TL;DR: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
☕️ JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
☕️ JRE, Java Runtime Environment (Среда времени выполнения Java) — минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
☕️ JDK, Java Development Kit (Комплект разработки на Java) — JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
substring
Метод substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент.
#вопросы_с_собеседований
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
#вопросы_с_собеседований
Что выведет эта программа?
Ответ:
Программа напечатает “num1 == num2”. Если мы сравниваем две ссылки на объекты с помощью ==, значение всегда будет «false». Но в этом примере переменные num1 и num2 автоупаковываются (autoboxing) из-за Integer-кэширования. Вот почему num1 == num2 возвращает значение «true». Не забудьте, что Integer-кэширование актуально только для значений от -128 до 127.
#вопросы_с_собеседований
Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.
В примере возникает ошибка, потому что Collections.emptyList()
возвращает пустой список без возможности добавления элементов.
👩💻 Как эффективно использовать OAuth 2 в Spring-приложениях?
Ждем вас на открытом вебинаре 13 сентября в 20:00 мск.
где мы разберем:
✔️ что такое OAuth 2 и как он работает в Spring-приложениях;
✔️ какие роли и процессы задействованы в фреймворке авторизации;
✔️ его расширения;
✔️ ответы на все возникающие вопросы.
Урок идеально подходит для Java- и Kotlin-разработчиков.
Встречаемся в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!
📌 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAman9Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ JCTools
JCTools (Java Concurrency Tools) — это библиотека, специализирующаяся на высокопроизводительных структурах данных для многопоточного программирования в Java. Она предоставляет коллекции и утилиты, оптимизированные для работы с низкими задержками и высокой пропускной способностью, что делает её отличным выбором для разработчиков, работающих с системами реального времени или высоконагруженными сервисами.
🗣 JCTools — отличный выбор для тех, кто работает с многопоточностью и хочет повысить производительность своих приложений. Если вам нужно добиться минимальных накладных расходов в многопоточном окружении, JCTools может стать важным компонентом вашего проекта.
🔗 Ссылочка на доку
⚙️ Deadlocks
Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно.
➡️ Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.
✔️ Чтобы избежать deadlock, можно использовать один из следующих подходов:•
Всегда захватывайте блокировки в одном и том же порядке во всех методах. Например, сначала lock1, затем lock2•
Используйте ReentrantLock с таймаутом вместо synchronized, чтобы избежать бесконечного ожидания.
➡️ Оптимизация производительности через уменьшение количества объектов с использованием intern() для строк
В Java строки неизменяемы, и часто создание большого количества строк, содержащих одинаковые значения, приводит к избыточному использованию памяти.
⚙️ Метод intern()
позволяет сократить количество дубликатов строк, оптимизируя использование памяти, за счет хранения только одной копии каждой уникальной строки в пуле строк.
«Привет, как дела?» — сразу летишь во френдзону
Это будет продолжаться ВЕЧНО, пока не начнешь читать канал ТВОРЧЕСТВО ЧУВСТВ, где узнаешь:
— грамотно общаться с девушками и доводить до секса
— строить прочные отношения, где девушка ласковая и покорная, а ты — лидер
— сформировать базу мужских принципов, которые помогут во всех направлениях в жизни
Главное про качественные отношения тут: t.me/+2PeNv_5pb8djMDdi
👩💻 Как эффективно использовать Java Collections для хранения, извлечения и обработки данных?
Ждем вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:
✔️ обзор структуры коллекций и их основных методов;
✔️ особенности различных реализаций коллекций;
✔️ примеры применения коллекций для решения практических задач.
Урок идеально подходит для тех, кто начинает изучать Java или хочет углубить свои знания.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAgVyXРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ Использование Optional.or для безопасного предоставления альтернативных значенийOptional.or
— метод, представленный в Java 9, позволяет безопасно предоставить альтернативное значение, если исходное значение отсутствует (null).
🗣️ Это полезно для обработки значений, которые могут отсутствовать, без необходимости использовать условные конструкции.
optionalValue
пустое (null), метод or вернет Optional с альтернативным значением "Значение по умолчанию". Это делает код более читаемым и защищает от потенциальных ошибок, связанных с null.
Читать полностью…