キム ファイブプラス, Я сам когда-то был фанатом php, пока про java не узнал. Хотя я не фанат java, но boot spring с его философией мне нравится.
И ранее еще болел смешиванием кода, пока полностью не осознал философию rest api.
Вот теперь и продвигаю идею, чтобы phpшники придерживались rest api, ведь в php его легче придерживать, чем в java, там просто boot spring на себя это берёт.
Daemon23RUS, Делал так, мне проще было совсем отказаться от сессий. А если для аутентификаций, так можно что нибудь типо jwt сделать, а там уже хоть username, хоть что либо ещё. можно придумать.
Хотя да, это очень спорный момент. Но всё же считаю, что если проект маленький, то сессии еще хорошо, но если крупный, то ...
StreetWanderer, Да, php не причем. Просто было сложно в голове, какое-то время, держать, что java не динамический язык. Когда какое-то время работал с динамическим языком, а потом переходишь на типизированный, то первое время имеются сложности. Ведь кто постоянно работал с php им и js нормально. А те кто с java, им ts лучше.
pfemidi, Да я то и не против. Для себя можно хоть как писать. Но если человек привыкнет к такому, потом будет долго въезжать в компаниях, а почему так нельзя.
1. Основной тип упаковки для Spring Boot
• JAR (Java ARchive) — это стандартный формат для распределения исполняемых Java-программ и библиотек. Spring Boot поддерживает создание самодостаточных JAR-файлов, которые включают все зависимости приложения.
• WAR (Web Application Archive) — это формат, предназначенный для веб-приложений, которые обычно разворачиваются на серверах приложений, таких как Apache Tomcat или JBoss.
2. Самодостаточность
• JAR-файлы, создаваемые Spring Boot, содержат встроенный сервер (например, Tomcat или Jetty), что позволяет запускать приложение как самостоятельный процесс, без необходимости в установке и настройке отдельного сервера приложений.
• Это упрощает развертывание и тестирование, так как вы можете запускать приложение на любом сервере или в контейнере, где установлена Java.
3. Меньшая сложность развертывания
• Использование JAR упрощает процесс развертывания, так как нет необходимости устанавливать и настраивать сервер приложений. Вы просто запускаете JAR-файл с помощью команды `java -jar`.
• Это особенно полезно для облачных сред и контейнеров, где развертывание должно быть простым и повторяемым.
4. Поддержка микросервисной архитектуры
• В современных приложениях, особенно при использовании микросервисной архитектуры, каждое микросервисное приложение часто разворачивается как отдельный процесс. JAR идеально подходит для этой цели, так как каждое приложение может быть запущено независимо.
5. Простота разработки и отладки
• Разработчикам проще разрабатывать и отлаживать приложения, упакованные в JAR, так как они могут быстро запускать приложение локально, не требуя сложной конфигурации.
Когда использовать WAR?
• WAR имеет смысл использовать, если ваше приложение должно быть развернуто на существующем сервере приложений, особенно если у вас уже есть инфраструктура, настроенная под этот тип развертывания.
• WAR также может быть полезен, если ваше приложение должно взаимодействовать с другими веб-приложениями, развернутыми на том же сервере.
Таким образом, выбор JAR на сайте start.spring.io обычно предпочтителен из-за его простоты, самодостаточности и соответствия современным практикам разработки и развертывания приложений на Java.
Под капотом аннотации `@RestController` в Spring Framework действительно находятся сервлеты. Давайте подробно рассмотрим, как это работает.
Основные компоненты
1.
Servlet API
• В основе Spring MVC лежит Servlet API. Spring MVC используется для обработки HTTP-запросов и основан на сервлетах.
• Основной сервлет, который используется в Spring MVC, называется `DispatcherServlet`. Он управляет всеми HTTP-запросами, направленными к вашему приложению.
2.
DispatcherServlet
• `DispatcherServlet` — это основной компонент Spring MVC, который действует как фронт-контроллер. Он перехватывает все входящие HTTP-запросы и направляет их к соответствующим контроллерам.
• Когда запрос поступает в приложение, `DispatcherServlet` определяет, какой метод контроллера должен обработать этот запрос, и вызывает его.
3.
Handler Mapping и Handler Adapter
• `DispatcherServlet` использует компоненты `HandlerMapping` для определения, какой метод контроллера должен обработать запрос.
• После определения контроллера, `DispatcherServlet` использует `HandlerAdapter` для вызова соответствующего метода контроллера.
4.
Контроллеры и аннотации
• Контроллеры в Spring MVC аннотируются с помощью `@Controller` или `@RestController`.
• Аннотация `@RestController` является упрощенной версией аннотации `@Controller`, которая автоматически добавляет аннотацию `@ResponseBody` ко всем методам контроллера. Это означает, что каждый метод будет возвращать данные непосредственно в тело HTTP-ответа, минуя представление (view).
Пример работы контроллера
@RestController
public class MyController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
Взаимодействие компонентов
1.
Инициация запроса:
• Когда клиент отправляет HTTP-запрос на `/hello`, запрос попадает на `DispatcherServlet`.
2.
Определение контроллера:
• `DispatcherServlet` использует `HandlerMapping` для поиска соответствующего контроллера и метода, который должен обработать запрос.
3.
Вызов метода контроллера:
• После нахождения метода контроллера, `DispatcherServlet` использует `HandlerAdapter` для вызова метода `sayHello`.
4.
Формирование ответа:
• Метод `sayHello` возвращает строку "Hello, World!".
• Аннотация `@RestController` гарантирует, что возвращаемое значение будет отправлено непосредственно в HTTP-ответ.
Под капотом
• Сервлет: `DispatcherServlet` — это сервлет, который управляет всем процессом.
• Аннотации: `@RestController` и другие аннотации помогают настроить маршрутизацию и преобразование данных.
• Обработчики: `HandlerMapping` и `HandlerAdapter` управляют маршрутизацией и вызовом методов.
Таким образом, под капотом аннотации `@RestController` находятся сервлеты и другие компоненты Spring MVC, которые работают вместе для обработки HTTP-запросов и формирования ответов. Эти компоненты обеспечивают удобную и мощную инфраструктуру для разработки веб-приложений на базе Spring. Официальная документация Гайд по spring boot
Прошу меня простить. у меня версия 43, а у вас 59. Тогда не могу вам помочь с этим. Но на моем amd процессор совсем не греется. Ноутбук слегка нагревается только когда зарядка идет.
Ну так есть же $GLOBALS
Только это очень не безопасно так делать. Есть вероятность того, что можно какую-то переменную затереть. Да и логика какая-то не понятная.
Ипатьев, Первый вариант принимает пустую строку в email. Если я, на своей версии mariadb так сделаю, то сервер кидает ошибку, что так делать нельзя. А вот третий вариант можно делать, но поле будет иметь значение null. Я говорил о том, что если в левой части insert into брать какое-то поле и его не заполнять, то это приводит к ошибке, даже если в настройках столбца указано null.
Ипатьев, Ради интереса проверил. Те поля, которые имеют null, что указывает на то, что поле может быть пустым, таковым не является. В моей версии mariadb это поле принимает null. И если у какого-то пользователя поле с email будет пустым, то вместо пустоты выводит null. А это накладывает лишнюю обработку в коде, если бы оно было пустым. Уж не знаю, такая плохая сборка или так должно быть. В mysql8.0 такая же ситуация. Вместо пустоты там есть значение null.
Mr_IlyaBlogger, Такая комбинация клавиш действует с android 7.1
Можно еще зажать кнопки громче и тише одновременно.
Еще можно зажать кнопку выключения и потом двумя пальцами зажать экран, но этот вариант отпадает, так как экран не работает.
Еще нужно понять, там у вас стоит Talk-Beck или Voice-assistent.
Если от samsung Voice-assistent, то с ним другая инструкция работы. Я с ним совсем мало работал, а вот с Talk-beck постоянно.
Могу лишь порекомендовать найти незрячего человека, который сможет хотя бы по телефону вам помочь. Если нет, тогда только сервис.
caof19,
Вы должны разделить услуги на две части.
Первая - это услуги, которые можно купить за монеты, внутри игрового процесса.
Вторая - это услуги за реальные деньги.
К примеру, какая либо подсказка не может продаваться за реальные деньги, только если она не будет использована несколько раз.
Вначале игры игрок имеет одну подсказку бесплатную, так сделано в правилах или за виртуальные монеты. А следующие подсказки за реальные деньги, но не более одной, иначе это будет бардак.
Далее речь про реальные деньги.
К примеру вы заказали десять скинов, чтобы кто-то вам их нарисовал. Этот кто-то с вас возьмет деньги за работу. Теперь нужно отбить эти деньги назад. Продаете пользователю их, но не смейте делать очень высокие цены, так как покупать не кто не будет.
Ну а чтобы был интерес, введите рейтинг игроков по уму и богатству.
Введите подарки за реальные деньги для пользователей.
Введите супер игру, в которой пользователь может выиграть что-то очень крутое.
Сделайте для пользователей недвижимость, машины и прочее, что можно будет прокачивать за виртуальные монеты, так и за реальные деньги.
Идей на эту тематику очень и очень много.