Telegram Web Link
↪️ Java RegEx: применение регулярных выражений в коде

Рассмотрим регулярные выражения в Java, затронув синтаксис и наиболее популярные конструкции, а также продемонстрируем работу RegEx на примерах.

Основы регулярных выражений
Регулярные выражения в Java
Примеры использования регулярных выражений в Java

➡️ Читать дальше

@javatg
#вопросы_с_собеседований
Назовите типы управления транзакциями, которые поддерживает Spring.

Spring поддерживает два типа управления транзакциями.

Программное управление транзакциями: в этом случае транзакция управляется с помощью программирования. Он обеспечивает исключительную гибкость, но его очень сложно поддерживать.

Декларативное управление транзакциями: при этом управление транзакциями отделено от бизнес-кода. Для управления транзакциями используются только аннотации или конфигурации на основе XML.

Подробнее

@javatg
Учебник по Java: инкапсуляция на простых примерах

Что такое инкапсуляция?
Инкапсуляция описывает идею объединения данных и методов, работающих с этими данными в одном модуле, подобном Java-классу. А еще концепция довольно часто используется для сокрытия внутреннего представления или состояния объекта извне.

Общая идея этого механизма проста. Например, у вас есть атрибут, невидимый снаружи объекта. Вы связываете его с методами, обеспечивающими доступ для чтения или записи, а инкапсуляция позволяет скрыть конкретную информацию и контролировать доступ к внутреннему состоянию объекта.

Если вы знакомы с каким-либо объектно-ориентированным языком программирования, вы, вероятно, знаете эти методы как методы получения и установки – геттеры и сеттеры. Как видно из названий, метод получения получает атрибут, а метод установки изменяет его. В зависимости от того, какой метод вы используете, вы решаете – читать или изменять атрибут. Вы также можете указать, доступен ли атрибут только для чтения или вообще невидим.

➡️ Читать дальше

@javatg
Java from EPAM Учебно-методическое пособие

📖 Книга

@javatg
💡 Внутренние и вложенные классы java.

Цель статьи: Рассказать о внутренних, вложенных, локальных, анонимных классах. Показать примеры их использования. Написать и протестировать классы в коде на java. Рассказать о свойствах этих классов. Материал предназначен для лучшего понимания безымянных классов, лямбда выражений, адаптеров и многопоточности. То есть перед их изучением.

Небольшое вступление. Предлагаю вашему вниманию цикл из трех статей.

В них я рассказываю о внутренних, вложенных, локальных, анонимных классах. Речь идет о терминологии и применении. Для этих статей я написал довольно много кода.

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

➡️ Читать дальше
📡 Документация Oracle


@javatg
Если вы переопределили equals(), то обязательно также переопределить и hashCode(). Это не просто теоретическое требование. Если класс нарушает это правило, хранение его экземпляров в качестве например ключей HashMap приводит к непредсказуемому поведению.

Результат hashCode() должен быть одинаковый для равных в смысле equals объектов. Обычно для этого значение хэш-кода вычисляется на основе значений полей, которые участвуют в equals(). Но и возвращение одной и той же константы 42 для любого экземпляра класса тоже будет валидной реализацией.

Результат hashCode() должен быть равномерно распределен. Это правило не такое строгое как остальные. Его нарушение не сломает программу, хотя может сильно ухудшить производительность. Поэтому константа 42 – допустимая, но не лучшая идея. Вместо этого все значения полей сначала приводятся к int: boolean превращается в любую пару констант, null в 0, для ссылочных типов берется их hashCode(). Затем все эти значения смешиваются с помощью бинарного оператора XOR (^). Дополнительно для лучшего распределения можно применять битовые сдвиги. Если вы владеете информацией о распределении значений полей в конкретно вашем случае, эту реализацию можно улучшить.

Результат hashCode() должен быть одинаковый на протяжении времени жизни объекта. Если вычисление хэш-кода зависит от переменных значений, сохраните его значение во внутреннее поле при первом вызове. При следующих вызовах сразу возвращайте это закэшированное значение.

#Классы

@javatg
➡️ Java погружаемся в потоки.

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

⚙️ Читать дальше

@javatg
Что такое Reflection и как его использовать?

Reflection, рефлексия – это средства манипуляции данными на основе знания о структуре классов этих данных, инструменты метапрограммирования.

Класс Class<T> используется как точка входа в мир рефлекшена. Его экземпляры предоставляют саму метаинформацию о содержимом класса и основные методы для работы с ним. Все классы относящиеся Java Reflection находятся в пакетах java.lang и java.lang.reflect.

Экземпляр класса Class можно получить тремя способами:
🔘 Литералом .class;
🔘 Статическим фабричным методом Class.forName();
🔘 Методом getClass() экземпляров класса.

Использование Reflection API медленное и небезопасное. Оно позволяет ломать инвариантность состояний экземпляра, нарушать инкапсуляцию, и даже менять финальные поля.

Использовать рефлексию естественно в тестовом коде, в инструментах разработки, в фреймворках (особенно в связке с runtime-аннотациями). Рефлекшн в ординарном бизнес-коде обычно говорит о больших проблемах проектирования.

Нередко на интервью просят продемонстрировать пример использования рефлекшна. Один из самых близких для backend-разработчика примеров – инициализация классов-конфигураций в Spring Framework. Фреймворк с помощью рефлекшна сканирует внутренности таких классов. Поля и методы, помеченные специальными аннотациями, воспринимаются как объявления элементов экосистемы фреймворка.

#Классы

@javatg
МТС INTRO: стажировки вне шаблонов

Что это значит?

• 10+ направлений стажировки
• Набор 12 месяцев в году
• Погружение в проекты на 3 месяца и дольше, если в команде есть интересные задачи и тебе нравится то, что ты делаешь
• Удобный график

Что мы предлагаем?

• Целая экосистема технологичных цифровых сервисов. Здесь создаются мобильные приложения, продукты в медиа, финтехе, стриминге, гейминге, Big Data и многом другом
• Реальные проекты — лучший источник знаний и опыта
• Команда настоящих профи поможет раскрыться твоим талантам
• Стажёры сами выбирают, сколько часов в неделю работать, а ещё могут менять график в течение стажировки
• Стажировка оплачиваемая, а размер заработной платы зависит от региона и количества рабочих часов
• Оффер в МТС по итогам стажировки: если нам понравится работать вместе, будем рады, если ты станешь членом нашей команды :)

Как подать заявку на стажировку

Выбрать направление стажировки и подать заявку на сайте программы. Новые вакансии появляются каждую неделю.
🌶 Java. Lombok: хорошее и плохое применение

Lombok — по-настоящему хороший инструмент, который помогает писать меньше кода и больше сосредотачиваться на реальной работе. Суть в том, как вы используете Lombok в проекте: есть как хорошие, так и плохие способы использования.

Что такое Lombok
Lombok — это библиотека Java, которая сокращает объем стандартного кода в классах. Вы добавляете аннотации, и Lombok генерирует код во время компиляции. Например, если аннотировать класс с помощью @Getter, то Lombok сгенерирует методы-геттеры для всех переменных в классе.

➡️ Читать дальше

@javatg
👨🏻‍💻 Weekend Offer для Java-разработчиков в команду ВКонтакте

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

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

Мероприятие состоится 10–11 сентября. Успейте подать заявку до 9 сентября: с вами свяжутся и выберут слот для индивидуального онлайн-интервью в выходные. Уже 11 сентября вечером определят лучших кандидатов и отправят им офферы.

➡️ Зарегестрироваться

@javatg
Эффективный Java. Тюнинг кода на Java 8, 11 и дальше (2021) PDF, EPUB

Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные уборщики мусора).
В этой книге вы:
- Узнаете, как платформы и компиляторы Java влияют на производительность.
- Разберетесь c механизмом уборки мусора.
- Освоите четыре принципа получения наилучших результатов при тестировании производительности.
- Научитесь пользоваться JDK и другими инструментами оценки производительности.
- Узнаете как настройка и приемы программирования позволяют минимизировать последствия уборки мусора.
- Научитесь решать проблемы производительности средствами Java API.
- Поймете, как улучшить производительность приложений баз данных Java.

📖 Книга

@javatg
Как повысить производительность приложений Java за 9 шагов.

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

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

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

Обновление системного оборудования - низкая производительность приложения не может быть связана с плохим кодом и алгоритмами; вместо этого основная причина может быть связана с системой, в которой выполняется приложение.

Увеличить пропускную способность LAN и WAN - не все функции взаимодействуют с локальным оборудованием; если ваше приложение взаимодействует с удаленными системами, возможно, виновата ваша сетевая инфраструктура.

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

Использование StringBuilder для повышения эффективности - строки почти неизбежны в большинстве приложений, но операция «+ =» крайне неэффективна.

Используйте кеширование для повышения производительности - кэширование является одним из лучших способов уменьшить избыточность экземпляров объектов и вызовов функций.

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

➡️ Читать дальше

@javatg
data_analysis_ml - аналитика данных, data science, sql

machinelearning_interview - канал подготовит к собеседованию по машинному обучению, статисике ,алгоритмам и науке о данных.

golang_interview - Вопросы с настоящих Golang собеседований, помогут Вам получить успешно пройти интервью.

python_job_interview - здесь собраны все возможные вопросы и ответы с собеседований по Python.

java_quizes - вопросы по Java
✒️ Инструкция по написанию HTTP-сервера на Java

Вы хотите реализовать HTTP-сервер , но не хотите рисковать написанием полноценного HTTP-сервера? Разработка HTTP-сервера с полной функциональностью не является тривиальной задачей. Но у Java есть решение этой проблемы. Java поддерживает встроенный HTTP-сервер. Просто написав 100 строк кода, мы можем разработать несколько приличный HTTP-сервер, который может обрабатывать запросы. Мы также можем использовать его для обработки других HTTP-команд.

➡️ Читать дальше

@javatg
📌 Введение в Машинное обучение для Java-разработчиков // 9 видео

Содержание:
▪️ Задачи ML. Парадигма MapReduce
▪️ Hadoop и MapReduce
▪️ MapReduce - продолжение
▪️ Spark
▪️ Spark(часть 2)
▪️ Scala
▪️ Spark(часть 3)
▪️ Spark(часть 4)
▪️ Spark MLlib
Смотреть

@javatg
✒️ Spring WebFlux: Реактивное программирование веб-сервисов

Модуль WebFlux появился в 5й версии фреймворка Spring. Этот микрофреймворк является альтернативой Spring MVC и отражает собой реактивный подход для написания веб-сервисов. В основе WebFlux лежит библиотека Project Reactor, позволяющая легко запрограммировать неблокирующие (асинхронные) потоки (streams), работающие с вводом/выводом данных.

Следует учесть, что WebFlux для работы требуется встроенный в Spring сервер Netty. Встроенные Tomcat и Jetty не подходят. Следующая диаграмма иллюстрирует особенности окружения, в котором работает WebFlux

➡️ Читать дальше

@javatg
2024/10/04 01:24:12
Back to Top
HTML Embed Code: