Code Monkey home page Code Monkey logo

zhoutaoo / springcloud Goto Github PK

View Code? Open in Web Editor NEW
8.6K 356.0 3.9K 9.83 MB

基于SpringCloud2.1的微服务开发脚手架,整合了spring-security-oauth2、nacos、feign、sentinel、springcloud-gateway等。服务治理方面引入elasticsearch、skywalking、springboot-admin、zipkin等,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上。持续更新中

License: Apache License 2.0

Java 91.36% Dockerfile 0.28% Shell 1.97% PLpgSQL 6.39%
springcloud springboot eureka oauth2 feign-client spring-cloud-gateway springboot-admin zipkin hystrix spring-security

springcloud's Introduction

Build Status License codecov

根据前期的使用和反馈,目前将脚手架整体进行了重构,发布了新的框架 Opensabre,当前仓库代码暂停维护,请使用新版

在线文档: 在线文档

进群交流: 进群交流

架构特点

1. 统一Restful的响应报文,controll返回原始类型即可,无需手动包装,简化代码,可读性更好。

2. 统一异常处理,封装了基本的异常的响应,如参数检验、文件上传等。简化代码,更方便扩展。

3. 默认集成Swagger 3.0 API文档,方便接口文档的传递、协作与调试。

4. 标准化WEB对象传递/转换/使用,方便统一开发风格,简化操作。

5. 框架/环境等元数据自动收集注册至properties和Nacos,方便系统运行时作为扩展判断,信息处理。

6. 系统启动时自动收集所有Restful url注册到权限资源,方便进行集中权限管理和授权使用。

7. 多机房/双活路由负载扩展支持,自定义路由和负载规则,更灵活、可控。

8. 默认引入spring validation,并扩展枚举、手机号等常用校验注解。

9. 默认引入日志trace、actuator等组件,统一日志打印格式。

10. 整体系统化为三层,framework框架、framework组件、基础应用,层次更清楚,结构更合理。

11. 配置中心,划分框架全局配置与应用配置(熔断降级、网关路由),规划中。

快速开始

先决条件

首先本机先要安装以下环境,建议先学习了解springboot和springcloud基础知识。

开发环境搭建

linux和mac下可在项目根目录下执行 ./install.sh 快速搭建开发环境。如要了解具体的步骤,请看如下文档。

具体步骤如下:

  1. 克隆代码库: git clone https://github.com/zhoutaoo/SpringCloud.git

  2. 安装公共库到本地仓库:

mvn -pl ./common,./auth/authentication-client install

  1. 生成ide配置: mvn idea:ideamvn eclipse:eclipse 并导入对应的ide进行开发,IDE安装lombok插件(很重要,否则IDE会显示编译报错)

编译 & 启动

  • 1.启动基础服务:进入docker-compose目录,执行docker-compose -f docker-compose.yml up 或单个启动docker-compose up 服务名, 服务名如下

在启动应用之前,需要先启动数据库、缓存、MQ等中间件,可根据自己需要启动的应用选择启动某些基础组件,一般来说启动mysql、redis、rabbitmq即可,其它组件若有需要,根据如下命令启动即可。

该步骤使用了docker快速搭建相应的基础环境,需要你对docker、docker-compose有一定了解和使用经验。也可以不使用docker,自行搭建以下服务即可。

服务 服务名 端口 备注
数据库 mysql 3306 目前各应用共用1个实例,各应用可建不同的database
KV缓存 redis 6379 目前共用,原则上各应用单独实例
消息中间件 rabbitmq 5672 共用
注册与配置中心 nacos 8848 启动和使用文档
日志收集中间件 zipkin-server 9411 共用
搜索引擎中间件 elasticsearch 9200 共用
日志分析工具 kibana 5601 共用
数据可视化工具 grafana 3000 共用
  • 2.创建数据库及表

只有部分应用有数据库脚本,若启动的应用有数据库的依赖,请初使化表结构和数据后再启动应用。

docker方式脚本初使化:进入docker-compose目录,执行命令 docker-compose up mysql-init

子项目脚本

路径一般为:子项目/db

如:auth/db 下的脚本,请先执行ddl建立表结构后再执行dml数据初使化

应用脚本

路径一般为:子项目/应用名/src/main/db

如:demos/producer/src/main/db 下的脚本

  • 3.启动应用

根据自己需要,启动相应服务进行测试,cd 进入相关应用目录,执行命令: mvn spring-boot:run

以下应用都依赖于rabbitmq、nacos,启动服务前请先启动mq和注册中心

服务分类 服务名 依赖基础组件 简介 应用地址 文档
center bus-server 消息中心 http://localhost:8071 消息中心文档
sysadmin organization mysql、redis 用户组织应用 http://localhost:8010 待完善
auth authorization-server mysql、organization 授权服务 http://localhost:8000 权限服务简介授权server文档
auth authentication-server mysql、organization 认证服务 http://localhost:8001 认证server文档
auth authentication-client 认证客户端 jar包引入
gateway gateway-web redis WEB网关 http://localhost:8443 WEB网关简介 WEB网关文档
gateway gateway-admin mysql、redis 网关管理 http://localhost:8445 网关管理后台文档
monitor admin 总体监控 http://localhost:8022
  • 4.案例示意图

以下是一个用户访问的的示意图,用户请求通过gateway-web应用网关访问后端应用,通过authorization-server应用登陆授权换取token,请求通过authentication-server应用进行权限签别后转发到"您的业务应用"中

authorization-server为授权应用,启动前请初使化好数据库,授权Server文档

authentication-server为签权应用,若有新增接口,请初使化相关权限数据到resource表中。

gateway-admin可动态调整gateway-web的路由策略,测试前请先配置网关的转发策略,路由策略配置

示意图

  • 6.前端项目

确确保gateway-admin、gateway-web、organization、authorization-server、authentication-server服务启动,然后启动

前端项目(该项目目前还在开发中)

大家启动如有问题,可以先到这里看看,也可以加入交流群

常见问题

测试

运行 mvn test 启动测试.

架构与开发

架构

开发指南

开发指南

功能与特性

功能预览

用户管理 用户管理

角色管理 角色管理

服务容错 服务容错

API文档 API文档

组织架构管理 组织架构管理

基础服务

服务 使用技术 进度 备注
注册中心 Nacos
配置中心 Nacos
消息总线 SpringCloud Bus+Rabbitmq
灰度分流 OpenResty + lua 🏗
动态网关 SpringCloud Gateway 多种维度的流量控制(服务、IP、用户等),后端可配置化🏗
授权认证 Spring Security OAuth2 Jwt模式
服务容错 SpringCloud Sentinel
服务调用 SpringCloud OpenFeign
对象存储 FastDFS/Minio 🏗
任务调度 Elastic-Job 🏗
分库分表 Mycat 🏗
数据权限 🏗 使用mybatis对原查询做增强,业务代码不用控制,即可实现。

平台功能

服务 使用技术 进度 备注
用户管理 自开发 用户是系统操作者,该功能主要完成系统用户配置。
角色管理 自开发 角色菜单权限分配、设置角色按机构进行数据范围权限划分。
菜单管理 自开发 🏗 配置系统菜单,操作权限,按钮权限标识等。
机构管理 自开发 🏗 配置系统组织机构,树结构展现,可随意调整上下级。
网关动态路由 自开发 🏗 网关动态路由管理

开发运维

服务 使用技术 进度 备注
代码生成 🏗 前后端代码的生成,支持Vue
测试管理 🏗
文档管理 Swagger2
服务监控 Spring Boot Admin
链路追踪 SkyWalking
操作审计 🏗 系统关键操作日志记录和查询
日志管理 ES + Kibana、Zipkin
监控告警 Grafana

更新日志

2019-10-18:

1.使用nacos替代eureka为服务的注册中心

2.使用nacos替代apollo为服务的配置中心

3.引入使用sentinel替换掉hystrix,引入sentinel-dashboard

4.使用jetcache作两级缓存,优化缓存性能

5.网关启动时加载数据库中的路由到redis缓存

6.其它已知bug修复

联系交流

加入贡献代码

请入群 请戳这里 加群主微信。

请作者喝饮料

如果你觉的有帮助到您,可以请作者喝饮料,这样更有动力,谢谢。

学习交流

EMail:[email protected]

群1、2、3、4、5、6、7、8、9已满,请加群10,加群请戳这里

此些群仅为技术交流群,请大家不要讨论政治、发广告等与技术无关的东西。大家如若有问题可以在群里直接发问,我会抽空答复。

请大家问问题时尽量描述清楚背景与问题关键信息,描述的越清楚越容易得到答案。也更容易判断问题可能点,节省判断的时间,而不用来回问答。

同时也鼓励群友们积极回复已知的问题,大家相互帮助共同成长。如有bug或新需求也可以直接提交issue到github,我会酌情处理。

如果你发现你的问题很久都没有人答复,那很有可能就是问题描述的不够清楚,别人无法回复。

问问题的三要素

  1. 说明背景,使用了哪个模块,要做什么?

  2. 怎么输入或操作的得到了什么结果? 截图,日志

  3. 哪里不明白或有什么疑问 ?

Stargazers over time

Stargazers over time

springcloud's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

springcloud's Issues

开源问题

请问博主,这个项目的所有业务模块都是开源免费的吗?还是说有的功能模块是需要付费才能看到

授权服务和认证服务,在admin模块上, 显示不了服务的信息,授权服务和认证服务日志显示需要认证

BUG描述

清晰的BUG描述,有助于判断问题,请按如下步骤

1.说明操作的背景,使用了哪个模块什么功能?
使用了 授权服务和认证服务,eureka服务,admin模块,网关web服务
2.怎么输入或操作的得到了什么结果?
在admin服务上查看不到,授权服务和认证服务 的信息,网关web服务,可以查看
3.预期结果与实际有什么差异?
授权服务和认证服务 日志输入需要认证授权
截图
image
image

环境

操作系统、组件版本、数据库等
Windows10
Mysql 5.7
spring-boot 2.0.9.RELEASE
spirng-cloud Finchley.RELEASE
spring-boot-admin-starter-server 2.0.3

二维码已经过期~~

我们也在做类似的事情,想交流学习一下,方便更新一下交流群二维码不?

请求未携带token时, 走网关出现NPE

BUG描述

1.说明操作的背景,使用了哪个模块什么功能?

请求通过gateway代理,未携带token时, 网关处 com.springboot.cloud.auth.client.service.impl.AuthService#getJwtStringUtils.substring 返回了null, 造成后续的JwtHelper.decode()方法出现了空指针异常. 因为前面未对 authentication变量进行非空判断.

2.怎么输入或操作的得到了什么结果?

请求未携带token请求网关, 出现了空指针

3.预期结果与实际有什么差异?

预期情况应该是抛出请求未授权等业务相关的错误, 而非NPE等错误信息

截图

NPE

gateway.log

环境

win10
java8
MySQL8.0

搭建跑不起来 zipkin 是如何关联到每个server的 监控的链路的

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

监控中心问题

1、bus服务没有加入springboot-web依赖,admin无法获取健康信息
2、admin和authentication-server服务同时启动报错Access is denied

Could not autowire. There is more than one bean of 'Validator' type.

IDEA inspection report an error: "public class DefaultRedisRateLimiter extends RedisRateLimiter"

Could not autowire. There is more than one bean of 'Validator' type.
Beans:
defaultValidator   (ValidationAutoConfiguration.class)
webFluxValidator   (WebFluxConfigurationSupport.class)

authentication-server新增权限url需要重启服务才能生效

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

启动authentication-server时,首次访问organization报超时

BUG描述

启动authentication-server时,首次访问organization报超时,导致启动失败

Caused by: feign.RetryableException: Read timed out executing GET http://organization/resource/all

清晰的BUG描述,有助于判断问题,请按如下步骤

1.说明操作的背景,使用了哪个模块什么功能?
使用了authentication-server和organization
2.怎么输入或操作的得到了什么结果?
先启动organization,再启动authentication-server,organization的接口未被访问过,第一次访问时会超时,导致服务调用端报异常
3.预期结果与实际有什么差异?
希望不要报错,正常启动
截图

环境

操作系统、组件版本、数据库等

通过脚本导入sql后,出现中文乱码

BUG描述

以下3个sql的头部需要增加 SET NAMES utf8; 语句,避免通过脚本直接导入的时候数据出现中文乱码
gateway/gateway-admin/src/main/db/db.sql
sysadmin/db/db.sql
auth/db/db.sql

重现步骤

```bat
git clone -b dev https://github.com/zhoutaoo/SpringCloud.git c:\data\SpringCloud

:: sc_auth 数据库脚本
echo f | xcopy /q/s C:\data\SpringCloud\auth\db\db.sql c:\data\db\data\auth.sql

:: sc_gateway 数据库脚本
echo f | xcopy /q/s C:\data\SpringCloud\gateway\gateway-admin\src\main\db\db.sql c:\data\db\data\gateway_admin.sql

:: sc_admin 数据库脚本
echo f | xcopy /q/s C:\data\SpringCloud\sysadmin\db\db.sql c:\data\db\data\sysadmin.sql

:: 执行脚本
for /F %i in ('docker ps -q -f "name=mysql_app"') do (set CONTAINER_ID=%i)
docker exec -it %CONTAINER_ID% /bin/bash
mysql -uroot -p123456 mysql < /var/lib/mysql/auth.sql
mysql -uroot -p123456 mysql < /var/lib/mysql/gateway_admin.sql
mysql -uroot -p123456 mysql < /var/lib/mysql/sysadmin.sql
```

安全:服务间调用进行简单认证

内部服务间调用只验证是否有效,是否有权限调用 ,不验证权限范围

1.服务调用方携带token进行调用

2.服务提供方进行简单权限验证

[优化]Spring Security OAuth2中jwt token失效优化

jwt token为自存储,token生成后一直到过期才能失效。

场景:用户登陆后,手工退出,页面导入到登录页,前端清空token,但实际上这个token还是有效,可直接请求后台。

优化方案:

token生成后临时存储在redis, 若用户退出,则清空redis。网关层可做redis的校验,若没有key,则直接认为失效。

oauth2 授权码模式疑问

授权码模式,该系统如何记录登录状态。例如:使用github进行授权码登录,当重定向到github时,github是记录登录状态的。而我们的系统,浏览器只保存了token来记录登录状态

[用户]没有[角色]时, SQL会执行错误.

BUG描述

1.说明操作的背景,使用了哪个模块什么功能?

将默认的postgresql修改为mysql.

编写了一个子业务模块, 通过网关鉴权, 在解析JWT之后, 通过用户获取角色, 通过角色获取资源信息时, 如果用户角色为空, 将会@Select的SQL语句会执行出错. 因为后续的foreach没有执行.

2.怎么输入或操作的得到了什么结果?

用户没有角色信息时, 鉴权时出现SQL异常.

3.预期结果与实际有什么差异?

预期结果应该是做非空判断, 避免此异常.

截图

角色为空
异常堆栈信息

authentication.log

环境

win10
java8
MySQL

开源问题

请问博主,这个项目的所有业务模块都是开源免费的吗?还是说有的功能模块是需要付费才能看到

配置文件

${DATASOURCE_HOST:localhost}这种写法不是很明白,可以解释一下吗,启动sysadmin这个服务一直是数据库一直是localhost,没有读取配置文件env配置中心的配置

authentication-server中的WebServerSecurityConfig配置项不生效

BUG描述

authentication-server中的WebServerSecurityConfig配置项不生效,当访问/actuator端点时提示没有访问权限。

截图
WebServerSecurityConfig配置类,此配置不生效:
image

原因
由于ResourceServerConfig配置比WebServerSecurityConfig具有更高的优先级,所以它对HttpSecurity的配置会生效。本例中为ResourceServerConfig父类ResourceServerConfigurerAdapter的默认配置,如下所示:
image

feign调用返回值

feign调用返回Result对象,Result的泛型对象可以被序列化出来吗?

为什么获取不到Greenwich.RELEASE的依赖

org.springframework.cloud spring-cloud-dependencies Greenwich.RELEASE pom import

pom文件中提示:
Dependency 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.RELEASE' not found

动态添加路由失败

BUG描述
动态添加路由后,数据表中并没有新添加的路由
点击Refresh Routes Cache,显示如下错误
Fetching gateway routes failed.
Request failed with status code 500

截图
image

环境

操作系统、组件版本、数据库等

data 下面没有数据文件 例如 MySQL 等等

BUG描述

清晰的BUG描述,有助于判断问题,请按如下步骤

1.说明操作的背景,使用了哪个模块什么功能?

2.怎么输入或操作的得到了什么结果?

3.预期结果与实际有什么差异?

截图

环境

操作系统、组件版本、数据库等

token获取用户信息

认证授权时,获得token。那么调用 /user?uniqueId= 的接口,即使token所属的uniqueId不一致也可以获取。相当于用户与用户直接的信息可以相互看到

执行install.sh的过程中报错 ERROR: No such service: bud-server

BUG描述
执行install.sh的过程中报错 ERROR: No such service: bud-server

==================4.4.启动注册中心, 配置中心, 消息中心============
Creating sc-eureka ... done
Creating sc-config ... done
ERROR: No such service: bud-server
/opt/zhoutaoo/SpringCloud

elasticsearch:alpine无此镜像

BUG描述

清晰的BUG描述,有助于判断问题,请按如下步骤

1.说明操作的背景,使用了哪个模块什么功能?

2.怎么输入或操作的得到了什么结果?

3.预期结果与实际有什么差异?

截图

环境

操作系统、组件版本、数据库等

执行install.sh后,rabbitmq 没有监听5672端口, redis没有监听6379端口

BUG描述
执行install.sh后,rabbitmq 没有监听5672端口, redis没有监听6379端口

[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99cd4b5e0a5c cike/admin:latest "java -jar /app.jar" 5 minutes ago Up 5 minutes 0.0.0.0:8022->8022/tcp sc-monitor-admin
f91b6c2e961f cike/authorization-server:latest "java -jar /app.jar" 6 minutes ago Up 6 minutes 0.0.0.0:8000->8000/tcp sc-authorization-server
29a3059919b4 cike/authentication-server:latest "java -jar /app.jar" 6 minutes ago Up 5 minutes 0.0.0.0:8001->8001/tcp sc-authentication-server
ac5cc3f5ce1a cike/organization:latest "java -jar /app.jar" 14 minutes ago Up 14 minutes 0.0.0.0:8010->8010/tcp sc-organization
e7f6768f17a1 cike/gateway-admin:latest "java -jar /app.jar" 17 minutes ago Up 17 minutes 0.0.0.0:8445->8445/tcp sc-gateway-admin
9765bd7ee33d cike/gateway-web:latest "java -jar /app.jar" 17 minutes ago Up 17 minutes 0.0.0.0:8443->8443/tcp sc-gateway-web
5c88816c3d9a cike/config-server:latest "java -jar /app.jar" 41 minutes ago Up 41 minutes 0.0.0.0:8888->8888/tcp sc-config
2c48dd0c3153 cike/eureka-server:latest "java -jar /app.jar" 41 minutes ago Up 41 minutes 0.0.0.0:8761->8761/tcp sc-eureka
09ca6967771e rabbitmq:alpine "docker-entrypoint..." 43 minutes ago Restarting (1) 15 minutes ago sc-rabbitmq
992218c043b7 redis:alpine "docker-entrypoint..." 43 minutes ago Restarting (1) 15 minutes ago sc-redis
2fb7771cdee7 postgres:9.6-alpine "docker-entrypoint..." 43 minutes ago Up 43 minutes 0.0.0.0:5432->5432/tcp sc-postgres
[root@localhost ~]# netstat -anp | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1527/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1249/sshd
tcp 0 0 192.168.1.80:22 192.168.1.136:51008 ESTABLISHED 1780/sshd: root@pts
tcp 0 0 192.168.1.80:22 192.168.1.136:53205 ESTABLISHED 61067/sshd: root@pt
tcp6 0 0 :::8761 :::* LISTEN 66659/docker-proxy-
tcp6 0 0 ::1:25 :::* LISTEN 1527/master
tcp6 0 0 :::8443 :::* LISTEN 68727/docker-proxy-
tcp6 0 0 :::8445 :::* LISTEN 68826/docker-proxy-
tcp6 0 0 :::8000 :::* LISTEN 70320/docker-proxy-
tcp6 0 0 :::8001 :::* LISTEN 70800/docker-proxy-
tcp6 0 0 :::8010 :::* LISTEN 69439/docker-proxy-
tcp6 0 0 :::8022 :::* LISTEN 70566/docker-proxy-
tcp6 0 0 :::22 :::* LISTEN 1249/sshd
tcp6 0 0 :::8888 :::* LISTEN 66760/docker-proxy-
tcp6 0 0 :::5432 :::* LISTEN 63888/docker-proxy-
udp 0 0 0.0.0.0:68 0.0.0.0:* 1051/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 791/chronyd
udp6 0 0 ::1:323 :::* 791/chronyd
raw6 0 0 :::58 :::* 7 826/NetworkManager

操作系统、组件版本、数据库等

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.