Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
👩‍💻 Пройди тест по Java

Spring от А до Я: как быстро доставлять продукт в продакшн и радовать пользователей? 👩‍💻

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

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

🎫 Начни обучение со скидкой, подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Паттерны проектирования программ на языке Java

Фабричный метод (FactoryMethod)
Абстрактная фабрика (Abstract Factory)
Строитель (Builder)
Одиночка (Singleton)
Прототип (Prototype)
Адаптер (Adapter) Реализация на уровне объектов.
Адаптер (Adapter) Реализация на уровне классов.
Мост (Bridge)
Компоновщик (Composite)
Декоратор (Decorator)
Фасад (Facade)
Легковес (Flyweight)
Заместитель (Proxy)
Цепочка обязанностей (Chain of responsibility)
Команда (Command)
Итератор (Iterator)
Посредник (Mediator)
Снимок (Memento)
Наблюдатель (Observer)
Состояние (State)
Стратегия (Strategy)
Шаблонный метод (Template method)
Посетитель (Visitor)

Полный курс на youtube

👉@BookJava
❤‍🔥6👍1
Совет 💡

Добавьте в JDBC URL свойство ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.

👉@BookJava
👍10🔥1
👩‍💻 Тест для профессионалов Java 👩‍💻

Ответьте на 20 вопросов и проверьте, насколько вы готовы к обучению на курсе — «Java Developer. Professional»

За 6 месяцев курса вы:
- Сможете создавать современные java-приложения
- Поймете основы функционирования JVM (сборка мусора, byteCode)
- Освоите приемы применения многопоточности.
- Самостоятельно решать задачи уровня Middle+
- Получите практику решения сложных задач с подробным код ревью от экспертных Java-разработчиков
- Откроете для себя подходы, которые позволят писать код быстрее и чище

Тест займет всего 20 минут вашего времени!

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

💣 Пройдете тест - получите скидку на курс, и доступ к бесплатным урокам курса.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1🥰1
Микросервисы на основе событий с Kafka Streams и Spring Boot

Всем привет! Это моя первая статья на Habr, так что не судите строго за стиль, а вот по содержанию буду рад любой конструктивной критике.

Статья основана на публикациях Confluent о том, как можно реализовать микросервисную архитектуру на основе событий с помощью Kafka Streams и KSQL.

https://habr.com/ru/articles/775900/

👉@BookJava
👍61
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин

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

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

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

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

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

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

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

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

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

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

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

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

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

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://t.me/Excel_lifehack

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

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
🔥1
Многопоточность

Как можно создать потоки в Java?
Как устроить Deadlock, а затем уйти от взаимной блокировки навсегда
Два самых полезных слова в многопоточности join() и Future

источник

👉@BookJava
👍7
Совет по Java 💡

Использование try-with-resources для автоматического управления ресурсами
Оператор try-with-resources гарантирует, что каждый ресурс будет закрыт в конце оператора.


try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}


👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁1🤯1
Что такое «ссылка на метод»?

Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:

⚫️имя_класса::имя_статического_метода для статического метода;
⚫️объект_класса::имя_метода для метода экземпляра;
⚫️название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.


private interface Measurable {
public int length(String string);
}

public static void main(String[] args) {
Measurable a = String::length;
System.out.println(a.length("abc"));
}


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


👉@BookJava
👍81
👩‍💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.

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

Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎2😁1
Использование var для локального выведения типа переменной (Java 10+):
С помощью var можно сократить шаблонный код, если тип переменной может быть выведен компилятором.


var list = new ArrayList<String>();
list.add("Hello");
list.add("World");
for (var item : list) {
System.out.println(item);
}


👉@BookJava
👍6👎3
Использование Optional для избежания NullPointerException:
Optional — это контейнер, который может содержать или не содержать ненулевое значение.


Optional<String> optional = Optional.ofNullable(getValue());
optional.ifPresentOrElse(
value -> System.out.println("Value is present: " + value),
() -> System.out.println("Value is absent")
);


👉@BookJava
👍11
Извлечение структурированных данных из изображений с использованием AI в Java

По мере того, как модели ИИ становятся всё лучше в обработке мультимодального ввода, включая изображения, перед нами открываются новые возможности для создания бизнес-приложений. В этом посте я рассмотрю, как с помощью Open AI и Spring AI извлечь информацию из изображения, которую можно использовать в нашем приложении.

В посте будут представлены только ключевые фрагменты кода. Ссылка на полный исходный код в моём репозитории GitHub.

https://vaadin.com/blog/extracting-structured-data-from-images-using-ai-in-java

👉@BookJava
👍6
📢Собеседование по Spring? Будьте на шаг впереди интервьюера!

Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью.

📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом.

Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework».

🗓Регистрация открыта: https://vk.cc/cH3S1R

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

По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию @DynamicUpdate на объекте
@Entity и Hibernate будет обновлять только те столбцы, которые изменились.

👉@BookJava
👍283👎1
Совет SpringBoot

Вы можете запустить метод в Spring @Service сразу после запуска приложения, аннотируя его с помощью
@EventListener (ApplicationReadyEvent.class). Метод не может иметь параметров. Иногда я неправильно использую его, чтобы быстро протестировать определенный метод Spring Service.

👉@BookJava
👍10
Приглашаем вас на открытый вебинар: «Реализация простого HTTP-сервера на Java Core»

Дата: 16 января в 20:00 мск
Спикер: Александр Фисунов

🧩Программа урока:
- Введение в HTTP и его роль в веб-приложениях.
- Создание простого HTTP-сервера с использованием Java Core.
- Разбор ключевых компонентов стандартной Java библиотеки для работы с HTTP.

📚Урок будет полезен тем, кто хочет:
- Узнать, как работают Java веб-приложения изнутри.
- Разобраться в принципах работы HTTP-протокола.
- Получить практический опыт в реализации базового HTTP-сервера.

🔥В результате урока вы:
- Узнаете, как использовать базовые возможности Java для создания HTTP-сервера.
- Поймете, как работают application server'ы и контейнеры сервлетов.
- Сможете применить полученные знания для работы с Java веб-приложениями.

Участники всех открытых уроков получат скидку🎁 на большое обучение

👉Регистрируйтесь на открытый вебинар по ссылке: https://vk.cc/cH5vrV

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
3
Использование лямбда-выражений и Streams:
Лямбда-выражения и streams делают код более лаконичным и читаемым.


List<String> names = Arrays.asList("John", "Jane", "Jack", "Doe");
names.stream()
.filter(name -> name.startsWith("J"))
.map(String::toUpperCase)
.forEach(System.out::println);


👉@BookJava
👍83