大盘板块功能实现
大盘板块功能实现
目标
- 能说出项⽬的基本概述;🍐🎤
- 能说出股票相关的核⼼概念; 🍐
- 股票、板块、⼤盘的概念;🍐
- 股票涨幅、涨跌、振幅、开盘、收盘、涨停| 跌停概念;🍐
- 能说出项⽬的技术架构;🍐🎤
- 能说出项⽬开发的基本流程;🍐🎤
- 🎯任务1:能够⼿动搭建开发环境
- 搭建后端开发环境;✏️
- 搭建前端环境;🚀
- 🎯任务2:能够完成⽤户登录功能 ❤️ ✏️
1. 今⽇指数项⽬概述
1.1 今日指数项目和核心概念介绍 🍐
今日指数项目和核心概念介绍
- 今⽇指数是基于股票实时交易产⽣的数据分析产品,旨在为特定⽤ 户和机构提供定制化的
股票数据分析和展示服务
; - 项⽬的核⼼功能以
数据分析和展示
为主,功能涵盖了A股⼤盘实时指数展示
、涨幅榜
、个股涨跌
、个股秒级⾏情
、实时⽇K线⾏情
等;

参考网站



今日头条实战项目资料(夸克云盘)点击这里下载实战资料
- 本次实战共计16个任务,共计3天完成,平均每天3-5个接口符合日常工作节奏
- 以组为单位进行管理,独自进行实战,完成财经类项目多一个类型项目
- 任务开展时,先理清思路,然后写注释,再写代码,最后测试成功后,提交git(记得写message)上班也是这么干的
- 有问题先思考,然后组内讨论,最后问老师养成独自思考的习惯,工作中也是这么干的
- 技术组长负责统计成员的进度和记录实战中出现的典型问题
1.2 股票相关名词解释 🍐
股票相关名词解释
1️⃣ 什么是股票?
股票是股份证书的简称,是股份公司为筹集资⾦⽽发⾏给股东的⼀种有价证券,股东可凭此取得红利和买卖抵押,是资⾦市场中主要的信⽤⼯具之⼀;
举例:我和朋友开公司,⼀⼈出10万块钱,那怎么证明公司⾥的20万⾥有我的10万呢?
最传统的办法就是发⾏股票,也就是盖章签字的纸质凭证。 每⼈出了10万,那我们就发⾏200股,这样每个⼈就分得100股, 股票就是证明你是公司股东且占有公司200股⾥⾯100股的⼀个凭证。
2️⃣ 股票的分类
A股-⼈⺠币普通股票
- 即
⼈⺠币普通股票
,是由中国境内
注册公司发⾏,在境内上市,以⼈⺠币
标明⾯值,供境内机构、组织或个⼈以⼈⺠币认购和交易的普通股股票; - 英⽂字⺟A没有特殊意义,只是⽤来区分⼈⺠币普通股票和⼈⺠币特种股票;
- 我们当前项⽬
重点关注A股
的数据信息;
如传智教育
- 即
B股-⼈⺠币特种股票
- 即公司在中国
⼤陆注册和上市
,但只能以外币认购
和交易; - 主要吸引外资;
如神奇B股900904, 9开头的股票是在沪市上市的B股,以900打头
- 即公司在中国
其他股
- H股:指国有企业在⾹港 (Hong Kong) 上市的股票;
- N股:指在中国⼤陆注册,但是在纽约(New York)上市的外资股;
- SCA股: 指核⼼业务在中国⼤陆,⽽企业的注册地在新加坡(其他国家和地区),但是在新加坡交易所上市的企业股票;

在A股市场上,股票每天交易的时间都是在交易日的上午9:30-11:30 ,下午13:00-15:00;
股票编码
- 每个上市公司的股票都⼀个唯⼀的编码 ,通过这个编码就可定义具体股票;
沪市A股
的代码是以600、601或603打头(6打头);深市A股
深市A股的代码是以000打头(0打头);- 其它:
创业板
股票代码以300打头,沪市B股
代码以900打头,深圳B股
代码以200打头等等;
开盘价
- ⼜称开市价 ,是证券交易所在每个交易⽇开市后的第⼀笔股票买卖成交的价格;
- 开盘价是在9点15分⾄9点25分买卖双⽅的竞价撮合产⽣(了解);
- 开盘价⼀般会参考前⼀个股票交易⽇收盘价;
收盘价
- ⼜称收市价 ,是指股票在每个交易⽇⾥
最后⼀笔买卖
成交价格; - 昨收:上⼀个交易⽇的收盘价格;
- ⼜称收市价 ,是指股票在每个交易⽇⾥
当前价
- 当前股票实时的
最新
成交价格;
- 当前股票实时的
涨跌值
涨跌值
=最新价格
-前收盘价格
;- 股票涨跌值主要⽤于反应股票的涨跌情况,单位是元(A股);
- ⼀般⽤
+
或-
号表示,正值为涨 ,负值为跌 ,否则为持平;
涨跌幅度(涨幅)
- 股票涨幅=(最新成交价-前收盘价)÷ 前收盘价×
100%
- 股票涨幅=(最新成交价-前收盘价)÷ 前收盘价×
涨停与跌停
- 股市涨跌停的机制与⽣活中电路
过载保护
思想⼀致,在股票市场中为了防⽌股价过分的暴涨暴跌,同时抑制过度投机
⾏为,证券交易所给股价的涨跌做了相关限制; - 在A股市场中,股价的涨跌幅度范围:
-10%~+10%;
- 股市涨跌停的机制与⽣活中电路
经过计算,从1万到1亿至少需要连续经过97个涨停板,才可以到达1亿。 - 打新-对于新上市股票第⼀天交易中股价涨幅不设限,第⼆天才会有限制(了解);
- 振幅
股票振幅
=(当⽇最⾼价-当⽇最低价)÷ 前收盘价×100%;- 股票振幅在⼀定程度上反应了股票的
活跃程度
;
- 成交量
- 成交量指当天成交的股票
总⼿数
(1⼿=100股);
- 成交量指当天成交的股票
- 成交⾦额
股票成交⾦额
是成交量和成交价格的累加
,由证券交易所计算得出;- 示例:投资者以每股10元的价格买⼊50⼿,那么此时成交⾦额为:10X50X100=5w
1️⃣ 个股K线图
- K线图源于 日本,早期主要⽤于 ⽶价涨跌 情况统计,后来发展到股市⾦融领域;
- k线图⼜分为
⽇K线
、周K线
、⽉K线
等,信息主要包含股票的开盘
、收盘
、最⾼
、最低
等价格信息; 点击查看K线口诀

2️⃣ K线图示例
以传智教育股票为例:

- 分时图:统计当天每分钟的交易数据(当前价格、均价、涨跌、涨幅、成交量和成交⾦额等)
- ⽇K线图:统计每天交易数据(最⾼、最低、开盘、收盘、涨跌、涨幅等)
- 周K线图:统计每周交易数据(最⾼、最低、开盘、收盘、涨跌、涨幅等)
- ⽉K线图:统计每⽉交易数据(最⾼、最低、开盘、收盘、涨跌、涨幅等)
1️⃣ 什么是⼤盘指数
股市的⼤盘指数是由证券交易所经过⼀系列专业计算得出的⼀个反应股市⾏情健康状态💓的指数。
国内A股公司的⼤盘指数有上海证券交易所(上交所)和深圳证券交易(深交所)所提供;
总之,⼤盘指数整体反应了股市的⾏情信息;

国外⼤盘信息

⼤盘指数参数与股票类似,也有开盘点、收盘点、当前点、涨跌、涨幅、振幅等信息;
2️⃣ 什么是板块指数
⼤盘指数反应了
整体
的市场⾏情,不能反应具体某个⾏业
,⽽板块指数
可以更加细粒度
的反应具体某个⾏业股市的活跃程度
;根据定义板块的⽅式主要分为:
地域板块
、⾏业板块
、概念板块
等;



总结
- 什么是股票?
- 证明股东持有公司股份的有价证券; 说⽩了正证明投资⼈投资的⼀种凭证;
- 什么是A股?
- 国内企业,国内证券交易所上市,且必须以⼈⺠币结算,且必须国内的组织、个⼈、机构购买;
- 股票核⼼参数?
- 开盘价、收盘价、涨跌值、涨幅、振幅、涨停|跌停、成交量、成交⾦额等;
- K线图核⼼参数及分类?
- 参数:开盘、收盘、最⾼、最低等;
- 分类:⽇k线图、周k线图、⽉K图等;
- ⼤盘指数和板块概念
- 上证指数
- 深证指数
- 湖南板块,华为概念股,消费电子行业
1.3 项目架构介绍 ✏️ ❤️
项目架构介绍
2. 软件开发流程介绍 ✏️ 🍐
软件开发流程介绍
前言
作为 ⼀名软件开发⼯程师
👨,我们有必要了解软件开发
的基本流程
, 以及软件开发过程中涉及到的岗位⻆⾊
,⻆⾊的分⼯
、职责
, 并了解软件开发中涉及到的常⽤三种软件环境
。
本⼩节我们将从 软件开发流程
、⻆⾊分⼯
、软件环境
三个⽅⾯,来整体上介绍⼀下软件开发的核⼼流程。

1️⃣ 第1阶段: 需求分析

需求来⾃:甲⽅、公司⾃研产品(市场)
2️⃣ 第2阶段: 设计

3️⃣ 第3阶段: 编码
在编码阶段,项⽬经理主要负责把控软件开发的整体进度,其它相关⼈员各司其职:
- 开发⼈员
- 前端:负责前端代码的编写;
- 后端:负责后端代码的编写;
- 测试⼈员
- 根据需求提前编写好测试⽤例和测试测试计划;
- 运维⼈员
- 提前准备好⼀些运维相关的⼿册资料;
4️⃣ 第4阶段: 测试
在该阶段中主要由测试⼈员, 对部署在测试环境的项⽬进⾏功能测试,并出具测试报告。
5️⃣ 第5阶段: 上线运维
在项⽬上线之前会由运维⼈员准备服务器上的软件部署环境(包括各种关键的安装和环境配置),然后再将我们开发好的项⽬部署在服务器上运⾏。
作为软件开发⼯程师,我们主要的任务是在编码阶段, 但是在⼀些⼩企业中, 我们也可能会涉及到前端开发、软件测试、发布运维等⽅⾯的⼯作;
学习了软件开发的流程之后, 我们还需要了解⼀下在整个软件开发过程中涉及到的哪些岗位⻆⾊,以及各个⻆⾊的职责分⼯。

实际情况中开发团队的⼈员会随着市场⾏情、业务调整、项⽬所处阶段等因素⽽发⽣变化,并不能⼀概⽽论;
软件开发中为了避免开发、测试和运维⼈员彼此在协作过程中产⽣不必要的⼲扰,⼀般会使⽤不同的环境加以隔离: 开发环境、测试环境、⽣产环境
开发环境---------------------------------------测试环境 ---------------------------------生产环境

1️⃣ 开发环境
我们作为软件开发⼈员,在开发阶段使⽤的环境
,就是开发环境,⼀般外部⽤户⽆法访问 。
⽐如,我们在开发中使⽤的MySQL数据库和其他的⼀些常⽤软件,我们可以安装在本地, 也可以安装在⼀台专⻔的服务器中, 这些应⽤软件仅仅在软件开发过程中使⽤, 项⽬测试、上线时,我们不会使⽤这套环境了,这个环境就是开发环境。
2️⃣ 测试环境
当软件开发⼯程师,将项⽬的功能模块开发完毕
,并且单元测试
通过后,就需要将项⽬部署到测试服务器
上,让测试⼈员
对项⽬进⾏测试
。那这台测试服务器就是专⻔给测试⼈员使⽤的环境, 也就是测试环境,⽤于项⽬测试,⼀般外部⽤户⽆法访问 。
3️⃣ ⽣产环境
当项⽬开发完毕
,并且由测试⼈员测试通过
之后,就可以上线项⽬,将项⽬部署到线上环境
,并正式对外提供服务 ,这个线上环境也称之为⽣产环境
。
拓展知识 👈
灰度发布:⼀些互联公司在软件升级发布新功能时,并不会⼀次性全量升级,⽽是先把部分流量导⼊新功能,运⾏⼀段时间未定后,再逐批次全量升级;
3. 今日指数工程搭建 ✏️ 🍐
今日指数工程搭建
工程搭建步骤
- 了解项目表结构
- 搭建数据库,导入数据库sql脚本
- 搭建Java后台程序,并且测试运行
- 运行前端开发好的前端程序
3.1 表结构介绍
- ⼤盘和板块相关表

- 个股相关表

- 权限相关表

- ⽇志表

注意事项:
- 表与表之间的关系尽量通过业务逻辑 维护,⽽不是通过使⽤数据库外键约束,原因如下:
- 性能问题:外键约束会使约束的表之间做级联检查,导致数据库性能降低;
- 并发问题:外键约束的表在事务中需要获取级联表的锁,才能进⾏写操作,这更容易造成死锁问题;
- 扩展性问题:数据分库分表时,加⼤了拆分的难度;
- 节选阿里巴巴开发规范中关于外键的说明
3.2 数据库环境搭建
1. 数据库脚本:
2. sql导入流程:
3.3 后端工程搭建
后端工程结构图:

1️⃣ 构建⽗⼯程
基于maven构建stock_parent ⽗⼯程:
点击下载pom.xml文件 ⬇️👈
注意:
- ⽗⼯程会聚合各个⼦⼯程,打包⽅式为pom
- 通过dependencyManagement、pluginManagement锁定开发中的依赖和插件的版本;
2️⃣ 构建common⼯程
stock_common公共⼯程
是对stock_backend主业务⼯程
和stock_job任务⼯程
共性代码的抽取,包括pojo
、mapper
、utils
、constant
等共享资源;
创建stock_common公共⼯程
点击查看创建图解 👈
在⼯程
stock_common
下pom中引⼊公共依赖资源:点击下载pom.xml文件⬇️ 👈
借助IDEA插件mybatisx逆向⽣成mybatis代码自动生成代码:
3️⃣ 构建stock_backend主业务⼯程
在
stock_parent⼯程
下构建⼦⼯程stock_backend
,整个过程与stock_common⼯程
⼀致;
引⼊依赖 stock_backend⼯程被stock_parent⽗⼯程聚合,pom配置如下:
点击下载pom.xml文件⬇️ 👈
配置yml
# 定义端口号
server:
port: 8091
# 配置数据源
spring:
datasource:
druid:
username: root
password: 1234
url: jdbc:mysql://localhost:3306/stock_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.jdbc.Driver
# 初始化时建立物理连接的个数。初始化发生在显示调用 init 方法,或者第一次 getConnection 时
initialSize: 6
# 最小连接池数量
minIdle: 2
# 最大连接池数量
maxActive: 20
# 获取连接时最大等待时间,单位毫秒。配置了 maxWait 之后,缺省启用公平锁,
# 并发效率会有所下降,如果需要可以通过配置 useUnfairLock 属性为 true 使用非公平锁。
maxWait: 60000
profiles:
active: stock # 激活|加载其它配置资源
# 配置mybatis
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印运行的sql
type-aliases-package: com.itheima.stock.pojo.entity # 批量给指定包下的实体类取别名,方便xml使用,默认是类名,首字母小写
mapper-locations: classpath:mapper/*.xml # 加载类路径下的mapper下的所有xml文件
# 设置分页
pagehelper:
helper-dialect: mysql #指定分页数据库类型(方言)
reasonable: true #合理查询超过最大页,则查询最后一页
- 定义main启动类
@SpringBootApplication
@MapperScan("com.itheima.stock.mapper")
public class StockApp {
public static void main(String[] args) {
SpringApplication.run(StockApp.class,args);
}
}
yml和main启动类也可通过IDEA插件JBLSpringBootAppGen插件⽣成,然后再完善yml配置;点击查看安装图解
4️⃣ 后端⼯程可⽤性测试
目的:我们通过⼀个简单的web接⼝访问数据库,验证⼯程搭建是否可⽤;
测试接⼝功能说明:
- 功能要求:根据⽤户名称等值查询⽤户信息;
- ⼊参:userName
- 出参:SysUser实体对象
- 接⼝url: /api/user/
- 测试结果:
测试结果
参考答案点击这里查看(需要密码)👈不要轻易点击哦
3.4 前端工程运行
注意: 本工程的node版本是v14的,如果你想灵活的切换node版本,点击这里查看教程
- 从飞秋下载前端工程
stock_front_admin.zip
到本机非中文目录
,解压;

- 在前端工程路径下,cmd->黑窗口,执行
npm run dev
指令,稍等片刻即可运行 - 访问黑窗口中提示的路径,如下图:
至此,前端工程运行完毕!

设置淘宝镜像:改变默认下载地址,npm config set registry https://registry.npm.taobao.org
- 前端与后端使⽤json格式进⾏交互;
- 后端响应数据封装到统⼀类中,语法格式统⼀;
{ code: 1 //状态码 msg: "" //提示信息 data: //任意响应数据 }

4. 用户登录功能 ✏️ ❤️
用户登录功能


- 接口功能:
登录
- 请求接⼝:
/api/login
- 请求⽅式:
POST
- 请求数据示例:
{ "username":"zhangsan",//⽤户名,必填 "password":"666",//密码,必填 "code":"1234" //校验码,必填 }
- 响应数据示例:
{ "code": 1,//成功1 失败0 "data": { //data为响应的具体数据,不同的接⼝,data数据格式可能会不同 "id":"1237365636208922624", "username":"zhangsan", "nickName":"xiaozhang", "phone":"1886702304" } }
代码操作
- 封装请求和响应vo com.itheima.stock.vo ├── req # 请求数据封装类 └── resp # 响应数据封装类
vo对象直接在:day01\资料\vo导⼊即可
- 配置密码加密匹配器
- 引⼊依赖资源:
<!--密码加密和校验⼯具包--> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> </dependency>
- 配置密码加密匹配bean:
@Configuration public class CommonConfig { /** * 定义密码加密匹配器bean * @return */ @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } }
回顾下之前的登录逻辑,尝试绘制流程图,然后开始写接口把!
参考答案点击这里查看(需要密码)👈不要轻易点击哦
今日的面试点:
- 说一下你们项目的开发流程是怎样的?🎤
- 你的项目组有哪些人员参与?人员配比是怎样的?🎤
- 简单介绍下今日指数项目?🎤
- 简单介绍下股票、大盘、板块、A股、K线图相关概念?🎤
- 前段后分离有什么优势?项目中前后端开发中有哪些注意事项?🎤
- 有没有独立搭建过项目工程?🎤