Spring и Hibernate — два популярных инструмента для Java, которые используются в разработке приложений. В этой статье мы исследуем их основные функции и особенности, как они работают вместе и почему так высоко ценятся в IT-индустрии. А сложные концепции разбираем на понятные кусочки, которые мягко введут в курс дела любого новичка: программиста, аналитика, менеджера по продукту или дизайнера.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Поток может находиться в любом из следующих состояний в любой момент времени:
5️⃣ WAITING
Это состояние потока, когда он бесконечно ждет, пока другой поток выполнит определенное действие. Например, когда поток вызывает метод wait() для объекта или метод join() для другого потока, или метод park() класса LockSupport, поток находится в состоянии ожидания. Поток может перейти в состояние ожидания из состояния выполнения и может вернуться в состояние выполнения, когда он получит уведомление или прерывание.
6️⃣ TIMED WAITING
Это состояние потока, когда он ждет в течение определенного времени, пока другой поток выполнит определенное действие. Например, когда поток вызывает метод sleep(), или метод wait() с параметром тайм-аута, или метод join() с параметром тайм-аута, или методы parkNanos() или parkUntil() класса LockSupport, поток находится в состоянии ожидания с заданным временем. Поток может перейти в состояние ожидания с заданным временем из состояния выполнения и может вернуться в состояние выполнения по истечении времени ожидания или при получении уведомления или прерывания.
7️⃣ TERMINATED
Это состояние потока, когда он завершил свое выполнение или был прерван из-за исключения или ошибки. Например, когда поток завершает свой метод run() нормально или ненормально или когда он останавливается вызовом метода stop() (который устарел), поток находится в состоянии завершения. Поток может перейти в состояние завершения только из состояния выполнения и не может вернуться в какое-либо другое состояние.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8😁4👍2
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Для начала стоит пояснить, чем является TCP (Transmission Control Protocol) — это протокол, управляющий передачей данных. Почти всегда чтобы обеспечить надежную передачу пакетов TCP используется поверх IP, поэтому эту связку протоколов часто называют TCP/IP. По модели OSI он работает на 4-ом уровне, который также называют транспортным.
Чтобы установить надежное соединение, TCP использует процесс, называемый термином “трехстороннее рукопожатие” (TCP three-way/triple handshake). Установленное соединение будет полнодуплексным, то есть оба канала могут передавать информацию одновременно, а также они синхронизируют (SYN) и подтверждают (ACK) друг друга. Обмен выполняется следующим образом:
1) Клиент отправляет сегмент с установленным флагом SYN. При этом сегменту присваивается произвольный порядковый номер (sequence number) в интервале от 1 до 232 (т.н. initial sequence number), относительно которого будет вестись дальнейший отсчет последовательности сегментов в соединении.
2) Сервер получает запрос и отправляет ответный сегмент с одновременно установленными флагами SYN+ACK, при этом записывает в поле «номер подтверждения» (acknowledgement number), полученный порядковый номер, увеличенный на 1 (что подтверждает получение первого сегмента), а также устанавливает свой порядковый номер, который, как и в SYN-сегменте, выбирается произвольно.
3) После получения клиентом сегмента с флагами SYN+ACK соединение считается установленным, клиент, в свою очередь, отправляет в ответ сегмент с флагом ACK, обновленными номерами последовательности, и не содержащий полезной нагрузки.
4) Начинается передача данных.
В заключение стоит добавить, что проверка номеров последовательности приходящих пакетов и принципов, используемых при 3-way handshake, позволяют реализовать простейшие методы фильтрации DDoS-атак.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
На первый взгляд, выбор правильного Java-рантайма для вашего проекта на Spring Boot может показаться тривиальным. В конце концов, все популярные рантаймы основываются на коде OpenJDK и предлагают одинаковые программные интерфейсы.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2😁2
Ответ -
• Status code - описывает статус ответа. Его можно использовать для проверки того, был ли запрос успешно выполнен. В случае сбоя запроса код состояния можно использовать для выяснения причины сбоя. Если ваш сервлет не возвращает код состояния, по умолчанию возвращается код состояния успеха HttpServletResponse.SC_OK.
• HTTP headers. Заголовки содержат дополнительную информацию об ответе. Например, они могут указывать дату/время, после которых ответ считается устаревшим, или форму кодирования, используемую для безопасной передачи сущности пользователю.
• Body. Тело содержит содержимое ответа. Тело может содержать HTML-код, изображение и т. д. Тело состоит из байтов данных, переданных в сообщении транзакции HTTP сразу после заголовков.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5🔥1
Единый вход в систему (Single sign-on, SSO) – это решение для аутентификации,
которое дает пользователям возможность входить в несколько приложений и на
несколько веб-сайтов с использованием единовременной аутентификации пользователя.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7😁2👍1
Singleton ограничивает создание одного экземпляра класса, обеспечивает доступ к его единственному объекту. Конструктор класса приватный. Метод getInstance() создает только один экземпляр класса.
class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}Плюсы использования синглтона:
Однако у этого шаблона есть недостатки:
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 мы понимаем уже не столько Spring Framework, сколько экосистему и Spring Boot – всё то, что позволяет нам "легко и непринужденно" использовать самые распространенные библиотеки из мира Java, зачастую даже не разбираясь в их настройках
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👏2🔥1
Фабрика — это шаблон проектирования, который помогает решить проблему создания различных объектов в зависимости от некоторых условий.
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 используется, когда у нас есть суперкласс с несколькими подклассами и на основе ввода, нам нужно вернуть один из подкласса. Класс не знает какого типа объект он должен создать. Объекты создаются в зависимости от входящих данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1👏1
Ответ -
• Session должен работать независимо от настроек клиентского браузера. Клиент мог выбрать отключение cookie. Однако сеансы все равно работают, так как у клиента нет возможности отключить их на стороне сервера.
• Session и cookie также различаются по объему информации, которую они могут хранить. HTTP-сеанс способен хранить любой объект Java, тогда как cookie может хранить только объекты String.
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
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
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();
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏3🔥1
История развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1👏1