研究那么多,唯一的遗憾就是没能把每一步记录下来,所以,从这里开始...
大学四年很快,没有取得什么成就,整天碌碌无为,但总得留下点什么,算是一个总结吧。一切仿佛还在昨天,那些经典的片段,那些大牛们的杰作,仍历历在目,但真正要研究起来却相当不容易,少的几千行,多的十几万行,而且涉及多种开发语言,这给研究过程增加了很多的困难,那寂寞,那艰辛谁能懂?不是看到谁在研究我才研究,也不是谁逼着我研究,而是兴趣使然。这里所说的研究是代码级的研究。以下举例的可能还不太完整,因为有些不太重要的项目就不举例了,或者有些项目已经忘记了它的存在了。文笔不太好,不多写了,按照时间的顺序,直奔主题吧:
一:记事狗微博系统(Php)
采用php+mysql开发并开源发布,MVC模式,模块化很规范,实现自己的模板引擎,其实就是引用了Discuz的模板引擎,可以实
现伪静态,以及与真实地址模式互换,其官网为:http://www.jishigou.net。
二:114啦网址导航系统(Php)
该网址导航生成系统为雨林木风自主研发,并正式开源。采用php+mysql,基于Smarty模板引擎,可自由定制网站风格使全站静
态化,也采用MVC模式,类结构清晰,易于升级修改。其官网为:http://open.114la.com。
三:PHP云人才系统(Php)
采用php+mysql数据库构建的高效的人才与企业求职招、聘解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行
二次开发,也是实现了自己的模板机制,其实模板不外乎正则匹配替换而已。其官网为:http://www.phpyun.com。
四:Crawler4j(Java)
Crawler4j是一个开源的Java类库,提供了一个用于抓取Web页面的简单接口。可以利用它来构建一个多线程的Web网络爬虫。网
络爬虫是构建搜索引擎必备的软件,Crawler4j的代码量不是很大,初学者可以去看看。
五:IK Analyzer(Java)
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包,最初,它是以开源项目Luence为应用主体的,结合
词典分词和文法分析算法的中文分词组件,很典型的,值得推荐。
六:Lucene(Java)
Lucene是Apache软件基金会项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引
擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,可以用来构建自己的搜索引擎,代码量有些大,只能研究
其中的部分内容,其中有很多算法的,其索引结构也是使用了大部分搜索引擎使用的倒排索引。
七:Hadoop(Java)
一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集
群的威力高速运算和存储。其实Hadoop是项目的统称,旗下包含很多子项目,能力有限,只研究了其HDFS和MapReduce部分,这两部分也是Hadoop最重要的部分。其中HDFS是一个分布式的文件系统,由一个NameNode节点和多个DataNode节点组成一个集群系统,HDFS实现了自己RPC机制,看了的确拍案叫绝。而MapReduce是用于并行处理大数据集的软件框架,其代码比较复杂,没研究完整,到现在我还很糊涂,还是HDFS比较好理解。Hadoop是后面才研究的,这里放前面是为了和前面几个都用Java开发的放到一起。
八:Memcached(C语言)
Memcached是一个高性能的分布式内存对象缓存系统,一般用于动态Web应用以减轻数据库负载。其使用了libevent的事件处理
模型,libevent是个程序库,它将Linux的epoll事件处理功能封装成统一的接口,在研究Memcached时,顺便看了libevent的部分代
码,很精悍易用。Memcached是大流量网站必备的缓存软件之一。
九:LevelDB(C++)
Leveldb是一个Google大牛实现的非常高效的基于key/value的NoSQL数据库,目前的版本1.2能够支持billion级别的数据量,其
代码结构相当复杂,内部存储结构也很复杂,看的头晕脑胀,哎,大牛的代码伤不起啊。
十:Nginx(C语言)
Nginx是一个高性能的HTTP和反向代理服务器,其代码量有十几万行,当然不可能看完,哪有那么多时间啊,对吧,不吃不睡也
要很多时间才能看完啊,只能看了其中的部分代码,了解其启动流程,高并发机制,以及对HTTP静态文件的请求和处理方式。
由于精力有限,以上项目有些只能研究部分代码,不可能研究完整,而且也没有必要看全部代码,只要了解其原理和实现方式
就够了,真正的细节也就是一般的代码和算法而已,对于以上项目有兴趣的朋友可以一起探讨或者到网上查相关资料,都有的,你
懂的。就写到这吧。