Хранилище файлов. Java + WebDav
Java + WebDav - загружаем файл на webdav через Rest запрос.
00:00 Приветствие
00:34 Spring Init
00:55 Docker Hub
01:54 docker-compose
04:25 webdav.conf
06:00 application.yaml
06:50 Sardine
07:36 WebDavConfig
09:15 WebConfig
11:40 FileService
14:09 Controller
17:22 Docker Fix
17:47 Postman
18:16 что не так?
20:46 Подписывайтесь
источник
👉@BookJava
Пишем минимальный ActivityPub-сервер с нуля
Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.
В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
https://habr.com/ru/articles/702724/
👉@BookJava
👩💻 Как эффективно использовать Java Collections для хранения, извлечения и обработки данных?
Ждем вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:
✔️ обзор структуры коллекций и их основных методов;
✔️ особенности различных реализаций коллекций;
✔️ примеры применения коллекций для решения практических задач.
Урок идеально подходит для тех, кто начинает изучать Java или хочет углубить свои знания.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAgDLxРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Совет по Spring
В этом выпуске мы рассмотрим новый проект Spring Boot Testjars, который значительно упрощает создание и повторное использование сателлитных Java-сервисов, таких как микросервисы на базе Spring Boot или инфраструктура, например, Spring Authorization Server.
👉@BookJava
Что если бы Java-разработчики могли создавать веб-приложения, не прибегая к помощи JavaScript? 🤔
👉 @BookJava
Профилирование Java-приложений: от HeapDump до Grafana
Добрый день дорогой читатель. Сегодня я дам тебе несколько советов для поиска и анализа проблем в твоем Java приложении. Мы разберем такие вещи как: HeapDump, ThreadDump, VisualVM, Grafana, HikariPool, Prometheus и Garbage Collector.
Повествование будет строиться следующим образом: Я буду описывать потенциальные проблемные сценарии (use-case’ы) и шаги, которые необходимо предпринять для локализации и решения проблемы.
https://habr.com/ru/articles/837834/
👉@BookJava
Дилемма 3n+1 на Java. Кэшируем рекурсию
Приветствую всех, сегодня я хочу рассказать про одну из самых интересных неразгаданных загадок математики. Гипотеза Коллатца, или же дилемма 3n+1 прославилась благодаря простоте своей формулировки, при этом оставаясь не доказанной уже более 90 лет.
В этом выпуске : обзор самой гипотезы, код-снипеты, кэширование, рекурсия, и много чего еще.
Поехали.
Краткая формулировка, то бишь немного измененная выдержка из википедии Collatz conjecture — Wikipedia Гипотеза Коллатца — Википедия (wikipedia.org):
Берём любое натуральное число n:
1) Если оно чётное, то делим его на 2,
2) Если нечётное, то умножаем на 3 и прибавляем 1.
Над полученным числом выполняем те же самые действия, и так далее.
https://habr.com/ru/articles/839352/
👉@BookJava
🚀 Совет по Spring 🚀
Тестовые библиотеки Spring Boot (Testjars) 🔥
Привет, поклонники Spring! В этом выпуске мы рассмотрим новый проект Spring Boot Testjars, который значительно упрощает создание и повторное использование вспомогательных сервисов на базе Java, таких как микросервисы на основе Spring Boot или инфраструктурные компоненты, например, Spring Authorization Server.
источник
👉@BookJava
📚 Пройди тест на знание Java и получи доступ к 🌿🌿 открытым урокам по Spring
🕗 Два открытых урока можно посмотреть без регистрации и оценить формат обучения. Для доступа ко всем открытым урокам из курса «Разработчик на Spring Framework» от OTUS необходимо пройти входное тестирование: ответить на 21 вопрос и уложиться в тайминг.
📊 -Курс рассчитан на профессионалов с практическим опытом работы на Java.
- Мы будем 5 месяцев погружать вас в теорию и практику Spring Framework. - Дадим 18 практических работ. Процесс review сдаваемой работы максимально приближен к тому, каким он мог быть на реальном проекте. Помимо этого, мы попросим вас сдать дипломную работу, каких скучных записанных занятий, только живые онлайн-лекции, интересные практические задачи и развернутая обратная связь от лучших экспертов ниши. 📅 Старт группы уже 30 сентября 2024г. Доступна рассрочка на обучение.
➡️ НАЧАТЬ ТЕСТИРОВАНИЕ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🎥 Java для начинающих | Уроки Java
#1 - Программирование на Java
#2 - Установка Java JDK и IntelliJ IDEA
#3 - Типы данных
#4 - Переменные
#5 - Арифметические операции
#6 - Условные операторы
#7 - циклы for, wile, do wile
#8 - Массивы в Java
#9 - Классы в Java
#10 - Тип данных String в Java
#11 - Наследование в Java
#12 - Java интерфейсы
#13 - Абстрактные классы java
#14 - Вложенные классы java
#15 - Пакеты в java
#16 - Перегрузка методов java
#17 - Основы ООП
#18 - Обработка исключений в java , try catch java / Java с нуля
Все видео доступны на youtube
👉@BookJava
Java Virtual Threads
0:00 Intro
0:42 What are preview features, and how you can use them
3:34 What are Virtual Threads about?
4:21 Goals of Virtual Threads
5:11 Cost of a platform thread and CPU usage
7:49 How to use Virtual Threads
9:11 Using ExecutorServices with Virtual Threads
11:04 ThreadLocals and Synchronization
11:19 Synchronization, pinned threads and locks
13:14 Final words and outro
👉@BookJava
Совет
Если вы случайно уже используете генератор метамодели в своем проекте, вы можете использовать сгенерированные классы модели в атрибуте mappedBy
ваших отношений, чтобы обеспечить немного большую типобезопасность.
👉@BookJava
Конвейер для Spring-приложений прямо в IDE
Приглашаем на презентацию нового инструмента от Haulmont — компании, подарившей миру JPA Buddy и другие инструменты разработки, разрабатывающей корпоративное ПО и отказоустойчивые решения.
На встрече разработчики расскажут про Amplicode — набор инструментов для эффективной разработки и развертывания web-приложений на современном стеке технологий. Amplicode учит IDE работать в терминах фреймворка.
🌐 Онлайн в YouTube и на VK Видео
📆 3 сентября, 18:00 (МСК, GMT+3)
В программе:
— Обзорный доклад об Amplicode: история создания инструмента и возможности.
— Время для кода! Демо Amplicode от экспертов — ревью приложения, его доработка, разработка REST API, настройка доступа, деплой и создание админки на React Admin.
— Открытая дискуссия: команда Amplicode и эксперты ответят на вопросы участников.
Ссылку на трансляцию отправим вам на почту перед началом вебинара.
Регистрация — на сайте.
Реклама. ООО «ХОУЛМОНТ САМАРА». ИНН 6316134393
Что можно делать с классом Connection?
Итак, в результате соединения JDBC драйвера создается объект Connection – сессия работы с базой данных. Это главный класс при работе с JDBC. Основная роль этого класса – исполнение SQL-выражений (Statement) и получение их результатов в виде ResultSet.
Connection предоставляет в виде класса DatabaseMetaData мета-информацию о базе данных в целом: таблицы, поддерживаемая грамматика SQL, хранимые процедуры, возможности этого соединения, и т.д..
В коннекшне задается множество настройки самого соединения. Это уровень изоляции транзакций, режим авто-коммита, ключи шардирования, и многое другое. Маппинг типов данных SQL в Java-типы задается здесь же, свойством typeMap.
Помимо выполнения выражений, Connection предоставляет средства для управления транзакциями. Его методами можно создать Savepoint, откатиться к нему, закоммитить транзакцию когда авто-коммит отключен.
#SQL
👉@BookJava
🚀Совет Spring AnnotationAwareOrderComparator
Утилитный класс для сравнения объектов на основе их аннотаций @Order
или Ordered
. Он используется в ситуациях, когда нужно определить порядок выполнения компонентов. 🔥
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/AnnotationAwareOrderComparator.html
👉@BookJava
⌨️ Ваши знания в области Java недостаточны для успешного прохождения нужных собеседований и сертификации Oracle Java Programmer (OCAJP)?
Всего за 4 месяца вы уверенно овладеете всеми аспектами языка Java, научитесь создавать чистый и легко читаемый код, сможете успешно пройти любое собеседование, а также успешно пройти сертификацию Oracle Java Programmer.
Хотите это реализовать? Присоединяйтесь к курсу «Углубленное изучение языка Java».
Ознакомится с курсом можно на бесплатном открытом уроке «Определение областей действия переменных (Scopes) в Java».
🔌 Урок пройдет 16 сентября в 20:00 мск.
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAiZiaРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🚀 Java Streams: Основные методы для чистого и эффективного кода!
Java Streams предлагают множество методов для упрощения манипуляций с данными и повышения читаемости кода.
Вот краткое руководство с примерами:
Освойте эти методы, чтобы писать более чистый и эффективный код на Java! 💡
👉@BookJava
🚀 Советы по Spring Boot 💡
Библиотека Spring Boot Startup Report генерирует интерактивный отчет о запуске приложения Spring Boot, который позволяет понять, что влияет на время запуска приложения, и, возможно, поможет его оптимизировать. 🔥
https://github.com/maciejwalkowiak/spring-boot-startup-report
👉@BookJava
Работа с библиотекой WebFlux вызывает затруднения у многих Java/Kotlin разработчиков
Код выглядит непривычно, непонятно в каких потоках выполняется логика и как этим управлять
Сегодня я попытаюсь объяснить простым языком такой важный аспект, как момент переключения потоков в WebFlux, это поможет вам допускать меньше ошибок и писать более производительный код
Перед тем как начать, подписывайтесь на мой блог в телеграм, где вы сможете найти другие материалы от меня
Статья по теме https://habr.com/ru/articles/811289/
⚡ Эксперт MES
ИТ-команда Росатома ищет Эксперта MES, который будет отвечать за систему управления производством: разрабатывать требования, настраивать, тестировать модули и поддерживать систему после внедрения.
✅ Пригодятся знания типовых моделей и структур данных MES и опыт работы с системой.
✅ Важно, чтобы вы умели программировать в среде фреймворков .NET, J2EE, JavaScript, а также понимали, как моделировать бизнес-процессы.
☎ Узнать о вакансии больше можно по ссылке:
https://voronezh.hh.ru/vacancy/105720940
Регистрация на Java meetup 2024 уже открыта! ⚡️
7 сентября встречаемся в штаб-квартире Сбера на Кутузовском проспекте, чтобы поговорить о Spring Framework, нативных сборках Java-приложений и устройстве разработки в мире open source.
Для опытных разработчиков на митапе будет инсайдерская информация и глубокое погружение в технологию, а для тех, кто только начинает путь в IT — простое и понятное изложение материала.
По ссылке — подробное расписание и заявка на участие. До встречи на Java meetup 2024! 💚
🎯 Хотите стать Java-разработчиком, но думайте, что изучение основ программирования — это скучно?
Только не в нашем формате! Ждём вас на онлайн-курсе «Специализация Java-разработчик». Только живые вебинары, вы освоите самые востребованные инструменты и лучшие практики.
Ознакомится с курсом можно на бесплатном открытом уроке «Введение в Java Collections: обзор интерфейсов и их имплементаций».
📌 Урок пройдет 11 сентября в 20:00 мск.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cA1Y5GРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Совет по Spring 🚀
Используйте SSEEvent
в Spring для бесшовных обновлений в реальном времени в ваших приложениях 🔥
👉@BookJava
Структурированное логирование в Spring Boot 3.4 🚀
В Spring Boot 3.4 поддержка структурированного логирования доступна из коробки. Поддерживаются форматы Elastic Common Schema (ECS) и Logstash. 🔥
https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot-3-4
👉@BookJava
👩💻 Типы данных Java: идентификаторы и примитивы
Хотите глубже понять типы данных в Java? Ждем вас на открытом вебинаре 2 сентября в 20:00 мск,
где мы разберем:
➡️ как работать с идентификаторами и примитивами в Java;
➡️ как решать задачи, аналогичные экзаменационным, и набить руку на примерах;
➡️ все возникающие вопросы.
Урок идеально подходит для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.
Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.
Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czWbpxРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Тестовое собеседование на Middle Java-разработчика завтра
Завтра, 28 августа в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
1. Роман Половинцев, ex-TeamLed в Сбер, Т-Банк, Райффайзенбанк и ВТБ позадает реальные вопросы и задачи разработчику-добровольцу
2. Роман будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Роману
Что узнаешь на прямом эфире от ШОРТКАТ:
- Чего ждут от кандидатов на Middle позиции в Java-разработке
- Какие вопросы задают на интервью и зачем
- Как подготовиться к собесу, чтобы получить оффер
Это бесплатно?
Бесплатно
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
JRE – Java Runtime Environment, Java-окружение времени выполнения. Это набор всего необходимого чтобы запустить скомпилированную Java-программу. Окружение состоит из виртуальной машины Java (JVM), библиотеки классов (Java Class Library), консольной команды java и прочей инфраструктуры. Тем не менее, JRE не достаточно чтобы создавать новые программы.
JDK – Java Development Kit, набор Java-разработчика. Это полнофункциональный SDK для Java. JDK включает в себя JRE, но кроме того содержит компилятор (javac) и другие инструменты разработки, такие как javadoc и jdb. С помощью JDK можно создавать и компилировать программы.
В большинстве случаев, если вам нужно только запускать Java программы, вы устанавливаете только JRE, если же вы планируете программировать на Java, вместо этого вам необходим JDK.
https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre/1906455#1906455
👉@BookJava
Совет по JUnit 5 🚀
Тестируйте методы-шаблоны с помощью @TestTemplate
Используйте @TestTemplate
для определения методов-шаблонов, которые создают динамические тесты на основе входных данных. 🔥
https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/TestTemplate.html
👉@BookJava
👩💻 Хотите научиться писать надежные тесты и создавать стабильные приложения на Java?
Ждем вас на открытом вебинаре «Введение в Java Unit: тестирование с использованием Junit и Mockito», 28 августа в 20:00 мск,
где мы разберем:
➡️ историю разработки без тестирования;
➡️ как писать простые тесты и получать быстрые результаты;
➡️ как использовать тестовые заглушки;
➡️ отличия интеграционных от юнит-тестов.
📌Урок идеально подходит для тех, кто начинает изучать Java и хочет внедрить тестирование в свою повседневную разработку.
Спикер Роман Вороновский — опытный разработчик и ментор.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czHN6kРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Особенности работы класса Matcher
Как мы уже писали ранее, основная функциональность работы с регулярными выражениями представлена в Java классом Matcher
. Рассмотрим его подробнее.
Во-первых, в общем случае матчер действует не по всей строке, а только внутри заданного «региона». Изначально регион совпадает со всей строкой, но его можно сужать и изменять в процессе работы. Методы regionStart
и regionEnd
возвращают текущие границы, а region
устанавливает новые.
Свойство transparentBounds
экземпляра матчера может разрешать регулярному выражению заглядывать при поиске за границы, при условии что итоговая совпавшая подстрока будет всё ещё в границах региона (lookahead
и lookbehind
). А выключив свойство anchoringBounds
можно перестать трактовать границы региона как границы строки (^ и $ в выражении).
Регулярные выражения используются для двух задач: поиска и замены. Поговорим о поиске.
Метод matches
проверяет, удовлетворяет ли выражению весь регион, lookingAt
– хотя бы его начало. Метод find
похож на next
итератора – он последовательно идет по строке, и находит следующие совпадения с выражением. Эту итерацию можно сдвинуть на определенную позицию строки, передав позицию как параметр.Matcher
реализует интерфейс MatchResult
. Через него предоставляется информация о последнем успешном поиске (любым из перечисленных методов). Если эту информацию необходимо сохранить, toMatchResult()
выделит её в отдельный иммутабельный объект. А если хочется обработать последовательность всех совпадений в виде стрима, поможет метод results()
.
Интерфейс MatchReslut
предоставляет методы group
, start
и end
. Они дают содержимое найденной подстроки и ее позицию в строке. Если этим методам параметром передать номер или имя группы, то результатом будет информация не о всей подстроке, а о ее группах. Общее количество групп хранится в свойстве groupCount
.
Есть еще пара свойств последнего поиска, которые актуальны не только для успешного результата, поэтому не вошли в интерфейс: hitEnd
и requireEnd
. hitEnd
сообщает, пришлось ли при последнем поиске дойти до конца региона. requireEnd
подскажет, мог ли измениться результат (успех/неудача) последнего поиска, если бы в конец региона был добавлен хвост.
Метод reset
сбрасывает всё это текущее состояние поиска. Передав в него параметр, можно заодно заменить строку, с которой работаем. Используемое регулярное выражение тоже можно заменить, методом usePattern
, но состояние поиска при этом не сбросится.
Для замены совпавших с регулярным выражением подстрок есть методы replaceFirst
и replaceAll
. В них можно передать как строку-замену, так и коллбэк, который будет вычислять её на лету. Оба метода сбрасывают состояние.
При замене можно использовать $
для ссылки на группы совпадения, а символ \
используется для escape
-последовательностей. Если требуется воспринимать эти символы без дополнительного смысла, необходимо обернуть строку-замену в вызов quoteReplacement
.
Есть более гибкий способ замены. Matcher
позволяет последовательно вручную выполнять поиск (всё теми же методами), а затем добавлять пройденный кусок строки с замененным совпадением в StringBuilder/StringBuffer
методом appendReplacement
. Оставшийся непройденный хвост добавляется методом appendTail
. То есть, последовательность вызовов m.find()
; m.appendReplacement()
; m.appendTail()
; эквивалентна вызову m.replaceFirst()
, а while(m.find()) m.appendReplacement()
; m.appendTail()
; – это m.replaceAll()
.
👉@BookJava