Библиотека Java разработчика
Open in Telegram
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
Show more9 992
Subscribers
-424 hours
-177 days
-6030 days
Posts Archive
Отличается ли List<?> от List<? extends Object>?
Все классы без исключения наследуются от
Object. Поэтому неограниченный wildcard <?> всегда подразумевает его в качестве верхней границы. Оба этих типа в рантайме сотрутся в List<Object>, функциональных отличий нет.
Не смотря на одинаковое поведение, существует одно синтаксическое различие. Неограниченный дженерик – reifiable тип. Это значит, что он представлен в рантайме. Такой тип можно использовать в операторе instanceof, тогда как синтаксическая конструкция x instanceof List<? extends Object> приведет к ошибке компиляции.
Тип List без параметра имеет больше отличий, мы уже говорили о них ранее, в публикациях про raw types и проблему heap pollution.
👉@BookJavaSpring-потрошитель: жизненный цикл Spring Framework
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.
https://habr.com/ru/articles/720794/
👉@BookJava
🤔 С чего начать обучение на Java-разработчика?
💡 С бесплатного открытого урока «HashMap под капотом» от OTUS и Михаила Ронжина – старшего Kotlin/Java developer в Tinkoff.
HashMap — это структура данных, представляет собой хэш-таблицу.
На вебинаре мы:
- познакомимся с коллекцией HashMap;
- рассмотрим основные методы;
- узнаем, как она ведет себя под капотом.
📢📢 Занятие пройдёт 5 декабря в 20:00 мск и будет приурочено к старту курса «Специализация Java-разработчик». На нем вы сможете освоить профессию с нуля до уверенного Middle.
👉 Для бесплатного участия и получения записи урока регистрируйтесь прямо сейчас: https://vk.cc/csIUCW
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruПотоки в Java: От рождения до смерти
В этой статье я бы хотел погрузить в мир жизненного цикла потоков начинающих программистов на Java, заранее извиняюсь за злоупотребление слова "поток" в этой статье, но я надеюсь так будет даже лучше для понимания. Поехали!
Жизненный цикл потока - основная концепция Java, которую мы подробно рассмотрим в этой статье. Мы будем использовать краткую иллюстрированную диаграмму и фрагменты практического кода, чтобы более глубоко понять состояния потока во время его выполнения. Эта статья о создании потока - отличное начало для понимания потоков в Java.
https://habr.com/ru/articles/776914/
👉@BookJava
Repost from Книги по Java | Books Java 📚
Java Programming Made Easy: Unlock Your Coding Potential from Scratch
Автор: Ryan Campbell (2023)
Что вы узнаете:
- Понимание основ языка Java и принципов ООП.
- Работа с классами, объектами, наследованием, полиморфизмом и интерфейсами.
- Использование возможности структур данных, массивов и коллекций для эффективного управления данными.
- Реализация файлового ввода-вывода для взаимодействия приложений с внешними данными.
- Обработка событий и создание интерактивных приложений.
- Взаимодействие с базами данных с помощью JDBC и SQL.
- Мир параллельного программирования с помощью многопоточности.
- Ознакомьтесь с такими продвинутыми темами, как дженерики, лямбда-выражения и потоки.
- Научитесь искусству написания надежного кода с помощью модульного тестирования и отладки.
Скачать
👉 @java_360
erid: LjN8KJpzx
👋Уважаемая публика, не проходите мимо! Только у нас на вебинаре вы узнаете то, чего ещё никогда не знали!
🔥Проникнитесь невероятными лайфхаками в жанре team lead survival на бесплатном уроке «Agile Circus: как выжить в цирке гибкой разработки ПО»: регистрация
На занятии обсудим:
— зачем вообще нужны гибкие подходы к организации процессов разработки (и поддержки) ПО и можно ли обойтись без них.
— как правильно выбирать способ организации разработки программного обеспечения.
— что делать в ситуации, когда одна команда не справляется.
Вебинар будет полезен тимлидам, руководителям разработки, проектным и продуктовым менеджерам, которые недовольны текущими процессами в своей компании.
👉Понравился урок — берите полный курс «Team Lead разработки», его можно пройти по скидке Чёрной пятницы, и даже в рассрочку.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Микросервисы на основе событий с Kafka Streams и Spring Boot
Всем привет! Это моя первая статья на Habr, так что не судите строго за стиль, а вот по содержанию буду рад любой конструктивной критике.
Статья основана на публикациях Confluent о том, как можно реализовать микросервисную архитектуру на основе событий с помощью Kafka Streams и KSQL.
https://habr.com/ru/articles/775900/
👉@BookJava
🔎Хотите узнать об особенных возможностях Scala?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Как измерить производительность метода?
Если вы собираетесь оптимизировать код, или же выбрать лучшее с точки зрения производительности готовое решение, выбор необходимо подтвердить тестом производительности до и после. Такие тесты называются benchmark.
Первый вариант который приходит в голову – измерить время до, выполнить метод, посмотреть сколько времени прошло. У такого подхода есть ряд нюансов. Каждый последующий замер может случайным образом сильно отличаться от предыдущего. В реальном приложении результат будет совсем отличным от тестового, потому что виртуальная машина будет «прогретой»: заполнятся различные системные кэши, произойдут JIT-оптимизации горячего кода, память наполнится мусором.
Наивный подход может показать приблизительную производительность долгих операций: ввода-вывода, системных вызовов, или пользовательских сценариев на развернутом тестовом стенде. При тестировании кусков Java кода (в микробенчмарках) время выполнения очень мало, поэтому упомянутые нюансы вносят значительный вклад в результат.
Самое правильное решение – использовать готовый инструмент из JDK, JMH. Для этого его библиотеки добавляются в зависимости, а тестовый метод помечается аннотацией
@Benchmark. Тесты можно запускать в виде исполняемого jar-файла, либо вызовом специальных программных методов библиотеки. Итоги тестирования будут выведены в виде таблицы в консоль.
👉@BookJavaСортировка слиянием через рекурсию
В этот раз мы применим рекурсию для создания алгоритма сортировки слиянием.
В сети легко найти множество вариаций решения данной задачи. Код, который мы рассмотрим в этой статье, будет написан так, чтобы быть максимально простым для понимания начинающих разработчиков.
Освежим в памяти суть сортировки слиянием:
Изначальный массив делится пополам до тех пор, пока длина "половинок" не станет равна 1. Это - базовый случай. Затем элементы двух "половинок" сравниваются и заносятся в результирующий массив в порядке возрастания.
https://habr.com/ru/articles/710620/
👉@BookJava
🔎Хотите узнать об особенных возможностях Scala?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Используем 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
14 советов по высокопроизводительной персистентности в Java
В этой статье я расскажу вам о различных советах по оптимизации высокопроизводительной Java Persistence, которые помогут вам получить максимальную отдачу от уровня доступа к данным.
Для создания высокопроизводительного уровня доступа к данным требуется много знаний о внутреннем устройстве баз данных, JDBC, JPA, Hibernate, и в этой статье обобщены некоторые из наиболее важных приемов, которые можно использовать для оптимизации корпоративного приложения.
https://vladmihalcea.com/14-high-performance-java-persistence-tips/
👉@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
Словарное определение полиморфизма относится к принципу биологии, в соответствии с которым организм или вид может иметь множество различных форм или стадий. Этот принцип также может быть применен к объектно-ориентированному программированию и таким языкам, как язык Java. Подклассы класса могут определять свое собственное уникальное поведение и в то же время разделять некоторые функциональные возможности родительского класса.
https://bookflow.ru/polimorfizm-v-java/
👉@BookJava
💻 Профессия «Java-разработчик»
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT.
Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия!
COSMO чёрная пятница: успейте получить скидку 30 000р.
Расширяем горизонты Вселенной - добавим +6 месяцев сопровождения наставника и карьерного консультанта после завершения обучения.
Переходите по ссылке, выбирайте скидку и забирайте подарки🎁
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
Совет 💡
Добавьте в JDBC URL свойство
ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.
👉@BookJavaНельзя так просто взять и вычислить абсолютное значение
Кажется, задача вычисления абсолютного значения (или модуля) числа совершенно тривиальна. Если число отрицательно, давайте сменим знак. Иначе оставим как есть. На 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Как работать с базами данных еще эффективнее?
Узнайте на бесплатном открытом уроке «Индексы: структуры данных» от OTUS.
На вебинаре:
✅ рассмотрим, какие ситуации требуют использования индексов;
✅ объясним, как они помогают ускорить выполнение запросов и улучшить производительность системы;
✅ разберём структуры данных, на которых основаны индексы, включая бинарные деревья поиска, B-tree, сбалансированные деревья и хеш-таблицы;
✅ научимся использовать команду explain в PostgreSQL для анализа выполнения запросов.
Занятие пройдёт 29 ноября в 20:00 мск в рамках курса «Highload Architect».
Для бесплатного участия регистрируйтесь прямо сейчас: https://vk.cc/csxe4e
В чём преимущества и недостатки Spring Boot?
Основные сущности фреймворка Spring Boot – это стартеры. Зависимости с названиями вида s
pring-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