Java уроки для начинающих
#1 | Установка JDK | Установка Intellij Idea | Hello World
#2 | Переменные | Ошибки компиляции
#3 | Примитивные типы данных | Тип данных char
#4 | Примитивные числовые типы данных | byte | short | int | long
#5 | Примитивные вещественные типы данных | double | float
#6 | Тип boolean | Операторы сравнения |Условный оператор if
#7 | Логические операции И, ИЛИ, НЕ
источник
👉@BookJava
#1 | Установка JDK | Установка Intellij Idea | Hello World
#2 | Переменные | Ошибки компиляции
#3 | Примитивные типы данных | Тип данных char
#4 | Примитивные числовые типы данных | byte | short | int | long
#5 | Примитивные вещественные типы данных | double | float
#6 | Тип boolean | Операторы сравнения |Условный оператор if
#7 | Логические операции И, ИЛИ, НЕ
источник
👉@BookJava
👍3🫡1🗿1
Как отслеживать приложение Spring Boot с помощью Ostara
Когда приложение в продакшене, разумно следить за его состоянием. Вы хотите быть уверены, что все работает без проблем, и единственный способ узнать это - определить состояние вашего приложения. Когда что-то пойдет не так, вы, надеюсь, получите уведомление до того, как ваш клиент заметит проблему, и, возможно, сможете решить ее до того, как клиент что-то заметит. В предыдущем посте было рассказано о том, как отслеживать состояние приложения с помощью Spring Actuator, Prometheus и Grafana. В этой заметке вы рассмотрите альтернативный подход с использованием Spring Actuator в сочетании с Ostara. Настройка Ostara немного проще, и поэтому она выглядит как подходящая альтернатива. Доказательство пудинга - в его поедании, так что давайте попробуем Ostara!
https://mydeveloperplanet.com/2023/11/29/how-to-monitor-a-spring-boot-app-with-ostara/
👉@BookJava
Когда приложение в продакшене, разумно следить за его состоянием. Вы хотите быть уверены, что все работает без проблем, и единственный способ узнать это - определить состояние вашего приложения. Когда что-то пойдет не так, вы, надеюсь, получите уведомление до того, как ваш клиент заметит проблему, и, возможно, сможете решить ее до того, как клиент что-то заметит. В предыдущем посте было рассказано о том, как отслеживать состояние приложения с помощью Spring Actuator, Prometheus и Grafana. В этой заметке вы рассмотрите альтернативный подход с использованием Spring Actuator в сочетании с Ostara. Настройка Ostara немного проще, и поэтому она выглядит как подходящая альтернатива. Доказательство пудинга - в его поедании, так что давайте попробуем Ostara!
https://mydeveloperplanet.com/2023/11/29/how-to-monitor-a-spring-boot-app-with-ostara/
👉@BookJava
👍5
👍4
Запуск потоков в Java
В этой статье мы разберем различные способы запуска потоков. Описав задачу, мы выполнить ее в многопоточной среде при помощи класса Thread и сравним с продвинутыми способами работы создания и запуска потоков.
https://telegra.ph/Zapusk-potokov-v-Java-01-15
👉@BookJava
В этой статье мы разберем различные способы запуска потоков. Описав задачу, мы выполнить ее в многопоточной среде при помощи класса Thread и сравним с продвинутыми способами работы создания и запуска потоков.
https://telegra.ph/Zapusk-potokov-v-Java-01-15
👉@BookJava
Telegraph
Запуск потоков в Java
1. Введение В этой статье мы разберем различные способы запуска потоков. Описав задачу, мы выполнить ее в многопоточной среде при помощи класса Thread и сравним с продвинутыми способами работы создания и запуска потоков. 2. Базовый запуск Thread 2.1 Переопределить…
👍2
Что будет со ссылкой на метод, если заменить объект-владельца?
Ответ на этот вопрос будет очевиден, если вы уверенно понимаете, что скрывается за терминами ссылки вообще и ссылки на метод.
Для нестатических методов работает позднее связывание. По этой причине, когда мы обращаемся к такому методу по ссылке, то получаем метод экземпляра, а не типа переменной. На примере с изображения ниже метод класса A не будет затронут.
Факт позднего связывания в этом вопросе может ввести в заблуждение. Связывание случается в момент обращения, а не вызова. В результате в переменной хранится неизменяемая копия ссылки на метод. Она ведет на метод объекта, а не хранящей его переменной. Поэтому переприсвоение переменной позже не окажет на ссылку никакого эффекта.
Для достижения реального связывания в момент вызова в байткоде существует инструкция invokedynamic. Однако гораздо проще добиться того же результата, если использовать поведенческий паттерн ООП, например, посетителя.
👉@BookJava
Ответ на этот вопрос будет очевиден, если вы уверенно понимаете, что скрывается за терминами ссылки вообще и ссылки на метод.
Для нестатических методов работает позднее связывание. По этой причине, когда мы обращаемся к такому методу по ссылке, то получаем метод экземпляра, а не типа переменной. На примере с изображения ниже метод класса A не будет затронут.
Факт позднего связывания в этом вопросе может ввести в заблуждение. Связывание случается в момент обращения, а не вызова. В результате в переменной хранится неизменяемая копия ссылки на метод. Она ведет на метод объекта, а не хранящей его переменной. Поэтому переприсвоение переменной позже не окажет на ссылку никакого эффекта.
Для достижения реального связывания в момент вызова в байткоде существует инструкция invokedynamic. Однако гораздо проще добиться того же результата, если использовать поведенческий паттерн ООП, например, посетителя.
class A {
void printMe() { System.out.printin("A"); }
}
class B extends A {
@override void printMe() { System.out -println("B"); }
}
class C extends B {
@override void printMe() { System.out printin("C"); }
}
A target = new B);
Runnable methodReference = target :printMe;
target = new C() ;
// methodReference не сохраняет связь с обновленным target
methodReference. run() ; // напечатает "В"
👉@BookJava
👍4
Spring Cloud Config и Git. Хранение и распространение конфигураций приложений
Меня зовут Дмитрий Демченко. Я Java разработчик. На проектах я активно применяю новые технологии и подходы при разработке приложений, в том числе Spring Cloud и компоненты, входящие в общую экосистему этой технологии.
В данной статье я хочу поделиться с вами своим подходом к конфигурации Spring Boot приложений в облаке, где файлы конфигураций приложений находятся в Git репозитории, и который я применяю в работе и считаю одним из самых простых, удобных и легко поддерживаемых.
https://habr.com/ru/articles/764402/
👉@BookJava
Меня зовут Дмитрий Демченко. Я Java разработчик. На проектах я активно применяю новые технологии и подходы при разработке приложений, в том числе Spring Cloud и компоненты, входящие в общую экосистему этой технологии.
В данной статье я хочу поделиться с вами своим подходом к конфигурации Spring Boot приложений в облаке, где файлы конфигураций приложений находятся в Git репозитории, и который я применяю в работе и считаю одним из самых простых, удобных и легко поддерживаемых.
https://habr.com/ru/articles/764402/
👉@BookJava
👍4
🚀 Spring Retry 🚀
org.springframework.retry.support.RetryTemplate
Реализуйте устойчивые операции в приложениях Spring. Определите поведение повторных попыток для надежной обработки ошибок. 🔥
https://docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/support/RetryTemplate.html
👉@BookJava
org.springframework.retry.support.RetryTemplate
Реализуйте устойчивые операции в приложениях Spring. Определите поведение повторных попыток для надежной обработки ошибок. 🔥
https://docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/support/RetryTemplate.html
👉@BookJava
👍2
Совет Spring Framework💡
Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в
👉@BookJava
Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в
java.util.Optional
. Таким образом вы сообщаете, что этот бин является необязательным, избегаете исключения, если он не существует, и можете аккуратно обработать его отсутствие с помощью Optional API.👉@BookJava
👍25
Совет Spring Framework💡
Вы можете автосопрягать несколько бинов, реализующих определенный интерфейс, в список, содержащий все реализации. Определите список с общим типом, который вы хотите использовать. Вы можете использовать инъекцию конструктора, как показано на картинке, или инъекцию поля.
👉@BookJava
Вы можете автосопрягать несколько бинов, реализующих определенный интерфейс, в список, содержащий все реализации. Определите список с общим типом, который вы хотите использовать. Вы можете использовать инъекцию конструктора, как показано на картинке, или инъекцию поля.
👉@BookJava
👍4
Ловушка тестирования простой оркестровки
Код оркестровки организует вызовы других компонентов (зависимостей) в определенный процесс. Такие части кода иногда называют координаторами или контроллерами. Оркестровочный код обычно прост. В нем нет (или почти нет) условной логики или алгоритмической сложности. Его основная задача - делегировать работу соответствующим зависимостям в определенном порядке. Давайте рассмотрим пример, чтобы лучше проиллюстрировать это.
https://mikemybytes.com/2024/01/17/the-trap-of-testing-simple-orchestration/
👉@BookJava
Код оркестровки организует вызовы других компонентов (зависимостей) в определенный процесс. Такие части кода иногда называют координаторами или контроллерами. Оркестровочный код обычно прост. В нем нет (или почти нет) условной логики или алгоритмической сложности. Его основная задача - делегировать работу соответствующим зависимостям в определенном порядке. Давайте рассмотрим пример, чтобы лучше проиллюстрировать это.
class Orchestrator {
// ...
// (injected) dependencies
private final Service service; // business logic
private final Mapper mapper; // field-to-field mapping
private final Repository repository; // glue code
public ImportantObject orchestrate(ImportantDto dto) {
ImportantObject important = mapper.toImportantObject(dto);
ImportantObject processed = service.process(important);
return repository.save(processed);
}
}
https://mikemybytes.com/2024/01/17/the-trap-of-testing-simple-orchestration/
👉@BookJava
👍2
Media is too big
VIEW IN TELEGRAM
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
источник
👉@BookJava
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
источник
👉@BookJava
👍5
Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL
В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.
https://habr.com/ru/companies/ydb/articles/786550/
original https://blog.ydb.tech/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b
👉@BookJava
В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.
https://habr.com/ru/companies/ydb/articles/786550/
original https://blog.ydb.tech/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b
👉@BookJava
👍2
🚀 Расширенные советы по Spring Boot🚀
Создание собственного FailureAnalyzer
Перехват исключений при запуске и преобразование их в человекочитаемые сообщения эффективно достигается с помощью FailureAnalyzer в Spring Boot 🔥.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.application.failure-analyzer
👉@BookJava
Создание собственного FailureAnalyzer
Перехват исключений при запуске и преобразование их в человекочитаемые сообщения эффективно достигается с помощью FailureAnalyzer в Spring Boot 🔥.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.application.failure-analyzer
👉@BookJava
👍5