这篇文章想写很久了,起因是工作几年后的一次闲聊,和同事谈起了自己的大学生活。回忆间,一方面惊讶于当年那些烂熟于心的技术和术语突然变得那么陌生,一方面也感慨现在的工作方向早已渐渐远离了最初的跑道。虽然不后悔自己的选择,也会在新的道路上奋斗前行,不过过去的经历终将是伴随一生的财富。
纪念•我的大学时代
我的整个大学生涯,都是在帝都东五环的中国传媒大学度过的。首先解答最常被问到的一个问题:为啥会选择读传媒大学的计算机系?因为分数不够呗!本来是想考新闻学和编辑出版学的,无奈分数不够,就被调剂到传媒大学“分数线最低、就业率最高”的这个专业了。这种录取线和就业率的反差正是传媒业的现状,专业再好,市场需求不够,支撑他们继续留在这个行业的,也只能是梦想了。所以,也许应该庆幸,我没有走上父亲的老路,做我其实并不太擅长的传媒专业。至少现在回想起来,我被动选择了一条适合我的路。
多说一句母校,传媒大学,是一个给人充分自由的地方,诚然她的部分专业并非全国前列,但是,没有一个传媒人会嫌弃她的不好,因为,我们在这里收获的,是面对无限可能的世界,看到无限可能的自己。
既然定位成技术贴,还是尽量回忆些学术相关的内容吧。
本科四年,我的主要研究方向是数据挖掘。一切都要从我参与的第二个大学生实验项目开始说起。每一条印象深刻的道路,一定是因为你摔过跤、迷过路。这个致力于网络敏感信息过滤的项目,第一次申请立项时,就被拒了。不是因为项目选题不好,而是我们两个愣头青准备的实在是不充分,答辩时,我们自己都还没弄清楚这项目是要做个什么,更别说怎么做了。幸运的事,我们的导师,尚文倩老师,一直支持着我们,给了我们很多意见和建议,也为了我日后继续走数据挖掘方向奠定了基础。半年后的第二次答辩,我们毫无悬念地通过了评审,这个课题我们也一直研究了下去,作为我本科的小论文和毕业设计。
网络敏感信息过滤,算是有点官方背景的项目吧,具体分到我们头上的,是网络数据爬取和文本分类两块。好友刘鸿嘉(阿猴,目前立志成为一名独立摄影师的前程序猿)主要负责网络爬虫,我主要负责文本分类。所以可以说,我的本科生活,就是天天跟KNN、bayes等分类算法打交道,整天研究如何提高敏感信息识别的准确度。最初接触文本分类,用到的一个工具叫weka,也算是为我开启了数据挖掘领域的认知大门。做数据挖掘,java当然是最佳语言,虽然有各种类似lucene的工具库,但是后期涉及到算法的优化,所以只能是自己实现各类算法。系统最后的效果还是不错的,识别的精度都有95%以上,从效率的角度,bayes则比KNN好太多。我的小论文也从KNN性能优化的角度入手,阐述了提高计算效率的一种优化思路,感谢范文和董韬两位师兄,在项目实验和论文编写上都给了我很大的帮助。
大四顺利的保研了,也开启了我的预研究生活,从那一年起,我的学术方向开始有了分支,并在很长的一段时间里,让我纠结和迷惑。
未完待续...
回龙观创客广场B座三联书店
2017.2.26 18点
-----------------------------------------
2017.2.27 更新
研究生四年(大四就进实验室了),我的研究方向是分布式存储,这是一个偏系统底层,且常常和硬件打交道的方向。选择的原因有些惭愧,保研成功后选方向前,朱立谷副院长(我后来的研究生导师)请我们吃了顿饭,聊了聊自己的想法,其实虽然做了2年的数据挖掘,但是当时自己对未来的工作方向并没有清晰的认识,也从未认真思考过这个问题,一直以来,我就是一个老师教什么,就学什么的“好”学生。然后就在朱老师勾勒的美好前景中,迷迷糊糊的选择分布式存储这个方向。事后回想,要是当时就能有明确的职业规划该有多好啊,但是,在我们最年轻最想探索各种可能性的年纪,要想能迅速找准自己的定位,其实本身就有些悖论的成份。我不知道如果当时选择了数据挖掘方向的我现在会身在何方,也完全给不了现在正经历这个选择的年轻人意见,只能说,只要选定了,就从中尽可能的汲取营养,强大自己吧。所以,直到现在,我并不后悔选择了这个自己从未真正喜欢上的存储方向。因为研究生四年收获的,远不止专业技术,还有方法,还有态度,还有人。
总的来说,在存储实验室(->实验室官网点这里<-)这四年我学到的东西,是真真切切在日后的工作生活中都起到关键作用的,所以能够跟随朱立谷导师,进到这个大家庭里,已经很知足。
大四的预研究生活,相对来说是清闲的,没有课,没有找工作的压力,导师给我们充分自由的学习空间,这一年,我学会了前端开发,这是一个大家看似简单不屑,但实则在日后工作甚至生活中最常会有用武之地的技能。不管你将来是否是做前端开发,能熟悉jquery,了解前后台通信机制,掌握一套前端开发框架,都对日后的整体系统架构设计起到帮助作用。研究生时期,我们实验室主要用到的框架是CodeIgniter,基于PHP,并且支持MVC架构,轻量级,特别适合PHP为后台的网站开发。
研一的生活就相对忙多了,课业繁重不说,实验室也开始分配分配具体的工作。这一年,Linux系统开始进入我的生活,老实说,用惯了Windows,要熟悉Linux操作体系,还真不容易。首先要熟悉的是命令行界面、各类基础命令、Linux的文件系统结构、编译各类源码包,在此基础上,还要深入了解一下Linux系统的整个启动加载流程,到此,算是会使用Linux系统了。一旦当你习惯了Linux生态体系,就会对它的高效、开放爱不释手。在Linux学习初期一定要提到一本书《鳥哥的Linux私房菜》,通俗易懂,应该也是很多人的Linux入门读本吧。既然做分布式存储,自然会跟各种存储硬件打交道,整个研究生期间,我不是在实验室开发系统,就是待在机房拼装机器。那段时间,一个人“静静地”待在机房,享受着满机柜服务器的嗡鸣声,倒腾主板,编译文件,也真是以后都难有的体验了。
到了研二,成了实验室开发的主力,我们实验室分为硬件组和软件组,软件组主要是负责私有云服务平台(PCS云存储服务平台)的研发,而我所在的是硬件组,主要负责私有云硬件定制和网络存储监控系统(MPX多协议网络存储平台)的研发。关于MPX,确实有太多记忆,可以说MPX就是我整个研究生所学的知识架构投影,就让我叫它,M老师吧。
未完待续...
金唐国际金融大厦
2017.2.27 13点
-----------------------------------------
2017.3.1 更新
MPX总的来讲是一套定制化磁盘阵列服务器上搭载存储服务管理系统的完整解决方案,并从硬件选型到Linux内核精简上都做了深入优化。研究生期间,这套解决方案成功应用于首师大、物资学院、中国电子科技集团公司第十五研究所等合作单位中。
硬件上,MPX初期也就是单台3U或2U、16或8盘位的磁盘阵列服务器,主板就是常规的x86主板,接口也未做扩展。中期,尝试过基于4盘位小NAS服务器的家庭私有云解决方案,以及基于ARM主板的微型存储服务器解决方案,不过这两个方案并未大规模推广。后期,我们能同时支持SAS和SATA硬盘,利用JBOD级联技术,我们的磁盘阵列服务器突破单台限制,并在提供的硬件接口上更加丰富,同时,利用heartbeat+DRBD技术做到了服务的高可用。
-----------------------------------------
2017.10.20 更新
软件(服务)
MPX软件层面,主要提供软件级RAID服务、基于块级的SAN存储和基于文件级的NAS存储服务,并且以多步表单的形式引导管理员进行相应配置管理,最大化的降低了管理员的专业要求。其中SAN存储又支持iSCSI和FC两种协议,NAS存储又支持NFS和CIFS两种协议。实际上,MPX管理系统所有操作都是对底层Linux 相关命令的可视化封装,所以基于这一点,MPX系统甚至不需要后台数据库,即可实时查询到需要的数据信息。
此外,MPX还提供了基于LDAP的用户管理功能,服务重启功能,磁盘状态检测功能,以及一键恢复功能等等。
高可用
针对MPX的高可用能力,首先利用了heartbeat+DRBD技术做到了磁盘阵列的网络失效检测与实时热备,此外,还通过重置系统中所有配置文件(例如smb.conf、ldap.conf等)并重启的方式,实现了系统的一键恢复功能。
以上都是对MPX系统的回顾,即使毕业三年,依然感触颇深。
研三,都是围绕着论文和实习转。我的毕业论文是基于copy-on-write的Btrfs文件系统优化,老实说比较水,就不多赘述了。倒是研三在360的实习,虽然只有短短的半年,不过经过数据挖掘领域的实战,相关技能有了显著的提高。实习期间我主要负责垃圾短信的识别与数据分析,过程中为360编写了一款垃圾短信半自动化标注小软件,后期在实习生领域得到了广泛推广,大大提高了同事的工作效率。而垃圾短信的智能识别,主要是依靠范文师哥的文本分类算法,分类效果相对较好的有其改进后的Bayes算法,但客观来说,数据分析的精度并不理想。而我的工作,更多的是每周定期的分析报表,出统计周报。半年后的离开,倒不是因为不喜欢360或者数据挖掘这个方向,实际上这一领域有着巨大的发展前景。但同时我也深刻体会到,要想学好数据挖掘并真正应用到实际工作中,第一,数学得非常好,算法即数学;第二,编码能力和设计模式也得强,不然即使有好算法,面对大数据有效时间内根本跑不完。总之,基础得好,非一日之功,初期最好能有大牛带,后期有团队和同伴相互协作,不然一个人研究会非常痛苦且难于出成绩。怀念360的点滴。
好了,回顾就到这吧,未来还在继续,keep learning
我的大学时代 完
金唐国际金融大厦
2017.10.20 17点17分