🔎Хотите узнать об особенных возможностях Scala?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Сортировка слиянием через рекурсию
В этот раз мы применим рекурсию для создания алгоритма сортировки слиянием.
В сети легко найти множество вариаций решения данной задачи. Код, который мы рассмотрим в этой статье, будет написан так, чтобы быть максимально простым для понимания начинающих разработчиков.
Освежим в памяти суть сортировки слиянием:
Изначальный массив делится пополам до тех пор, пока длина "половинок" не станет равна 1. Это - базовый случай. Затем элементы двух "половинок" сравниваются и заносятся в результирующий массив в порядке возрастания.
https://habr.com/ru/articles/710620/
👉@BookJava
Используем Neovim в качестве IDE для Java
Впервые я познакомился с Vim в университете, и с тех пор он был желанным спутником на протяжении большей части моей карьеры разработчика. Работа с программами на Python и Go казалась мне естественной с Vim, и я всегда чувствовал себя продуктивным. А вот Java была другим зверем. Когда появлялась возможность поработать с Java, я сначала пробовал Vim, но возвращался к IntelliJ и плагину IdeaVim, чтобы воспользоваться богатыми возможностями языка, которые открывает полноценная IDE.
К сожалению, у IntelliJ есть свои проблемы. В случайные, а иногда и в неподходящие моменты она просто перестаёт работать, пока не будут восстановлены все кэши, перезагружены проекты и не будет проведено полдня или больше за работой по устранению её неполадок. Пройдя через всю эту песню несколько месяцев назад, и глядя на прогресс в Vim, Neovim, спецификации протокола языкового сервера (Language Server Protocol, LSP) и их различных реализаций, я подумал, что, возможно, пришло время ещё раз взглянуть на использование Neovim в качестве Java IDE.
Возможно ли это? Да. Рекомендую ли я это делать? Возможно. Сошел ли я с ума? Возможно.
Поехали.
Rus https://habr.com/ru/articles/760234/
Eng https://sookocheff.com/post/vim/neovim-java-ide/
👉@BookJava
⁉️ Как Java-разработчику увеличить доход и востребованность?
Освоить один из самых популярных фреймворков на онлайн-курсе «Разработчик на Spring Framework» от OTUS.
Что даст вам курс:
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
✔️ Умение быстро проходить путь от идеи до production-grade
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5).
💪 Всего за 5 месяцев вы освоите новые скиллы, добавите сильные проекты в свое портфолио, сможете повысить грейд и выйти на новый карьерный уровень.
Вы можете заранее бесплатно получить полную программу, чтобы убедиться, что она вам подходит.
🎫 Курс доступен в рассрочку.
👉 Пройдите вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом OTUS: https://vk.cc/cszeRc
🎁 Черная пятница в OTUS! Успейте получить скидку 15% на курс!Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💻 Профессия «Java-разработчик»
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT.
Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия!
COSMO чёрная пятница: успейте получить скидку 30 000р.
Расширяем горизонты Вселенной - добавим +6 месяцев сопровождения наставника и карьерного консультанта после завершения обучения.
Переходите по ссылке, выбирайте скидку и забирайте подарки🎁
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
Нельзя так просто взять и вычислить абсолютное значение
Кажется, задача вычисления абсолютного значения (или модуля) числа совершенно тривиальна. Если число отрицательно, давайте сменим знак. Иначе оставим как есть. На Java это будет выглядеть примерно так:public static double abs(double value) {
if (value < 0) {
return -value;
}
return value;
}
https://bookflow.ru/nelzya-tak-prosto-vzyat-i-vychislit-absolyutnoe-znachenie/
👉@BookJava
В чём преимущества и недостатки Spring Boot?
Основные сущности фреймворка Spring Boot – это стартеры. Зависимости с названиями вида spring-boot-starter-xxx
выполняют две основных задачи. Во-первых, они добавляют набор типичных сторонних библиотек-зависимостей; во-вторых, регистрируют типичные бины и их конфигурации. Кроме того, со Spring Boot в проекте появляется ряд таких полезностей, как embedded-сервер, конфигурация web-приложения без web.xml
, метрики, properties вынесенные из кода во внешние файлы.
Например, spring-boot-starter-data-jpa даст вам готовый комплект всего необходимого для использования JPA: драйвер, совместимую с ним версию Hibernate, библиотеки Persistence API и Spring Data. В контексте приложения появятся все нужные для JPA репозиториев бины.
Таким образом Spring Boot ускоряет и упрощает разработку, дает возможность избавиться от boilerplate-кода в проекте и сфокусироваться на бизнес-задачах. Это бывает особенно важно в микросервисной архитектуре, когда создается большое количество приложений.
С другой стороны, такая избыточность естественно приводит к большей тяжеловесности и медлительности приложения.
👉@BookJava
Какой брокер сообщений выбрать для написания асинхронной связи?
🔥 Расскажем на бесплатном открытом уроке «RabbitMQ vs Kafka» от OTUS и Евгения Непомнящего – разработчика в «IT Sense».
На вебинаре:
✅ изучим особенности, плюсы и минусы брокеров;
✅ познакомимся с основными принципами их работы;
✅ посмотрим использование этих брокеров в live demo.
🗓 Занятие пройдёт 27 ноября в 20:00 мск и будет приурочено к старту курса «Microservice Architecture». После урока вы сможете продолжить обучение, в том числе в рассрочку.
🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://vk.cc/cst0N2
🌟 Открываем двери в мир Scala-разработки! 🚀
Присоединяйтесь к бесплатному онлайн-занятию «Применение механизма implicits в Scala» от OTUS: регистрация
В рамках вебинара:
— Познакомимся с историей возникновения и мотивацией за разными компонентами данного механизма.
— Разберем возможности и опасности которые таят в себе implicit преобразования
— Узнаем, как использовать и для чего служат implicit параметры
— Рассмотрим правила, по которым Scala ищет подходящего implicit кандидата и какие требования к нему предъявляются.
Вебинар подойдет тем, кто имеет первичный опыт работы со Scala и хочет разобраться, как работает механизм implicit.
💼 По завершении урока вы сможете оформить полный курс в беспроцентную рассрочку.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Изучаем Java EE. Современное программирование для больших предприятий
Себастьян Дашнер (2018)
Java EE 8 - современная версия популярной платформы для программирования корпоративных приложений на языке Java. Новая версия платформы оптимизирована с учетом многочисленных технологических нововведений, среди которых - работа с контейнерами, улучшенные API для обеспечения безопасности, возможности работы с облачными хранилищами и микросервисной архитектурой. Java EE обеспечивает широкие возможности предметно-ориентированного проектирования (DDD), непрерывную интеграцию, работу по принципу DevOps, взаимодействие с Docker и Kubernetes.
Скачать
👉 @java_360
Аудит пользователей Spring Data JPA
Задача: в БД необходимо фиксировать кто создал сущность, кто её обновил, и кто её удалил.
Все знают, как взять пользователя из контекста и сунуть его в сущность. Допустим, на уровне сервиса в методе извлечь информацию о нём и «засетать» его в нужные поля (придётся везде таскать этот кусок кода по сервису), а с аспектами как‑то выглядит не явно и накладывает ряд обязательств (например, развешивание аннотаций над методами всякий раз, когда мы что‑то пытаемся сделать с сущностью (новые участники команды могут не знать о такой неявной практике, а старые забыть о ней)).
https://habr.com/ru/companies/nlmk/articles/757866/
👉@BookJava
Управление памятью в Java: Введение
В языке Java управление памятью - это автоматический процесс, управляемый виртуальной машиной Java (JVM) и не требующий явного вмешательства. Java, будучи блочно-структурированным языком, использует модель, в которой память делится на два основных типа: стек и куча.
Локальные переменные и параметры методов используют память, основанную на "стеке". Эта область памяти автоматически увеличивается и уменьшается при входе и выходе из блока кода или метода соответственно. В ситуациях, когда системе запрашивается объем памяти, размер которого известен только во время выполнения программы или при создании объекта, эти запросы обычно удовлетворяются за счет области памяти процесса, называемой "динамической памятью" или "кучей". Строго говоря, бывает и так, что объект, предназначенный для кучи, записывается в стек, но мы оставим это обсуждение для более позднего документа.
https://foojay.io/today/java-memory-management/
👉@BookJava
Совет
В Hibernate 6 изменен способ чтения базового JDBC
ResultSet
с чтения по имени на чтение по позиции. Благодаря этому изменению после обновления вы получите более чистые SQL-запросы без псевдонимов столбцов 👍.
👉@BookJava
♨️ Хочешь выйти на новый профессиональный уровень джавист?
- Осваивай Spring!
Тест на знание языка Java
— Ответь на 21 вопрос и проверь, насколько хорошо nы знаешь язык Java и готовы освоить Spring. Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!
👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework": https://vk.cc/csnR94
Курс доступен в рассрочку.
🎁 Черная пятница в OTUS! Успей применить промокод BLACK23 и получить скидку 15% на курс!Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Совет
По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию @DynamicUpdate
на объекте @Entity
и Hibernate будет обновлять только те столбцы, которые изменились.
👉@BookJava
Как измерить производительность метода?
Если вы собираетесь оптимизировать код, или же выбрать лучшее с точки зрения производительности готовое решение, выбор необходимо подтвердить тестом производительности до и после. Такие тесты называются benchmark.
Первый вариант который приходит в голову – измерить время до, выполнить метод, посмотреть сколько времени прошло. У такого подхода есть ряд нюансов. Каждый последующий замер может случайным образом сильно отличаться от предыдущего. В реальном приложении результат будет совсем отличным от тестового, потому что виртуальная машина будет «прогретой»: заполнятся различные системные кэши, произойдут JIT-оптимизации горячего кода, память наполнится мусором.
Наивный подход может показать приблизительную производительность долгих операций: ввода-вывода, системных вызовов, или пользовательских сценариев на развернутом тестовом стенде. При тестировании кусков Java кода (в микробенчмарках) время выполнения очень мало, поэтому упомянутые нюансы вносят значительный вклад в результат.
Самое правильное решение – использовать готовый инструмент из JDK, JMH. Для этого его библиотеки добавляются в зависимости, а тестовый метод помечается аннотацией @Benchmark
. Тесты можно запускать в виде исполняемого jar-файла, либо вызовом специальных программных методов библиотеки. Итоги тестирования будут выведены в виде таблицы в консоль.
👉@BookJava
🔎Хотите узнать об особенных возможностях Scala?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
14 советов по высокопроизводительной персистентности в Java
В этой статье я расскажу вам о различных советах по оптимизации высокопроизводительной Java Persistence, которые помогут вам получить максимальную отдачу от уровня доступа к данным.
Для создания высокопроизводительного уровня доступа к данным требуется много знаний о внутреннем устройстве баз данных, JDBC, JPA, Hibernate, и в этой статье обобщены некоторые из наиболее важных приемов, которые можно использовать для оптимизации корпоративного приложения.
https://vladmihalcea.com/14-high-performance-java-persistence-tips/
👉@BookJava
Полиморфизм в java
Словарное определение полиморфизма относится к принципу биологии, в соответствии с которым организм или вид может иметь множество различных форм или стадий. Этот принцип также может быть применен к объектно-ориентированному программированию и таким языкам, как язык Java. Подклассы класса могут определять свое собственное уникальное поведение и в то же время разделять некоторые функциональные возможности родительского класса.
https://bookflow.ru/polimorfizm-v-java/
👉@BookJava
Совет 💡
Добавьте в JDBC URL свойство ApplicationName
(зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.
👉@BookJava
Как работать с базами данных еще эффективнее?
Узнайте на бесплатном открытом уроке «Индексы: структуры данных» от OTUS.
На вебинаре:
✅ рассмотрим, какие ситуации требуют использования индексов;
✅ объясним, как они помогают ускорить выполнение запросов и улучшить производительность системы;
✅ разберём структуры данных, на которых основаны индексы, включая бинарные деревья поиска, B-tree, сбалансированные деревья и хеш-таблицы;
✅ научимся использовать команду explain в PostgreSQL для анализа выполнения запросов.
Занятие пройдёт 29 ноября в 20:00 мск в рамках курса «Highload Architect».
Для бесплатного участия регистрируйтесь прямо сейчас: https://vk.cc/csxe4e
Советshow-sql
- это самый простой (но не самый лучший!) способ увидеть SQL, сгенерированный Hibernate. Вы можете немного улучшить его, включив форматирование, показ JPQL-запроса, сгенерировавшего запрос, и включив подсветку, которая добавляет некоторый цвет к выводу.
👉@BookJava
Какие бывают проблемы с арифметикой в Java?
Переполнения.
Числа примитивных типов в Java хранятся в дискретной оперативной памяти компьютера и занимают фиксированный объем. Из этого вытекает ограничение диапазона возможных значений. Когда результат арифметической операции выпадает из диапазона, значение идет по кругу – максимальное становится минимальным, либо наоборот. Такая ситуация называется переполнение (underflow/overflow).
Решение: если опасность переполнения значима, помогут методы с суффиксом *Exact
из классе Math. Это безопасные аналоги арифметических операций, которые бросают исключение в случае переполнения.
Платформо-зависимые округления.
По умолчанию JVM производит арифметические вычисления насколько это возможно точно. Пределы точности могут зависеть от аппаратного обеспечения. Это неприемлемо для программ, к которым предъявляют строгие требования переносимости, когда результат вычислений должен быть одним и тем же на любом железе.
Решение: модификатор strictfp
в объявлении класса или метода приводит точность вычислений к единой спецификации IEEE 754. За это может ухудшиться производительность и уменьшиться точность значений.
ArithmeticException.
Операторы могут выбрасывать исключение. Это происходит, например, при делении на ноль. Это же исключение бросают безопасные методы из Math
.
Решение: неожиданное исключение обычно указывает на логическую ошибку. Лучший способ предотвратить логические ошибки – покрыть код Unit-тестами.
👉@BookJava
Чем отличаются JRE, JVM И JDK?
JRE кратко - для работы. Java Runtime Environment (сокр. JRE) - минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки. Состоит из виртуальной машины - Java Virtual Machine и библиотеки Java-классов.
JDK кратко - для программирования. Java Development Kit (сокращенно JDK) - бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).
Java Virtual Machine (сокращенно Java VM, JVM) - виртуальная машина Java - основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования.
👉@BookJava
Хотите начать карьеру в Java, но не знаете как? Расскажем и покажем на бесплатном мини-курсе Skillbox. Будет полезно и тем, кто только хочет познакомиться с профессией, и тем, кто уже начал делать первые шаги в ней. Подойдёт новичкам разных возрастов.
Регистрируйтесь по ссылке
🎉 И получите первый подарок — гайд по профессии Java-разработчика.
Что будем делать на мини-курсе:
🔹 Обсудим, почему Java — один из самых востребованных языков
🔹 Познакомимся с кодом Java и рассмотрим ключевые элементы приложений на этом языке
🔹 Определим навыки для трудоустройства
🔹 Сравним Java и Python
🔹 Сделаем Java-приложения по инструкции
Как проходит мини-курс:
📌 Смотрите видео в удобное время
📌 Получаете полезные материалы
📌 Закрепляете навыки
📌 Посещаете итоговый вебинар
🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год.
Успейте записаться бесплатно!
💥 Бросьте вызов скучным рутинным задачам на Java!
🔥🔝 Изучите продвинутые навыки разработки с помощью онлайн-курса «Java Developer. Professional» в OTUS.
Тест по Java от OTUS
6️⃣ За 6 месяцев обучения:
- Научишься создавать современные java-приложения
- Поймешь основы функционирования JVM (сборка мусора, byteCode)
- Освоишь приемы применения многопоточности
- Напишите выпускной проект на любую тему под наставничеством преподавателя
Занятия в формате живых вебинаров проводят преподаватели-практики, а после дают развернутый фидбэк на домашние задания.
В конце обучения вы напишете выпускной проект на любую тему под контролем преподавателя и после обучения сможете претендовать на зарплату от 200 тыс. рублей.
➡️ Не упускайте свой шанс стать профессионалом в Java-разработке!
Проходите тест и записывайтесь в группу!
🎫 Курс можно приобрести в рассрочку
👉 ПРОЙТИ ТЕСТ КУРСА: https://vk.cc/cspWfl
🎁 Черная пятница в OTUS! Успей применить промокод BLACK23 и получить скидку 15% на курс!Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Избегаем техдолга, решаем проблемы с бинами в Spring и настраиваем JMX
На онлайн-митапе Сбера при поддержке JUG Ru Group.
🗓 22 ноября, 18:00 (МСК, GMT+3)
В программе:
✔ Михаил Сильванович, Максим Шестаков, Евгений Зубенко — «Да (не) инициализируйся ты уже!»
Что делать с ранней инициализацией bean'ов при инициализации контекста. Ищем bean'ы до их инициализации, работаем правильно с BeanFactory и BeanDefinition.
✔ Вячеслав Чернышов — «Приложение от проекта до релиза: этапы реализации»
Определяем верную последовательность этапов разработки на конкретных продуктовых примерах с использованием Java и Kotlin.
✔ Алексей Рагозин — «JMX (Java Management Extension) в 2023»
Архитектура JMX, его возможности. Профилирование, настройка в контейнерах и решение проблем.
Общайтесь с участниками митапа и задавайте вопросы спикерам в чате трансляции. Авторы лучших вопросов к каждому докладу получат сертификаты в магазин мерча SberShop.
➡️ Регистрация по ссылке.
Реклама. ПАО Сбербанк. ИНН 7707083893
Динамическое создание слушателей в Kafka
План
Создадим шаблонный класс через реализацию интерфейса MessageListener.
Создадим KafkaListenerEndpoint с помощью шаблона.
Зарегестрируем эндпоинт в KafkaListenerEndpointRegistry.
Создадим окружение для тестирования.
Протестируем решение.
Заключение.
https://habr.com/ru/articles/758958/
👉@BookJava
Spring Boot ChatGPT Starter
Features
Base on Spring Boot 3.0+
Async with Spring Webflux
Support ChatGPT Chat Stream
Support ChatGPT functions: @ GPTFunction annotation
Prompt Management: load prompt templates from prompt.properties with @ PropertyKey, and friendly with IntelliJ IDEA
Prompt as Lambda: convert prompt template to lambda expression and call it with FP style
ChatGPT interface: Declare ChatGPT service interface with @ ChatGPTExchange and @ ChatCompletion annotations.
No third-party library: base on Spring 6 HTTP interface
GraalVM native image support
Azure OpenAI support
https://github.com/linux-china/chatgpt-spring-boot-starter
👉@BookJava
💪Начал изучать Java?
⚡️ Приходи на бесплатный практический урок «Пишем веб-сервер на Java» от OTUS.
📌 На вебинаре изучим сетевые взаимодействия на Java с помощью сокетов на примере простейшего веб-сервера. Будет теория и практика, вы сможете задать преподавателю-эксперту все возникшие вопросы!
📢📢 Занятие пройдёт 23 ноября в 20:00 мск и будет приурочено к старту курса «Java-разработчик».
Программа обновлена и полностью отвечает современным требованиям рынка.
👉 Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://vk.cc/csmTpDРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru