Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Java
Кеширование данных в Spring Boot
Полезные советы по работе с BigDecimal в Java
Алгоритмы: бинарный поиск на отсортированном массиве (реализация на Java)
Алгоритмы: поиск простых чисел с помощью "решета Эратосфена"
Алгоритмы: проверка слов и предложений на палиндром
Алгоритм определения анаграмм
Алгоритм инвертирования массива на Java
Разбор и вычисление арифметических выражений на Java
источник
👉@BookJava
Кеширование данных в Spring Boot
Полезные советы по работе с BigDecimal в Java
Алгоритмы: бинарный поиск на отсортированном массиве (реализация на Java)
Алгоритмы: поиск простых чисел с помощью "решета Эратосфена"
Алгоритмы: проверка слов и предложений на палиндром
Алгоритм определения анаграмм
Алгоритм инвертирования массива на Java
Разбор и вычисление арифметических выражений на Java
источник
👉@BookJava
👍2
На вебинаре разберем как с помощью Kafka Streams создавать потоковые приложения, что важно для работы с большими данными и потоками в реальном времени.
🗓 10 сентября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
👥 Кому будет интересно:
Этот вебинар будет полезен Java-разработчикам и архитекторам, которые хотят внедрять потоковые вычисления и анализ в свои приложения. Вы получите все необходимые знания, чтобы начать использовать Kafka Streams для создания высокоэффективных потоковых решений.
🔗 Ссылка на регистрацию: https://vk.cc/cPbeDj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Совет по Java Time
Обратите внимание на equals() и isEqual() в классах работы с датой и временем! ZonedDateTime, OffsetDateTime и OffsetTime ведут себя по-разному:
- equals(): Сравнивает все поля (включая зону/смещение)
- isEqual(): Сравнивает только момент времени (игнорируя зону/смещение)
Один и тот же момент времени может дать разные результаты.
👉@BookJava
Обратите внимание на equals() и isEqual() в классах работы с датой и временем! ZonedDateTime, OffsetDateTime и OffsetTime ведут себя по-разному:
- equals(): Сравнивает все поля (включая зону/смещение)
- isEqual(): Сравнивает только момент времени (игнорируя зону/смещение)
Один и тот же момент времени может дать разные результаты.
👉@BookJava
👍4
Как мы в Java-проекте UDT для PostgreSQL поддерживали
PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.
В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.
https://habr.com/ru/companies/bercut/articles/940614/
👉@BookJava
PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.
В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.
https://habr.com/ru/companies/bercut/articles/940614/
👉@BookJava
👍1
⁉️ Что нового в Spark 4.0?
Apache Spark продолжает развиваться и в версии 4.0 готовит для нас несколько важнейших обновлений. Хотите узнать, как эти изменения улучшат обработку данных и повлияют на вашу работу? Присоединяйтесь к открытом вебинару 9 сентября в 20:00!
— Обзор Spark 4.0: главные нововведения и улучшения.
— Производительность и оптимизации: что ускорилось и как этим пользоваться?
— Новые API и функции: возможности для разработчиков и аналитиков.
— Интеграция с Kubernetes, облачными платформами и Data Science инструментами.
— Практические кейсы: как применять нововведения в реальных задачах.
👨💻🛠👨🏻💻 Если вы дата-инженер, аналитик, разработчик или DevOps-специалист, этот вебинар точно для вас.
➡️Присоединяйтесь и получите скидку на курс «Spark Developer»: https://vk.cc/cPiGom
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Apache Spark продолжает развиваться и в версии 4.0 готовит для нас несколько важнейших обновлений. Хотите узнать, как эти изменения улучшат обработку данных и повлияют на вашу работу? Присоединяйтесь к открытом вебинару 9 сентября в 20:00!
— Обзор Spark 4.0: главные нововведения и улучшения.
— Производительность и оптимизации: что ускорилось и как этим пользоваться?
— Новые API и функции: возможности для разработчиков и аналитиков.
— Интеграция с Kubernetes, облачными платформами и Data Science инструментами.
— Практические кейсы: как применять нововведения в реальных задачах.
👨💻🛠👨🏻💻 Если вы дата-инженер, аналитик, разработчик или DevOps-специалист, этот вебинар точно для вас.
➡️Присоединяйтесь и получите скидку на курс «Spark Developer»: https://vk.cc/cPiGom
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
ClassLoader Hell в Java: скрытый убийца продакшена
Когда в энтерпрайз-приложении внезапно летят
Откуда берётся
1. Конфликт версий: в classpath оказываются разные версии одной библиотеки (например, log4j 1.x и 2.x). Разные ClassLoader’ы подтягивают разные классы →
2. Утечки ClassLoader’ов: после undeploy web-приложения его ClassLoader не собирается GC (висят ссылки/потоки) → дубли классов, рост памяти,
Симптомы
-
-
- Нестабильный старт сервера, случайные ошибки, постепенный memory bloat
Как выбраться
- Держи зависимости под контролем: Maven/Gradle,
- Понимай иерархию серверных загрузчиков (Tomcat/JBoss/WebLogic): изоляция по веб-приложениям; по умолчанию пакуй либы внутрь WAR/EAR, не клади «общие» JAR’ы в shared/lib без крайней нужды.
- Shading/relocation: Maven Shade Plugin → fat JAR + переименование пакетов конфликтующих зависимостей.
- JPMS (Java 9+): явные
- Диагностика: запускай с
- KISS: меньше зависимостей, регулярные апдейты ключевых библиотек.
Чек-лист на 30 секунд
- Прогоняю дерево зависимостей и фиксирую версии.
- Убираю дубли и «скрытые» транзитивные.
- Проверяю, откуда грузится проблемный класс (трассировка/инструменты).
- Решаю: изоляция на уровне сервера, shading или миграция на JPMS.
Полный разбор с примерами тут
👉@BookJava
Когда в энтерпрайз-приложении внезапно летят
ClassNotFoundException
, NoSuchMethodError
, LinkageError
или растёт Metaspace — почти наверняка это ClassLoader Hell: побочный эффект того, как JVM грузит классы.Откуда берётся
1. Конфликт версий: в classpath оказываются разные версии одной библиотеки (например, log4j 1.x и 2.x). Разные ClassLoader’ы подтягивают разные классы →
IncompatibleClassChangeError
, падения на старте.2. Утечки ClassLoader’ов: после undeploy web-приложения его ClassLoader не собирается GC (висят ссылки/потоки) → дубли классов, рост памяти,
OutOfMemoryError
.Симптомы
-
ClassNotFoundException
/ NoClassDefFoundError
-
LinkageError
-ы (IllegalAccess, IncompatibleClassChange, NoSuchMethod)- Нестабильный старт сервера, случайные ошибки, постепенный memory bloat
Как выбраться
- Держи зависимости под контролем: Maven/Gradle,
mvn dependency:tree
/ gradle dependencies
, исключай конфликтующие транзитивные, добивайся convergence версий.- Понимай иерархию серверных загрузчиков (Tomcat/JBoss/WebLogic): изоляция по веб-приложениям; по умолчанию пакуй либы внутрь WAR/EAR, не клади «общие» JAR’ы в shared/lib без крайней нужды.
- Shading/relocation: Maven Shade Plugin → fat JAR + переименование пакетов конфликтующих зависимостей.
- JPMS (Java 9+): явные
requires
/ exports
, сильная инкапсуляция, надёжная конфигурация на старте.- Диагностика: запускай с
-XX:+TraceClassLoading
, смотри JVisualVM/JConsole на живых ClassLoader’ах и metaspace.- KISS: меньше зависимостей, регулярные апдейты ключевых библиотек.
Чек-лист на 30 секунд
- Прогоняю дерево зависимостей и фиксирую версии.
- Убираю дубли и «скрытые» транзитивные.
- Проверяю, откуда грузится проблемный класс (трассировка/инструменты).
- Решаю: изоляция на уровне сервера, shading или миграция на JPMS.
Полный разбор с примерами тут
👉@BookJava
👍5❤3
Media is too big
VIEW IN TELEGRAM
Java for Small Coding Tasks
Видео про скриптинг на Java. Отличный способ посмотреть на привычный язык под другим углом и увидеть, как рушатся привычные подходы и табу.
Вначале рассказывается, почему для скриптов используется Java, а не Python. Ответ банален: автор хорошо знаком с Java, она ему привычна. Но вот то, как и с помощью чего пишутся скрипты, совсем непривычно.
Например, удобная и знакомая всем Intellij IDEA не очень подойдет, потому что вам вряд ли понадобится серьезная структура пакетов и классов для небольшого скрипта. А один файл часто удобнее открыть в редакторах попроще, например nvim или VS Code.
С инструментами для сборки тоже интересно. Никто не захочет использовать Maven или Gradle, чтобы запустить небольшой однофайловый скрипт. Поэтому можно компилировать и запускать в оперативной памяти. Да, так придется компилировать на каждом запуске, зато не нужно беспокоиться об упаковке в Jar каждый раз, когда поправляешь скрипт.
Одна строка #!/usr/bin/env java --source 25 в начале файла позволит запускать скрипт в среде Linux, просто указав путь к файлу. А если все-таки нужна зависимость, можно использовать jpm, чтобы управлять Maven-зависимостями без больших инструментов для сборки.
источник
👉@BookJava
Видео про скриптинг на Java. Отличный способ посмотреть на привычный язык под другим углом и увидеть, как рушатся привычные подходы и табу.
Вначале рассказывается, почему для скриптов используется Java, а не Python. Ответ банален: автор хорошо знаком с Java, она ему привычна. Но вот то, как и с помощью чего пишутся скрипты, совсем непривычно.
Например, удобная и знакомая всем Intellij IDEA не очень подойдет, потому что вам вряд ли понадобится серьезная структура пакетов и классов для небольшого скрипта. А один файл часто удобнее открыть в редакторах попроще, например nvim или VS Code.
С инструментами для сборки тоже интересно. Никто не захочет использовать Maven или Gradle, чтобы запустить небольшой однофайловый скрипт. Поэтому можно компилировать и запускать в оперативной памяти. Да, так придется компилировать на каждом запуске, зато не нужно беспокоиться об упаковке в Jar каждый раз, когда поправляешь скрипт.
Одна строка #!/usr/bin/env java --source 25 в начале файла позволит запускать скрипт в среде Linux, просто указав путь к файлу. А если все-таки нужна зависимость, можно использовать jpm, чтобы управлять Maven-зависимостями без больших инструментов для сборки.
источник
👉@BookJava
👍2
🗓 17 сентября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
👥 Кому будет интересно:
Это мероприятие будет полезно Java-разработчикам, архитекторам и IT-специалистам финансовых организаций. Вы получите ценные знания, которые сможете применить на практике.
🔗 Ссылка на регистрацию: https://vk.cc/cPlYHL
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья про будущие нововведения Spring Framework 7 и Spring Boot 4. Оба обновления ожидаются уже в ноябре 2025 года.
Spring 7 принесет с собой список нововведений:
-Jakarta EE 11.
-Минимальная версия Java теперь 17.
-Обещают улучшенную поддержку Kotlin 2.x.
-spring-retry переходит в spring-core вместе с аннотациями
-
-RestClient и WebClient смогут работать с версиями API.
-JmsClient — как RestClient, но для JMS.
-Для null-safety будут использовать аннотации
-Распаковка Optional в SpEl.
-Обещают улучшения HttpHeaders API.
-Jackson версии 3 и выше.
Список обновлений Spring Boot 4:
-Стал более модульным, что должно уменьшить размеры и JAR файлов.
-Как и со Spring 7, минимальная версия — это Java 17.
-Больше индикаторов и проверок в Spring Boot Actuator.
-Образы, собранные с помощью AOT(Ahead-Of-Time)-компиляции и GraalVM, должны стать быстрее.
-Jackson 3.x по аналогии со Spring 7, Servlet 6.1, WebSocket 2.2 и Micrometer 2.0.
https://medium.com/@csmax/preparing-for-spring-boot-4-and-spring-framework-7-whats-new-263829429064
👉@BookJava
Spring 7 принесет с собой список нововведений:
-Jakarta EE 11.
-Минимальная версия Java теперь 17.
-Обещают улучшенную поддержку Kotlin 2.x.
-spring-retry переходит в spring-core вместе с аннотациями
@Retryable
, @ConcurrencyLimit
, @EnableResilientMethods
.-
@RequestMapping
будет поддерживать параметр version для указания версии API.-RestClient и WebClient смогут работать с версиями API.
-JmsClient — как RestClient, но для JMS.
-Для null-safety будут использовать аннотации
@Nullable
и @NonNull
от JSpecify.-Распаковка Optional в SpEl.
-Обещают улучшения HttpHeaders API.
-Jackson версии 3 и выше.
Список обновлений Spring Boot 4:
-Стал более модульным, что должно уменьшить размеры и JAR файлов.
-Как и со Spring 7, минимальная версия — это Java 17.
-Больше индикаторов и проверок в Spring Boot Actuator.
-Образы, собранные с помощью AOT(Ahead-Of-Time)-компиляции и GraalVM, должны стать быстрее.
-Jackson 3.x по аналогии со Spring 7, Servlet 6.1, WebSocket 2.2 и Micrometer 2.0.
https://medium.com/@csmax/preparing-for-spring-boot-4-and-spring-framework-7-whats-new-263829429064
👉@BookJava
👍7❤5
Media is too big
VIEW IN TELEGRAM
How to Upgrade to Java 25
В видео подробно разбираются проблемы и подводные камни при переходе на JDK 25 — от изменений в аннотациях, безопасности и работе с рефлексией до удаления старых API и модулей. Будет полезно разработчикам и командам, которые готовятся к миграции, поскольку в видео показывают, какие ошибки можно встретить и как правильно адаптировать код и окружение под новые требования платформы.
0:00 Intro
0:55 Default Annotation Processing
2:58 Final Record Pattern Variables
4:15 Security Property "include"
4:55 Null Checks in Inner Class Constructors
6:40 Unsafe Memory Access
8:52 Native Access
10:53 Security Manager
11:57 File System Operations on Windows
13:04 Unicode Updates and COMPAT Removal
14:41 Intermission
15:26 Removals
18:24 Deprecations for Removal
19:12 Separate Metaspace and GC Printing
20:41 Remote Debugging with jstat and jhsdb
21:53 Outro
источник
👉@BookJava
В видео подробно разбираются проблемы и подводные камни при переходе на JDK 25 — от изменений в аннотациях, безопасности и работе с рефлексией до удаления старых API и модулей. Будет полезно разработчикам и командам, которые готовятся к миграции, поскольку в видео показывают, какие ошибки можно встретить и как правильно адаптировать код и окружение под новые требования платформы.
0:00 Intro
0:55 Default Annotation Processing
2:58 Final Record Pattern Variables
4:15 Security Property "include"
4:55 Null Checks in Inner Class Constructors
6:40 Unsafe Memory Access
8:52 Native Access
10:53 Security Manager
11:57 File System Operations on Windows
13:04 Unicode Updates and COMPAT Removal
14:41 Intermission
15:26 Removals
18:24 Deprecations for Removal
19:12 Separate Metaspace and GC Printing
20:41 Remote Debugging with jstat and jhsdb
21:53 Outro
источник
👉@BookJava
👍3
VK JT = Java + Go!
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
Советы по Spring 💡
Чтобы выполнять действия в транзакции базы данных, вы можете использовать шаблон Spring TransactionTemplate вместо
👉@BookJava
Чтобы выполнять действия в транзакции базы данных, вы можете использовать шаблон Spring TransactionTemplate вместо
@Transactional
👉@BookJava
👍7
Двухфакторная аутентификация (2FA) — стандарт безопасности, без которого нельзя представить современные приложения.
Как реализовать её на практике с помощью Spring Security? Какие есть подходы и сценарии использования? Это то, что нужно знать каждому начинающему backend-разработчику на Java.
На открытом уроке курса «Разработчик на Spring Framework» вы увидите, как работает 2FA в Spring Boot, и разберёте реальные примеры внедрения. Это не просто теория, а практические шаги, которые помогут вам прокачать скиллы и почувствовать уверенность в разработке безопасных сервисов.
Вебинар, который пройдёт 18 сентября в 20:00 МСК. Все участники получат скидку на обучение на курсе «Разработчик на Spring Framework». Регистрация открыта: https://vk.cc/cPpy1Z
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как реализовать её на практике с помощью Spring Security? Какие есть подходы и сценарии использования? Это то, что нужно знать каждому начинающему backend-разработчику на Java.
На открытом уроке курса «Разработчик на Spring Framework» вы увидите, как работает 2FA в Spring Boot, и разберёте реальные примеры внедрения. Это не просто теория, а практические шаги, которые помогут вам прокачать скиллы и почувствовать уверенность в разработке безопасных сервисов.
Вебинар, который пройдёт 18 сентября в 20:00 МСК. Все участники получат скидку на обучение на курсе «Разработчик на Spring Framework». Регистрация открыта: https://vk.cc/cPpy1Z
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576