# 动力电池数据分析系统
## 亮点
- 100%容器化 ,一键打包项目
- RESTful 设计风格,前后端分离
- 基于 Echarts.js,支持 2D 和 3D 及动态可视化
- 基于 Celery,异步创建计算任务
- 基于 PyTorch,支持创建深度学习训练,并可实时画出训练过程
- 内置一个强大的 Markdown 编辑器,能够插入数学公式和图片,并支持导出为 PDF
- 多用户管理,以及访问控制
## 部分功能演示
### 查询历史数据及三维可视化
![查询历史数据及三维可视化](./doc/imgs/查询历史数据及三维可视化.gif)
### 创建神经网络训练任务
![创建神经网络训练任务](./doc/imgs/创建神经网络训练任务.gif)
## 项目结构
```
.
├── conf # 放置配置文件
├── docker # dockerfile
├── frontend # 前端
├── go # Go 程序
│ ├── app # 按功能划分模块
│ │ └── web # web
│ ├── cmd # 编译入口
│ └── pkg # 一些公用包
│ ├── checker # 检查用户传来的参数
│ ├── conf # 配置相关
│ ├── conv # 类型转换
│ ├── db # 数据库初始化
│ ├── jd # json 响应相关封装
│ ├── jtime # json 序列化时间时能返回指定格式
│ ├── mysqlx # 增强原生 Mysql 查询功能
│ ├── producer # 调用 Celery
│ └── security # 安全相关
├── py # Python 程序
│ └── celery # 异步执行 Python 代码
└── script # 脚本文件
```
## 前置需求
### Docker
CentOS7 下安装:
```bash
# 1、安装工具
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 2、添加仓库
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 国外使用 https://download.docker.com/linux/centos/docker-ce.repo
# 3、安装
$ sudo yum install docker-ce docker-ce-cli containerd.io
```
### docker-compose
安装:
```bash
$ pip3 install -U docker-compose
```
### 安装后配置
Docker 需要用户具有 root 权限(当前 rootless 特性处于实验阶段),为了避免每次命令都输入 `sudo`,可以把用户加入 Docker 用户组([官方文档](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user)),步骤如下:
1、创建 docker 组:
```bash
$ sudo groupadd docker
```
2、把当前用户加入 docker 组:
```bash
$ sudo usermod -aG docker $USER
```
3、检查是否加入成功:
```bash
$ groups $USER
```
4、注销并重新登录当前用户
### 启动 docker
Docker 是服务器-客户端架构。命令行运行 `docker` 命令的时候,需要本机有 Docker 服务。使用如下命令运行:
```bash
$ sudo systemctl start docker
```
## 启动项目
### 创建配置文件
在 *conf* 文件夹中根据配置模板创建配置文件,文件名中 example,替换为 release 和 debug。
### 开发环境
1、初始化项目(会生成 *.env* 文件供 docker-compose 使用。docker 数据库文件映射默认在当前项目的 *database* 文件夹下):
```bash
$ ./init-project.sh
```
2、启动数据库和 Nginx:
```bash
$ ./script/run-debug.sh
```
3、在 goland 中配置 run template,只需指定好环境变量 `CONF_FILE`,代表 debug 配置文件路径。然后运行。
4、在 Pycharm 中配置 run template,选择要执行的 py 模块 celery,输入运行参数 `-A task worker --concurrency=3`,最后指定好环境变量 `CONF_FILE`。然后运行。
5、安装前端依赖:
```bash
$ cd frontend
$ npm install
```
6、启动前端:
```bash
$ npm run serve
```
7、访问 `127.0.0.1:8081`
### 生产环境
1、`./script/pack-project.sh` 打包项目
2、`scp` 到服务器
3、执行 `./script/init-project.sh`,初始化相关配置
4、执行 `./script/run-release.sh` 启动项目
## 数据库管理
### 管理 Mongo
使用 robo3t 软件。
### 管理 Redis
浏览器访问 `<ip>:8079` 端口
## 设计规范及注意点
仅供自己参考。
### 数据库
- 表名一律使用单数
- MySQL,MongoDB 表名使用下划线分割
- Redis key 以业务名(或数据库名)为前缀(防止 key 冲突),用冒号分隔,比如业务名:表名:id
- MySQL,Redis,MongoDB key 名使用小驼峰法命名
- MongoDB 中 key 可以用中文,但最好是英文
- MySQL 中字段不允许为 null,有一些坑,比如查询 `id != 1` 时,null 值不会被匹配,因为 null 与其他值都不相等。要匹配到,要用 `id != 1 or id is null`
- 接上条,用 or 时,MySQL 可能不走索引,所以尽量用 union
- Go 用 go-mongo-driver 库,`bson.D`(底层是结构体数组,`json.Marshal()` 结果不如期望)和 `bson.M`(底层是 `map`,`json.Marshal()` 结果如期望)都可以代表一个 Document。推荐:传入条件时,用类型 `bson.D`(应该效率更高);把查询的数据映射出来的时候,用类型 `bson.M`
- MongoDB 做分页,数据量大时用 `Skip()` 会很慢,因为是一条条数过来的
- go-mongo-driver 库的 `CountDocuments(ctx, filter)` 方法, 用于计算 collection 的文档数量,但它并不像想象中的那么快(可以说有点慢),因为传了 `filter`,要扫描 b-tree
### 前端
- URI 格式规范:1)URI中尽量使用连字符”-“代替下划线”_”的使用。2)URI中统一使用小写字母。3)用复数名词。一个资源URI可以这样定义:`https://www.example.com/api/v1/posts/{postId}/comments/{commentId}?过滤条件`
- 上一条的 URI 中的过滤条件采用小驼峰法命名
- 前端对后端返回的 JSON 字段的顺序一律假设是无序的
- 提交和返回的 JSON 使用小驼峰法命名
### 后端
- 数据库表不由某个 ORM 创建,而是手工创建,统一管理
- 字典的 key 都假设是无序的(即使在 Python 中是有序的)
- 字段前后端都要校验
- 某些不确定情况,直接返回 500。因为 gin panic recover 后会返回 500
- 后端字段合法性校验不依赖于 gin 的 ShouldBindxxx,出于逻辑和方便测试 service 上考虑
- service 中的 xxxService 结构体用于接收用户发送的数据;而 model 中结构体一般是返回给用户的数据格式
### 时区
- Python 中的时间类型 `datetime.datetime` 是**本地时区**的,时间字符串使用 `datetime.datetime.strptime` 解析,直接转换成本地时间
- Go 中的时间类型 `time.Time` 也是**本地时区**,Go 中把本地时区的时间字符串解析成 `time.Time` 类型时,要用 `time.ParseInLocation` 而不是 `time.Parse`
- MySQL 中时间类型一律使用 `datatime`,它是**无时区**的,如果可以,最好保存 UTC 时间
- Python 的 PyMySQL 库插入或读取 `datetime.datetime` 类型时,不会做任何转换
- Go 的 go-sql-driver/mysql 库插入或读取 `time.Time` 类型时,也不会做任何转换
- MongoDB 时间类型用 `ISODate`,本质是 Unix 时间戳,在 Robo3T 软件中默认显示为 UTC 时区格式(可以调为本地时区)
- (**注意**)Python 的 PyMongo 库和 Go 的 go-mongo-driver 库在**默认配置**下对 MongoDB 的 `ISODate` 的处理方式有很大不同,不注意会造成时区的误差,见下
- Python 的 `datatime.datatime` 插入 MongoDB 时,会直接把插入的时间当成 UTC 时间,这时就会有 8 个小时的误差,所以插入当前时间要用 `datetime.datetime.utcnow()`,插入已有时间时要用 `t - datetime.timedelta(hours=8)`;读取时会�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Vue+Go+python实现的动力电池数据分析系统+源码+项目文档+运行教程+界面展示,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 100%容器化 ,一键打包项目 RESTful 设计风格,前后端分离 基于 Echarts.js,支持 2D 和 3D 及动态可视化 基于 Celery,异步创建计算任务 基于 PyTorch,支持创建深度学习训练,并可实时画出训练过程 内置一个强大的 Markdown 编辑器,能够插入数学公式和图片,并支持导出为 PDF 多用户管理,以及访问控制 部分功能演示 查询历史数据及三维可视化 创建神经网络训练任务
资源推荐
资源详情
资源评论
收起资源包目录
基于Vue+Go+python实现的动力电池数据分析系统+源码+项目文档+数据库+界面展示(毕业设计&课程设计&项目开发) (145个子文件)
nginx.example.conf 3KB
main.css 772B
Dockerfile 313B
Dockerfile 289B
创建神经网络训练任务.gif 13.71MB
查询历史数据及三维可视化.gif 6.62MB
.gitignore 195B
impl.go 10KB
dl_task.go 4KB
mining_task.go 3KB
user.go 2KB
jtime.go 2KB
route.go 2KB
password.go 2KB
mysqlx.go 2KB
impl.go 2KB
auth.go 2KB
dl_task.go 2KB
dl_task.go 2KB
conf.go 1KB
user.go 1KB
auth.go 1KB
router_test.go 1KB
battery.go 1KB
rand.go 1KB
service.go 1KB
ws_helper.go 1KB
battery.go 1KB
redis.go 960B
mining_task.go 951B
dl_task.go 821B
base_task.go 804B
checker_test.go 797B
permission.go 767B
file.go 669B
mining_task.go 658B
gorm.go 643B
service.go 641B
user_test.go 635B
celery.go 605B
user.go 594B
conv.go 594B
password_test.go 575B
sys_info.go 573B
server.go 565B
mining_task.go 551B
mongo.go 468B
celery.go 446B
sys_info.go 437B
self.go 412B
sys_info_test_.go 408B
session.go 404B
redis.go 387B
cache.go 379B
dal.go 375B
conf.go 375B
checker.go 365B
jtime_test.go 364B
response.go 360B
task.go 332B
rand_test.go 328B
celery.go 325B
mongo.go 324B
api.go 320B
impl.go 316B
user.go 292B
conv_test.go 286B
battery.go 285B
sys_info.go 274B
dl_task.go 227B
service.go 222B
helper.go 216B
sys_info.go 189B
handle_error.go 180B
service.go 175B
websocket.go 132B
main.go 130B
file.go 101B
code.go 56B
404.html 2KB
index.html 557B
favicon.ico 48KB
login-bg.jpg 683KB
null.jpg 1KB
elementui.js 4KB
store.js 3KB
router.js 2KB
globals.js 2KB
vue.config.js 932B
main.js 805B
vcharts.js 637B
axios.js 77B
babel.config.js 53B
package-lock.json 434KB
package.json 1KB
LICENSE 11KB
README.md 9KB
README.md 387B
go.mod 935B
deeplearning.py 6KB
共 145 条
- 1
- 2
资源评论
梦回阑珊
- 粉丝: 4792
- 资源: 1641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功