seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

substring

Метод substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какими свойствами обладает порождаемое 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.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что выведет эта программа?

Ответ:
Программа напечатает “num1 == num2”. Если мы сравниваем две ссылки на объекты с помощью ==, значение всегда будет «false». Но в этом примере переменные num1 и num2 автоупаковываются (autoboxing) из-за Integer-кэширования. Вот почему num1 == num2 возвращает значение «true». Не забудьте, что Integer-кэширование актуально только для значений от -128 до 127.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.

В примере возникает ошибка, потому что Collections.emptyList() возвращает пустой список без возможности добавления элементов.

Читать полностью…

Senior Java Developer

👩‍💻 Как эффективно использовать OAuth 2 в Spring-приложениях?

Ждем вас на открытом вебинаре 13 сентября в 20:00 мск.

где мы разберем:

✔️ что такое OAuth 2 и как он работает в Spring-приложениях;
✔️ какие роли и процессы задействованы в фреймворке авторизации;
✔️ его расширения;
✔️ ответы на все возникающие вопросы.

Урок идеально подходит для Java- и Kotlin-разработчиков.

Встречаемся в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!

📌 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAman9

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Senior Java Developer

➡️ JCTools

JCTools (Java Concurrency Tools) — это библиотека, специализирующаяся на высокопроизводительных структурах данных для многопоточного программирования в Java. Она предоставляет коллекции и утилиты, оптимизированные для работы с низкими задержками и высокой пропускной способностью, что делает её отличным выбором для разработчиков, работающих с системами реального времени или высоконагруженными сервисами.

🗣 JCTools — отличный выбор для тех, кто работает с многопоточностью и хочет повысить производительность своих приложений. Если вам нужно добиться минимальных накладных расходов в многопоточном окружении, JCTools может стать важным компонентом вашего проекта.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

⚙️ Deadlocks

Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно.

➡️ Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.

✔️ Чтобы избежать deadlock, можно использовать один из следующих подходов:

Всегда захватывайте блокировки в одном и том же порядке во всех методах. Например, сначала lock1, затем lock2
Используйте ReentrantLock с таймаутом вместо synchronized, чтобы избежать бесконечного ожидания.

Читать полностью…

Senior Java Developer

➡️ Оптимизация производительности через уменьшение количества объектов с использованием intern() для строк

В Java строки неизменяемы, и часто создание большого количества строк, содержащих одинаковые значения, приводит к избыточному использованию памяти.

⚙️ Метод intern() позволяет сократить количество дубликатов строк, оптимизируя использование памяти, за счет хранения только одной копии каждой уникальной строки в пуле строк.

Читать полностью…

Senior Java Developer

«Привет, как дела?» — сразу летишь во френдзону

Это будет продолжаться ВЕЧНО, пока не начнешь читать канал ТВОРЧЕСТВО ЧУВСТВ, где узнаешь:

— грамотно общаться с девушками и доводить до секса
— строить прочные отношения, где девушка ласковая и покорная, а ты — лидер
— сформировать базу мужских принципов, которые помогут во всех направлениях в жизни


Главное про качественные отношения тут: t.me/+2PeNv_5pb8djMDdi

Читать полностью…

Senior Java Developer

👩‍💻 Как эффективно использовать Java Collections для хранения, извлечения и обработки данных?

Ждем вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:

✔️ обзор структуры коллекций и их основных методов;
✔️ особенности различных реализаций коллекций;
✔️ примеры применения коллекций для решения практических задач.

Урок идеально подходит для тех, кто начинает изучать Java или хочет углубить свои знания.

Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAgVyX

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Senior Java Developer

➡️ Использование Optional.or для безопасного предоставления альтернативных значений

Optional.or — метод, представленный в Java 9, позволяет безопасно предоставить альтернативное значение, если исходное значение отсутствует (null).

🗣️ Это полезно для обработки значений, которые могут отсутствовать, без необходимости использовать условные конструкции.


⚙️ В данном примере, если optionalValue пустое (null), метод or вернет Optional с альтернативным значением "Значение по умолчанию". Это делает код более читаемым и защищает от потенциальных ошибок, связанных с null.

Читать полностью…

Senior Java Developer

➡️ Flyway

Flyway — это популярная библиотека для управления версиями баз данных. Она позволяет легко и надежно управлять миграциями базы данных, сохраняя ее состояние в синхронизации с вашим приложением.

🗣 Flyway — отличный инструмент для автоматизации и упрощения миграций базы данных. Если вы хотите избежать проблем с несогласованностью базы данных, Flyway — ваш выбор.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

Конвейер для Spring-приложений прямо в IDE

Приглашаем на презентацию нового инструмента от Haulmont — компании, подарившей миру JPA Buddy и другие инструменты разработки, разрабатывающей корпоративное ПО и отказоустойчивые решения.

На встрече разработчики расскажут про Amplicode — набор инструментов для эффективной разработки и развертывания web-приложений на современном стеке технологий. Amplicode учит IDE работать в терминах фреймворка.

🌐 Онлайн в YouTube и на VK Видео
📆 3 сентября, 18:00 (МСК, GMT+3)

В программе:
— Обзорный доклад об Amplicode: история создания инструмента и возможности.
— Время для кода! Демо Amplicode от экспертов — ревью приложения, его доработка, разработка REST API, настройка доступа, деплой и создание админки на React Admin.
— Открытая дискуссия: команда Amplicode и эксперты ответят на вопросы участников.

Ссылку на трансляцию отправим вам на почту перед началом вебинара.

Регистрация — на сайте.

Реклама. ООО «ХОУЛМОНТ САМАРА». ИНН 6316134393

Читать полностью…

Senior Java Developer

Как запустить продукт и не прогореть?

⌨️ Ждем вас на открытом вебинаре 3 сентября в 19:00 мск, где мы разберем:

- как исследовать аудиторию и спрогнозировать спрос;
- как создать MVP и определить, когда идти в масштаб;
- как правильно тестировать продукт «в бою» и находить недочёты;
- как кастдев (опрос и интервью пользователей) помогает выявить сильные и слабые стороны ваших продуктов.

Урок подходит для проджект-менеджеров, управленцев в IT и продакт-менеджеров, которые хотят избежать ошибок при запуске продукта и добиться успеха. Вы получите пошаговый план действий, который поможет вам уверенно запустить и развивать свой продукт.

Встречаемся в преддверии старта курса «Product Manager IT-проектов». Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cA0cFM

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior Java Developer

🔴 18 сентября состоится крупнейшая конференция по трафику и продажам в Телеге

1⃣2⃣3⃣4⃣5⃣

Вам однозначно стоит быть, если:

— Работаете с трафиком из Telegram Ads или посевов;
— Продаете свои услуги через Telegram;
— Еще не зарабатываете в TG, но планируете;

📣 Вот лишь некоторые из спикеров:

Алексей Соловьев (Event and Community Manager at TON)
Дмитрий Форман (Digital-Директор Самолет)
Марат Шайхетдинов (Founder TgConf & Clickise)
Ирина Нумизматка (Автор крупнейшего блога про Telegram Ads)
Глеб Яскевич (Директор по маркетингу Getcourse)
Артур Халиуллин (Сеть каналов на 1млн+ подписчиков)
Влад Силантьев (С нуля дошел до 63 проектов в Telegram Ads)
Павел Калюканов (Product Manager TgStat)
и множество других не менее интересных спикеров

🕔 Дата и время: 18 сентября в 9:00
📍 Место проведения: Main Stage, Москва

А в заключении мероприятия пройдет Aftertparty для VIP-участников и спикеров с хедлайнером, которого все знают!

🎟 Приобрести билет до повышения цен
Промокод telegapart дает скидку 10% на все билеты

Читать полностью…

Senior Java Developer

Примитивные типы

Компьютеры работают в основном с числами, поэтому были придуманы несколько ключевых слов, которые обозначают разные типы данных, по-другому их называют примитивные типы данных. Так как компьютеры развивались постепенно, то на разных этапах своей жизни они могли хранить число, которое не выше разряда процессора, на котором они работают. Поэтому появилась такая битовая таблица различных чисел.

Читать полностью…

Senior Java Developer

Вам нравится читать контент на этом канале?

Возможно, вы задумывались о том, чтобы купить на нем интеграцию?

Следуйте 3 простым шагам, чтобы сделать это:

1) Регистрируйтесь по ссылке: https://telega.in/n/seniorjavist
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что выведет эта программа?

Ответ:
Первый оператор вывода напечатает «false», второй — «true». Так происходит из-за ошибки округления чисел с плавающей точкой. Только степени двойки можно точно представить в двоичной записи. Числа, которые не являются степенями двойки, округляются так, чтобы поместиться в ограниченное количество битов. В этом примере Java использует использует тип double, поэтому для представления десятичных чисел доступно только 64 бита. Следовательно, 0.1*3 не будет равняться 0.3.

Читать полностью…

Senior Java Developer

➡️ MapStruct

MapStruct — это библиотека для автоматического преобразования данных между Java объектами. Она упрощает создание мапперов и конвертеров, минимизируя необходимость ручного написания кода для преобразования данных между различными слоями приложения.

🗣 MapStruct — это отличный инструмент для разработчиков, которые хотят автоматизировать преобразование данных и улучшить читаемость и поддержку кода. Если вам нужно легко маппировать объекты без лишнего шаблонного кода, MapStruct поможет вам достичь этого.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

➡️ Objenesis

Objenesis — это Java-библиотека, которая позволяет создавать объекты классов без вызова их конструкторов. Это особенно полезно в тех случаях, когда нужно создать объект для сериализации, прокси или в ситуациях, когда конструктор имеет побочные эффекты, которые следует избегать.

🗣 Objenesis — это отличный инструмент для тех, кто работает с фреймворками, связанными с сериализацией или AOP, и нуждается в возможности создания объектов без вызова их конструкторов. Если вы сталкивались с проблемами при создании экземпляров классов с приватными конструкторами или сложной инициализацией, Objenesis может стать вашим незаменимым помощником.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

Сочи, встречаемся 12 сентября на митапе IT Talk by Sber! ⛱

Must visit событие для разработчиков, тестировщиков, инженеров по сопровождению и владельцев продуктов. Ведь мы собрали экспертов из разных команд и городов, чтобы рассказать об автоматизации работы при помощи AI-ассистента, инженерных процессах и кейсах крупных IT-компаний.

Спикеры и темы 👇

✔️ Владимир Ярославский, Сбер: «Giga IDE: зачем Сберу собственная платформа разработки?»

✔️ Анатолий Шипов, СберТех: «GitVerse – дом для вашего кода»

✔️ Максим Вишневский, Циан: «Функциональные тесты: развёртывание, интеграция в CI и сбор покрытия»

Место сбора: конференц-зал «Панорама» отеля SEA GALAXY, ул. Черноморская, 4.

Обязательно регистрируйтесь и приходите 12 сентября в 18:30 – не пожалеете! 😉

Читать полностью…

Senior Java Developer

Нижний Новгород, встречай Сезон кода — большой ИТ-фестиваль

Фестиваль для опытных специалистов в Data, .NET, Java и Python. Время собраться всем ИТ-сообществом, обменяться опытом и просто повеселиться. В программе доклады, знакомство с коллегами, ИТ-квиз, настольные игры и живая музыка.

Успейте зарегистрироваться на Сезон кода

📍Пройдет в Нижнем Новгороде 14 сентября

Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673

Читать полностью…

Senior Java Developer

➡️ Использование MethodHandles для эффективного вызова методов в Java

MethodHandles предоставляют низкоуровневый доступ к методам, позволяя динамически вызывать их с минимальными накладными расходами.

🗣️ Этот подход может быть полезен для высокопроизводительных приложений, где отражение (reflection) слишком медленное.


MethodHandles.Lookup используется для поиска методов в классе. В примере мы находим метод substring класса String.

MethodHandle позволяет вызывать метод с минимальными накладными расходами по сравнению с традиционным отражением (reflection), что делает его более производительным.

В отличие от рефлексии, MethodHandles могут использоваться для более эффективного вызова методов, что полезно в динамических и высокопроизводительных приложениях.

Читать полностью…

Senior Java Developer

Использование метода sun.misc.Unsafe для низкоуровневой работы с памятью в Java

Хотя использование sun.misc.Unsafe не рекомендуется и является небезопасным, он предоставляет уникальные возможности для работы с памятью на низком уровне, аналогично тому, как это делается в языках, таких как C или C++.

• sun.misc.Unsafe предоставляет методы для низкоуровневых операций с памятью, которые обычно недоступны в Java.
Доступ к Unsafe возможен только через рефлексию, так как он скрыт от обычных разработчиков.
Этот подход обычно используется в высокопроизводительных библиотеках и внутри JVM, но не рекомендуется для обычных приложений.

Читать полностью…

Senior Java Developer

➡️ Javassist

Javassist (Java Programming Assistant) — это библиотека для динамической обработки классов на уровне байт-кода. Она позволяет разработчикам изменять существующие классы или создавать новые во время выполнения программы, что может быть полезно для создания прокси, выполнения аспектно-ориентированного программирования (AOP) и других задач, связанных с динамическим изменением поведения кода.

🗣️ Javassist — отличный инструмент для тех, кто хочет глубже погрузиться в работу с байт-кодом и динамическим модифицированием классов. Если вам нужны гибкие средства для работы с классами во время выполнения, Javassist может стать вашим надежным помощником.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

➡️ Guava

Guava — это мощная библиотека от Google, которая предоставляет широкий набор инструментов для работы с коллекциями, кэшированием, строками, математическими операциями и многим другим. Это настоящая находка для Java-разработчиков, стремящихся к повышению эффективности и удобства написания кода.

🗣 Если вам нужно улучшить производительность или сделать код более элегантным, попробуйте Guava — это значительно упростит вашу жизнь.

🔗 Ссылочка на доку

Читать полностью…

Senior Java Developer

➡️ Использование VarHandle для высокопроизводительного и безопасного доступа к памяти

VarHandle — это новый механизм, представленный в Java 9, который предоставляет высокопроизводительный и гибкий доступ к переменным уровня Java и даже к произвольной памяти.

✔️ VarHandle служит современным и более гибким аналогом sun.misc.Unsafe, обеспечивая при этом безопасность и совместимость.

Читать полностью…

Senior Java Developer

Как сделать анализатор кода за два дня

Смотреть статью

Читать полностью…

Senior Java Developer

⚠️ Использование @SuppressWarnings для безопасного подавления предупреждений

В Java аннотация @SuppressWarnings позволяет отключать определенные предупреждения компилятора в коде.

🗣️ Это может быть полезно, когда вы уверены в безопасности используемого кода и хотите избежать лишних предупреждений, особенно при работе со старым кодом или нестандартными конструкциями.

Читать полностью…

Senior Java Developer

➡️ Оптимизация работы с коллекциями с помощью метода removeIf

В Java 8 был введен метод removeIf, который позволяет удалить элементы из коллекции, удовлетворяющие определенному условию, без необходимости явного использования цикла.

Читать полностью…
Subscribe to a channel