Совет по Java 💡
Использование try-with-resources для автоматического управления ресурсами
Оператор
👉@BookJava
Использование 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 для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
👉@BookJava
Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом 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
👍8❤1
👩💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cGZV1O
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cGZV1O
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎2😁1
Использование var для локального выведения типа переменной (Java 10+):
С помощью var можно сократить шаблонный код, если тип переменной может быть выведен компилятором.
👉@BookJava
С помощью 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 — это контейнер, который может содержать или не содержать ненулевое значение.
👉@BookJava
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
По мере того, как модели ИИ становятся всё лучше в обработке мультимодального ввода, включая изображения, перед нами открываются новые возможности для создания бизнес-приложений. В этом посте я рассмотрю, как с помощью 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
Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью.
📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом.
Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework».
🗓Регистрация открыта: https://vk.cc/cH3S1R
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎4🤡1
Совет
По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию
👉@BookJava
По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию
@DynamicUpdate
на объекте @Entity
и Hibernate будет обновлять только те столбцы, которые изменились.👉@BookJava
👍28❤3👎1
Совет SpringBoot
Вы можете запустить метод в Spring
👉@BookJava
Вы можете запустить метод в 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
⏰Дата: 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 делают код более лаконичным и читаемым.
👉@BookJava
Лямбда-выражения и 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
👍8❤3
Использование метода
Метод
👉@BookJava
String.join
: Метод
String.join
можно использовать для объединения строк с заданным разделителем.
List<String> items = Arrays.asList("Apple", "Banana", "Cherry");
String result = String.join(", ", items);
System.out.println(result); // Output: Apple, Banana, Cherry
👉@BookJava
👍9🤓4
Использование
👉@BookJava
StringBuilder
для эффективной работы со строками: StringBuilder
используется для операций с изменяемыми строками, что улучшает производительность.
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb.toString()); // Output: Hello World
👉@BookJava
👍4🎉1
👩💻 Как сделать Java-приложения быстрее и эффективнее?
Асинхронное программирование — must-have для современных приложений. Хотите узнать, как использовать NIO2 для максимальной производительности?
🗓 20 января в 20:00 мск — откроем двери в мир Java NIO2! Разберём основы, научим писать асинхронный код и раскроем секреты пропускной способности приложений.
Успейте записаться, чтобы не упустить возможность освоить продвинутые инструменты Java.
А еще участники вебинара получат скидку на обучение на курсе «Java Developer. Advanced».
➡️ Регистрация на вебинар: https://vk.cc/cHhlu7
Асинхронное программирование — must-have для современных приложений. Хотите узнать, как использовать NIO2 для максимальной производительности?
🗓 20 января в 20:00 мск — откроем двери в мир Java NIO2! Разберём основы, научим писать асинхронный код и раскроем секреты пропускной способности приложений.
Успейте записаться, чтобы не упустить возможность освоить продвинутые инструменты Java.
А еще участники вебинара получат скидку на обучение на курсе «Java Developer. Advanced».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
Использование
Метод
👉@BookJava
Map.computeIfAbsent
для упрощённой инициализации Map: Метод
computeIfAbsent
помогает инициализировать и вычислять значения, если они отсутствуют.
Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("Apple");
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("Banana");
System.out.println(map); // Output: {fruits=[Apple, Banana]}
👉@BookJava
👍7🥱5🤝2
🚀 Spring Boot с DevTools для Live Reload🚀
Ускорьте разработку с помощью DevTools! 🔥
https://docs.spring.io/spring-boot/reference/using/devtools.html
👉@BookJava
Ускорьте разработку с помощью DevTools! 🔥
https://docs.spring.io/spring-boot/reference/using/devtools.html
👉@BookJava
👍4👎1
👩💻 «OpenAPI + Spring».
Приглашаем на открытый урок, где мы разберем:
✔️ Что такое OpenAPI и для чего она нужна.;
✔️ Генерация спецификаций;
✔️ Интеграция OpenAPI в Spring-приложения;
✔️ Советы по масштабируемости и поддержке.
🗓 23 января в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework»
🔗 Ссылка на регистрацию : https://vk.cc/cHlYk4
Приглашаем на открытый урок, где мы разберем:
🗓 23 января в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework»
🔗 Ссылка на регистрацию : https://vk.cc/cHlYk4
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Для чего нужно ключевое слово super?
Как и многие другие ключевые слова,
1. Задать нижнюю границу generic-типа:
2. Обратиться к члену класса-родителя, который перекрыт (shadowed) членами наследника или локальными переменными:
3. Вызвать в конструкторе конструктор родителя:
4. В случае неопределенности, уточнить родительский тип
👉@BookJava
Как и многие другие ключевые слова,
super
имеет несколько разных значений в зависимости от контекста:1. Задать нижнюю границу generic-типа:
Consumer<? super Number>
2. Обратиться к члену класса-родителя, который перекрыт (shadowed) членами наследника или локальными переменными:
int foo = super.foo
3. Вызвать в конструкторе конструктор родителя:
SubClass() { super("subclass param"); }
4. В случае неопределенности, уточнить родительский тип
interface A {
default int foo() { return 1; }
}
interface B {
default int foo() { return 2; }
}
class C implements A, B {
@Override
public int foo() {
return B.super.foo() ;
}
}
👉@BookJava
👍4
Офер в Яндекс для опытных бэкендеров за два дня
15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секции 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.
Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать.
Узнать подробности и зарегистрироваться.
15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секции 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.
Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать.
Узнать подробности и зарегистрироваться.
🤮7👍3🔥1
Media is too big
VIEW IN TELEGRAM
Spring Boot Tutorial | Полный курс [2023]
В этом учебном пособии по Spring Boot рассказывается о том, как начать работу с Spring Boot и Java.
00:00 Intro
01:00 Quick Word
02:12 Spring Boot Overview
03:44 Project Overview
04:28 Spring Initializr
08:05 IntelliJ
10:29 Starting The Server
14:03 Simple API with Spring Boot
18:06 Student Class
23:19 API Layer
26:38 Business Layer
29:08 Dependency Injection
32:47 Properties file
36:15 Creating and Connecting to Database
39:48 JPA and @ Entity
42:35 JPA in Action
45:52 Amigoscode Database Courses
47:35 JPA Repository
52:20 Saving Students
58:49 @ Transient
01:03:01 Post Mapping
01:08:00 Writing Business Logic
01:12:43 Testing Post Request
01:15:35 Deleting Students
01:21:33 Exercise
01:22:53 Solution
01:26:54 Testing
01:29:41 Packaging and Running Application
01:34:52 Next steps
источник
👉@BookJava
В этом учебном пособии по Spring Boot рассказывается о том, как начать работу с Spring Boot и Java.
00:00 Intro
01:00 Quick Word
02:12 Spring Boot Overview
03:44 Project Overview
04:28 Spring Initializr
08:05 IntelliJ
10:29 Starting The Server
14:03 Simple API with Spring Boot
18:06 Student Class
23:19 API Layer
26:38 Business Layer
29:08 Dependency Injection
32:47 Properties file
36:15 Creating and Connecting to Database
39:48 JPA and @ Entity
42:35 JPA in Action
45:52 Amigoscode Database Courses
47:35 JPA Repository
52:20 Saving Students
58:49 @ Transient
01:03:01 Post Mapping
01:08:00 Writing Business Logic
01:12:43 Testing Post Request
01:15:35 Deleting Students
01:21:33 Exercise
01:22:53 Solution
01:26:54 Testing
01:29:41 Packaging and Running Application
01:34:52 Next steps
источник
👉@BookJava
❤6👍1