MapFlow

PUBLIC LEARNING ROADMAP

SSM + MySQL 大数据量生物数据库后端开发(查询/筛选/图表/导出) 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

31 个知识节点 · intermediate

发布者:gfaihfay

知识目录

基础概念

Java 语言基础

后端几乎零基础,必须先具备读写 Java/集合/泛型/异常的能力,才能看懂并修改 SSM 模板与编写 Service/Mapper。

建议预留 120 分钟

学习目标

  • 掌握面向对象、集合、泛型、异常与常用 JDK 类的使用

关键概念

  • 面向对象
  • 集合框架
  • 泛型
  • 异常处理

为什么学习

  • 目标是能读懂模板代码并按既有风格新增方法,需达到可独立编写常见语法与集合操作的水平。

如何检验理解

  • 能读懂模板中的类定义并新增一个带参数与返回值的 Service 方法

基础概念

MySQL 与 SQL/事务基础

大规模数据表一切操作的落点,需掌握 CRUD、表字段含义、索引概念与事务 ACID,才能理解基因/变异数据的存储方式。

建议预留 120 分钟

学习目标

  • 掌握 SQL CRUD、表设计、事务 ACID 与基础索引概念

关键概念

  • SQL CRUD
  • 事务ACID
  • 索引
  • 多表关系

为什么学习

  • 是索引优化、聚合统计与复杂查询的共同地基,需熟练书写正确高效的 SQL 并对表结构有准确理解。

如何检验理解

  • 能对目标大表写出一条带 WHERE/GROUP BY/ORDER BY 的正确查询并解释执行结果

基础概念

HTTP 协议与 JSON 基础

虽然前面前端有基础,但需从后端视角理解请求生命周期、REST 语义与 JSON 序列化,才能正确编写接收前端参数并回写的接口。

建议预留 90 分钟

学习目标

  • 掌握 HTTP 请求方法、状态码、会话与 JSON 数据格式

关键概念

  • HTTP方法
  • 状态码
  • JSON
  • 请求参数

为什么学习

  • 查询/筛选接口是前端发请求后端交付 JSON 的通道,需理解请求/响应结构与 JSON 格式约束。

如何检验理解

  • 能解释一次前端 Ajax 的 GET/POST 请求在后端如何映射与如何返回 JSON

补充知识

Git 版本控制入门

nice-to-have 项,用于在模板项目上分支开发与协作,保住可回退的实验性改动。

建议预留 45 分钟

学习目标

  • 掌握 git clone/commit/branch/merge 基本操作

关键概念

  • 版本库
  • 分支
  • 提交

为什么学习

  • 技能目标仅要求入门级了解,能在项目上完成提交与切换即可,不投入深度训练。

如何检验理解

  • 能克隆仓库、提交修改并切换分支后继续编码

补充知识

Maven 依赖与构建管理

目标需引入图表与导出相关依赖(如 POI/CSV),需理解 pom.xml 坐标、依赖作用域与生命周期以正确加入并打包。

建议预留 60 分钟

学习目标

  • 理解 pom 坐标、依赖作用域并会新增依赖与打包

关键概念

  • pom.xml
  • 依赖坐标
  • 生命周期
  • 本地仓库

为什么学习

  • 技能地图将该能力定为入门推荐,但引入新依赖与打包在各功能落地时必然碰到,需会完成基础操作。

如何检验理解

  • 能在 pom.xml 中引入一个新库并在编译打包时正确解析依赖

核心技能

Spring IoC 注入容器与 Bean 管理

模板中的 Controller/Service/Mapper 都由容器装配,需理解 Bean 定义与 ApplicationContext 才能定位和扩展新 Bean。

建议预留 120 分钟

学习目标

  • 理解 IoC 思想、Bean 生命周期与 ApplicationContext 的角色

关键概念

  • 控制反转
  • Bean
  • ApplicationContext
  • 工厂

为什么学习

  • 该节点是容器认知的根,指向模板装配链路与后续注解扫描,需理解其机制而非仅背诵用法。

如何检验理解

  • 能在配置文件中识别出一个 Bean 的声明方式并说出其作用

补充知识

生物信息数据模型与典型查询模式

理解基因/序列/变异表的字段业务含义与常用筛选维度,让后续动态 SQL、图表聚合与展示符合领域语义。

建议预留 90 分钟

学习目标

  • 识别生物大表关键字段与典型筛选维度

关键概念

  • 基因
  • 变异
  • 序列注释
  • 位置范围筛选

为什么学习

  • 领域知识定位为入门推荐,识别表关键字段与宿主查询习惯足够支撑 SQL 与展示逻辑编写。

如何检验理解

  • 能说明目标表中基因位置/变异类型等字段的含义并据此构思一个筛选条件

核心技能

MyBatis 核心配置与 SqlSession

理解 mapper 接口/XML、#{} 占位符与 SqlSessionFactory,是写任何数据访问语句的基本入口。

建议预留 90 分钟

学习目标

  • 理解 SqlSessionFactory、mapper XML 与占位符机制

关键概念

  • Mapper
  • #{}与${}
  • SqlSessionFactory
  • 参数映射

为什么学习

  • 数据层被反复使用,需理解 mapper 到 SQL 的执行链路以支撑后续动态 SQL 与结果映射。

如何检验理解

  • 能解释 #{} 与 ${} 差别并新增一个基础查询 mapper 方法

核心技能

MySQL 索引设计与 Explain 执行计划优化

面对 60GB 级表,此项是专家核心能力:设计复合索引、利用 Explain 判断是否走索引、避免全表扫描与回表,是查询高效的生命线。

建议预留 120 分钟

学习目标

  • 掌握索引类型与覆盖索引,能读懂 Explain 各列含义并诊断慢查询

关键概念

  • B+树索引
  • 覆盖索引
  • Explain执行计划
  • 避免全表扫描

为什么学习

  • 性能目标是明示的『专家』水准,须会针对筛选/排序/聚合列设计覆盖索引并通过真实执行计划验证,直接影响系统成败。

如何检验理解

  • 能为目标大表建立复合索引,并用 Explain 解释某条查询为何 type=range/ref 且不需 filesort

核心技能

Spring 依赖注入 DI 注解

@Autowired/@Component 等将组件解耦,扩展模板时通过注解注入 Service/Mapper Bean,是写新接口的高频动作。

建议预留 60 分钟

学习目标

  • 会使用 @Autowired/@Service/@Repository 构建组件并实现依赖注入

关键概念

  • @Autowired
  • @Component系列
  • 注解扫描

为什么学习

  • 新增查询/导出功能都要装配 Mapper 与 Service,需熟练以注解完成注入并处理常见的注入失败。

如何检验理解

  • 能新增一个类并用注解注入一个 Mapper 后成功启用

核心技能

SpringMVC 请求映射与参数绑定

把前端传来的筛选参数(如基因位置范围、类型多选)绑定到 Controller 方法,是新查询/筛选接口的第一步。

建议预留 90 分钟

学习目标

  • 掌握 @RequestMapping 路由及 @RequestParam/@RequestBody 参数接收

关键概念

  • @Controller
  • @RequestMapping
  • @RequestParam
  • 路径变量

为什么学习

  • 查询/筛选/导出接口都以 HTTP 映射为起点,需掌握路径变量、@RequestParam 与对象参数绑定。

如何检验理解

  • 能编写一个接收多个筛选参数并返回数据的 Controller 端点

核心技能

MyBatis 动态 SQL 灵活组装筛选

多维度可选筛选条件必须动态拼 SQL(if/where/foreach),这是『复杂条件筛选与后端传参』能力的落点,须能灵活变化组合且不注入。

建议预留 90 分钟

学习目标

  • 掌握 if/where/foreach/set 标签按需拼 SQL 并注意参数安全

关键概念

  • <if>
  • <where>
  • <foreach>
  • 动态条件拼接

为什么学习

  • 目标需熟练面向任意参数组合组装查询且保证用索引,这是筛选接口最核心的可变逻辑,需独立构建维护。

如何检验理解

  • 能维护一段 mapper 动态 SQL,使任意组合的筛选条件都能正确执行且使用 #{} 防止注入

核心技能

SQL 大批量统计聚合

图表与分布统计需对海量记录 GROUP BY + 聚合 + 排序,理解其在与索引配合下的执行策略,避免内存排序与全表聚合拖垮性能。

建议预留 120 分钟

学习目标

  • 掌握 GROUP BY、聚合函数、HAVING 与排序在大表上的执行与索引搭配

关键概念

  • GROUP BY
  • 聚合函数
  • HAVING
  • 索引与聚合

为什么学习

  • 绘图数据是若干聚合桶(直方/散点分布),且要求在大数据上高效执行,涉及 group 维度与索引的配合设计。

如何检验理解

  • 能写出一条按基因位置分桶的 GROUP BY 聚合,并通过 Explain 说明其没有造成不可接受的临时表/full scan

核心技能

三层架构与分层设计

Controller/Service/Mapper 分层是模块化与模板扩展的骨架,正确分层才能让查询服务、筛选服务、图表统计与导出各司其职可复用。

建议预留 60 分钟

学习目标

  • 理解并遵循 Controller/Service/Mapper 分层与接口抽象

关键概念

  • Controller
  • Service
  • Mapper
  • 接口抽象

为什么学习

  • 新增功能须放入既有分层并复用服务,掌握分层职责可避免把 SQL 与逻辑混写进 Controller。

如何检验理解

  • 能把一个新功能拆成 Controller→Service→Mapper 三层并说明每层职责

核心技能

SpringMVC JSON 响应与 REST 风格

通过 @ResponseBody/@RestController 向前端回写 JSON,查询结果、筛选结果、图表聚合与统计都要以结构化 JSON 交付。

建议预留 60 分钟

学习目标

  • 掌握 @ResponseBody/@RestController 与对象序列化回写

关键概念

  • @ResponseBody
  • @RestController
  • JSON序列化
  • REST语义

为什么学习

  • 所有前端展示都以 JSON 响应为终点,需熟练用注解回写并把集合/聚合结构序列化正确。

如何检验理解

  • 能把一个含列表与统计字段的对象以期望 JSON 结构回传给前端

核心技能

MyBatis resultMap 与多表/字段映射

当表字段与 Java 对象不完全一致或需关联返回组合对象时,用 resultMap 精确映射,支撑返回结构化查询数据。

建议预留 90 分钟

学习目标

  • 掌握 resultMap 列-属性映射与简单关联查询

关键概念

  • resultMap
  • resultType
  • 列映射
  • 驼峰配置

为什么学习

  • 大表字段冗余稀疏,需自定义 resultType/resultMap 把列稳妥映射到展示对象并避免多余回表。

如何检验理解

  • 能为一个驼峰对象或复合对象配置 resultMap 且输出字段正确

核心技能

声明式事务与 Druid 连接池整合

批量导入/导出批次写库时用 @Transactional 界定事务边界,并用 Druid 连接池参数应对大量并发查询与防连接耗尽。

建议预留 90 分钟

学习目标

  • 掌握 @Transactional 使用与 Druid 连接池核心参数含义

关键概念

  • @Transactional
  • 事务隔离
  • Druid
  • 连接池参数

为什么学习

  • 大规模批量操作与频繁查询需要正确的事务隔离与连接池容量/超时参数,是稳定运行的基础保障。

如何检验理解

  • 能在批量写库方法上加 @Transactional 并调好 Druid 连接数上限后验证正确提交/回滚

核心技能

大规模深分页优化(keyset/延迟关联)

LIMIT 深分页在大表上因深 offset 导致全扫描极慢,需改用基于主键/排序列游标的 keyset 分页或延迟关联,支撑百万级以上翻页展示。

建议预留 120 分钟

学习目标

  • 理解深分页瓶颈,掌握 keyset/游标分页与延迟关联技术

关键概念

  • 深offset损坏
  • keyset分页
  • 延迟关联
  • 游标

为什么学习

  • 该核心技术直接决定大数据分页展示是否可承受,需能在真实查询上识别深 offset 并用游标/延迟关联重写并验证提速。

如何检验理解

  • 能把一个 deep-offset LIMIT 查询改造成键集分页并说明其 Explain 不再需要深 number 扫回

核心技能

SSM 整合与模板阅读扩展

读懂模板中 Spring/SpringMVC/MyBatis 的 XML/注解配置(DispatcherServlet、mapper 扫描、数据源、包扫描),按既有风格安全加 Controller/Mapper/Service 是本目标最重要落地动作。

建议预留 120 分钟

学习目标

  • 理解 SSM 装配配置文件,能结合模板扩展新模块并为实现新功能作准备

关键概念

  • DispatcherServlet
  • 配置扫描
  • MyBatis整合配置
  • 模板扩展

为什么学习

  • 整个实现都建立在对参考模板的解读上,需要在保持既有分层与编码风格的前提下独立加出查询/导出模块,属于迁移型关键能力。

如何检验理解

  • 能在模板上不动手工整合链路的前提下新增 Controller+Service+Mapper 三件套并成功被扫描装配

核心技能

REST 接口设计与统一响应封装

设计查询、筛选、图表统计、导出这四类接口的统一 URL 与响应体,做参数校验与错误封装,保证前端调用稳定。

建议预留 90 分钟

学习目标

  • 掌握统一响应体、DTO 传输与参数校验,设计可复用的查询统计 API

关键概念

  • REST设计
  • DTO
  • 统一响应体
  • 参数校验

为什么学习

  • 面向四类功能设计可复用的 API 契约,需能独立规划路由、DTO 与统一结果/异常结构并让前后端对齐。

如何检验理解

  • 能为分页查询/图表/导出设计出带分页与筛选 DTO 的统一 REST 接口并被前端成功调用

核心技能

大规模结果流式/游标读取

导出或服务端大数据处理不能一次把几十万行载入内存,需用 MyBatis 游标/分批(按 id 分段)流式读取,控制内存占用。

建议预留 120 分钟

学习目标

  • 掌握 MyBatis 游标/分片读取海量结果,控制流式消费与内存

关键概念

  • 流式ResultSet
  • 游标读取
  • 分片读
  • 逐批处理

为什么学习

  • 导出与图表服务端抽数都需对海量行流式消费,避免一次 resultSet 全量进 JVM,关系 OOM 与响应体量。

如何检验理解

  • 能用游标或分片方式读出一张百万行表并逐批处理而内存使用保持平稳

核心技能

慢查询定位与问题排查

通过 open 慢查询日志、Explain、过程日志与接口耗时定位『为什么某查询/分页/导出慢或报错』,自主解决开发中异常,是必修软技能。

建议预留 90 分钟

学习目标

  • 掌握利用日志、慢查询日志与执行计划定位并修复后端问题

关键概念

  • 慢查询日志
  • 执行计划
  • 日志排查
  • 问题定位

为什么学习

  • 页面出现慢或报错是最普遍日常,需掌握从接口层→MySQL 慢日志→Explain 的定位路径来稳定交付。

如何检验理解

  • 能据慢查询日志找出一条慢 SQL,用 Explain 定位瓶颈并给出并验证修复

核心技能

大数据 CSV/Excel 流式导出(防 OOM)

下载百万行不落地为内存大对象:结合 j21 流式取数向输出流分块写 CSV/流式 POI,避免堆撑爆,并正确设置响应头触发浏览器下载。

建议预留 120 分钟

学习目标

  • 掌握流式 CSV/POI 导出与响应头,实现不 OOM 的大批量文件下载

关键概念

  • 流式写CSV/POI
  • Content-Disposition
  • 分批输出
  • 防OOM

为什么学习

  • 数据下载是本目标四大交付之一且必须撑住百万级,核心在可处理的响应接口 + 不爆内存的流式写,需独立实现验证。

如何检验理解

  • 能实现一条导出接口,下载十万行以上时内存平稳且文件内容、文件名与表头正确

核心技能

前端 Ajax 调用后端并渲染表格

在既有前端基础上用 jQuery/Ajax 调新后端接口,把分页结果渲染成列表/表格并联动页码,打通前后端。

建议预留 90 分钟

学习目标

  • 掌握以 jQuery/Ajax 调用 REST 并在分页语义下渲染数据

关键概念

  • ajax
  • 前端渲染
  • 分页状态
  • DOM更新

为什么学习

  • 前端你有基础但需转向用 JS/jQuery<->后端 JSON 的新交互模式,并且大表页面要按后端分页结果渲染。

如何检验理解

  • 能写一个带 ajax 的页面完成切页并渲染后端返回的非全量分页数据

补充知识

Tomcat 部署与 JVM 内存/GC 设置

把 SSM 应用打包部署到 Tomcat,针对大对象/流式导出设置合理堆内存与 GC 参数,处理大流量下内存与超时。

建议预留 60 分钟

学习目标

  • 掌握部署流程与常用 JVM 内存参数设置

关键概念

  • Tomcat部署
  • JVM堆
  • GC参数
  • 连接超时

为什么学习

  • 为让流式导出与大数据接口稳定运行需会调连接超时/JVM 堆并对部署环境做基本运维,入门推荐即可。

如何检验理解

  • 能把打包产物部署到 Tomcat 并对该服务调大堆内存后正常启动访问

核心技能

异步导出与下载进度(Spring 线程池)

长时间导出阻塞请求线程会拖垮服务器,用 Spring 异步/线程池把大导出放到后台并轮询状态,前端提示生成中/可下载。

建议预留 90 分钟

学习目标

  • 掌握 Spring Task/线程池异步执行与前端看进度的机制

关键概念

  • @Async
  • 线程池
  • 任务状态
  • 轮询进度

为什么学习

  • 技能地图要求对导出队列/异步较熟练,实际大导出必须异步以避免请求阻塞,是体验与稳定性的高级加固。

如何检验理解

  • 能实现后台触发导出、前端轮询进度并在就绪后下载的异步任务

核心技能

前端多条件筛选交互与防抖

把前端基因/变异多维筛选控件与后端动态 SQL 参数对齐,处理筛选状态同步、请求防抖与并发竞态,保证筛选体验。

建议预留 90 分钟

学习目标

  • 掌握多维筛选控件状态到后端参数的对应、防抖与并发处理

关键概念

  • 筛选控件
  • 防抖
  • 参数同步
  • 请求竞态

为什么学习

  • 复杂条件筛选是主交付,前端控件→序列化→后端动态 SQL 参数须一一对应并做防抖/中止旧请求以免乱序覆盖。

如何检验理解

  • 能搭建含多个筛选控件的页面,改动参数经防抖发起请求并避免旧请求覆盖新结果

核心技能

ECharts 聚合数据图表展示

把后端聚合统计结果(分布桶/位置/类型计数)用 ECharts 渲染为直方图/散点/分布等,实现『绘图展示生物数据』。

建议预留 120 分钟

学习目标

  • 掌握 ECharts 常用图配置并将其与后端聚合数据契约对接

关键概念

  • ECharts
  • option配置
  • 直方图
  • 散点分布图

为什么学习

  • 绘图展示是本目标核心且需对接后端统计 JSON,要能针对生物分布把聚合结果选对图型并正确绑定坐标/轴。

如何检验理解

  • 能把后端一个统计 JSON 渲染成一张轴/图例正确且可交互的 ECharts 生物分布图

补充知识

生物可视化常规表达与坐标语义

识别生物数据库里直方图、散点、热图、染色体/位置分布等 x 轴与图例的通用含义,据此选对聚合桶并与目标领域惯例一致。

建议预留 60 分钟

学习目标

  • 识别生物数据图的常见表达、坐标轴维度与图例语义

关键概念

  • 染色体分布
  • 直方桶
  • 基因坐标轴
  • 热图语义

为什么学习

  • 领域可视化约定只需入门识别,但能避免把位置轴/分桶画错、与领域惯例不符。

如何检验理解

  • 能指出某生物分布图的 x 轴该取什么基因/变异维度并说明常用图型语义

核心技能

ECharts 海量数据降采样/聚合渲染

生物大表点/散点可能成千上万,直接全量渲染卡顿,需结合后端聚合或 ECharts sampling/dataZoom 做降采样与抽稀渲染保证流畅。

建议预留 90 分钟

学习目标

  • 掌握 ECharts sampling/dataZoom 与后端聚合减少渲染数据点的方法

关键概念

  • dataZoom
  • sampling
  • 分桶聚合
  • 抽稀渲染

为什么学习

  • 目标明确『对海量点做降采样/聚合渲染』,需掌握服务器端分桶或 ECharts sampling 以控制图表数据量。

如何检验理解

  • 能对一个万级以上点图通过降采样/聚合让渲染保持流畅且分布不失真

核心技能

SSM 大数据查询/筛选/图表/导出综合实战

在真实 SSM 模板上把分页查询、复杂筛选、图表聚合、流式下载与异步整合为一个完整生物数据模块,全链路联调并验证性能达标,是本目标的关键里程碑。

建议预留 180 分钟

学习目标

  • 将查询/筛选/分页/图表/导出整合到模板并完成性能与鲁棒性验证

关键概念

  • 全链路联调
  • 性能验证
  • 模块交付
  • 异常回退

为什么学习

  • 这是把所有能力迁移到真实模板的最终整合,需独立完成功能并提出可复现的性能结论(分页耗时/导出内存),达到可验收交付水准。

如何检验理解

  • 能交付一个集成筛选-分页-图表-导出且经真实大数据验证无 OOM、深翻页分页流畅的完整模块

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。