1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ldp_dpsmax-chainMarket

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Веб-фреймворк: java_chainMarket

  • Легковесный веб-фреймворк, созданный мной с использованием переупакованной библиотеки Netty4 для работы с сетью
  • Легковесный веб-фреймворк, объединяющий все мои открытые пакеты технологий

Почему стоит делать такой легковесный фреймворк?

  • Основа — Netty4, поэтому он очень надёжен. Я просто сделал переупаковку Netty, так что не стоит опасаться каких-либо рисков при использовании такого легковесного фреймворка
  • Первый пункт: снижение порога входа. Из-за своей лёгкости и простоты, человек с базовыми знаниями Java SE сможет освоить его за десять минут.
  • Второй пункт: высокая степень свободы. Например, можно легко определять HTTP-статусы ответа, что удобно для опытных разработчиков.
  • Третий пункт: возможность непрерывной интеграции. Я могу постоянно внедрять новые технологии, такие как мой пакет ImageMarket для машинного зрения.
  • Четвёртый пункт: после интеграции других моих технологических пакетов, один импорт обеспечивает доступ ко всем моим услугам искусственного интеллекта и другим открытым технологиям.

Об интеграции новых пакетов

  • На данный момент активно развивается проект ImageMarket, пакет для машинного зрения, который будет интегрирован в chainMarket. Адрес: https://gitee.com/ldp_dpsmax/easyAi* Также планируется добавление компонента горячей перезагрузки Java, основанного на собственной системе интерпретатора скриптов, что позволяет пользователям модифицировать бизнес-логику путём изменения скриптов.
  • Будет добавлен также пакет для обработки естественного языка, аналогичный Siri, анализирующий семантику речи пользователя для предоставления взаимодействия, например, если пользователь говорит "Мне жарко", система может отправить ему информацию о том, чтобы выпить воды.### Этот легковесный фреймворк зависит от Netty4
  • io.netty netty-all 4.1.13.Final compile

* Поскольку это обертка над Netty, то зависимость от Netty обязательно присутствует.

  • Версия Netty4, которую я предоставил, немного устарела, поэтому главное условие — версия Netty должна быть хотя бы Netty4. Вы можете свободно менять версию Netty в файле pom.xml, что не повлияет на работу фреймворка.

HTTP сервис

public class App {
    public static void main(String[] args) {
        init();
        // Инициализация HTTP сервиса
        HttpServer httpServer = new HttpServer();
        // Аргументы: порт, путь до пакета с контроллерами (пакет с входными точками),
        // максимальный размер запроса (если превышено, будет отправлен код ошибки 400),
        // URL для WebSocket,
        // класс обратного вызова для WebSocket
        // Запуск HTTP сервиса
        httpServer.start(8080, "com.shareData.chainMarket.test", 1024,
                null, null);
        // Для запуска WebSocket сервиса передайте последние два аргумента
        //httpServer.start(8080, "com.shareData.chainMarket.test", 1024,
        //"ws://127.0.0.1:8080/websocket", new MyWebSocket());
    }
}
```    public static void init() {
        // Enable the SSL service, if enabled, the server will only accept HTTPS requests,
        // if disabled — only HTTP
        // By default, the SSL service is not enabled
        HttpsSetting.sslEnabled = false;
        HttpsSetting.keystorePath = "Path to the SSL certificate on disk";
        HttpsSetting.certificatePassword = "SSL certificate password";
        HttpsSetting.keystorePassword = "SSL certificate password"; // These two values are equivalent
        Config.setFileMaxLength(6553666); // Maximum file size for upload, bytes
    }}

// В указанном пути создайте класс контроллера // Аннотация Central представляет собой виртуальное имя пути, которое используется внутри URL // Таким образом, эти два адреса будут /login/wxLogin и /login/getCommunity соответственно // Различий между post, get, message нет, message является частью тела POST запроса, // map представляет собой пары ключ-значение после знака вопроса (?) // return - это содержание ответа

@Central(url = "/login")
public class Login {
    @Central(url = "/wxLogin")
    public String wxLogin(String message, Map<Object, Object> map) { // Логин через WeChat Mini Program
        return wxLogin(message);
    }
}
@Центральный(url = "/getCommunity")
public String приземлиться(String сообщение, Map<Object, Object> карта) { // Получить все сообщества
    return getSmallCity();
}
// Если это FORM форма отправки данных, пожалуйста используйте List<FileAndName> формы для получения
@Центральный(url = "/список")
public String список(List<FileAndName> формы) {
    return "a";
}
}
// List<FileAndName>
// FileAndName представляет собой пару ключ-значение, а LIST — это коллекция таких пар
// FileAndName имеет три параметра
// name - имя ключа
// text - текстовое значение
// inputStream - двоичное значение файла
// Обратите внимание, что текстовое значение и двоичное значение взаимоисключающие, если одно из них существует, другое должно быть null.
// После чтения байтов из inputStream нет необходимости закрывать поток байт, он будет автоматически закрыт после возврата.
public class FileAndName {
    private InputStream inputStream;
    private String name;
``````markdown
            private String text;
         }
   ### Сервис WEBSOCKET
             public class MyWebSocket extends WebSocketBack {
             //Если вы хотите использовать WEBSOCKET, создайте обратный вызов класс
             //И обязательно расширяйте класс WebSocketBack и переопределяете методы active и getText
             @Override
             public void active(ChannelHandlerContext ctx) {
             //Когда пользователь выполняет рукопожатие WEBSOCKET, активируется, один пользователь составляет одно соединение, которое выполнится только один раз
                 System.out.println("активировано======");
             }
              @Override
             public String getText(String message, ChannelHandlerContext ctx) {
               //При получении сообщения через WEBSOCKET
               //Зарегистрировать канал связи с основным ключом
               WebSocketManager.register(1, ctx);
               //С помощью основного ключа сервер может отправлять информацию пользователю
               WebSocketManager.putMessage(1, "Отправить сообщение");
                  return "ок";
             }}
##### Если у вас возникли вопросы, свяжитесь с автором Q: 794757862, или просмотрите примеры в пакете com.shareData.chainMarket.test
##### Пакет машинного зрения доступен для скачивания по адресу https://github.com/thenk008/ImageMarket

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкий веб-фреймворк, основанный на netty и имеющий быструю первичную настройку и развёртывание. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ldp_dpsmax-chainMarket.git
git@api.gitlife.ru:oschina-mirror/ldp_dpsmax-chainMarket.git
oschina-mirror
ldp_dpsmax-chainMarket
ldp_dpsmax-chainMarket
master