Giter VIP home page Giter VIP logo

OIUE是一套完全解耦的服务化平台

如果你同我一样对耦合深恶痛绝

Open Intelligent Unitive Efficient [开放 智能 统一 高效] 用积木**编程,低门槛、轻量化、标准化、架构解耦、模块化以及去框架化 ##项目交流

QQ群:10939695  作者:Every、Harry等
官网:http://www.oiue.org
敬请参与 联系我们:[email protected]
提议吐槽:https://issues.sonatype.org/browse/OSSRH-23545
更多介绍详见OIUE主工程:
https://github.com/OIUE/OIUE
http://git.oschina.net/every.oschina.net/OIUE

入门指导

现有服务通信协议约定

相关开源库

相关服务

[TOC]

如果你同我一样对耦合深恶痛绝,那么同我一起支持OIUE,拒绝spring的一坨屎一样的耦合在一起,把专业的事交给专注的服务,将研发与维护变的更加轻松!

====== 题外话:

不知道你有没有修改开源项目的经历,好比在一锅乱炖里去捞所有的白菜,很多时候,需要把一锅都翻遍才能找出所有的白菜叶,我们希望倡导一种方式,完全遵循解耦的架构,从根本去解决这种一锅乱炖的局面。

OIUE 开源的目的是为了降低入门门槛,像玩积木一样编程,推进轻量化、标准化、架构解耦、模块化以及去框架化,框架立足将模块切分最小粒度,确保每个模块均可单独替换、并最小限度模块依赖,开发者无需培训即可快速入手,亦不用关心底层架构、分布式服务调用及服务治理等相关繁琐复杂的实现。1.0版本框架采用了OSGI的底层容器,部分遵循OSGI标准,但模块Activator请严格遵循本项目,后续将推出多个版本的启动容器,以满足不同场景下业务需求,同时也欢迎有兴趣的朋友共同加入与探讨。

作为程序开发人员,每天都在重复同样的工作,浪费了大量时间,严重影响了开发热情,简单而又重复的工作占用了我们太多的时间。程序语言由低级逐渐走向高级,出现了许多控件及框架,Java中spring等是很不错的框架,其应用广泛程度难有出其右者,但极其庞大的体系结构让人望而却步,笨重而又耦合的模块体系是在让人无法恭维,强制的调用及结构已经改变了语言原本的色彩,其本质并未从根本上解决程序开发中大量的重复工作,我们希望有一个工具或者一套设计,能够按照我们所习惯的操作模式,最大程度的复用、更高程度的解耦,延续一些开发偏好,以及更大的灵活性,不约定俗成的满足我们的开发需求,开放、智能、统一、高效,本软件框架构想由此应运而生。

许多人会好奇为什么选择OSGI作运行容器,"OSGI架构师的天堂"这句话并不足以概括初衷,最重要的是,OSGI优秀的模块化结构,要求我们更加严谨,同时也让我们更加重视对封装、模块化的理解,模块应该尽可能减少对外界的依赖除非逼不得已,我见过太多原本应该最小实现却引用一大堆附加无用的功能的工具包,这里不一一列举,无力吐槽、仁者见仁智者见智吧,筑建一个开放、严谨、高效的开发群体,是本架构的初衷之一。

从未见过哪个男人跟女生吵架能吵赢的,不是气急败坏地动起了手,就是沉默以对。这仅仅是男人的问题吗?达尔文说:"以前也有吵赢的,后来他们都找不到女朋友,于是灭绝了。" 我们不希望出现类似与上面的故事,从前有一群很刻苦的人,由于没有时间恋爱,后来灭绝了!

#入门指导

下载OIUE主工程, https://github.com/OIUE/OIUE http://git.oschina.net/every.oschina.net/OIUE

工程结构如下:

├── LICENSE
├── README.md
├── conf
│   ├── config.properties
│   └── org
│       ├── apache
│       │   └── felix
│       │       └── webconsole
│       │           └── internal
│       │               └── servlet
│       │                   └── OsgiManager.config
│       └── oiue
│           └── service
│               ├── action
│               │   ├── filter
│               │   │   └── auth
│               │   │       └── Activator.config
│               │   ├── http
│               │   │   ├── action
│               │   │   │   └── Activator.config
│               │   │   ├── managed
│               │   │   ├── services
│               │   │   │   └── Activator.config
│               │   │   └── upload
│               │   │       └── Activator.config
│               │   └── tcp
│               │       ├── action
│               │       │   └── Activator.config
│               │       └── bytes
│               │           └── Activator.config
│               ├── auth
│               │   └── local
│               │       └── Activator.config
│               ├── buffer
│               │   └── synchronization
│               │       └── db
│               │           └── Activator.config
│               ├── cache
│               │   ├── impl
│               │   │   └── Activator.config
│               │   ├── jedis
│               │   │   └── Activator.config
│               │   └── tree
│               │       └── zookeeper
│               │           └── curator
│               │               └── Activator.config
│               ├── debug
│               │   ├── cache
│               │   │   └── Activator.config
│               │   └── treecache
│               │       └── Activator.config
│               ├── driver
│               │   └── listener
│               │       └── storage
│               │           └── Activator.config
│               ├── log4j
│               │   └── Activator.config
│               ├── message
│               │   └── impl
│               │       └── Activator.config
│               ├── odp
│               │   └── res
│               │       └── base
│               │           └── Activator.config
│               ├── online
│               │   └── impl
│               │       └── Activator.config
│               ├── osgi
│               │   └── rpc
│               │       └── Activator.config
│               ├── permission
│               │   ├── impl
│               │   │   └── Activator.config
│               │   └── verify
│               │       └── Activator.config
│               ├── sql
│               │   └── apache
│               │       └── Activator.config
│               ├── system
│               │   └── analyzer
│               │       └── impl
│               │           └── Activator.config
│               └── template
│                   └── beetl
│                       └── Activator.config
├── oiue.sh
└── pom.xml

其中 conf是各服务的配置文件

执行mvn install 修改oiue.sh中jre及工程的目录 修改conf\org\oiue\service\sql\apache\Activator.config 连接自己的数据库 修改conf/org/oiue/service/cache/jedis/Activator.config 连接自己的redis数据库,redis必须设定密码连接方式 修改conf/org/oiue/service/cache/tree/zookeeper/curator/Activator.config 连接自己的zookeeper

执行./oiue.sh start启动服务

开源库中提供了部分开放服务,可快捷搭建自己的各类应用服务。

创建自己的服务[以实现登录认证为例] 创建Meavn项目,

├── pom.xml
└── src
    └── main
        └── java
            └── org
                └── oiue
                    └── service
                        └── auth
                            └── local
                                ├── Activator.java
                                └── AuthLocalServiceImpl.java

登录认证依赖于日志服务(父工程已经引用)、认证服务、数据查询服务,配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>org.oiue.service.auth.local</artifactId>
	<packaging>bundle</packaging>

	<name>OIUE service for auth impl by local </name>
	<description>A bundle that Auth service by local </description>
	<parent>
		<groupId>org.oiue.services</groupId>
		<artifactId>services</artifactId>
		<version>1.0.1</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.oiue.services</groupId>
			<artifactId>org.oiue.service.auth</artifactId>
			<version>1.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.oiue.services.odps</groupId>
			<artifactId>org.oiue.service.odp.res.api</artifactId>
			<version>1.0.1</version>
		</dependency>
	</dependencies>
	<properties>
		<project.activator>${project.artifactId}.Activator</project.activator>
	</properties>
</project>

服务初始化时传入依赖的服务,从配置中读取事件ID,以及客户端传递过来的用户名密码结构路径、此认证服务的名称。 如客户端用户认证信息如下:

{
    "modulename": "login",
    "tag": "exttag",
    "operation": "login",
    "data": {
        "type": "local",
        "userName": "name",
        "userPass": "passwd"
    }
}

服务的配置文件在主工程的conf目录下, 配置文件如下:

service.pid="org.oiue.service.auth.local.Activator"
login.local.auth.eventId="fm_system_service_auth_user"
login.sso.type="local"
login.local.key.name="userName"
login.local.key.pass="userPass"

则服务代码实现如下:

package org.oiue.service.auth.local;

import java.io.Serializable;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;

import org.oiue.service.auth.AuthService;
import org.oiue.service.auth.AuthServiceManager;
import org.oiue.service.log.LogService;
import org.oiue.service.log.Logger;
import org.oiue.service.odp.base.FactoryService;
import org.oiue.service.odp.res.api.IResource;
import org.oiue.service.online.Online;
import org.oiue.service.online.OnlineImpl;
import org.oiue.service.online.Type;
import org.oiue.tools.string.StringUtil;

@SuppressWarnings({ "unchecked", "rawtypes" })
public class AuthLocalServiceImpl implements AuthService, Serializable {
    private static final long serialVersionUID = -3485450639722467031L;
    private Logger logger;
    private String event_id;
    private FactoryService factoryService;
    private AuthServiceManager authServiceManager;
    private String type = "local";
    private String name = "userName";
    private String pass = "userPass";

    public AuthLocalServiceImpl(LogService logService, FactoryService iresource, AuthServiceManager authServiceManager) {
        logger = logService.getLogger(this.getClass().getName());
        this.factoryService = iresource;
        this.authServiceManager = authServiceManager;
    }

    public void updated(Dictionary dict) {
        try {
            event_id = (String) dict.get("login.local.auth.eventId");
            name = (String) dict.get("login.local.key.name");
            pass = (String) dict.get("login.local.key.pass");
            String type = (String) dict.get("login.sso.type");
            if (!StringUtil.isEmptys(type) && !type.equals(this.type)) {
                authServiceManager.unRegisterAuthService(this.type);
                this.type = type;
            }
            authServiceManager.registerAuthService(type, this);
        } catch (Throwable e) {
            logger.error("config is error :" + dict, e);
        }
    }

    @Override
    public void unregister() {
        authServiceManager.unRegisterAuthService(type);
    }

    @Override
    public Online login(Map per) {
        String username = (String) per.remove(name);
        String password = (String) per.remove(pass);
        String tokenId = null;
        Online online = new OnlineImpl();
        if (!StringUtil.isEmptys(username) && !StringUtil.isEmptys(password)) {
            Map<String, Object> map = new HashMap<>();
            map.put("origin_name", type);
            map.put("user_name", username);
            map.put("password", password);
            try {
                IResource iResource = factoryService.getBmo(IResource.class.getName());
                map = (Map<String, Object>) iResource.callEvent(event_id, null, map);
                if (map == null || map.size() == 0) {
                    throw new RuntimeException("login error,username or password is error!");
                }
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
            tokenId = UUID.randomUUID().toString().replaceAll("-", "");
            online.setO(new ConcurrentHashMap<>());
            online.setTokenId(tokenId);
            online.setType(Type.http);
            online.setUser(map);
            online.setUser_id(map.get("user_id") + "");
            online.setUser_name(map.get("user_name") + "");
        }
        return online;
    }

    @Override
    public boolean logout(Map per) {
        return false;
    }

}

服务注册Activator如下:

package org.oiue.service.auth.local;

import java.util.Dictionary;

import org.oiue.service.auth.AuthService;
import org.oiue.service.auth.AuthServiceManager;
import org.oiue.service.log.LogService;
import org.oiue.service.odp.base.FactoryService;
import org.oiue.service.odp.res.api.IResource;
import org.oiue.service.osgi.FrameActivator;
import org.oiue.service.osgi.MulitServiceTrackerCustomizer;

public class Activator extends FrameActivator {

    @Override
    public void start() throws Exception {
        this.start(new MulitServiceTrackerCustomizer() {
            AuthLocalServiceImpl authService;

            @Override
            public void removedService() {
            	authService.unregister();
            }

            @SuppressWarnings("unused")
            @Override
            public void addingService() {
                LogService logService = getService(LogService.class);
                FactoryService factoryService = getService(FactoryService.class);
                AuthServiceManager authServiceManager = getService(AuthServiceManager.class);
                IResource iResource = getService(IResource.class);

                authService = new AuthLocalServiceImpl(logService, factoryService, authServiceManager);

                registerService(AuthService.class, authService);
            }

            @Override
            public void updated(Dictionary<String, ?> props) {
                authService.updated(props);
            }
        }, LogService.class, AuthServiceManager.class, FactoryService.class,IResource.class);
    }

    @Override
    public void stop() throws Exception {}
}

public final void start(MulitServiceTrackerCustomizer mstc, Class... cs)中cs为依赖的服务,通过getService获取服务实例。

OIUE1.0采用Mysql作为主数据库,数据库操作相关服务均以此为基础,数据库设计如下: DB

#现有服务通信协议约定

HTTP/TCP/UDP字符流请求/响应格式规范定义

服务平台开放式服务接收客户端采用TCP、HTTP等方式调用。本章节规范并定义本平台开放式服务的标准请求/响应格式,并为非开放式服务及特定业务服务提供协议参考。 后续章节均以TCP交互为例,HTTP方式请求请参考本章节泛化。

客户端TCP/UDP调用服务外层格式定义

TCP/UDP字符流方式调用服务采用JSON格式的数据请求,经过相应处理转换为java原生对象传给后端服务及服务池。

请求格式定义:

{
	"modulename": "queryCar",
	"operation": "",
	[ "version": "",]
	"tag": "12345",
	"token:": "",
	["processkey": "", ] 
	["encrypt": "", ] 
	["debug": "", ] 
	"data": {}
}

其中: modulename 标识客户端调用模块名称 operation 标识客户端操作 version 模块版本,默认为最新版本,非必选 tag标识客户端处理响应标记,请求信息原样返回,可作为客户端发起请求流水 token为用户身份标识,用于标识当前请求发起的用户身份信息,采用JWT规范编码信息 data为请求业务数据实体,此数据将由管理类直接交互给对应处理服务 processkey 事务key,默认单次请求为一次弱事物,若开启事物,需客户端手工结束事物,事物操作超时时间默认为300s,非必选 encrypt 加密及压缩标识,默认为明文不压缩,非必选 debug 调试标识,默认为非调试模式,非必选 注:为优化权限管理,修复业务访问权限bug,请求格式做适当调整,客户端无需传递模块对应的后端服务,将其定义到数据库模块数据上,以防权限注入,调试时可传入调用服务及方法。

客户端HTTP调用服务外层格式定义

HTTP字符流方式调用服务可分为实时请求及准实时请求。准实时请求为非高动态变更数据,在一定时间范围内请求与响应数据一致,如资源数据、档案数据、周期性数据等,准实时数据为平台对接集团CDN加速数据;实时数据为高动态数据,如位置上报等。服务平台接受客户端JSON格式的数据请求,经过相应处理转换为java原生对象传给后端服务及服务池。

**HTTP请求地址为:**http://service:port/services/version/modulename/operation?

请求格式定义:

{
	"tag": "12345",
	"token:": "",
	["processkey": "", ] 
	["encrypt": "", ] 
	["debug": "", ] 
	["callback": "", ]
	"data": {}
}

其中: modulename 标识客户端调用模块名称 operation 标识客户端操作 version 模块版本,默认为最新版本,非必选 tag标识客户端处理响应标记,请求信息原样返回,可作为客户端发起请求流水 token为用户身份标识,用于标识当前请求发起的用户身份,登录用户获得的唯一标识 data为请求业务数据实体,此数据将由管理类直接交互给对应处理服务 processkey 事务key,默认单次请求为一次弱事物,若开启事物,需客户端手工结束事物,事物操作超时时间默认为300s,非必选 encrypt 加密及压缩标识,默认为明文不压缩,非必选 debug 调试标识,默认为非调试模式,非必选 callback Jsonp支持,非必选 **注:**目前后端仅支持kv请求,key为parameter,value为上述json

服务端响应调用返回外层格式定义

返回格式定义:

{
	["services": "action", "exception": "",]
	"modulename": "queryCar", 
	"operation": "", 
	"tag": "12345",
	"status": 1,
	"msg": "",
	["processkey": "",] 
	[ "version": "",]
	"data": {}
}

其中: services标识该业务后端处理方法, modulename标识前端调用模块 operation 标识后端操作 tag为前端发起请求或注册后端回调时的回调参数 status为后端处理状态,处理状态为success/warn/error。 success为成功标识;warn标识后端有一些警告信息,但并不影响整个流程处理,其中非关键异常信息存储在exception信息中;error标识后端处理发送关键异常,导致整个过程处理终端,其关键异常信息存储在exception中。 注:<=-120 关键异常 <=-110 权限不足 <=-101尚未登录 <=-1非关键异常 >0 成功 exception为端产生的异常信息,此字段不作为关键参数存在 processkey为后端传输给前端的回调参数,在处理流程事务,以及连续操作时使用,此字段也非关键参数 data为后端处理服务响应数据

客户端HTTP文件上传调用服务外层格式定义

HTTP字符流方式调用服务可分为实时请求及准实时请求。准实时请求为非高动态变更数据,在一定时间范围内请求与响应数据一致,如资源数据、档案数据、周期性数据等,准实时数据为平台对接集团CDN加速数据;实时数据为高动态数据,如位置上报等。服务平台接受客户端JSON格式的数据请求,经过相应处理转换为java原生对象传给后端服务及服务池。

**HTTP请求地址为:**http://service:port/upload/version/modulename/operation?

请求格式定义:

{
	"tag": "12345",
	"token:": "",
	["processkey": "", ] 
	["encrypt": "", ] 
	["debug": "", ] 
	["callback": "", ]
	"data": {}
}

其中: modulename 标识客户端调用模块名称 operation 标识客户端操作 version 模块版本,默认为最新版本,非必选 tag标识客户端处理响应标记,请求信息原样返回,可作为客户端发起请求流水 token为用户身份标识,用于标识当前请求发起的用户身份,登录用户获得的唯一标识 data为请求业务数据实体,此数据将由管理类直接交互给对应处理服务 processkey 事务key,默认单次请求为一次弱事物,若开启事物,需客户端手工结束事物,事物操作超时时间默认为300s,非必选 encrypt 加密及压缩标识,默认为明文不压缩,非必选 debug 调试标识,默认为非调试模式,非必选 callback Jsonp支持,非必选 **注:**目前后端仅支持kv请求,key为parameter,value为上述json

服务端响应调用返回外层格式定义

返回格式定义:

{
	["services": "action", "exception": "",]
	"modulename": "queryCar", 
	"operation": "", 
	"tag": "12345",
	"status": 1,
	"msg": "",
	["processkey": "",] 
	[ "version": "",]
	"data": {}
}

其中: services标识该业务后端处理方法, modulename标识前端调用模块 operation 标识后端操作 tag为前端发起请求或注册后端回调时的回调参数 status为后端处理状态,处理状态为success/warn/error。 success为成功标识;warn标识后端有一些警告信息,但并不影响整个流程处理,其中非关键异常信息存储在exception信息中;error标识后端处理发送关键异常,导致整个过程处理终端,其关键异常信息存储在exception中。 注:<=-120 关键异常 <=-110 权限不足 <=-101尚未登录 <=-1非关键异常 >0 成功 exception为端产生的异常信息,此字段不作为关键参数存在 processkey为后端传输给前端的回调参数,在处理流程事务,以及连续操作时使用,此字段也非关键参数 data为后端处理服务响应数据

分页请求

当查询数据超过一定数量时,建议分页请求数据,分页请求数据体遵循以下规范。 请求格式:

{
	"start": 0,
	"limit": 20,
	...
}

start开始行 (limit*n) limit 当前页显示行数 ... 其他过滤条件

响应格式:

{
	"totalProperty": 8,
	"root": [{}]
}

totalProperty总条数 root 具体数据

在线维持

用户登录后需维持在线状态,后端将清理无效在线用户,维持真实在线用户列表,防止僵尸用户:

{
	"modulename": "systime",
	"tag": "exttag",
	"operation": "systime",
	"data": {},
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM"
}

后端服务实施更新每个用户最后请求时间,当最后通信时间超出阀值(默认为10分钟),后端将清理该用户连接等相关在线缓存信息,因此,如前端需要维持在线状态需定时发送在线维持请求,确保最后请求时间不超过超时阀值。

{
	"operation": "systime",
	"modulename": "systime",
	"status": 1,
	"tag": "exttag",
	"data": {
		"systemTime": 1388112191
	},
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM"
}

其中 : status为1表示响应成功 systemTime为当前服务平台系统时间UTC

系统登录

系统登录 调用login模块,其参数格式如: "

{
	"modulename": "login",
	"tag": "exttag",
	"operation": "login",
	"data": {
		"type": "login_type",
		"userName": "name",
		"userPass": "passwd"
	}
}
{
	"modulename": "login",
	"tag": "exttag",
	"operation": "login",
	"data": {
		"type": "local",
		"userName": "name",
		"userPass": "passwd"
	}
}

其中 : type 登录方式,不同登录方式传递data内数据项不同 userName对应的值为登录用户名 userPass为登录密码

返回格式定义:

{
	"operation": "login",
	"modulename": "login",
	"status": 1,
	"tag": "exttag",
	"data": {
		"status": 1,
		"userName": "name",
		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM",
		"msg": "登录成功!"
	}
	"msg": "登录成功!"
}

如上登录成功消息: status为1表示登录成功, token为登录成功后生成的用户信息令牌,可唯一标识当前登录客户端,所有后端数据访问均需附带此用户信息!

系统登出

系统登出 调用logout模块,其参数格式如:

{
	"modulename": "logout",
	"tag": "exttag",
	"operation": " logout ",
	"data": {},
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM"
}

其中 : token为登录成功后生成的用户信息标识,唯一标识当前登录客户端

{
	"operation": "logout",
	"modulename": "logout",
	"status": 1,
	"tag": "exttag",
	"data": {
		"status": 1,
		"msg": "登出成功!"
	},
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM",
	"msg": "登出成功!"
}

如上登出成功消息: status为1表示登出成功

Tcp通道建立

C/S订阅消息由后端主动推送,需订阅前建立通信通道,建立通道连接格式如下:

文本格式

{
	"token": "7679138619ce484ea39d6a73b20b4024",
	"modulename": "message_module",
	"operation": "passageway",
	"tag": "getway1",
	"data": {}
}

其中: operation标识为passageway建立订阅消息通道 tag为指定订阅通道号标识,需与上述订阅一致

二进制格式

消息ID:0x0100。 通道数据格式

起始字节 字段 数据类型 描述及要求
0 目标标识 BYTE[36] tokenid
36 通道标识 BYTE[n] tag

例如: 7E 01 00 00 00 2B 00 01 31 37 66 33 66 39 33 61 2D 34 35 38 30 2D 31 31 65 35 2D 62 37 38 35 2D 66 61 31 36 33 65 36 66 37 39 36 31 67 65 74 77 61 79 63 7E 拆解如下:

7E 01 00 00 00 2A 00 01 31 37 66 33 66 39 33 61 2D 34 35 38 30 2D 31 31 65 35 2D 62 37 38 35 2D 66 61 31 36 33 65 36 66 37 39 36 31 67 65 74 77 61 79 63 7E

订阅/取消订阅消息

订阅/取消订阅消息指令格式如下:

{
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM",
	"modulename": "message_module",
	"operation": "consume",
	"tag": "consume1",
	"data": {
		"type": "track",
		"tag": "getway1",
		"target_id": 1
	}
}
{
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM",
	"modulename": "message_module",
	"operation": "unconsume",
	"tag": "consume1",
	"data":{
		"type": "track",
		"tag": "getway1",
		"target_id": 1
	}
}

其中: operation标识为consume /unconsume,订阅/取消订阅消息 type订阅/取消订阅消息类型,不同登录方式传递data内数据项不同 tag标识为订阅通道号

B/S获取订阅消息指令格式如下:

{
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM",
	"modulename": "message_module",
	"operation": "query",
	"tag": "getway1",
	"data": {}
}

其中: operation标识为query查询订阅消息 tag标识为获取指定订阅通道号的信息,需与上述订阅一致

##FOTA 获取最新版本信息 /services/1.0.0/terminal/getFOTAInfo 请求地址 /fota/version/type/imei

##创建实体对象Entity 请求地址

##HTTP数据接入 请求地址 /access/version/driverName/type get方式 post方式key/value post方式object 请求参数:

{
    "driverName": "lt-test",
    "type": "track",
    "tag": "tag",
    "data": {
        "imei": "sdfsdfsdfsdf",
        "longitude": 123.999999,
        "latitude": 45.999999,
        "altitude": 1,
        "speed": 99.99,
        "bearing": 125,
        "accuracy": 2.22,
        "altitudeAccuracy": 1.99,
        "timestamp": 123456546
    }
}

driverName 驱动名称 type 数据类型 imei 设备唯一标识 longitude 经度 latitude 维度 altitude 高度 speed 速度 bearing 方向 accuracy 经纬度精度 altitudeAccuracy 高度精度 timestamp定位时间(UTC秒)

定位数据接入

请求地址 /access/version/16/location 请求参数:

{
    "tag": "tag",
    "data": {
        "employee_id": "sdfsdfsdfsdf",
        "longitude": 123.999999,
        "latitude": 45.999999,
        "altitude": 1,
        "speed": 99.99,
        "bearing": 125,
        "accuracy": 2.22,
        "altitudeAccuracy": 1.99,
        "timestamp": 1514736000,
        "city_cn": "北京",
        "city_en": ”beijing“,
    }
}

参数: employee_id 设备唯一标识 longitude 经度 latitude 维度 altitude 高度 speed 速度 bearing 方向 accuracy 经纬度精度 altitudeAccuracy 高度精度 timestamp定位时间(UTC秒) city_cn城市名 中文 city_en 城市名 英文

#业务接口 ##系统桌面 请求系统SCREEN菜单如下:

/services/1.0.1/chat_execute/fm_system_query_screen

返回如下:

{
    "parent_id": "",
    "menu_id": "chat_flatscreen",
    "component_instance_id": "chat_flatscreen",
    "name": "首页",
    "memo": "",
    "sort": 1,
    "model": "index.html",
    "content": "",
    "icon": "flatscreen",
    "height": "",
    "width": 0,
    "status": 1,
    "update_time": 0,
    "update_user_id": ""
}

parent_id父菜单id menu_id菜单id component_instance_id关联模块id name菜单名称 memo菜单描述 sort菜单在同级中的位置 model菜单链接 content菜单配置数据 icon菜单图标 height菜单高度 width菜单宽度 status菜单状态

##子系统一级菜单 请求系统一级菜单如下:

/services/1.0.1/execute/fm_system_query_menu

返回如下:

{
    "parent_id": "",
    "menu_id": "chat_flatscreen",
    "component_instance_id": "chat_flatscreen",
    "name": "首页",
    "memo": "",
    "sort": 1,
    "model": "index.html",
    "content": "",
    "icon": "flatscreen",
    "height": "",
    "width": 0,
    "status": 1,
    "update_time": 0,
    "update_user_id": ""
}

parent_id父菜单id menu_id菜单id component_instance_id关联模块id name菜单名称 memo菜单描述 sort菜单在同级中的位置 model菜单链接 content菜单配置数据 icon菜单图标 height菜单高度 width菜单宽度 status菜单状态

##请求子菜单 请求系统一级菜单如下:

/services/1.0.1/execute/fm_system_query_childmenu 参数

{
    "menu_id": ""
}

menu_id父菜单id 返回如下:

{
    "parent_id": "",
    "menu_id": "chat_flatscreen",
    "component_instance_id": "chat_flatscreen",
    "name": "首页",
    "memo": "",
    "sort": 1,
    "model": "index.html",
    "content": "",
    "icon": "flatscreen",
    "height": "",
    "width": 0,
    "status": 1,
    "update_time": 0,
    "update_user_id": ""
}

parent_id父菜单id menu_id菜单id component_instance_id关联模块id name菜单名称 memo菜单描述 sort菜单在同级中的位置 model菜单链接 content菜单配置数据 icon菜单图标 height菜单高度 width菜单宽度 status菜单状态

##组织机构管理 ###组织机构查询 请求地址如下:

/services/1.0.1/execute/fm_system_query_corp 参数 返回如下:

[
    {
        "status": 1,
        "memo": "",
        "update_time": 0,
        "corp_name": "CHAT系统",
        "update_user_id": "fm_system_user_root",
        "corp_id": "fm_system_chat",
        "parent_id": "fm_system_corp"
    }
]

parent_id归属机构id corp_id组织机构id corp_name组织机构名称 memo描述 status状态 ###组织机构下属机构查询 请求地址如下:

/services/1.0.1/execute/fm_system_query_corp_child 参数

{
    "corp_id": ""
}

corp_id当前机构id 返回如下:

[
    {
        "status": 1,
        "memo": "",
        "update_time": 0,
        "corp_name": "CHAT系统",
        "update_user_id": "fm_system_user_root",
        "corp_id": "fm_system_chat",
        "parent_id": "fm_system_corp"
    }
]

parent_id归属机构id corp_id组织机构id corp_name组织机构名称 memo描述 status状态 ###增加组织机构下属机构 请求地址如下:

/services/1.0.1/execute/fm_system_insert_corp 参数

{
    "corp_id": "",
    "corp_name": "",
    "memo": ""
}

corp_id当前机构id corp_name下属机构名称 memo机构描述 标准返回

###修改组织机构 请求地址如下:

/services/1.0.1/execute/fm_system_update_corp 参数

{
    "corp_id": "",
    "corp_name": "",
    "memo": ""
}

corp_id机构id corp_name机构名称 memo机构描述 标准返回

##用户管理 ###组织机构下属用户查询 请求地址如下:

/services/1.0.1/execute/fm_system_query_corp_user 参数

{
    "corp_id": ""
}

corp_id当前机构id 返回如下:

[
    {
        "update_time": 0,
        "is_administrator": 1,
        "origin_name": "local",
        "source_id": "",
        "status": 1,
        "update_user_id": "fm_system_user_root",
        "login_name": "12334235345",
        "user_name": "chat_王王",
        "icon": "",
        "gender": 2,
        "memo": "",
        "user_id": "821780b7-5590-11e7-b185-001c424e87b5"
    }
]

user_id用户id login_name登录名称 user_name用户名称 icon用户头像 gender用户性别 is_administrator是否为管理员 origin_name用户来源 source_id来源id memo描述 status状态 ###增加组织机构下属用户 请求地址如下:

/services/1.0.1/execute/fm_system_insert_user 参数

{
    "corp_id": "",
    "login_name": "",
    "password": "",
    "is_administrator": "",
    "user_name": "",
    "icon": "",
    "gender": 1,
    "memo": ""
}

corp_id当前机构id login_name登录名称 user_name用户名称 password登录密码 is_administrator是否为管理员 icon用户头像 gender性别 memo描述 标准返回

###修改用户信息 请求地址如下:

/services/1.0.1/execute/fm_system_update_user 参数

{
    "user_id": "",
    "corp_id": "",
    "login_name": "",
    "password": "",
    "is_administrator": "",
    "user_name": "",
    "icon": "",
    "gender": 1,
    "memo": ""
}

user_id用户id corp_id所属机构id login_name登录名称 user_name用户名称 password登录密码 is_administrator是否为管理员 icon用户头像 gender性别 memo描述 标准返回 ##数据源管理 ###查询服务分类 请求地址如下:

/services/1.0.1/execute/d96c960f-8d23-4a64-92d5-035abde07c33 参数无 返回如下:

{
    "service_class_id": "fm_system_service_base",
    "name": "系统基础服务",
    "parent_id": "",
    "desc": "系统基础服务,请勿删除"
}

service_class_id服务分类id parent_id服务分类所属分类id name服务分类名称 desc描述 ###查询服务 请求地址如下:

/services/1.0.1/execute/0581fa6f-733b-49f0-8772-ebbc3cb4d7b7 参数无 返回如下:

[
    {
        "status": 1,
        "service_class_id": "fm_system_service_base",
        "service_id": "fm_mall_service_cart",
        "name": "购物车服务",
        "desc": ""
    }
]

service_class_id服务分类id service_id服务id name服务名称 desc描述 status状态

###查询数据源 请求地址如下:

/services/1.0.1/execute/8e9cd8f7-ccdb-426b-b251-1bdf51480421 参数无 返回如下:

[
    {
        "name": "ChatAddFriend",
        "remark": "",
        "desc": "添加好友",
        "service_id": "fm_system_service_execute",
        "type": "call",
        "service_event_id": "chat_add_friend"
    }
]

service_id服务id service_event_id数据源id name服务名称 desc描述 remark注记 type类型 status状态

###查询数据源配置 请求地址如下:

/services/1.0.1/execute/a5a547ae-f126-48ad-9f4e-2642189c1e6f 参数无 返回如下:

[
    {
        "service_event_parameters_id": "004d41e2-5d16-11e6-b409-fa163e51eb24",
        "remark": "",
        "desc": "查询模块配置映射",
        "content": "",
        "service_id": "fm_system_service_execute",
        "expression": "model,domain",
        "data_type_class_id": "system_data_type_mysql",
        "rule": "",
        "service_event_id": "fm_system_query_r_attribute"
    }
]

service_id服务id service_event_id数据源id service_event_parameters_id数据源配置id data_type_class_id数据源连接分类类型id desc描述 remark注记 rule规则 content内容 expression表达式/参数

###增加数据源 请求地址如下: /services/1.0.1/execute/fm_system_add_services_event 参数

{
    "service_id": "",
    "name": "",
    "description": "",
    "type": "",
    "content": "",
    "expression": ""
}

service_id服务id name数据源名称 description数据源名称 type数据源类型 content数据源定义 expression数据源参数 返回如下:

{
    "add_services_event": "3bb63ac8-f063-4158-8bd2-31875b794957"
}

add_services_event添加的数据源id ###自定义数据源 请求地址如下: /services/1.0.1/execute/2d901cb4-84ea-46bd-bf49-5809cae70dac 参数

{
	"data": {
		"entity_desc": "对对对",
		"fields": [{
			"precision": 26,
			"null_able": 0,
			"type": "postgres_character_varying",
			"column_desc": "放",
			"primary_key": 1
		}]
	},
	"tag": "tag"
}

外层表信息字段释义 entity_class_id 表实体所属分类,非必填,默认"Sm@rtMapX_system" table_name 表名称,遵循数据库表格命名规范,非必填,可自动生成 table_schema 表模式,非必填,默认用户模式下 table_type 表类型,非必填,默认为"user" data_source_id 所属数据源,非必填,默认为"fm_data_source_postgresql" entity_desc 表注释 remark 表描述信息,非必填,默认为空 short_code 快捷操作编码,非必填,默认为空 islevel 是否为层级表[0,1],非必填,默认为非层级表[0] 表字段信息释义 column_name 字段名称,非必填,可自动生成 column_desc 字段注释 remark 表字段描述信息,非必填,默认为空 null_able 能否为空[0,1],非必填,默认未允许空[1] primary_key 是否为主键,非必填,默认为非主键[0] precision 长度 scale 小数精度 type 字段类型,详见字段类型字典,默认未字符串 encrypt_type 字段加密类型,非必填,默认为不加密[0]

地址匹配

请求地址如下: /services/1.0.1/dataconvert/geocoding 参数

{
    "conjunction": "and",
    "filters": [
        {
            "service_event_config_id": "6a566b05-e0f4-43e6-b6d3-6dd9b324fabf",
            "rule": "4f1392a2-491f-42b3-81ff-73f3f98e555b",
            "value": "s",
            "data_type_id": "postgres_character_varying"
        }
    ],
    "column_province": "",
    "column_city": "",
    "column_district": "",
    "column_address": ""
}

标准返回

逆地理接口

请求地址如下: /api/regeo/[lon,lat] 如:/api/regeo/[116.29378573835402,39.89561127554049] 返回如下:

{
    "lon": 116.29378573835402,
    "lat": 39.89561127554049,
    "desc": "北京市,丰台区,万丰路(西98米),金家村第二社区居民委员会外来人口管理站(南44米)"
}

#微信小程序 近期有比较迫切的微信支付需求,选择了小程序支付,原本以为应该很快就可以搭起完整的流程,或许是因为不熟悉开程序开发和微信支付开发,利用零零散散的时间搞了几天才彻底打通,在此将所有过程记录下来并将成果分享给大家,让各位像我一样的微信盲快速实现微信小程序支付。

#相关开源库

开源库及服务说明如下:

开源库名称 描述
OIUE主工程(服务启动容器felix) https://github.com/OIUE/OIUE
OIUE基于OSGI打包配置 https://github.com/OIUE/OIUE-CONFIGURATOR
OIUE核心服务(容器隔离及核心服务定义) https://github.com/OIUE/OIUE-CORE
OIUE核心服务实现 https://github.com/OIUE/OIUE-BASE
OIUE基于jdbc事物封装 https://github.com/OIUE/OIUE-ODPS
OIUE开放服务 https://github.com/OIUE/OIUE-SERVICES

以下服务均可在maven**库及 https://mvnrepository.com 找到

#相关服务

服务名称 纯接口 bundle
工具包 N org.oiue.tools-1.0.1.jar
启动容器隔离封装服务(基于OSGI) N org.oiue.service.osgi.rpc-1.0.1.jar
Action服务定义 Y org.oiue.service.action.api-1.0.1.jar
Action调度服务实现 N org.oiue.service.action.base-1.0.1.jar
ActionFilter认证服务 N org.oiue.service.action.filter.auth-1.0.1.jar
免登陆调试服务 N org.oiue.service.action.filter.auth.debug-1.0.1.jar
Action服务HTTP方式访问实现OLD N org.oiue.service.action.http.action-1.0.1.jar
HTTP图片验证码服务 N org.oiue.service.action.http.imageCode-1.0.1.jar
Action服务HTTP方式访问实现NEW N org.oiue.service.action.http.services-1.0.1.jar
HTTP文件上传服务 N org.oiue.service.action.http.upload-1.0.1.jar
Action服务TCP方式JSON访问实现 N org.oiue.service.action.tcp.action-1.0.1.jar
Action服务TCP方式流访问实现 N org.oiue.service.action.tcp.bytes-1.0.1.jar
认证服务定义 Y org.oiue.service.auth-1.0.1.jar
认证调度服务实现 N org.oiue.service.auth.impl-1.0.1.jar
本地认证服务实现(直接查jdbc库) N org.oiue.service.auth.local-1.0.1.jar
自定义缓存定义 Y org.oiue.service.buffer-1.0.1.jar
自定义缓存实现 N org.oiue.service.buffer.impl-1.0.1.jar
自定义缓存同步服务 N org.oiue.service.buffer.synchronization.db-1.0.1.jar
流数据编解码处理服务定义 Y org.oiue.service.bytes.api-1.0.1.jar
流数据编解码调度处理服务实现 N org.oiue.service.bytes.base-1.0.1.jar
数据流编解码 N org.oiue.service.bytes.bytes-1.0.1.jar
整形数据编解码 N org.oiue.service.bytes.int16-1.0.1.jar
字符串编解码 N org.oiue.service.bytes.string-1.0.1.jar
缓存服务定义 Y org.oiue.service.cache-1.0.1.jar
自定义缓存实现 N org.oiue.service.cache.buffer-1.0.1.jar
缓存调度实现 N org.oiue.service.cache.impl-1.0.1.jar
混存redis封装 N org.oiue.service.cache.jedis-1.0.1.jar
混存脚本操作 N org.oiue.service.cache.script-1.0.1.jar
树状结构缓存定义 Y org.oiue.service.cache.tree-1.0.1.jar
树状缓存脚本操作 N org.oiue.service.cache.tree.script-1.0.1.jar
树状缓存zookeeper封装 N org.oiue.service.cache.tree.zookeeper.curator-1.0.1.jar
缓存调试服务 N org.oiue.service.debug.cache-1.0.1.jar
Http客户端调试服务 N org.oiue.service.debug.httpclient-1.0.1.jar
资源操作调试服务 N org.oiue.service.debug.res-1.0.1.jar
树状缓存调试服务 N org.oiue.service.debug.treecache-1.0.1.jar
数据接入总线服务定义 Y org.oiue.service.driver.api-1.0.1.jar
数据接入总线调度实现 N org.oiue.service.driver.base-1.0.1.jar
数据总线过滤实现 N org.oiue.service.driver.filter.impl-1.0.1.jar
数据总线订阅实现 N org.oiue.service.driver.listener.impl-1.0.1.jar
数据总线存储实现 N org.oiue.service.driver.listener.storage-1.0.1.jar
事件执行服务定义 Y org.oiue.service.event.execute-1.0.1.jar
事件执行服务实现 N org.oiue.service.event.execute.impl-1.0.1.jar
获取系统时间事件定义 Y org.oiue.service.event.system.time-1.0.1.jar
获取系统时间事件实现 N org.oiue.service.event.system.time.impl-1.0.1.jar
文件上传服务定义 Y org.oiue.service.file.upload-1.0.1.jar
文件上传服务实现 N org.oiue.service.file.upload.impl-1.0.1.jar
HTTP客户端服务定义 Y org.oiue.service.http.client-1.0.1.jar
apacheHttp客户端封装 N org.oiue.service.http.client.apache-1.0.1.jar
日志服务定义 Y org.oiue.service.log-1.0.1.jar
日志Log4j封装 N org.oiue.service.log4j-1.0.1.jar
消息服务定义 Y org.oiue.service.message-1.0.1.jar
消息服务实现 N org.oiue.service.message.impl-1.0.1.jar
JDBC事务基础服务 N org.oiue.service.odp.base-1.0.1.jar
H2持久层底层公共方法定义 N org.oiue.service.odp.dmo.h2-1.0.1.jar
Mysql持久层底层公共方法定义 N org.oiue.service.odp.dmo.mysql-1.0.1.jar
Neo4j持久层底层公共方法定义 N org.oiue.service.odp.dmo.neo4j-1.0.1.jar
Postgresql持久层底层公共方法定义 N org.oiue.service.odp.dmo.postgresql-1.0.1.jar
数据操作事件定义 Y org.oiue.service.odp.event.api-1.0.1.jar
数据操作事件Mysql实现 N org.oiue.service.odp.event.dmo.mysql-1.0.1.jar
数据操作事件Mysql查询实现 N org.oiue.service.odp.event.dmo.mysql.q-1.0.1.jar
数据操作事件Mysql单条查询实现 N org.oiue.service.odp.event.dmo.mysql.select-1.0.1.jar
数据操作事件Mysql多条查询实现 N org.oiue.service.odp.event.dmo.mysql.selects-1.0.1.jar
数据操作事件Mysql查询事件转换实现 N org.oiue.service.odp.event.dmo.mysql.t-1.0.1.jar
数据操作事件Neo4j实现 N org.oiue.service.odp.event.dmo.neo4j-1.0.1.jar
数据操作事件Neo4j插入实现 N org.oiue.service.odp.event.dmo.neo4j.insert-1.0.1.jar
数据操作事件Postgresql实现 N org.oiue.service.odp.event.dmo.postgresql-1.0.1.jar
数据操作事件Postgresql查询实现 N org.oiue.service.odp.event.dmo.postgresql.q-1.0.1.jar
数据操作事件Postgresql查询实现 N org.oiue.service.odp.event.dmo.postgresql.query-1.0.1.jar
数据操作事件Postgresql查询实现 N org.oiue.service.odp.event.dmo.postgresql.selects-1.0.1.jar
事件sql处理定义 Y org.oiue.service.odp.event.sql.structure-1.0.1.jar
事件sql处理实现 N org.oiue.service.odp.event.sql.structure.impl-1.0.1.jar
资源操作服务定义 Y org.oiue.service.odp.res.api-1.0.1.jar
资源操作服务业务实现 N org.oiue.service.odp.res.base-1.0.1.jar
资源操作持久层定义 Y org.oiue.service.odp.res.dmo-1.0.1.jar
H2资源操作持久层实现 N org.oiue.service.odp.res.dmo.h2-1.0.1.jar
Mysql资源操作持久层实现 N org.oiue.service.odp.res.dmo.mysql-1.0.1.jar
Neo4j资源操作持久层实现 N org.oiue.service.odp.res.dmo.neo4j-1.0.1.jar
sql处理定义 Y org.oiue.service.odp.structure-1.0.1.jar
sql处理实现 N org.oiue.service.odp.structure.impl-1.0.1.jar
查询sql处理实现 N org.oiue.service.odp.structure.selectsql-1.0.1.jar
在线维护服务定义 Y org.oiue.service.online-1.0.1.jar
在线维护服务实现 N org.oiue.service.online.impl-1.0.1.jar
权限校验服务定义 Y org.oiue.service.permission-1.0.1.jar
权限校验调度服务实现 N org.oiue.service.permission.impl-1.0.1.jar
访问鉴权及转换服务 N org.oiue.service.permission.verify-1.0.1.jar
JDBC连接池定义 Y org.oiue.service.sql-1.0.1.jar
Apache的JDBC连接池封装 N org.oiue.service.sql.apache-1.0.1.jar
系统分析服务定义 Y org.oiue.service.system.analyzer-1.0.1.jar
系统分析服务实现 N org.oiue.service.system.analyzer.impl-1.0.1.jar
定时任务调度服务定义 Y org.oiue.service.task-1.0.1.jar
定时任务调度 N org.oiue.service.task.quartz-1.0.1.jar
TCP/UDP服务定义 Y org.oiue.service.tcp-1.0.1.jar
Mina封装 N org.oiue.service.tcp.mina-1.0.1.jar
模板定义 Y org.oiue.service.template.api-1.0.1.jar
模板管理服务实现 N org.oiue.service.template.base-1.0.1.jar
beetl封装 N org.oiue.service.template.beetl-1.0.1.jar
velocity封装 N org.oiue.service.template.velocity-1.0.1.jar
线程池定义 Y org.oiue.service.threadpool-1.0.1.jar
线程池实现 N org.oiue.service.threadpool.impl-1.0.1.jar

more

OIUE's Projects

accumulation-rssi icon accumulation-rssi

Linux utility for accumulation of WiFi RSSI to text file. Using nl80211, Managed mode. Useful for experiments with WiFi (example, localization)

ace icon ace

Mirror of Apache ACE (incubating)

artipub icon artipub

Article publishing platform that automatically distributes your articles to various media channels

baymax icon baymax

"Hello, I am your personal health companion"

books-pdf icon books-pdf

程序员必看的经典书籍,编程电子书下载,附带pdf下载链接,包括C,C++,Java,Python,Linux,Go,数据结构与算法,人工智能,计算机基础,面试,设计模式,数据库,前端等

car-eye-rtmp-server icon car-eye-rtmp-server

Car-eye-RTMP-server 是基于Nginx开发的一个开源服务器,稳定高效。可应用于安防,移动终端,医疗,教育等行业。配合car-eye-server 实现对设备的管理,配合视频后台实现直播和点播功能。流媒体服务器后台设备管理平台网站:www.liveoss.com 视频直播测试网站:http://www.car-eye.cn:8080/

cc icon cc

一个基于angular4.1.3+ng-bootstrap1.0.0-alpha.25+bootstrap4.0.0-alpha.6+scss的后台管理系统界面

cloudplatform icon cloudplatform

该项目基于SpringBoo2.1.6、Spring Cloud Hoxton.RELEASE、Spring Cloud OAuth2、Spring Cloud Alibaba 、 VUE构建的微服务权限管理系统。系统特点:前后端分离、认证/资源服务器分离、RBAC模型、第三方账号登录、多维度监控(Prometheus APM:Docker容器监控,MySQL监控、微服务JVM监控、Redis监控)、服务预警(邮件预警,企业微信预警)、Skywalking服务追踪、ELK日志系统、Nacos集中管理配置和服务、Sentinel流控、动态Client管理、支持多种格式令牌、注解驱动、代码生成、K8S集群部署等。

crisis icon crisis

The Complexity Research Initiative for Systemic InstabilitieS

depview icon depview

View code dependencies in a Java project

flume_openwrt icon flume_openwrt

OpenWrt路由器获取无线路由器的数据包或周围无线设备的RssI值,把获取的数据发送到flume服务器端口,flume收集数据放到大叔据存储设备上。

funnlp icon funnlp

中英文敏感词、语言检测、中外手机/电话归属地/运营商查询、名字推断性别、手机号抽取、身份证抽取、邮箱抽取、中日文人名库、中文缩写库、拆字词典、词汇情感值、停用词、反动词表、暴恐词表、繁简体转换、英文模拟中文发音、汪峰歌词生成器、职业名称词库、同义词库、反义词库、否定词库、汽车品牌词库、汽车零件词库、连续英文切割、各种中文词向量、公司名字大全、古诗词库、IT词库、财经词库、成语词库、地名词库、历史名人词库、诗词词库、医学词库、饮食词库、法律词库、汽车词库、动物词库、中文聊天语料、中文谣言数据、百度中文问答数据集、句子相似度匹配算法集合、bert资源、文本生成&摘要相关工具、cocoNLP信息抽取工具、国内电话号码正则匹配、清华大学XLORE:中英文跨语言百科知识图谱、清华大学人工智能技术系列报告、自然语言生成、NLU太难了系列、自动对联数据及机器人、用户名黑名单列表、罪名法务名词及分类模型、微信公众号语料、cs224n深度学习自然语言处理课程、中文手写汉字识别、中文自然语言处理 语料/数据集、变量命名神器、分词语料库+代码、任务型对话英文数据集、ASR 语音数据集 + 基于深度学习的中文语音识别系统、笑声检测器、Microsoft多语言数字/单位/如日期时间识别包、中华新华字典数据库及api(包括常用歇后语、成语、词语和汉字)、文档图谱自动生成、SpaCy 中文模型、Common Voice语音识别数据集新版、神经网络关系抽取、基于bert的命名实体识别、关键词(Keyphrase)抽取包pke、基于医疗领域知识图谱的问答系统、基于依存句法与语义角色标注的事件三元组抽取、依存句法分析4万句高质量标注数据、cnocr:用来做中文OCR的Python3包、中文人物关系知识图谱项目、中文nlp竞赛项目及代码汇总、中文字符数据、speech-aligner: 从“人声语音”及其“语言文本”产生音素级别时间对齐标注的工具、AmpliGraph: 知识图谱表示学习(Python)库:知识图谱概念链接预测、Scattertext 文本可视化(python)、语言/知识表示工具:BERT & ERNIE、中文对比英文自然语言处理NLP的区别综述、Synonyms中文近义词工具包、HarvestText领域自适应文本挖掘工具(新词发现-情感分析-实体链接等)、word2word:(Python)方便易用的多语言词-词对集:62种语言/3,564个多语言对、语音识别语料生成工具:从具有音频/字幕的在线视频创建自动语音识别(ASR)语料库、构建医疗实体识别的模型(包含词典和语料标注)、单文档非监督的关键词抽取、Kashgari中使用gpt-2语言模型、开源的金融投资数据提取工具、文本自动摘要库TextTeaser: 仅支持英文、人民日报语料处理工具集、一些关于自然语言的基本模型、基于14W歌曲知识库的问答尝试--功能包括歌词接龙and已知歌词找歌曲以及歌曲歌手歌词三角关系的问答、基于Siamese bilstm模型的相似句子判定模型并提供训练数据集和测试数据集、用Transformer编解码模型实现的根据Hacker News文章标题自动生成评论、用BERT进行序列标记和文本分类的模板代码、LitBank:NLP数据集——支持自然语言处理和计算人文学科任务的100部带标记英文小说语料、百度开源的基准信息抽取系统、虚假新闻数据集、Facebook: LAMA语言模型分析,提供Transformer-XL/BERT/ELMo/GPT预训练语言模型的统一访问接口、CommonsenseQA:面向常识的英文QA挑战、中文知识图谱资料、数据及工具、各大公司内部里大牛分享的技术文档 PDF 或者 PPT、自然语言生成SQL语句(英文)、中文NLP数据增强(EDA)工具、英文NLP数据增强工具 、基于医药知识图谱的智能问答系统、京东商品知识图谱、基于mongodb存储的军事领域知识图谱问答项目、基于远监督的中文关系抽取、语音情感分析、中文ULMFiT-情感分析-文本分类-语料及模型、一个拍照做题程序、世界各国大规模人名库、一个利用有趣中文语料库 qingyun 训练出来的中文聊天机器人、中文聊天机器人seqGAN、省市区镇行政区划数据带拼音标注、教育行业新闻语料库包含自动文摘功能、开放了对话机器人-知识图谱-语义理解-自然语言处理工具及数据、中文知识图谱:基于百度百科中文页面-抽取三元组信息-构建中文知识图谱、masr: 中文语音识别-提供预训练模型-高识别率、Python音频数据增广库、中文全词覆盖BERT及两份阅读理解数据、ConvLab:开源多域端到端对话系统平台、中文自然语言处理数据集、基于最新版本rasa搭建的对话系统、基于TensorFlow和BERT的管道式实体及关系抽取、一个小型的证券知识图谱/知识库、复盘所有NLP比赛的TOP方案、OpenCLaP:多领域开源中文预训练语言模型仓库、UER:基于不同语料+编码器+目标任务的中文预训练模型仓库、中文自然语言处理向量合集、基于金融-司法领域(兼有闲聊性质)的聊天机器人、g2pC:基于上下文的汉语读音自动标记模块、Zincbase 知识图谱构建工具包、诗歌质量评价/细粒度情感诗歌语料库、快速转化「中文数字」和「阿拉伯数字」、百度知道问答语料库、基于知识图谱的问答系统、jieba_fast 加速版的jieba、正则表达式教程、中文阅读理解数据集、基于BERT等最新语言模型的抽取式摘要提取、Python利用深度学习进行文本摘要的综合指南、知识图谱深度学习相关资料整理、维基大规模平行文本语料、StanfordNLP 0.2.0:纯Python版自然语言处理包、NeuralNLP-NeuralClassifier:腾讯开源深度学习文本分类工具、端到端的封闭域对话系统、中文命名实体识别:NeuroNER vs. BertNER、新闻事件线索抽取、2019年百度的三元组抽取比赛:“科学空间队”源码、基于依存句法的开放域文本知识三元组抽取和知识库构建、中文的GPT2训练代码、ML-NLP - 机器学习(Machine Learning)NLP面试中常考到的知识点和代码实现、nlp4han:中文自然语言处理工具集(断句/分词/词性标注/组块/句法分析/语义分析/NER/N元语法/HMM/代词消解/情感分析/拼写检查、XLM:Facebook的跨语言预训练语言模型、用基于BERT的微调和特征提取方法来进行知识图谱百度百科人物词条属性抽取、中文自然语言处理相关的开放任务-数据集-当前最佳结果、CoupletAI - 基于CNN+Bi-LSTM+Attention 的自动对对联系统、抽象知识图谱、MiningZhiDaoQACorpus - 580万百度知道问答数据挖掘项目、brat rapid annotation tool: 序列标注工具、大规模中文知识图谱数据:1.4亿实体、数据增强在机器翻译及其他nlp任务中的应用及效果、allennlp阅读理解:支持多种数据和模型、PDF表格数据提取工具 、 Graphbrain:AI开源软件库和科研工具,目的是促进自动意义提取和文本理解以及知识的探索和推断、简历自动筛选系统、基于命名实体识别的简历自动摘要、中文语言理解测评基准,包括代表性的数据集&基准模型&语料库&排行榜、树洞 OCR 文字识别 、从包含表格的扫描图片中识别表格和文字、语声迁移、Python口语自然语言处理工具集(英文)、 similarity:相似度计算工具包,java编写、海量中文预训练ALBERT模型 、Transformers 2.0 、基于大规模音频数据集Audioset的音频增强 、Poplar:网页版自然语言标注工具、图片文字去除,可用于漫画翻译 、186种语言的数字叫法库、Amazon发布基于知识的人-人开放领域对话数据集 、中文文本纠错模块代码、繁简体转换 、 Python实现的多种文本可读性评价指标、类似于人名/地名/组织机构名的命名体识别数据集 、东南大学《知识图谱》研究生课程(资料)、. 英文拼写检查库 、 wwsearch是企业微信后台自研的全文检索引擎、CHAMELEON:深度学习新闻推荐系统元架构 、 8篇论文梳理BERT相关模型进展与反思、DocSearch:免费文档搜索引擎、 LIDA:轻量交互式对话标注工具 、aili - the fastest in-memory index in the East 东半球最快并发索引 、知识图谱车音工作项目、自然语言生成资源大全 、中日韩分词库mecab的Python接口库、中文文本摘要/关键词提取、汉字字符特征提取器 (featurizer),提取汉字的特征(发音特征、字形特征)用做深度学习的特征、中文生成任务基准测评 、中文缩写数据集、中文任务基准测评 - 代表性的数据集-基准(预训练)模型-语料库-baseline-工具包-排行榜、PySS3:面向可解释AI的SS3文本分类器机器可视化工具 、中文NLP数据集列表、COPE - 格律诗编辑程序、doccano:基于网页的开源协同多语言文本标注工具 、PreNLP:自然语言预处理库、简单的简历解析器,用来从简历中提取关键信息、用于中文闲聊的GPT2模型:GPT2-chitchat、基于检索聊天机器人多轮响应选择相关资源列表(Leaderboards、Datasets、Papers)、(Colab)抽象文本摘要实现集锦(教程 、词语拼音数据、高效模糊搜索工具、NLP数据增广资源集、微软对话机器人框架 、 GitHub Typo Corpus:大规模GitHub多语言拼写错误/语法错误数据集、TextCluster:短文本聚类预处理模块 Short text cluster、面向语音识别的中文文本规范化、BLINK:最先进的实体链接库、BertPunc:基于BERT的最先进标点修复模型、Tokenizer:快速、可定制的文本词条化库、中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜、spaCy 医学文本挖掘与信息提取 、 NLP任务示例项目代码集、 python拼写检查库、chatbot-list - 行业内关于智能客服、聊天机器人的应用和架构、算法分享和介绍、语音质量评价指标(MOSNet, BSSEval, STOI, PESQ, SRMR)、 用138GB语料训练的法文RoBERTa预训练语言模型 、BERT-NER-Pytorch:三种不同模式的BERT中文NER实验、无道词典 - 有道词典的命令行版本,支持英汉互查和在线查询、2019年NLP亮点回顾、 Chinese medical dialogue data 中文医疗对话数据集 、最好的汉字数字(中文数字)-阿拉伯数字转换工具、 基于百科知识库的中文词语多词义/义项获取与特定句子词语语义消歧、awesome-nlp-sentiment-analysis - 情感分析、情绪原因识别、评价对象和评价词抽取、LineFlow:面向所有深度学习框架的NLP数据高效加载器、中文医学NLP公开资源整理 、MedQuAD:(英文)医学问答数据集、将自然语言数字串解析转换为整数和浮点数、Transfer Learning in Natural Language Processing (NLP) 、面向语音识别的中文/英文发音辞典、Tokenizers:注重性能与多功能性的最先进分词器、CLUENER 细粒度命名实体识别 Fine Grained Named Entity Recognition、 基于BERT的中文命名实体识别、中文谣言数据库、NLP数据集/基准任务大列表、nlp相关的一些论文及代码, 包括主题模型、词向量(Word Embedding)、命名实体识别(NER)、文本分类(Text Classificatin)、文本生成(Text Generation)、文本相似性(Text Similarity)计算等,涉及到各种与nlp相关的算法,基于keras和tensorflow 、Python文本挖掘/NLP实战示例、 Blackstone:面向非结构化法律文本的spaCy pipeline和NLP模型通过同义词替换实现文本“变脸” 、中文 预训练 ELECTREA 模型: 基于对抗学习 pretrain Chinese Model 、albert-chinese-ner - 用预训练语言模型ALBERT做中文NER 、基于GPT2的特定主题文本生成/文本增广、开源预训练语言模型合集、多语言句向量包、编码、标记和实现:一种可控高效的文本生成方法、 英文脏话大列表 、attnvis:GPT2、BERT等transformer语言模型注意力交互可视化、CoVoST:Facebook发布的多语种语音-文本翻译语料库,包括11种语言(法语、德语、荷兰语、俄语、西班牙语、意大利语、土耳其语、波斯语、瑞典语、蒙古语和中文)的语音、文字转录及英文译文、Jiagu自然语言处理工具 - 以BiLSTM等模型为基础,提供知识图谱关系抽取 中文分词 词性标注 命名实体识别 情感分析 新词发现 关键词 文本摘要 文本聚类等功能、用unet实现对文档表格的自动检测,表格重建、NLP事件提取文献资源列表 、 金融领域自然语言处理研究资源大列表、CLUEDatasetSearch - 中英文NLP数据集:搜索所有中文NLP数据集,附常用英文NLP数据集 、medical_NER - 中文医学知识图谱命名实体识别 、(哈佛)讲因果推理的免费书、知识图谱相关学习资料/数据集/工具资源大列表、Forte:灵活强大的自然语言处理pipeline工具集 、Python字符串相似性算法库、PyLaia:面向手写文档分析的深度学习工具包、TextFooler:针对文本分类/推理的对抗文本生成模块、Haystack:灵活、强大的可扩展问答(QA)框架、中文关键短语抽取工具

gh-ost icon gh-ost

GitHub's Online Schema Migrations for MySQL

gpdb icon gpdb

Greenplum Database - Massively Parallel PostgreSQL for Analytics. An open-source massively parallel data platform for analytics, machine learning and AI.

java icon java

Official Java client library for kubernetes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.