项目提要。

后端分为数据爬取和数据处理两个大的模块,分别在两个不同的程序中运行,其中数据处理模块会与前端进行交互。数据处理模块采用Spring+SpringMVC架构,其中分为其中包含用户模块和投资组合模块。投资组合模块包括组合基本信息获取、组合变化趋势对比。用户模块在实现了用户注册、登陆等基本功能的前提下包括了组合收藏、组合自定义再组合、用户个人组合分析等功能。

前端主要基于react框架进行搭建,构成的页面有用户登陆注册页面,热门投资组合信息一览,热门投资组合对比(变化数据和变化曲线),用户收藏组合查询,用户自定义组合查询与分析等页面。

项目通过tomcat部署实现前后端分离。

设计思路:

(1). 数据库部署与安装

在阿里云服务器上部署巨杉数据库SequoiaDB 5.0.1后部署根据官方文档部署巨杉数据库的mysql和postgresql,同时部署sparksql并将SDB相关jar包导入spark目录下的jars文件夹中,部署成功后通过命令行成功进入spark、mysql界面。

成功在命令行界面创建表格插入数据后就可以开始使用代码来使用数据库了。

(2). 代码实现使用数据库

首先需要导入数据库的相关驱动和依赖,详情见源码pom.xml。利用JDBC成功利用代码连接至mysql、spark等数据库后将注册驱动获取连接、关闭连接等封装成工具包,供后续开发使用。(下图为spark数据库工具示例)

(3)数据库投资组合数据爬取。

使用spscheduler模块设置定时器实现对数据的定时爬取,进而保持数据库中数据的实时更新,具体更新方案为设置每隔10分钟爬取当前榜单数据以及大V的基本信息(如粉丝数量等),然后设置在每天00:10以及每天00:30定时爬取大V的新的一天的基金数据(基金信息是没隔一天变化一次);同时调用logging模块实时记录定时器的调用过程,方便查看系统错误;

(4)数据库ER图,其中投资组合相关信息存储在spark数据库中,用户相关信息存储在mysql实例中。

(5)后端设计思路介绍

数据库ER图中最重要的两个属性就是用户名和投资组合编码,前后端会通过这两个属性来实现其他相关数据的发送。因为会用到大量有关查询的语句,所以可以使用PreparedStatement进行预编译来提高程序运行速度。

投资组合数据存储在spark数据库中,主要会展示三个内容:第一个内容就是投资组合的基本信息,包括投资组合名,投资组合粉丝数量,成立以来年化率等数据,数据爬取时已进行预处理,所以可以直接从数据库查询转化成json转递到展示层;第二个内容就是投资组合之间的对比,用户可以自由选择多个组合进行对比,同时可以更加自由选择投资组合在某段指定的时间内的数据对比,包括每日市场净值变化曲线对比;第三个内容是夏普率、波动率等数据表格对比,其中夏普率和波动率等数据是根据用户指定的时间区间实时计算,可以将其计算公式利用策略设计模式多次使用,能够更加直观展现出数据在某段时间内的变化趋势。

用户数据包括用户信息和组合分析等内容,该部分数据主要存储在mysql实例中,spark可以通过SequoiaDB的多模能力通过集群或者连接至mysql数据库中获取用户信息,从而实现spark和mysql的联机业务处理。

(6)前端设计思路

整体页面基于React框架进行搭建,通过axios和react-router等路由组件于部署在Tomcat服务器上的后端模块进行交互。页面上通过antd等组件是实现相关选项和按钮的布局设计,用户可以通过有关选项来获取目标数据和进行选择操作,此外使用了echarts组件来进行数据的图像化,将多个组合图像化于同个坐标系当中进行更加直观的数据趋势对比。

(7)系统架构图

基于Sequoia DB巨杉数据库的投资组合评比器(设计思路)相关推荐

  1. ncbi查找目的基因序列_基于PrimerBank和NCBI数据库的引物查找与设计

    基于PrimerBank和NCBI数据库的引物查找与设计---生科三班xhs原创,请勿转载 一.引物数据库查找: 要设计一个mRNA的qPCR引物,首先应该先看看别人是否已经使用过,可以先在数据库Pr ...

  2. c语言六位抢答器课程设计,基于c语言单片机8位竞赛抢答器设计课程设计.docx

    基于c语言单片机8位竞赛抢答器设计课程设计 课程设计报告课程名称:单片机课程设计报告题目:8位竞赛抢答器的设计学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013 年12月25 ...

  3. 单片机包络检波c语言,基于AVR单片机的125kHz简易RFID阅读器设计.PDF

    基于AVR单片机的125kHz简易RFID阅读器设计 基于AVR单片机的125 敖 华1,陈渊睿1'2,骆祖国1,李婷1 510640) (1.华南理工大学电力学院,广东广州510640:2.华南理工 ...

  4. 基于Qt的仿酷狗音乐播放器设计(二)

    简述 在上一文"基于Qt的仿酷狗音乐播放器设计(一)"中,博主给出了仿酷狗界面的部分内容,在本文中将继续分析酷狗界面,并作出相应的分析. 下面我们来看一下酷狗界面中的左侧滑动页控制 ...

  5. bootstrap signin将邮件改成用户名_[源码和文档分享]基于VC++和Oracle数据库的邮件管理系统的设计与实现...

    摘 要 电子邮件的使用简易,投递迅速,收费低廉,易于保存,全球畅通无阻,使得电子邮件被广泛地应用,当前流行的各大邮件系统除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功 ...

  6. jsp登录密码加密_[源码和文档分享]基于JSP和MYSQL数据库的在线购物网站的设计与实现...

    1 系统概述 1.1 系统描述 IShopping购物网站是一个在线的百货商店,用户可以通过网络购买我们的商品,其基本功能包括用户的注册.登录,浏览所有商品,浏览分类商品,查看商品的详细信息,购买商品 ...

  7. 基于HTML5+JavaScript实现的网页录屏器设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/85773105 资源下载地址:https://download.csdn.net/downl ...

  8. 基于Qt的仿酷狗音乐播放器设计(一)

    简述 其实在很早以前博主就有想用Qt写一个比较好的音乐播放器的想法,但由于平时上课的压力和以前对设计模式和代码规范做的不太好,一直没有进行.所以在这个寒假准备好好的设计一下.下面先简单的说明一下设计的 ...

  9. 基于传统ECS和K8S的运维平台设计思路

    工作过的公司参考 流程: (1) 研发提交代码,在devops上打包,调用jenkins,在git上拉代码和k8s模板,会生成一个ECS 包和一个k8s 镜像,镜像仓库也是用的阿里云的. (2) 打包 ...

最新文章

  1. LeetCode简单题之数字转换为十六进制数
  2. Error: Cannot find module ‘express‘
  3. 自旋锁和互斥锁实例_自旋锁和互斥锁的实现以及使用区别
  4. NOIP2007 count 统计数字
  5. 在Asp.net MVC使用jqGrid--代码少点再少点
  6. Python机器学习:逻辑回归001什么是逻辑回归
  7. 宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git
  8. Spring Boot入门HelloWorld
  9. 数字PCR的数学原理及系统间相互比较
  10. 面试官问你为什么离开上一家公司该怎么回答?
  11. Spring Cloud(十二):Spring Cloud Zuul 限流详解(附源码)(转)
  12. 古代诗词哲理名句赏析
  13. 技术问答网站与论坛为什么半死不活
  14. OpenKruise :SidecarSet 助力 Mesh 容器热升级,TCP的三次握手、四次挥手
  15. 【游戏客户端开发】Unity3D 学习笔记2——了解U3D引擎的操作面板和各种工具
  16. java运行库未能修复,如何修复Microsoft Visual Studio错误:“程序包未正确加载”?...
  17. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP1补丁 32位 官方免费版(附安装教程)...
  18. HTML简介及基本结构
  19. 闲聊一下吧,发发牢骚,嘿嘿
  20. 用QRCode生成带有中间logo图的二维码

热门文章

  1. linux文件系统自动挂载点,Linux fstab自动挂载分区教程
  2. Codeforces Beta Round #14 (Div. 2) E. Camels
  3. 浅谈一下低频高频时阻抗匹配的重要知识
  4. idea运行报路径不存在
  5. 如何制作360度vr全景?制作360度全景效果图有哪些技巧?
  6. Python如何删除多余的空格与空行(有代码)
  7. 面试官经常问的性能测试面试题有哪些?该怎么回答?
  8. 巨准拓客CRM【工商财税】行业获客解决方案
  9. 浅谈MOSFET驱动电路
  10. 计算机组成原理实验:系统总线与系统接口