自我介绍
大家好!我是谭新怡。一名数据科学与大数据技术的大三学生,初来博客园,我写个小随笔让大家认识我。
我有很多兴趣爱好:跳舞,画画等等看到什么新鲜的都想尝试一下,这也让我会的兴趣爱好有很多却也不精通。还喜欢看小说,看动漫,现在日常日语都能说上几句,听也能听懂一部分,这可能就是英语老师说的听得多了就能听懂了吧。我的闪光点的话就是啥都想掺一脚,什么都想学一点,比如钩织,我就看了一下教学视频跟着视频一起做,做的也非常的不戳,我有的是耐心和手艺哈哈哈,然后动手能力也很强,我觉得没什么手工或者制造能够难倒我的,因为我有着不做好就不罢休的牛劲。
一、现状:我的技能树与学习需求
作为大三学生,我对自己的专业能力有清晰的认知,既知道已掌握的基础,也明确需要弥补的短板,以下是具体梳理:
- 已具备的专业能力
能力 A:多语言编程与工程实现
Java:掌握核心语法与面向对象思想,能独立开发简单的后端接口(如用 Spring Boot 写 “校园能耗数据查询接口”),熟悉集合框架(ArrayList、HashMap)的使用场景,能通过多线程处理 “批量数据导入数据库” 的任务,曾用 Java 实现 “学生成绩统计系统”,支持 Excel 导入、成绩排序和报表导出功能。
C++:精通基础语法与 STL 容器(vector、queue、map),能利用指针和内存管理优化程序性能,擅长处理大文件与高效计算,比如用 C++ 实现 “百万级数据去重工具”(基于哈希表原理),处理速度比 Python 脚本快 2 倍;了解面向对象编程,能写简单的类封装(如 “数据清洗工具类”,包含格式校验、异常值过滤方法)。
Python(含爬虫):熟练使用 Python 进行数据处理与爬虫开发,能基于 Requests、BeautifulSoup 爬取静态网页(如校园新闻、公开数据集),用 Scrapy 框架实现多线程爬取,曾爬取某电商平台的商品评论数据(10 万 + 条);同时掌握 Python 数据分析生态(Pandas、NumPy),能完成数据清洗、特征提取和统计分析,比如用 Pandas 处理爬取的评论数据,做情感倾向标注。
能力 B:数据存储与结构设计
数据库:熟练使用 MySQL,掌握 SQL 进阶操作(多表联查、子查询、窗口函数),能设计符合第三范式的数据库表结构(如 “校园能耗系统” 的 “建筑表 - 能耗表 - 时间维度表”);了解 Redis 缓存机制,能通过 Redis 存储爬虫的 URL 去重列表,避免重复请求;会写 HQL 语句从数仓中提取分区数据(如按 “月份” 分区查询能耗数据)。
数据结构:精通常见数据结构的原理与应用,能根据场景选择合适的结构解决问题 —— 比如用 “队列” 管理爬虫的 URL 请求池,用 “哈希表” 实现数据快速去重,用 “二叉树” 做有序数据的查询优化;能独立实现 “链表反转”“快速排序”“堆排序” 等经典算法,曾在课程设计中用 “图的邻接表” 实现 “校园导航路径规划” 功能。
能力 C:系统基础与分布式认知
操作系统:理解操作系统核心概念,熟悉进程与线程管理(如用 Java 多线程模拟 “进程调度”),掌握内存管理(分页、分段)与文件系统原理,能通过 Linux 命令行完成文件操作、进程监控(如用 top 命令查看爬虫程序的 CPU 占用),曾在 Linux 环境下配置 Python 爬虫的定时任务(crontab),实现每日自动爬取数据。
分布式:了解分布式系统的基本架构(如主从模式、集群部署),初步掌握 Hadoop 生态的核心组件(HDFS、MapReduce、YARN),能在伪分布式环境下完成 “WordCount” 经典案例,理解 “分治思想” 在海量数据处理中的应用;知道 Spark 的基本原理(基于内存计算),能写简单的 Scala 代码实现 RDD 的转换与行动操作(如统计能耗数据的月度平均值)。 - 技术兴趣方向
我对 **“大数据开发 + 数据挖掘” 交叉方向 ** 最感兴趣:一方面想深入分布式技术(Hadoop、Spark、Flink),搞懂 “TB 级数据如何高效存储、计算与实时处理”—— 比如电商平台的实时交易数据是怎么做到秒级统计的;另一方面想结合 Python 爬虫与数据挖掘,探索 “从数据采集到价值落地” 的全链路,比如爬取用户行为数据,用机器学习模型做精准推荐或风险预测。另外,对 “多语言协同优化” 也很关注,比如如何用 C++ 处理计算密集型任务、Java 做后端支撑、Python 做数据分析,让整个系统的效率最大化。 - 缺少的能力
分布式框架实战深度不足:虽然了解 Hadoop、Spark 的基础,但没参与过真实的分布式集群部署与调优,对 Spark Shuffle 优化、Flink 状态管理等实战技能不熟悉,不会处理 “集群节点故障”“数据倾斜” 等问题。
数据库进阶与性能优化薄弱:只会 MySQL 的基础操作,对索引优化(如联合索引设计)、事务隔离级别、分库分表等进阶知识掌握不足;不熟悉 NoSQL 数据库(如 MongoDB、HBase),无法应对非结构化数据(如用户日志、图片元数据)的存储需求。
技术栈融合的工程化能力欠缺:虽然会多种技术,但多是 “单一技术独立使用”,缺少 “多技术联动的工程化封装”,比如不会把 Python 爬虫、Java 接口、数据库存储整合到一个完整项目中,也不懂 Docker 容器化部署与 CI/CD 流程,无法将项目落地到生产环境。 - 课程期待与角色定位
期待收获:希望能系统学习分布式框架(Spark、Flink)的实战调优技巧,掌握数据库进阶知识(索引、分库分表)与 NoSQL 数据库应用;通过课程实践学会 “多技术栈协同开发”,比如搭建 “爬虫 - 存储 - 分析 - 接口” 的完整项目,弥补工程化能力短板。
期望角色:想在课程实践中担任 “技术选型负责人 + 工程实现者”—— 一方面基于对多语言、多框架的了解,为团队推荐合适的技术方案(如 “用 Scrapy 爬取数据,MySQL 存结构化数据,Redis 做缓存”);另一方面负责核心模块的编码实现,比如用 Java 写后端接口、用 C++ 优化数据处理效率,同时指导组员解决 “语言语法”“框架使用” 的基础问题。
二、未来:职业选择与当下准备
大三是职业规划的关键节点,我已明确未来方向,并开始针对性准备,以下是具体规划:
-
职业目标:成为大数据开发工程师(偏多技术协同)
我计划毕业后进入互联网公司或企业级软件公司,做大数据开发工程师,核心方向是 “分布式数据处理 + 多技术栈融合落地”—— 比如为业务搭建 “数据采集(爬虫)- 存储(数据库 / 数仓)- 计算(Spark/Flink)- 服务(Java 接口)” 的全链路系统,或优化现有系统的性能(如用 C++ 替换 Python 的计算模块提升效率)。选择这个方向,是因为我既喜欢 “用技术解决海量数据问题” 的挑战性,也擅长 “整合多技术实现落地”,能兼顾工程效率与业务价值。 -
为目标的准备与优劣势
维度 具体内容
优势 1. 技术栈全面:掌握 Java、C++、Python、数据库、分布式等多门核心技术,能应对 “多场景协同开发” 需求;2. 工程实践意识强:会用 C++ 优化性能、用爬虫采集数据,能将技术与实际问题结合(如校园能耗项目);3. 学习能力扎实:数据结构、操作系统等基础课程成绩优异,能快速理解新技术的底层原理(如 Spark 的 RDD 机制)。
劣势 1. 分布式实战经验少:没接触过真实集群,对数据倾斜、节点故障处理等实战问题没经验;2. 数据库优化与 NoSQL 薄弱:不会设计高效索引,不懂 MongoDB 等非结构化数据库的使用;3. 工程化流程缺失:不会 Docker 部署、CI/CD,无法将项目标准化落地,团队协作中不熟悉 GitFlow 等规范。
当下准备 1. 每周花 6 小时学分布式实战:跟着尚硅谷的 Spark/Flink 实战课,在虚拟机上搭建 3 节点集群,练习 “数据倾斜解决”“Flink 实时统计” 案例;2. 系统补数据库知识:看《高性能 MySQL》学索引优化,用 MongoDB 做 “用户日志存储” 小 Demo;3. 学工程化工具:用 Docker 封装 Python 爬虫和 Java 接口,尝试用 GitLab CI 实现 “代码提交自动构建”。 -
本学期规划
技术学习:每周花 4 小时学 Spark 调优与 Flink 实时计算(重点练 “窗口函数”“状态后端配置”);花 3 小时学 MySQL 进阶与 MongoDB(实现 “用户行为数据” 的结构化 + 非结构化存储);花 2 小时学 Docker 与 Git 协作(掌握容器部署、分支管理、代码合并)。 -
代码量现状与目标
当前代码量:Java 约 5000 行(后端接口、工具类)、Python(含爬虫)约 7000 行(爬虫脚本、数据分析)、SQL 约 2000 行(数据库查询、表设计)、Scala(Spark)约 500 行,总计约 17500 行;
行业标准:查资料了解到,入职一流互联网公司的大数据开发岗,至少需要积累4 万行以上有效代码,且需包含 “分布式框架实战代码(Spark/Flink)”“多技术协同项目代码”“数据库优化代码”,单纯的语法练习代码不计入核心积累。
三、课程学习计划:用 WOOP 方法定目标
为了确保本学期的学习目标落地,我用 WOOP 方法做了详细规划,具体如下: -
Wish(愿望)
本学期结束时,能独立完成 “校园用户行为分析系统” 完整项目(覆盖爬虫、多语言开发、分布式计算、容器部署),掌握 Spark 调优、MySQL 索引优化,代码量从 17500 行提升到 25000 行以上。 -
Outcome(理想结果)
如果愿望实现,我不仅能补全 “分布式实战”“工程化部署” 的短板,还能在简历上增加一个 “多技术栈协同” 的完整项目经历 —— 面试时,既能讲清 “如何用 C++ 优化数据处理效率”,也能演示 “整个系统的部署流程”,甚至可以现场写一段 Spark 调优代码。更重要的是,能建立 “技术选型→开发→优化→落地” 的完整思维,为毕业后做大数据开发打下核心竞争力,想到这里,就觉得哪怕熬夜调集群、改 bug,也是值得的。 -
Obstacles(障碍)
内部障碍:容易 “贪多求全导致浅尝辄止”—— 比如学分布式时,既想练 Spark 又想练 Flink,结果两者都没学深;写项目时,总纠结 “用 Java 还是 Python 写接口”,浪费大量时间做无意义的对比;遇到复杂问题(如数据倾斜),会因为 “觉得难” 而拖延,甚至想跳过。
外部障碍:课程作业与项目时间冲突 —— 大三专业课(如《分布式系统》《数据库原理》)作业多,每周有 2-3 天需要写课程报告,导致项目开发时间被压缩;实验室的集群资源有限,多人共用时会出现 “节点占用”“任务排队” 的情况,影响实战练习进度。
最可能的失败因素:“技术碎片化,缺乏系统整合能力”—— 虽然学了很多技术,但在项目中无法将它们有机结合,比如会写爬虫、会写 Java 接口,却不知道怎么让接口调用爬虫的数据;或者只顾着写代码,忽略了 “系统性能优化”“部署文档编写”,导致项目只能跑通却无法落地,最终达不到预期目标。 -
Plan(“if then” 计划)
如果出现 “贪多求全” 的倾向,那么就每周一制定 “技术优先级清单”,比如 “本周重点学 Spark 调优,Flink 只学基础概念”,并每天晚上检查是否完成优先级任务,没完成就减少娱乐时间补学,避免精力分散。
如果遇到复杂问题(如数据倾斜)想拖延,那么就先把问题拆解成 “定位倾斜原因→查解决方案→小数据量测试→应用到集群” 四步,每步设定 30 分钟时限,完成一步再走下一步,同时把问题和解决过程记在 “错题本” 里,避免重复踩坑。
如果课程作业与项目时间冲突,那么就每周日晚上做 “时间块规划”,把每天的时间分成 “作业时间”(如 19:00-21:00)和 “项目时间”(如 21:30-23:30),确保两者都有固定时长,作业多的时候就早起 1 小时(7:00-8:00)补项目进度,不挤压核心学习时间。
如果实验室集群资源紧张,那么就自己在电脑上搭建 “2 节点伪分布式集群”(用 VirtualBox 创建两台虚拟机),同时提前和实验室同学约定 “集群使用时段”(如我用上午,同学用下午),避免冲突;另外把小任务(如 SQL 练习、Python 爬虫)放在本地完成,只把 “分布式计算” 任务放到实验室集群跑,提高资源利用率。
如果出现 “技术无法整合” 的问题,那么就先找类似的开源项目(如 GitHub 上的 “大数据分析平台”)参考架构设计,再画 “系统流程图” 明确各模块的交互逻辑(如 “爬虫→数据文件→C++ 处理→MySQL→Java 接口”),每完成一个模块就写 “接口文档”,确保下一个模块能对接,同时每周找学长帮我 review 一次架构,及时调整问题。 -
每周课程投入时间
计划每周拿出20 小时用于这门课(包含 3 小时上课时间),具体分配如下:
4 小时:听课、记笔记,重点记录 “分布式调优案例”“数据库优化技巧”“项目架构设计思路”,尤其是老师讲的 “踩坑经验”(如 Spark Shuffle 的常见问题)。
9 小时:项目开发,包括 “需求分析→技术选型→编码实现→测试优化”,其中 3 小时用于多技术整合(如接口对接、数据流转),3 小时用于性能优化(如 C++ 代码重构、SQL 索引添加),3 小时用于文档编写(接口文档、部署手册)。
5 小时:技术补漏与练习,2 小时刷分布式 / 数据库相关面试题,2 小时做小 Demo(如 MongoDB 数据插入、Docker 容器创建),1 小时整理 “技术整合手册”,记录跨技术问题的解决方案。
2 小时:团队协作,和组员同步项目进度,讨论技术选型争议(如 “用 Redis 还是 Memcached 做缓存”),帮组员解决 “Java 语法”“爬虫反爬” 等基础问题,确保团队整体进度。
选择D:比以前的课要多很多,直到达到目标为止—— 大三是专业能力冲刺的关键期,之前虽然学了多门技术,但多是 “零散的知识点”,离行业要求的 “系统实战能力” 还有差距。现在明确了职业目标,必须多投入时间练 “技术整合” 和 “实战落地”,比如以前每周只花 12 小时在专业课程上,现在增加到 20 小时,就是为了把 “Java、C++、分布式” 等技术串成 “能落地