Библиотека 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
Горизонтальное масштабирование

Кейсы использования RabbitMQ+Redis (Spring+Java+RabbitMQ+Redis)
Пишем простой, масштабируемый чат на Spring+Java+RabbitMQ+Stomp

https://www.youtube.com/playlist?list=PLb9LG4UcPZxARYz6T_P8uIPuENRdCVxx7

👉@BookJava
👍5
Media is too big
VIEW IN TELEGRAM
Java Tech Talk: Эй Spring Boot, куда пропала моя память?

Поговорим о микросервисах на Spring Boot внутри докер контейнеров, выясним возможные причины OOM ошибок и посмотрим на что расходуется память java программ.

источник

👉@BookJava
👍5
Варианты использования Java ML библиотек совместно с Spring, Docker, Spark, Rapids, CUDA

В данной статье рассматривается способ использования GPU nVidia с технологией CUDA в Docker-контейнерах для распределенной тренировки моделей машинного обучения на нескольких машинах. Цель статьи - показать вариант использования Big Data Tool Apache Spark в Docker-контейнерах, совместно с акселератором GPU вычислений Rapids на устройствах nVidia CUDA, с применением библиотек DJL, Spark ML, XGBoost, в приложении Spring Boot на Java 8 (требование Rapids), на нескольких машинах под управлением ОС Windows 10 Pro для решения задачи тренировки моделей машинного обучения в распределенной системе. Те же контейнеры в дальнейшем можно использовать в Kubernetes.

https://habr.com/ru/post/679248/

👉@BookJava
👍3
Media is too big
VIEW IN TELEGRAM
Пишем простой, масштабируемый чат на Spring+Java+RabbitMQ+Stomp

источник

👉@BookJava
👍7
Сборка мусора в неисправных JVM, проактивный подход

Команда Netflix Cloud Data Engineering работает с различными приложениями для JVM, включая такие популярные хранилища данных, как Cassandra и Elasticsearch. Хотя большинство наших кластеров стабильно работают, обходясь выделенной им памятью, иногда «запрос смерти» или ошибка в самом хранилище данных приводят к перерасходу памяти, что может спровоцировать лишние циклы сборки мусора или даже привести к исчерпанию памяти в JVM.

Rus https://habr.com/ru/company/timeweb/blog/700224/
Eng https://netflixtechblog.medium.com/introducing-jvmquake-ec944c60ba70

👉@BookJava
👍3
Что такое Keyword?

Зарезервированные слова в Java – это специальные последовательности символов, которые воспринимаются компилятором особым образом. Такие слова нельзя использовать как названия классов, переменных, и для других идентификаторов. Все зарезервированне слова можно разбить на три больших группы. Все они перечислены в таблице ниже.

1. 4 зарезервированных слова не являются ключевыми словами: это литералы true, false, null, и специальный идентификатор выводимого типа var.

2. 51 ключевое слово (keywords). В таблице мы сгруппировали их по смыслу.

3. 10 ограниченных ключевых слов (restricted keywords). Они считаются ключевыми словами только в контексте файла объявления модуля module-info. В обычных .java-файлах это разрешенные идентификаторы.

👉@BookJava
👍2
Как нельзя называть переменные?

Этот вопрос подразумевает ответ из двух частей. Нужно указать, какие есть технические ограничения, и какие стилистические. Стиль – слишком большая тема, не специфичная только для Java, не будем на ней останавливаться.

Технически компилятор налагает одинаковые ограничения на имена как переменных, так и классов, методов, и всего остального. Эти имена обобщенно называются идентификаторы.

Ограничений всего три:
1. Имя целиком не должно совпадать с зарезервированным словом;
2. Первый символ должен проходить проверку методом Character.isJavaIdentifierStart();
3. Остальные символы должны проходить проверку Character.isJavaIdentifierPart().

На практике проверки означают, что имя должно состоять из таких символов Unicode, как:
• Буквы (разных языков)
• Символы валют (такие как $)
• Соединительные символы (такие как _)
Диакритика (combining mark, non-spacing mark)
• Методы, проходящие Character.isIdentifierIgnorable() (непечатаемые символы, в идентификаторе игнорируются компилятором)
• Цифры, числовые символы (такие как римские числа)

Последний пункт недопустим для первого символа имени. Тип конкретного символа можно узнать методом Character.getType().

Интересно зарезервированное слово var. Оно стоит особняком от других ключевых слов, потому что является зарезервированным только в контексте типа. Использовать var в качестве имени переменной можно.

👉@BookJava
🔥4👍2
Media is too big
VIEW IN TELEGRAM
JavaOne 2022

The Future of Java is You | JavaOne 2022 Community Keynote
Inside Java | JavaOne 2022 Technical Keynote
Java First. Java Always.
Matt Raible on Micro Frontends for Java Developers
Josh Long on Fast, Scalable, Cloud Native Services in Java
Building Cloud Native Applications with Rustam Mehmandarov
Emily Jiang Rethinks Microservices and Builds Cloud Native Apps
Delightful Integration Testing with Oleg Šelajev
The Lost Art of Debugging with Mark Heckler
Bruno Souza on Building your Java Career
Streamlining Large-Scale Java Development with Sander Mak
String Templates, JavaFX 19, Deserialization, and more at JavaOne - Inside Java Newscast #32
Sequenced Collections, Purity, and more at JavaOne - Inside Java Newscast #31
Paul Sandoz on community at JavaOne at Oracle CloudWorld
GraalVM in OpenJDK and more JavaOne Announcements - Inside Java Newscast #36

Все видео доступны на youtube

👉@BookJava
👍4
Media is too big
VIEW IN TELEGRAM
Что надо знать о логировании прагматичному Java-программисту

👉@BookJava
👍1
Как отладить удаленное приложение?

Если приложение работает не в продакшне, его паузы допустимы, а у потенциального злоумышленника нет сетевого доступа к хосту, стандартный способ отладки – непосредственно remote debug. Для этого приложение запускается с включенным протоколом удаленной отладки JDWP. Приложение принимает на указанный порт подключения отладчика. Это может быть отдельная утилита jdb, или встроенная в IDE.

В JDK поставляется набор инструментов для мониторинга. Например Java Mission Control и JConsole позволяют подключиться к приложению и посмотреть множество показателей его здоровья. Полный список инструментов специфичен для конкретной JVM, для HotSpot можно посмотреть в документации.

Вне зависимости от обстоятельств, всегда необходимо заранее позаботиться о диагностической информации номер один – логах. Как минимум, ни один встроенный инструмент не покажет вам информацию о событиях, определяемых бизнес-логикой вашего приложения. Логироваться должен необходимый минимум, который позволит при любом инциденте понять, что произошло.

В стандартную поставку Java включен пакет для логгирования java.util.logging, позже остановимся на нём подробнее. Также существует ряд популярных библиотек: Log4j, SLF4J, Logback. Про техники и сложности логгирования современного энтерпрайза есть неплохой доклад.

👉@BookJava
👍5🥰1
Java Collections Framework. Вопросы для собеседования.

https://github.com/enhorse/java-interview/blob/master/jcf.md

👉@BookJava
👍5😁1
Media is too big
VIEW IN TELEGRAM
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
👍5