研究生生活总结(3):我学过的那些技术

从入大学以后到现在学过的技术多而杂,有的现在还在用,有的早已忘却,写下来对自己是个反思,也为来着做参考。

一、编程语言

这里说的编程指不包括脚本外的语言,主要是指高级编程语言。

  1. C/C++:记得是大一下学的,直接上来就是就学的C++,没有学过C,于红老师教的,学得还算可以。之后的数据结构课程和自学MFC,研究生时期当助教,课余做的一些acm题都要用到C/C++,所以一直也没有忘。但是对C++语言,比如虚函数内部如何实现的,了解的并不是很多,这在找工作的面试上多少会要吃一些亏的。因为平时用C++都是一些小工程,所以命名规范神马的没有养成比较良好的习惯。到了公司实习,不论是百度,还是腾讯,一直都是用的C++进行开发。这些个东西再工作中也慢慢熟悉起来了。可以说C++是用途最广的语言之一,很多时候要靠它来吃饭的,好好学习和研究是没有错的。
  2. Java:选修课选的,学得还不错,是我比较喜欢的语言之一,有了eclipse和netbeans等工具,写起代码来也是相当的爽,大学期间做的很多大作业和研究生期间做实验都是用的java。java的市场占有率也很高,很多公司都在用java开发,一般对性能要求很高的后台服务可能会选择c++,但是对于一些业务系统,使用java的偏多。对于最近比较的android应用开发,也是用java开发的很多。虽然java一直成长得比较慢,或者说变得越来越怪,但是在未来的相当长的一段时间内,作为开源界的领袖,会一直占领者大片市场。由于我专注于后来技术,可能工作后的很长一段时间内,不怎么会用到java了,但是我一直会关注它的发展。
  3. C#:自学的,后来选修了高级.NET,超喜欢的一个语言,配合visual studio的使用,用起来非常爽,我编写的一些小东西,大部分都是用C#搞的,而且C#也一直在发展。比如linq、lambda表达式,用起来还是很爽的。如果要写个什么东西的话,我第一个想到的肯定就是这个语言了。无论怎样,我会一直关注这个语言的发展,时不时会用它来写一些东西。
  4. VB.NET:大二的时候看过一段时间的书,后来觉得没前途的东西,放弃了,现在可能连最基本的语法都不怎么会了吧。
  5. 汇编:汇编其实接触的不多,没有系统的学过,在上计算机组成实验的时候,接触过一些,后来在搞软件破解的时候,知道一些比较简单的指令。
  6. 其他听过没用过的语言:go语言,谷歌推出的语言,效率很高的说,没有用过,感兴趣的可以试试。object c,听说过,ios应用的开发语言,效率应该也是很高的吧,翻译过滤不就是有对象的c么,估计保留了c的性能,又引入了类的概念。

二、脚本语言

  1. python:语法非常漂亮,研究生的时候花了一些时间来学习,写过一些程序。脚本语言中比较好的一个东东,曾经想写实验代码的时候用它来写,但是发现效率不行,最后用的java。python把缩进当成一种语法,这个是非常好的,这样能编译通过的代码都会显得非常地漂亮。python中的内置类型也很好用,扩展报也挺多的。
  2. php:在大二的时候参与创新中心的一个项目,自学了一些php的东西,那时候我觉得这个东西只能用来写web程序,后来实习的时候才发现,其实不然,php其实就是一种脚本,也可以直接用来运行。飞信刚刚出来的那会儿,那个可以免费短信的功能比较吸引人,我就想用它来做短信报警提示,再往上搜了搜,发现有php和python的飞信协议的实现。我就照着php版的代码,翻译成了C#版的(主要是我用C#开发的项目需要用到报警的功能)。
  3. shelll:这个基本上是在百度实习的时候,慢慢照着别人的程序,改吧改吧,慢慢学的,现在也不怎么精通,基本的语法其实都还简单,其实最难的还是熟悉linux命令行下的各种工具,如awk、sed、xargs等等。

三、Web开发

以前中心的时候,是在Web组的,所以对Web方面的涉猎还比较多,不过由于现在主攻后台技术了,对前端的技术接触越来越少了。

  1. Dreamwearver:纯html设计的工具,开始做网页设计的时候用神马表格布局,后来开始学习div+css布局,其实也不怎么精通。可能没有神马艺术天分吧,一直也做不出来比较好看的设计。不过在大二的暑假,我用这个东西帮人做了一个小网站,赚了一千多块钱,也算没有白学。
  2. fireworks/photoshop:主要是用来做网页设计,没有怎么p过图。好像记得网页设计的时候先是一张大的图,然后再切开,最后转换成hutml神马的。
  3. asp:主要是vbscript操作一下access数据库,好几年没用了,基本忘了,这项技术也基本被淘汰了,不过好像还有一些老的不行的政府网站还在用的这个东东。
  4. asp.net:这个东东,我也不知道是什么时候学会的,反正用它做了不少的东西,很多大作业是用它完成的,做点小的动态网站,用这个东西还是很合适的。记得在做实验室一个项目的时候,也是用的这个。这个东西可能适合小或中型的网站,大型的网站可能会用的别技术方案。
  5. J2ee:上课学的,考试还考了99分,当过一次助教,但是觉得自己学到的东东并不是很多,也无非是 servlet,jsp,javabean,ejb那些东西,对那些开源框架了解不是很多,struts算学过一些的,SSH的另外两个算没怎么用过。 jsf那些东东只是听说过。
  6. 前端技术:html+javascript+css+ajax等,这些只能算略知一二,不甚了解,大多数时间,是现用现学或现用现搜。

四、数据结构和算法

  1. 基本数据结构:链表、栈、队列、堆、二叉树、图,前面的几个数据结构了解得还可以,基本的概念和算法都还行,图的算法相关的算法,好多都记不住,不够扎实,要差一些,有待加强。
  2. 高级数据结构:红黑树、二项堆、B+树……看过书,也学过,但是记不住呀,可能用到的也少,有待加强。
  3. 排序:冒泡、插入、快速、选择、归并、堆、计数,基数,桶:这些排序算法还算比较熟悉的,对于每种算法基本上知道是怎么做的,最好、最坏和平均的时间复杂度都了解地比较清楚。
  4. 动态规划:基本的动态规划还行,了解划分子问题的过程。
  5. 其他:位数组,bloomfilter,或是其他什么更高级的东西,了解一些,还有很多要学习的地方。

五、数据库

用的最熟的是sql server,oracle因为做项目,简单的搞过,mysql也搞过一些,sqlite和acess神马的也用过。sql语句自认为学得不错,喜欢去优化各种sql语句,不过现在用得越来越少了。但是牛人很多,记得在百度的时候,听说有人写了一个内存中的支持sql的数据库,非常牛逼。

六、论文写作

  1. latex:研一的时候,有一段时间很疯狂,写文档,写作业,写幻灯片,写论文都用这个,觉得很好用的,最后的简历也是用这个搞的,算学得还可以吧。个人感觉这个东西还是比word方便的。但是对于模板的修改没怎么研究过。
  2. word:这个是在写毕业论文的时候用的比较多的东西,以前也一直在用,但其实很多东西都没用好。比如格式刷神马的,好好用还是挺好的。

七、研究方面

  1. 搜索引擎:了解搜索引擎的整体架构,以及每部分需要干的事情。
  2. 搜索引擎反作弊:研究方向,非常熟悉,不谦虚地说是这方面的专家,尤其是在链接反作弊方面。
  3. 数据挖掘:看过数据挖掘中的十大算法,有的甚至自己动手去实现过,对聚类、分类等东西有一定的了解(主要是通过实验室的讨论班)。

八、其他

  1. Hadoop(map&reduce):一个分布式计算模型,之前没有接触过,到了公司实习后,接触得比较多,了解其实不多,只是知道如何去用它,对其内部了解不是很多,下一步可能要对整个框架了解多一些。
  2. vim:linux下的编辑器,主要是用来写代码的,其实用得还不是很熟。之前在学校的时候基本没有用过,到了公司才学的,比较痛苦,不过习惯了之后,还行。
  3. 设计模式:了解23中经典模式中的一些,有的动手去实现过。
  4. 软件工程:仅限于上课学到的那些东西,知道一些所谓的概念。
  5. 移动开发:经验为0,想过学android开发,看过几个视频教程,环境都部署好了,写过几个简单的程序。ios的开发根本没有接触过,但我觉得可以以后是移动互联网的天下,这些个东西学学也是有好处的。

可能还会有一些会这样或那样的东西没写到吧,仅仅是做一个总结,也想想今后的发展方向。我还记得张老师曾今说过的一句话,在寒假或暑假那种没有什么事情的日子里,静静地想想前一段时间的所走过的路,对一个人的帮助是非常大的。我很是认同,在这种没有什么事情的日子里,静静地想想,跟家人或朋友聊聊天,或写写东西,对自己的帮助非常大,往往我会在那样的日子里,认识到自己的不足,并在心里下定决心,在接下的日子里一定克服。往往下定决心之后,我都能在下一年里达到这样或是超过这样的目标。

你可能感兴趣的:(研究生生活总结(3):我学过的那些技术)