bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

11248

Библиотека Java разработчика. Java, Spring, Maven, Hibernate По всем вопросам @evgenycarter № 4880864218

Subscribe to a channel

Библиотека Java разработчика

Уроки Java для начинающих

#1 — Установка JDK и IDE
#2 — Переменные. Примитивные типы данных
#3 — Строки (String). Ссылочные типы данных
#4 — Условные конструкции (if-else, switch-case)
#5 — Цикл for
#6— Циклы While и Do While
#7 — Консольный ввод данных
#8 — Массивы
#9 — Многомерные массивы
#10 — Классы и объекты

источник

👉@BookJava

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

Библиотека Java разработчика

Как работает память Java?

Прежде чем мы перейдем к вопросам производительности, нам нужно узнать, что на самом деле происходит в фоновом режиме JVM (Java Virtual Machine). Это отправная точка для каждого разработчика, который хочет изучить и настроить производительность, чтобы набрать скорость. Итак, давайте погрузимся в мир кодов.

В Java управление памятью осуществляется JVM автоматически для хранения ваших переменных, классов, полей и так далее... Первое, что мы узнаем, это то, что в JVM память разделена на две области. Одна из них называется Stack, а другая - Heap.

https://blog.stackademic.com/how-java-memory-works-c751460e3cbd

👉@BookJava

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

Библиотека Java разработчика

💪 Пройди тест по Java и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 .

🌲 А ещё, сейчас действуют новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/ctqXSy

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

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

Библиотека Java разработчика

Как разбить строку на слова?

StringTokenizer – специально предназначенный для этого класс стандартной библиотеки Java. Ему нужно задать разделители, по ним строка будет разделена на «токены». Это устаревший класс, он остается в библиотеке только для обратной совместимости.

Вместо него рекомендуется использовать метод String.split(). Метод принимает строку с регулярным выражением, и опциональный лимит токенов. Реализация особенно оптимизирована для односимвольного разделителя. Но следует помнить, что даже если символ один, это всё ещё регулярное выражение – спецсимвол должен экранироваться.

Другой подходящий метод – Pattern.split(). Он, наоборот, вызывается у регулярного выражения, а принимает целевую строку. В этот же метод делегируется и выполнение String.split(). Этот способ предпочтительнее, когда в регулярном выражении больше одного символа, а скомпилированный паттерн применяется повторно.

👉@BookJava

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

Библиотека Java разработчика

Операция «K». Ищем баги в коде IntelliJ IDEA

В этой статье мы проверим проект IntelliJ IDEA Community Edition на наличие ошибок и отправим наши правки разработчикам. Крупный проект, Open Source база и использование статического анализатора при разработке. Сложная задача для PVS-Studio.

https://habr.com/ru/companies/pvs-studio/articles/780560/

👉@BookJava

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

Библиотека Java разработчика

⚡️ Профессия Java-разработчик с нуля и до востребованного специалиста!

Уже 29 декабря стартует новая группа специализации «Java Developer» в OTUS.

👩‍💻 С нуля до Middle за 15 месяцев!

На онлайн-курсе вы получите:
➡️ Уникальные знания от преподавателей — Senior Java-разработчиков ведущих IT-компаний.
➡️ Практику создания реальных проектов — разработка своего серверного приложения на Java
➡️ Актуальные навыки, необходимые для трудоустройства Middle Java-разработчиком
➡️ Вы освоите инструменты: IntelliJ IDEA, Java Development Kit (JDK), Spring Framework, Hibernate, PostgreSQL, Apache Maven, Gradle, Docker, Kubernetes, Apache Kafka, RabbitMQ, JUnit, Postman, Jira.

👉 Получить специальные условия на курс можно оставив заявку по ссылке: https://vk.cc/ctmBSF

🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено.

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

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

Библиотека Java разработчика

Какой способ логирования выбрать?

Библиотеки логирования, ставшие стандартом де-факто, в хронологическом порядке их появления:

• java.util.Logging из стандартной библиотеки
• Log4j (deprecated)
• Logback
• Log4j 2

Все эти библиотеки поддерживают основные фичи: уровни логирования (что писать), различные хэндлеры (куда писать), форматы (как писать). Развитие библиотек происходило последовательно, в нюансах каждая из них учитывала ошибки предыдущей, сохраняя её преимущества. Обычно выбирают самые свежие варианты – Logback и Log4j 2.

Для совмещения нескольких решений в одном проекте существуют библиотеки-фасады, которые подставляют разные реализации под общий интерфейс:
• SLF4j
• Apache Commons Logging (JCL)

Кроме того, можно использовать bridge-библиотеки. Они маскируют одну реализацию непосредственно под интерфейс другой. С их помощью, например, можно уместить в одном проекте использование двух разных фасадов, или обойтись вовсе без фасадов.

👉@BookJava

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

Библиотека Java разработчика

Совет 💡

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

👉@BookJava

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

Библиотека Java разработчика

Как остановить поток?

В Java поток представлен классом Thread. В нём есть метод stop(), но пользоваться им нельзя, метод помечен как deprecated. Такая жесткая остановка моментально возвращает все захваченные потоком мониторы, и защищенные ими данные могут оказаться в неконсистентном состоянии.

Разработчики рекомендуют вместо этого использовать флаг, который будет показывать о намерении остановить поток. Флаг выставляется извне потока, а внутри проверяется в подходящий момент. Если нужно остановиться, поток просто выходит из метода run(). В качестве такого флага подойдет переменная типа AtomicBoolean.

Когда в потоке используются блокирующие операции, обычно для определенного типа операции существует свой способ её прервать. Например, можно закрыть сокет, на котором поток ожидает. Для большинства блокирующих операций сработает метод Thread.interrupt(). С его помощью можно прервать Object.wait() и операции из NIO.

Останется только правильно обработать такое прерывание. Прерванный wait() выбросит InterruptedException, Selector.select() вернет результат. Чтобы отличить осознанное прерывание с целью завершить тред от какого-либо другого, его обработку всё ещё необходимо снабдить проверкой флага.

👉@BookJava

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

Библиотека Java разработчика

🔥 Пройди тест по Java и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 .

🌲 А ещё, сейчас действуют новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cteT1K

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

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

Библиотека Java разработчика

Finding CPU Load with JFR. JDK Flight Recorder, в быту JFR

Среда наблюдения и мониторинга, встроенная в JDK! Начиная с JDK 11, JFR стал open-source и переименован в JDK Flight Recorder. Это делает JFR отличным выбором для отслеживания скрытых проблем, связанных с тем, почему приложение потребляет ресурсы, такие как CPU. В статье — о том, как работать с JFR.

https://inside.java/2023/11/27/sip090/

👉@BookJava

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

Библиотека Java разработчика

Совет 💡

Установка @Column в updateable=false приводит к тому, что реализация JPA будет игнорировать этот столбец при выполнении оператора обновления. При этом не будет выброшено исключение. Это никак не влияет на базу данных. Вы по-прежнему можете обновлять столбец вне Hibernate.

👉@BookJava

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

Библиотека Java разработчика

#вакансия #удалённо #parttime #koltin #преподаватель

Время делиться знаниями!

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

Вакансия: преподаватель на кастомный онлайн курс - "Kotlin backend"
Можно без опыта преподавания, мы поможем вам освоить практики преподавания

Преподаватель раскрывает тему с помощью теории и примеров из практики.
Занятия в zoom в дневное время. Можно выбрать удобную нагрузку и темы занятий.

С нами вы сможете ✅
-получать за проведение 1 вебинара - 10.000 рублей + за проверку 1 дз - 500 рублей
- структурировать свой опыт и знания;
- прокачать софт-скиллы;

Бонусы 🎁
- наши курсы со скидкой/бесплатно;
- можно приглашать лучших выпускников к себе на работу;
- воркшопы и конференции для наших преподавателей.

Обсудить подробнее @HR_Nikita

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

Библиотека Java разработчика

@ TransactionalEventListener

Используйте @TransactionalEventListener для выполнения определенной логики после успешной фиксации транзакции.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/event/TransactionalEventListener.html

👉@BookJava

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

Библиотека Java разработчика

Команда Поиска и рекламных технологий Яндекса приглашает на митап для senior бэкенд-разработчиков в Екатеринбурге.

Поговорим про разработку, поиграем в квиз, понетворкаемся и просто хорошо проведем время.

12 декабря, 18:00.
Регистрируйтесь, количество мест в офлайне ограничено!

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

Библиотека Java разработчика

👩‍💻 Набор в последнюю группу курса "Java Developer. Professional" в уходящем 2023 году!

🎉 В Otus праздничные цены для отличной карьеры в IT!

Пройди тест по Java и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса .

🎄 Новогодние скидки! Возможна оплата в рассрочку! Предложение ограничено.

➡️ ПРОЙТИ ТЕСТ: https://vk.cc/ctypek

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

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

Библиотека Java разработчика

Как использовать JavaEE сервлет в Spring Framework?

Web-приложение на Spring MVC технически само по себе работает на сервлетах: всю обработку запросов берет на себя единый DispatcherServlet. С его помощью реализуется паттерн Front Controller.

Если вам нужно определить в программе полностью независимый от Spring-контекста сервлет или фильтр, ничего особенного для этого делать не нужно. Как обычно в Servlet API, нужно объявить класс, добавить его в web.xml как сервлет, добавить для сервлета маппинг.

Сервлет живет вне Spring-контекста, внедрение зависимостей в нём просто так не заработает. Чтобы использовать autowiring, на этапе инициализации сервлета вызывается статический SpringBeanAutowiringSupport.processInjectionBasedOnServletContext, с текущим сервлетом и его контекстом в аргументах. В этом же утилитарном классе есть ряд других средств для работы с контекстом извне.

Если программа построена на Spring Boot, создание бина типа ServletRegistrationBean поможет добавить сервлеты в рантайме. А для декларативного добавления на этапе компиляции, к классу конфигурации применяется @ServletComponentScan. С этой аннотацией стартер приложения просканирует и добавит в контекст все web-компоненты в стиле Servlet 3.0: классы с аннотациями @WebFilter, @WebListener и @WebServlet.

👉@BookJava

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

Библиотека Java разработчика

Как передать runtime информацию о generic-типе?

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

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

Решение, которое сработает для многих случаев – объявление в методе аргумента типа Class<T>. Пользователь будет передавать в него значение Foo.class или fooInstance.getClass(). Проблемы с ним начинаются, когда становится нужно передать generic-тип. Синтаксис .class не поддерживает дженерики, а .getClass() от экземпляров List<String> и List<Integer> вернет один и тот же объект-описание сырого типа List.

На помощь приходит техника, описанная в предыдущей публикации.

1. Объявляется generic класс-обертка над типом: TypeInformation<T>;. Наш метод будет принимать информацию о типе в виде экземпляра этой обертки.

2. В обертку добавляется конструктор с видимостью protected. Теперь можно создавать объекты только наследников, но не самого этого типа.

3. Пользователь будет передавать экземпляр анонимного наследника обертки: new TypeInformation<List<String>>() {}.

4. Внутри вызов getClass().getGenericSuperclass() вернет ParameterizedType. Это будет описание типа родителя анонима, то есть самой обертки. Из него с помощью getActualTypeArguments() можно достать рантайм-информацию о значении дженерика (о List<String>).

👉@BookJava

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

Библиотека Java разработчика

♨️ Хочешь выйти на новый профессиональный уровень джавист?

- Осваивай Spring!


Тест на знание языка Java

— Ответь на 21 вопрос
и проверь, насколько хорошо nы знаешь язык Java и готовы освоить Spring. Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!

👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework": https://vk.cc/ctosfe

🎫 Курс доступен для приобретения в рассрочку!

🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено.

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

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

Библиотека Java разработчика

Beginning Java Objects: From Concepts to Code, 3rd Edition
Автор: Jacquie Barker (2023)

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

Скачать

👉 @java_360

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

Библиотека Java разработчика

Совет 💡

Самый простой способ сделать проверку нескольких полей без дополнительных классов и аннотаций - использовать
@AssertTrue. Вы помещаете его над методом, возвращающим булеву величину. Имя метода должно начинаться с "is".

👉@BookJava

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

Библиотека Java разработчика

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux


/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика

/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике

/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Чат программистов📌
/channel/developers_ru

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике

Excel лайфхак📌
/channel/Excel_lifehack

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

Библиотека Java разработчика

🦾 Освойте востребованный фреймворк всего за 5 месяцев и создавайте приложения на Java

🔥🔝 Знание Spring Framework – один из самых востребованных скиллов для разработчика, многие крупные проекты ищут именно таких специалистов на самые желанные офферы.

5️⃣ Вместе с OTUS вы можете освоить Spring всего за 5 месяцев в рамках курса «Разработчик на Spring Framework»!

Что даст вам этот курс:
✔️ Умение эффективно работать в проектах, где есть Spring
✔️ Знание современных возможностей Spring
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
✔️ Умение быстро проходить путь от идеи до production-grade
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5)

🌲 А ещё, сейчас действуют новогодние скидки! Предложение ограничено.

🎫 Курс доступен для приобретения в рассрочку!

Пройдите бесплатное вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом!

➡️ ПРОЙТИ ТЕСТ: https://vk.cc/ctgKrW

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

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

Библиотека Java разработчика

🚀 Совет по Spring 🚀

Протоколирование HTTP-запросов с помощью фильтра CommonsRequestLoggingFilter

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

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html

👉@BookJava

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

Библиотека Java разработчика

Какой выбрать тип для даты/времени?

В пакете java.util расположены старые классы стандартной библиотеки Java: Date (дата+время), Calendar (конвертация и манипуляция), TimeZone (смещение часового пояса). Эти классы обладали рядом известных проблем. Экземпляры были изменяемыми, что делало их потоко-небезопасными. Работа с датами через календарь была неудобной, не было нормальной поддержки часовых поясов и интернационализации.

Постепенно стандартом де-факто стала сторонняя библиотека Joda-Time. Её разработчики решили все названные выше проблемы.

В Java 8 был добавлен пакет java.time, который взял решения из Joda-Time в стандарт, создатель библиотеки участвовал в разработке. Ключевые классы пакета:
• LocalDate, LocalTime и LocalDateTime – локальные для пользователя дата/время.
• ZonedDateTime – дата/время в определенной часовой зоне.
• Period и Duration – периоды дат и времени соответственно.

Отдельно существуют классы Date и Time пакета java.sql. Это представление даты и времени для обмена данными через JDBC. Не стоит пользоваться ими вне уровня доступа к данным, хотя бы потому, что это классы-наследники старого java.util.Date.

Таким образом, в проектах на Java 8+ нужно использовать современные java.time.*, для более старых – подключать Joda-Time.

👉@BookJava

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

Библиотека Java разработчика

🌲Создайте интерактивную новогоднюю открытку на Java с нуля!

😳 Удивите близких, а заодно прокачайтесь в разработке на бесплатном практическом уроке от OTUS и Александра Фисунова – Senior Kotlin Developer в SSP Software на проекте ВТБ.

В результате урока вы:

✔️ Увидите, как пишется код и создаются программы на Java
✔️ Сможете повторить все шаги и делать подобные открытки на любую тематику

📢📢 Занятие пройдёт 20 декабря в 20:00 мск и будет приурочено к старту курса «Специализация Java-разработчик». На нем вы сможете освоить профессию с нуля до уверенного Middle.

👉 Для бесплатного участия и получения записи урока регистрируйтесь прямо сейчас: https://vk.cc/cta36k

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

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

Библиотека Java разработчика

Из каких основных сущностей состоит Spring-приложение?

Bean – объект бизнес-логики в терминологии Spring Framework.

BeanDefinition – описание того, как создавать бин. Объект хранит его тип, метаинформацию, набор параметров для конструктора.

BeanFactory – главная точка входа в DI-контейнер. Хранит BeanDefinition-ы, умеет создавать по ним экземпляры бинов, или выдавать существующие, в зависимости от скоупа.

BeanPostProcessor – донастраивает только что созданные бины, перед тем как положить их в контейнер. Его методы уже упоминались в публикации про жизненный цикл. Типичное место, чтобы оборачивать бины в прокси. Также с помощью такого пост-процессора внедряются @Autowired-зависимости. Пост-процессоры бинов живут внутри экземпляра BeanFactory.

BeanFactoryPostProcessor – тоже пост-обработчик, но для определений бинов (BeanDefinition). Обычно используется для модификации параметров или класса, из которых будут строиться бины.

Для создания определений бинов в основном применяются классы и интерфейсы *BeanDefinitionReader. Некоторые из них вызываются прямо из контекста приложения, другие реализуют BeanFactoryPostProcessor. Один такой пост-процессор, например, отвечает за добавление определений бинов по аннотациям @Component и @Configuration.
Реализация интерфейса ApplicationContext – основное хранилище конфигурации Spring-приложения (или его части). Контекст неизменяем, но может быть целиком перезагружен. Xml-файл конфигурации на старте приложения превращается в объект *XmlApplicationContext. Для конфигурации на аннотациях создастся AnnotationConfigApplicationContext. Контекст выполняет четыре разных обязанности:

1. DI-контейнер. ApplicationContext функционирует как специальная реализация BeanFactory. Он также производит и хранит бины, но, в отличие от обычных фабрик, контексты в приложении составляют иерархию. Определения бинов из дочерних контекстов перекрывают родительские.

2. Загрузка ресурсов. Под интерфейсом ResourceLoader контекст занимается загрузкой в память приложения файлов, как из classpath, так и из остальной файловой системы.

3. Публикация событий приложения. Контекст распространяет в приложении «события» – наследники ApplicationEvent. Любой бин, которому нужно получать уведомления об этих событиях, просто реализует интерфейс ApplicationListener. Таким образом реализуется паттерн наблюдатель.

4. Интернационализация. По коду, набору аргументов и локали, через интерфейс контекста MessageSource можно получать локализованные текстовые сообщения для пользователей.

👉@BookJava

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

Библиотека Java разработчика

В каких случаях разумно использовать массив, а не ArrayList?

Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях:

— Нужен предсказуемый и строгий контроль размера массива. Массивы имеют фиксированный размер, в отличие от ArrayList.

— Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList.

— Нужно создать структуру данных, которая должна быть неизменяемой.

— Требуется тесная интеграция с существующим кодом на основе обычных массивов. Переход на ArrayList может потребовать значительный рефакторинг.

— Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д.

— Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера.

👉@BookJava

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

Библиотека Java разработчика

Старт подготовительного курса по Java-разработке.

⏰ Когда: уже 12 декабря.

Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком.

Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником.

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

Запишитесь прямо сейчас!

Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

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

Библиотека Java разработчика

Немного о гигиене Java кода

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

Разумеется, все мы люди, живущие в несовершенном мире. Поэтому последнее, что мне хочется, это журить и так стеснённых обстоятельствами программистов. Тем более не хочется почём зря ругать разработчиков Open Source проектов. Но сейчас я предлагаю побыть перфекционистами и вспомнить все те случаи, когда с подобным кодом приходилось иметь дело вам.

https://habr.com/ru/companies/pvs-studio/articles/779300/

👉@BookJava

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