这两周课设 想着后面的Java岗位 更倾向于Java大数据 故在网上找了个Java大数据的项目开始写
白天思考着写的 晚上写算法
先讲讲目前项目的架构
1.项目结构
1.1前端技术
1.2后端技术栈
1.3整体概述
1.4核心业务介绍
1.4.1业务结构预览
1.4.2业务结构预览
1.定时任务调度服务
XXL-JOB通过RestTemplate+多线程动态拉去股票接口数据,刷入数据库;
2.国内指数服务
3.板块指数服务
4.涨幅榜展示功能
5.涨停跌停数展示功能
6.成交量对比展示功能
7.个股涨停服务展示功能
8.个股详情展示功能
包含分时行情、日k线、周K线图等
9.个股描述服务;
10.报表导出服务
1.5后端开发环境
1.5.1开发工具
1.5.2数据库表结构
2.项目开发心得
因为我感觉这个项目都烂大街了 应该专门查项目的功能代码都有 故我在写我在开发这个项目的一些感受 想着以一个简历项目来写
如果将一个项目包装到简历之中 不可避免会出现以下问题
day01:
1.说一下你们项目的开发流程是怎样的?
第1阶段: 需求分析 : 如果是在学校就说由开发,测试,运维,一起头脑风暴想的 如果说借鉴网上的 面试官就会问你的和别人的改造在哪 出现什么需求变化 得可以应付过来
第2阶段: 设计: 产品经理设计ui产出ui界面设计 系统架构师产出系统概要设计或者系统架构设计 一般应届生直接说抄的借鉴 有前端能力的就跟他忽悠 但是对技术得有一定水平 不然直接说二开的就行
第3阶段: 编码 : 前端开发 后端 后端架构师一起产出接口文档说明书和数据库设计 就可以说和小组成员头脑风暴产出的
第4阶段: 测试 : 测试人员(学生就说是小组内的后端搞得 你会就说是你 不会就说是另一个后端同学)系统测试计划或测试用例设计
第5阶段: 上线运维 : 运维手册
2.你的项目组有哪些人员参与?人员配比是怎样的?
学生的话就说四个;产品经理1个,ui设计师兼前端兼运维1个,架构师兼后端开发师兼测试兼运维2个
3.简单介绍下今日指数项目?
今日指数是基于股票实时交易产生的数据分析产品,旨在为特定用户和机构提供定制化的股票数据分析和展示服务;
项目的核心功能以数据分析和展示为主,功能涵盖了A股大盘实时指数展示、涨幅榜、个股涨跌、个股秒级行情、实时日K线行情等;
4.简单介绍下股票、大盘、板块、A股、K线图相关概念?
股票:是股份证书的简称,是股份公司为筹集资金而发行给股东的一种有价证券,股东可凭此取得红利和买卖抵押,是资金市场中主要的信用工具之一;
股市的大盘:指数是由证券交易所经过一系列专业计算得出的一个反应股市行情健康状态的指数。国内A股公司的大盘指数有上海证券交易所(上交所)和深圳证券交易(深交所)所提供;总之,大盘指数整体反应了股市的行情信息;
板块:大盘指数反应了整体的市场行情,不能反应具体某个行业,而板块指数可以更加细粒度的反应具体某个行业股市的活跃程度;根据定义板块的方式主要分为:地域板块、行业板块、概念板块等;
A股:国内企业,国内证券交易所上市,且必须以人民币结算,且必须国内的组织、个人、机构购买;
K线图:K线图源于日本,早期主要用于米价涨跌情况统计,后来发展到股市金融领域;k线图又分为日K线、周K线、月K线等,信息主要包含股票的开盘、收盘、最高、最低等价格信息;
5.前段后分离有什么优势?项目中前后端开发中有哪些注意事项?
优势:1、彻底解放前端。 前端不再需要向后台提供模板或是后台在前端HTML中嵌入后台代。 2、提高工作效率,分工更加明确。
注意事项:浏览器跨域问题:只要请求的协议、端口、ip域名不一致,浏览器就拒绝访问对应的资源;浏览器的同源策略:访问安全问题;
6.有没有独立搭建过项目工程?
这个如实回答就行 没有就没有 有的话得就讲一下你的开发可能遇到的问题
day02:
1.项目中前后端分离存在哪些问题?是如何解决的?
问题 : 跨域、状态识别问题、接口格式统一问题、接口文档维护相关
解决:
cookie失效问题:我们可在后端生成一个sessionId,并将sessionId作为key,校验码作为value保存在redis下(redis代替session),之后借鉴cookie思路再将sessionId作为参数响应给前端;
Session过期失效问题:我们借助redis的过期失效机制来模拟Session过期失效的行为;
2.你们团队开发时接口文档如何维护?
swagger+yapi
3.说一下你开发某个业务接口时的流程?
1.需求分析,确定边界-》作用于哪些表表结构
2.分析业务,进行SQL落地;
3.分析:实现业务功能的sql方式很多,尽量选择最优解;
4.雪花算法如何保证分布式环境下ID的唯一性的?
4个因子;
时间回拨的问题;
一般不会遇到这样的问题 遇到了就背一下八股
day03:
1.使用读取百万级的Excel数据,且不发生OOM问题?
使用POI,一次性全量读---》OOM
EasyExcel读取--》基于事件机制逐行扫描数据--》逐行处理后,只要对象不被引用,可被jvm快速垃圾回收,避免OOM(内存溢出)
2.测试excel文件导入?
参考:easyExcel官网
3.lombok底层实现原理?
@Data @Slf4j等;
底层编译期间通过字节码技术动态为class字节码插入增强的相关代码(增强的时机:编译期);
day04:
1.你在项目中有没有遇到SQL性能问题,如何解决的?
以股票分时数据业务为例说明
1.前期数据量少,看不出效果
2.随着时间积累,数据量越来越大,则索引的优势显现;
TYPE:ALL 全表扫描---》在大量数据查询时,如果看到ALL要小心
导致索引失效的原因:函数在条件中处理导致索引失效
2.SQL如何事项行转化?xml存在大量特殊字符,如何处理?
case when cdata
day05 :
1.说一下你们项目中股票数据采集的流程?
个股:3000 List.partion(list,15).foreach(codes->{}) 串行访问接口,比较耗时(访问时长累加,导致比较耗时)
2.说下你们项目中哪些场景使用到了MQ,是如何使用的?
我们可在定时任务拉取股票数据时,将最新的数据信息通过mq同步到主业务工程进行缓存处理,这样就避免了多用户从数据库反复加载股票数据导致数据库负载过高的问题,同样也提高了大屏终端服务的吞吐量;
使用CaffineCache本地缓存而非redis远程缓存,能提供更高效的响应速度,同时避免了与redis之间交换带来的网络I/O成本开销;
3.本地缓存与远程缓存的区别?
缓存系统架构;本地缓存的数据存储在本地,而Redis缓存的数据存储在远程服务器上。 这意味着本地缓存的访问速度更快,但受限于本地资源。 而Redis缓存可以跨多个节点共享数据,实现分布式缓存。
day06:
1.项目中什么场景中使用到了多线程?直接使用多线程有哪些问题?
股票数据采集--》量大--》分片--》串行执行---》效率低,延迟高---》引入多线程(线程创建的方式)
问题:1.复用性问题,线程对象反复构建和销毁开销大 2.任务线程如果长时间占用物理资源,导致其它业务线程被挤压,导致任务大量挤压,知道tomcat资源
耗尽---》服务宕机
2.线程池有哪些核心参数?线程池初始化时默认线程数是核心线程数么?为什么?列举在各个阶段的表现?
7个参数
不是,线程池资源构建成本非常高,懒加载后提供构建线程池的效率;
3.线程池中任务的拒绝策略有哪些?你项目中当发生任务拒绝时,是怎么处理的?
抛出异常,终端程序
丢弃,不抛出异常
丢掉旧的任务
丢给委派线程(主线程)处理
自定义拒绝策略时如何确定是哪个任务被拒绝了?
4.线程池参数有什么设置原则?
业务场景--》股票数据采集---》i/o密集型:网络I/O和磁盘I/O---->2N+1-->线程上下文切换对程序执行效率影响不大(本身cpu率利用率不高)
cpu密集型:N+1---》并发线程数多了导致上下文切换开销过大;
5.股票数据采集的流程?
1.远程接口---》http客户端---》js格式数据正则解析--》封装---》入库
2.xxljob,股票数据采集的cron表达式
3.关于作者:
因为项目还未啃完 故跟新到这里 预计下个礼拜这个时候会更新完 3.16 11.18
如有更好的见解可以评论讨论 欢迎指正作者的错误
学识浅薄希望可以不吝赐教
想要这个项目 没找到这个项目的 可以私信我