Библиотека 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
Hibernate: заполняем пробелы

Я не гуру разработки и не читал книжку по Hibernate на 800 страниц. Я просто любознательный малый, который решил немного хлебнуть из бездонной бочки знаний по разработке на Java. Эта статья рассчитана на Junior разработчиков, которые хотят заполнить пробелы по Hibernate. Если это будут читать более опытные разработчики: напишите замечания по техническому наполнению статьи. Буду вам очень признателен. Со вступлением все. Поехали)

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

👉@BookJava
👍4
Как прочитать криптографический ключ?

Для чтения криптографического ключа необходимо использовать классы Java Cryptography Architecture (JCA). Пример кода для чтения криптографического ключа из файла вида PKCS#8 с помощью этих классов может выглядеть следующим образом:

// Загружаем публичный ключ из файла
FileInputStream fis = new FileInputStream("public.pem");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
byte[] keyBytes = new byte[dis.available()];
dis.readFully(keyBytes);
dis.close();

// Преобразуем байты в объект PublicKey
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey publicKey = kf.generatePublic(spec);


// Используем ключ для выполнения криптографических операций

👉@BookJava
👍7🔥2🥰1
Media is too big
VIEW IN TELEGRAM
The Art of Java Language Pattern Matching by Simon Ritter

👉@BookJava
Рефлексия (Reflection) — это механизм получения данных о программе во время её выполнения (runtime). В Java Reflection осуществляется с помощью Java Reflection API, состоящего из классов пакетов java.lang и java.lang.reflect.

Возможности Java Reflection API:
✔️Определение класса объекта;
✔️Получение информации о модификаторах класса, полях, методах, конструкторах и суперклассах;
✔️Определение интерфейсов, реализуемых классом;
✔️Создание экземпляра класса;
✔️Получение и установка значений полей объекта;
✔️Вызов методов объекта;
✔️Создание нового массива.

👉@BookJava
👍2
Абстрактные классы и интерфейсы в Java

Когда в Java следует выбирать абстрактный класс, а не интерфейс? Примите вызов! Узнайте, в чем разница между этими элементами языка Java и как использовать их в своих программах.

https://www.infoworld.com/article/2077421/abstract-classes-vs-interfaces-in-java.html

👉@BookJava
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Пишем плагин для IntelliJ IDEA. Ускоряем написание тестов на DTO

Кто я такой
В Java я недавно. Работаю Java-разработчиком около года при общем 10-летнем стаже в АльфаСтрахование. Этому году предшествовали годы разработки на ABAP и полгода обучения на Javarush.

https://habr.com/ru/company/alfastrah/blog/706314/

👉@BookJava
👍6
Пишем игру на Java - Клон Танков. Часть 1

Вступление
Создаем Окно - [1]
Да будет цвет - [2]
Изображения (теория) - [3]
Улучшаем графику - [4]
Мульти Буферизацыя - [5]

👉@BookJava
👍10🔥1
Полиморфизм в java

Словарное определение полиморфизма относится к принципу биологии, в соответствии с которым организм или вид может иметь множество различных форм или стадий. Этот принцип также может быть применен к объектно-ориентированному программированию и таким языкам, как язык Java. Подклассы класса могут определять свое собственное уникальное поведение и в то же время разделять некоторые функциональные возможности родительского класса.

https://bookflow.ru/polimorfizm-v-java/

👉@BookJava
👍41
Пишем игру на Java - Клон Танков. Часть 2

Структура игры - [6]
Ввод с клавиатуры - [7]
Загружаем ресурсы из файла - [8]
Создаем Спрайт - [9]
Класс Player и Entity - [10]
Создаем Уровень - [11]

👉@BookJava
👍9
Опишите поведение аннотации @Autowired

1. Контейнер определяет тип объекта для внедрения
2. Контейнер ищет бины в контексте(он же контейнер), которые соответствуют нужному типу
3. Если есть несколько кандидатов, и один из них помечен как @Primary, то внедряется он
4. Если используется аннотации @Autowire + Qualifier, то контейнер будет использовать информацию из @Qualifier, чтобы понять, какой компонент внедрять
5. В противном случае контейнер попытается внедрить компонент, основываясь на его имени или ID
6. Если ни один из способов не сработал, то будет выброшено исключение

Контейнер обрабатывает DI с помощью AutowiredAnnotationBeanPostProcessor. В связи с этим, аннотация не может быть использована ни в одном BeanFactoryPP или BeanPP.

Если внедряемый объект массив, коллекция, или map с дженериком, то Spring внедрит все бины подходящие по типу в этот массив(или другую структуру данных). В случае с map ключом будет имя бина.

//параметр указывает, требуется ли DI
@Authowired(required = true/false)

👉@BookJava
👍122🔥1