Библиотека 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
Что произойдет, если ключевое слово static не использовать с методом main() в Java?

Ошибки компиляции не будет, но во время выполнения мы получим ошибку NoSuchMethodError.

👉@BookJava
💩5👍2🤡1
Media is too big
VIEW IN TELEGRAM
10 ключевых ошибок при изучении программирования

00:00:00 - введение
00:00:30 - цели видео
00:01:13 - план
00:01:22 - ошибки студентов
00:08:25 - ошибки преподавателей
00:13:00 - выводы
00:14:27 - обратная связь

источник

👉@BookJava
👍6
@ Transactional в Spring и исключения

В этой статье я бы хотел рассказать, как Spring'овая аннотация @ Transactional ведет себя при возникновении исключений.

Если коротко, то Spring обрабатывает исключения в методах, помеченных @ Transactional, следующим образом:
RuntimeException'ы приводят к откату транзакции, checked exception'ы не приводят;

RuntimeException'ы приводят к откату транзакции в момент, когда exception пересекает границы @ Transactional-метода. Даже если вы перехватите это исключение выше по стеку, транзакция все равно откатится;

Этим поведением можно управлять через атрибуты rollbackFor / noRollbackFor у аннотации @ Transcational.

https://habr.com/ru/articles/725064/

👉@BookJava
👍5
5_Maven_cheatsheet.pdf
147.3 KB
Шпаргалки по Java

1. Регулярные выражения в Java
2. Лучшие практики Java 8
3. Шпаргалка по JVM
4. Generic-типы Java
5. Шпаргалка по Maven

👉@BookJava
👍81🔥1
Media is too big
VIEW IN TELEGRAM
Вопросы с senior java интервью [1/3]

Тайм-коды:
0:00 - Вступление
0:25 - Эти вопросы реально спрашивают
0:52 - Как устроен ролик
1:53 - Примитивы и доступ по значению (доступ всегда по значению)
3:53 - Пример с Boolean, который был несколько раз
4:58 - Хэш мапа и equals
6:00 - Как сломать мапу мутабельным ключом
7:30 - Плохое распределение хэшей
11:36 - Фреймворк коллекций (Collection framework)
12:30 - Устройство листов, почему linkedlist не используют в проде
13:50 - Иерархия исключений
14:48 - Optional и хитрости работы с ними
16:50 - Thread-local и то как его использовать
17:50 - Наследуемый Thread-local
19:20 - Стримы и примитивные стримы
22:25 - Хитрости try-catch-finally
23:38 - Try-with resource, Autoclosable
25:15 - Conditionalы, как создать свой стартер, логика конфигураций
28:05 - Жизненный цикл бинов, логика создания объектов
30:14 - Докер и зачем он нужен

источник

👉@BookJava
👍91👎1😁1
Media is too big
VIEW IN TELEGRAM
Вопросы с senior java интервью [2/3]

Тайм-коды:
0:00 - Вступление
0:15 - Как устроено это видео
0:34 - Обратная связь
0:56 - Эти вопросы реально спрашивают
1:15 - Новый формат видео, интерактив
1:50 - Про бины, конфигурации, контексты, скоупы
2:50 - Популярный вопрос про скоупы бинов и что они дают
5:33 - Прокси, AOP
8:08 - Как работает аннотация transactional под капотом
9:46 - Как использовать транзакции в приватных методах
11:13 - Self-inject на примере
12:05 - Проблемы долгих транзакций
13:26 - Ивенты и обработчики в спринге
14:02 - Простейший листенер встроенных ивентов
16:03 - Сборщики maven и другие, общие слова и bom как способ управления версиями
18:05 - Многопоточка
18:30 - Классическая проблема суммы
19:20 - Проблемы тестирования многопоточки
20:10 - Добавляем volatile, почему не поможет
21:40 - Atomic*, cas алгоритмы
22:38 - Зачем реально volatile, happens before
23:54 - Способы запуска потоков, в чем разница
24:50 - Порядок не гарантирован

источник

👉@BookJava
👍1
Java. Алгоритм генерации фрактального шума.

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

https://www.youtube.com/watch?v=a-j8vgLfUqA

👉@BookJava
👍1
Чем отличается процесс от потока?

Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память). Каждый процесс выполняется в отдельном адресном пространстве: один процесс не может получить доступ к переменным и структурам данных другого. Если процесс хочет получить доступ к чужим ресурсам, необходимо использовать межпроцессное взаимодействие. Это могут быть конвейеры, файлы, каналы связи между компьютерами и многое другое.

Для каждого процесса ОС создает так называемое «виртуальное адресное пространство», к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. Операционная система же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.

Поток(thread) — определенный способ выполнения процесса, определяющий последовательность исполнения кода в процессе. Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах. Потоки могут исполнять один и тот же код и манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах. Так как потоки расходуют существенно меньше ресурсов, чем процессы, в процессе выполнения работы выгоднее создавать дополнительные потоки и избегать создания новых процессов.

👉@BookJava
👍7👎2
Sealed классы Java в действии: создание надежных и безопасных приложений

Sealed (закрытые или запечатанные) классы были представлены в Java 15 в качестве способа ограничить иерархию наследования класса или интерфейса.

Sealed класс или интерфейс ограничивает набор классов, которые могут наследовать или реализовывать его, что может помочь предотвратить потенциальные ошибки и сделать код более удобным в сопровождении.

https://foojay.io/today/java-sealed-classes-in-action-building-robust-and-secure-applications/

👉@BookJava
👍1
Media is too big
VIEW IN TELEGRAM
Вопросы с senior java интервью [3/3]

Тайм-коды:
0:00 - Вступление
0:15 - Содержание этого выпуска
0:42 - Обратная связь
1:07 - Как устроено это видео
1:32 - Параллельные стримы, когда они не параллельные
2:29 - Что будет при падаении операции
3:15 - Блокировки, synchronized, ReadWriteLocks, atomics
3:39 - Когда выбрать Lock
3:56 - Когда выбирать synchronized
4:25 - Когда выбирать ReadWriteLock
5:13 - Когда выбирать Atomic
5:47 - Happens before, концепция, что значит простыми словами
6:20 - Запись в final, начало потока
7:57 - Большой раздел про дедлоки
8:07 - Простейший способ получить дедлок
8:56 - Thread dump для поиска дедлоков
10:00 - Простейший анализ дампа
11:30 - Получение дедлока на CyclicBarrier
12:21 - Запаркованные треды
13:35 - Как делать вложенные блокировки правильно
14:15 - Захват вложенных блокировок через tryLock, возможный механизм предотвращения дедлока
15:34 - Ввод вывод в java. IO и NIO, различия
16:40 - Про работу с HTTP клиентами
17:05 - Про RestTemplate, самое важное что надо знать
17:44 - Про мониторинг RestTemplate
18:12 - Про разгон Http клиента, keepAlive
18:46 - Пулл потоков для клиента
19:30 - Рассказываю реальную проблему при плохой настройке
20:40 - Хитрости прокси (Spring AOP)
20:50 - Циклические зависимости - это плохо, но как это работает
22:52 - Сочетание нескольких прокси Async + Transactional, какое правило надо знать
26:40 - Вопросы на общие темы
26:50 - Какие проблемы можно встретить в логировании
27:40 - Как не завалить внешнюю систему логами
28:45 - Реальный вопрос про реализацию собственного кэша
29:35 - Проблема сампоисных кэшей
31:32 - Какие готовые решения есть для кэша, как разорвать этот вопрос
33:08 - Как вам идея для бесплатного курса по проектированию API

источник

👉@BookJava
🔥71👍1
Media is too big
VIEW IN TELEGRAM
SOLID в деталях: Принцип единственной ответственности

источник

👉@BookJava
👍1
Вопросы для собеседования на Java Developer

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

👉@BookJava
🔥6👍51👎1
Media is too big
VIEW IN TELEGRAM
Сопоставление с шаблоном в Java — 5 примеров для занятых разработчиков

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

В этой статье блога я расскажу о 5 местах, где вы можете использовать сопоставление с шаблоном в Java, не погружаясь в тонкие детали. Когда вы решите, что готовы к дальнейшему изучению, посмотрите ссылки, включенные в эту статью.

Rus https://habr.com/ru/articles/719384/

Eng https://blog.jetbrains.com/idea/2023/02/pattern-matching-in-java-5-examples-for-busy-developers/

👉@BookJava
👍1
Продвинутый GraphQL со Spring Boot

В этой статье вы узнаете, как использовать Spring for GraphQL в своем приложении Spring Boot.

Spring for GraphQL — относительно новый проект. Версия 1.0 была выпущена несколько месяцев назад. До этого релиза нам приходилось подключать сторонние библиотеки, чтобы упростить реализацию GraphQL в приложении Spring Boot. Я уже описал два альтернативных решения в своих предыдущих статьях. В следующей статье вы узнаете о проекте GraphQL Java Kickstart. В другой статье вы увидите, как создавать более сложные запросы GraphQL с помощью библиотеки Netflix DGS.

Мы будем использовать очень похожую схему и модель сущностей, как и в этих двух статьях о Spring Boot и GraphQL.

Rus https://habr.com/ru/articles/720360/

Eng https://piotrminkowski.com/2023/01/18/an-advanced-graphql-with-spring-boot/

👉@BookJava
👍5
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux


https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика

https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT

Чат программистов📌
https://t.me/developers_ru

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике

Excel лайфхак📌
https://t.me/Excel_lifehack
👍2