Java Developer | Backend
1.7K 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
🔥7👍2😁2
Вопрос: Из чего состоит Http ответ?
Ответ -
Ответ HTTP состоит из трех частей:
• Status code - описывает статус ответа. Его можно использовать для проверки того, был ли запрос успешно выполнен. В случае сбоя запроса код состояния можно использовать для выяснения причины сбоя. Если ваш сервлет не возвращает код состояния, по умолчанию возвращается код состояния успеха HttpServletResponse.SC_OK.
• HTTP headers. Заголовки содержат дополнительную информацию об ответе. Например, они могут указывать дату/время, после которых ответ считается устаревшим, или форму кодирования, используемую для безопасной передачи сущности пользователю.
• Body. Тело содержит содержимое ответа. Тело может содержать HTML-код, изображение и т. д. Тело состоит из байтов данных, переданных в сообщении транзакции HTTP сразу после заголовков.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5🔥1
🔤 Строим свой SSO сервер используя Spring Authorization Server

Единый вход в систему (Single sign-on, SSO) – это решение для аутентификации,
которое дает пользователям возможность входить в несколько приложений и на
несколько веб-сайтов с использованием единовременной аутентификации пользователя.

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7😁2👍1
Паттерны проектирования. Порождающие паттерны. Singleton (Одиночка).

Singleton ограничивает создание одного экземпляра класса, обеспечивает доступ к его единственному объекту. Конструктор класса приватный. Метод getInstance() создает только один экземпляр класса.

class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}


Плюсы использования синглтона:
1️⃣ Дает гарантию, что у класса будет всего один экземпляр класса.
2️⃣Предоставляет глобальную точку доступа к экземпляру данного класса.

Однако у этого шаблона есть недостатки:
1️⃣Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо непосредственных обязанностей, занимается еще и контролированием количества своих экземпляров.
2️⃣Зависимость обычного класса или метода от синглтона не видна в публичном контракте класса.
3️⃣Глобальные переменные это плохо. Синглтон превращается в итоге в одну здоровенную глобальную переменную.
4️⃣Наличие синглтона снижает тестируемость приложения в целом и классов, которые используют синглтон, в частности.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁2🔥1
🔤 Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка

Spring является самым популярным инструментом при разработке промышленных приложений на Java – от больших монолитных приложений до микросервисов. Сразу стоит отметить, что под термином Spring мы понимаем уже не столько Spring Framework, сколько экосистему и Spring Boot – всё то, что позволяет нам "легко и непринужденно" использовать самые распространенные библиотеки из мира Java, зачастую даже не разбираясь в их настройках

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
3👏2🔥1
Паттерны проектирования. Порождающие паттерны. Factory (Фабрика).

Фабрика — это шаблон проектирования, который помогает решить проблему создания различных объектов в зависимости от некоторых условий.

class Factory {
public OS getCurrentOS(String inputos) {
OS os = null;
if (inputos.equals("windows")) {
os = new windowsOS();
} else if (inputos.equals("linux")) {
os = new linuxOS();
} else if (inputos.equals("mac")) {
os = new macOS();
}
return os;
}
}


Factory используется, когда у нас есть суперкласс с несколькими подклассами и на основе ввода, нам нужно вернуть один из подкласса. Класс не знает какого типа объект он должен создать. Объекты создаются в зависимости от входящих данных.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥1👏1
Вопрос: Что такое cookie? В чем разница между session и cookie?
Ответ -
Cookie — это часть информации, которую веб-сервер отправляет браузеру. Браузер сохраняет cookie для каждого домена в локальном файле. В будущем запросе браузер вместе с запросом отправляет все сохраненные cookie для этого конкретного веб-сервера. Различия между session и cookie следующие:
• Session должен работать независимо от настроек клиентского браузера. Клиент мог выбрать отключение cookie. Однако сеансы все равно работают, так как у клиента нет возможности отключить их на стороне сервера.
• Session и cookie также различаются по объему информации, которую они могут хранить. HTTP-сеанс способен хранить любой объект Java, тогда как cookie может хранить только объекты String.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤩2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1
Вопрос: Что такое JSP?
Ответ -
Java Server Page (JSP) — это текстовый документ, содержащий два типа текста: статические данные и элементы JSP. Статические данные могут быть выражены в любом текстовом формате, например HTML или XML. JSP — это технология, которая смешивает статический контент с динамически генерируемым контентом.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1
Паттерны проектирования. Порождающие паттерны. Abstract Factory (Абстрактная фабрика).

Abstract Factory позволяет выбрать конкретную реализацию фабрики из семейства возможных фабрик. Создает семейство связанных объектов. Легко расширять.
Для примера, создадим нужные классы и интерфейсы
public class WindowsButton implements Button {
}

public class WindowsSelect implements Select {
}

public class WindowsTextField implements TextField {
}

public interface GUIFactory {

Button createButton();
TextField createTextField();
Select createSelect();

}

На основе текущей операционной системы мы будем использовать фабрику, в нашем случае WindowsGUIFactory, для создания элементов на экране. WindowsGUIFactory возвращает элементы только для windows os. Если бы текущая ос была mac, то мы бы использовали фабрику MacGUIFactory
public class WindowsGUIFactory implements GUIFactory {
public WindowsGUIFactory() {
System.out.println("Creating gui factory for Windows OS");
}

public Button createButton() {
System.out.println("Creating Button for Windows OS");
return new WindowsButton();
}

public TextField createTextField() {
System.out.println("Creating TextField for Windows OS");
return new WindowsTextField();
}

public Select createSelect() {
System.out.println("Creating Select for Windows OS");
return new WindowsSelect();
}
}


🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏3🔥1
🔤 Эволюция создания веб-приложений на Java

История развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🔥1
💲Leetcode. Задача 58. Length of Last Word. (easy)

Дана строка s, состоящая из слов и пробелов. Верните длину последнего слова в строке.

Слово — это максимальная подстрока, состоящая только из символов, не являющихся пробелами.

Пример:
Input: s = "Hello World"
Output: 5
Explanation: The last word is "World" with length 5.


👨‍💻 Алгоритм:

1⃣Поиск последнего слова:
Сначала мы пытаемся найти последнее слово, начиная с конца строки. Итерируем строку в обратном порядке, пропуская пробелы. Когда мы встречаем первый непробельный символ, мы знаем, что нашли последний символ последнего слова.

2⃣Определение длины последнего слова:
После того как последнее слово найдено, мы подсчитываем его длину, начиная с его последнего символа. Здесь также можно использовать цикл.

3⃣Итог:
Используя обратную итерацию и пропуск пробелов, определяется начало и конец последнего слова в строке для вычисления его длины.

😎 Решение:
class Solution {
public int lengthOfLastWord(String s) {
int end = s.length() - 1;
while (end >= 0 && s.charAt(end) == ' ') {
end--;
}
int start = end;
while (start >= 0 && s.charAt(start) != ' ') {
start--;
}
return end - start;
}
}


🖥Java Developer | Backend |#⃣ #задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥2👍1
Вопрос: В чем разница между Applet и Servlet?
Ответ -
Applet — это клиентская программа Java, которая запускается в веб-браузере на клиентской машине. С другой стороны, Servlet — это серверный компонент, который запускается на веб-сервере. Апплет может использовать классы пользовательского интерфейса, в то время как сервлет не имеет пользовательского интерфейса. Вместо этого сервлет ждет HTTP-запросы клиента и генерирует ответ на каждый запрос.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1
🔤 Проверка данных — Java & Spring Validation

Проверка данных класса (bean) в java тема не новая, но актуальная и здесь я объединю различные аспекты: валидацию данных в рамках JSR-303, покажу как это сделать чисто в Java и с использованием Spring, как делать в стандартном приложении и в Web.

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3🔥1
Паттерны проектирования. Порождающие паттерны. Builder (Строитель).

Паттерн проектирования Builder (Строитель) используется для создания сложных объектов пошагово. Он позволяет создавать различные представления одного и того же типа объекта, избегая при этом большого количества параметров в конструкторах. Это особенно полезно, когда объект имеет много опциональных параметров или когда процесс создания объекта сложен.

public static class EmployeeBuilder {
private String name;
private String company;
private boolean hasCar;

public EmployeeBuilder setName(String name) {
this.name = name;
return this;
}

public EmployeeBuilder setCompany(String company) {
this.company = company;
return this;
}

public EmployeeBuilder setHasCar(boolean hasCar) {
this.hasCar = hasCar;
return this;
}

public Employee build() {
return new Employee(this);
}
}

Далее давайте посмотрим, как же использовать паттерн Builder.
class TestBuilder {
public static void main(String[] args) {

Employee employee = new Employee.EmployeeBuilder("Maksim", "Amazon").setHasCar(true).build();
}
}

😎 Преимущества паттерна Builder

1️⃣Читаемость: Код становится более читаемым и понятным благодаря цепочке вызовов.

2️⃣Гибкость: Легко добавлять новые параметры без изменения существующего кода.

3️⃣ Изоляция: Логика создания объекта отделена от его представления.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2😁2🔥1