Java Developer | Backend
1.69K subscribers
136 photos
1 video
231 links
Авторский канал действующего java разработчика

Платформа: https://offercraft.ru

Сотрудничество @offercraft_support
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
🔤 Что такое Spring Framework? От внедрения зависимостей до Web MVC

Данная статья поможет вам понять как устроен Spring Framework, как работает Inversion of Control на примере Dependency injection (внедрение зависимостей), а так же использование такого фреймворка, как Spring Web MVC

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😁5
Шпаргалка по коллекции Set

Set — это множество уникальных элементов, и это ее главная особенность. То есть Set не допускает повторения одних и тех же элементов.

Здесь важно, чтобы у объектов, которые добавляются, был реализован метод equals.


HashSet:
• не отсортирован и не упорядочен. Под капотом там HashMap с заглушкой для значения;
• использует hashCode для добавления объектов;
• стоит использовать, когда нужно иметь уникальные объекты и их порядок не важен.

LinkedHashSet:
• упорядоченная версия HashSet;
• поддерживает двусвязный список для всех элементов;
• использовать его, когда требуется упорядоченность при итерации.

TreeSet:
• одна из двух сортированных коллекций;
• использует структуру красно-черного дерева и гарантирует, что элементы будут в возрастающем порядке;
• под капотом это TreeMap с заглушкой на значениях. А элементами TreeSet являются ключи к TreeMap.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Вопрос: Как JVM обрабатывает исключения?
Ответ -
Как только где-то создается исключение, runtime создает Exception Object (обозначим как ExcObj). В нем хранится вся необходимая для работы информация — само исключение, которое вызывалось и место, где это произошло.

Создание ExcObj и передача в runtime есть ничто иное как “выбрасывание исключения”.

ExcObj содержит методы, по которым можно дойти до место создания исключения. Это множество методов называется Call Stack.

Далее, runtime система ищет метод в Call Stack, который сможет обработать наше исключение. Если он таки находит соответствующий обработчик, то есть тип исключения совпадает с типом в обработчике, все хорошо. Если не находит, то runtime передает всё в default exception handler, который подготавливает ответ и завершает работу.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
8
🔤 Знакомство с реактивным программированием в Spring

Реактивное программирование – ваш путь к созданию систем, устойчивых к высоким нагрузкам. В данной статье вы познакомитесь с основными принципами реактивного программирования в java.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
7😁6
Виды профилировщиков в java

Профилирование — это важнейший аспект оптимизации производительности вашего Java-приложения. Профилировщики помогают отслеживать и анализировать поведение приложения во время выполнения, выявляя потенциальные узкие места и неэффективность. Выявив эти проблемы, вы сможете устранить их и значительно улучшить производительность. Некоторые инструменты профилирования Java могут анализировать различные аспекты производительности приложений, такие как использование ЦП, распределение памяти, сбор мусора и выполнение потоков. Некоторые популярные профилировщики Java включают:

1️⃣ VisualVM: универсальный инструмент с открытым исходным кодом, предлагающий возможности профилирования и мониторинга для приложений Java, работающих локально или удаленно. Он обеспечивает доступ к различным показателям и помогает диагностировать проблемы с производительностью.
2️⃣ JProfiler: мощный коммерческий инструмент профилирования, предлагающий богатый набор функций для измерения и анализа производительности приложений. Он предоставляет подробную информацию о процессоре, памяти и активности потоков, что помогает оптимизировать ваше приложение Java.
3️⃣ YourKit: еще один коммерческий профилировщик, предлагающий широкий спектр функций профилирования, включая профилирование ЦП и памяти, анализ потоков и мониторинг запросов к базе данных. Он предоставляет удобный интерфейс для анализа и диагностики проблем с производительностью.
4️⃣ Профилировщик NetBeans: интегрированный непосредственно в среду IDE NetBeans, он обеспечивает легкий доступ к функциям профилирования во время разработки, предоставляя информацию об использовании ЦП и памяти, сборке мусора и активности потоков.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9🔥7
🔤 Путь запроса по внутренностям Spring Security

Большинство разработчиков имеет только примерное представление о том что происходит внутри Spring Security, что опасно и может привести к появлению уязвимостей.

В этой статье шаг за шагом пройдемся по пути http запроса, что поможет с пониманием настраивать и решать проблемы Spring Security.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Вопрос: Что такое перегрузка методов?
Ответ -
Перегрузка методов — это свойство полиморфизма, в котором при помощи изменения сигнатуры метода можно создать различные реализации методов для одной и той же операции:
- одинаковое имя метода;
- различные аргументы;
- различный порядок аргументов;

Например, один и тот же add() из List может быть перегружен следующим образом и будет выполнять добавление разным способом, в зависимости от аргументов метода:
- add(Object o) — просто добавляет объект;
- add(int index, Object o) — добавляет объект в определенный индекс;
- add(Collection<Object> c) — добавляет список объектов;
- add(int index, Collection<Object> c) — добавляет список объектов, начиная с определенного индекса.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Шпаргалка по коллекции Map

Map — это коллекция ключ-значение (key-value). Есть уникальный ключ и значение, которое соответствует этому значению. Используется equals() и hashcode() методы для определения уникальности ключа.

HashMap:
• не отсортирован и не упорядочен;
• используют если не важны порядок и сортировка;
• поддерживает null ключ.

LinkedHashMap:
• поддерживает порядок вставки;
• медленнее, чем HashMap;
• ожидается, что итерация быстрее, чем в HashMap.

TreeMap:
• сохраняет записи отсортированными в соответствии с естественным порядком их ключей.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥5😁4
🔤 Валидация в Java-приложениях

В данной статье рассказывается о различных подходах к валидации данных: на какие подводные камни может наткнуться проект и какими методами и технологиями стоит руководствоваться при валидации данных в Java-приложениях.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😁4
Разница между процессом и потоком

• программа в исполнении называется процессом, тогда как Поток является подмножеством процесса;
• процессы независимы, тогда как потоки являются подмножеством процесса.
• процессы имеют различное адресное пространство в памяти, в то время как потоки содержат общее адресное пространство;
• переключение контекста происходит быстрее между потоками по сравнению с процессами;
• межпроцессное взаимодействие медленнее и дороже, чем межпотоковое взаимодействие;
• любые изменения в родительском процессе не влияют на дочерний процесс, тогда как изменения в родительском потоке могут влиять на дочерний поток.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏1
Вопрос: Могут ли у разных объектов (obj1 != obj2) быть obj1.equals(obj2) == true?
Ответ -
Да, могут. Для этого в классе этих объектов должен быть переопределен метод equals().

Если используется метод Object.equals(), то для двух ссылок x и y метод вернет true тогда и только тогда, когда обе ссылки указывают на один и тот же объект (т.е. x == y возвращает true).


🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏2
Autoboxing и Unboxing

Автоупаковка (autoboxing) - процесс автоматического преобразования из примитивного типа в соответствующий класс обертку.

Автораспаковка (unboxing) - делает ровно обратное к автоупаковке - преобразует класс обертку в примитив. А вот если окажется значение обертки null, то при распаковке будет выброшено исключение NullPointerException.

Пример Autoboxing
public void autoBoxing() {
Boolean booleanBox = true;
Integer intBox = 3;
// и так далее к другим типам
}

Пример Unboxing
int intValue = new Integer(4);
double doubleValue = new Double(2.3);
char c = new Character((char) 3);
boolean b = Boolean.TRUE;


🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁3🔥2
Вопрос: В чём заключается различие между методами submit() и execute() у пула потоков?
Ответ -
Оба метода являются способами подачи задачи в пул потоков, но между ними есть небольшая разница.

execute(Runnable command) определён в интерфейсе Executor и выполняет поданную задачу и ничего не возвращает.

submit() – перегруженный метод, определённый в интерфейсе ExecutorService. Способен принимать задачи типов Runnable и Callable и возвращать объект Future, который можно использовать для контроля и управления процессом выполнения, получения его результата.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3