赞
踩
如果大家详细的分析一下自己所从事过的项目,或者分析一下目前热门招聘岗位,就可以抽取一些公共的技术(或者基础技术),如果能熟练掌握这些基础技术,对开发工作将达到事半功倍的效果,同时对以后跳槽也有很大的帮助。如果本文直接说出这些技术概念,大家肯定非常清楚,但达到熟悉的程度确实难上加难。因此,本文搜集了目前比较流行的几个开源项目,这些项目中基本上包含了这些技术,如果大家能把这些开源项目学透,在以后的开发工作中将如鱼得水。
Redis的全称是REmote DIctionary Server,由Salvatore Sanfilippo写的key-value存储系统,更多的场景是作为数据库的前端缓存。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,其最大的特点是可以基于网络进行访问。虽然称为KV数据库,但Redis支持的值类型非常丰富,可以是字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类类型。
废话说了这么多,那么我们可以从这个开源项目学到什么内容呢?具体来说主要可以学习如下内容:
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。详细进行Web开发和运维的同学没有不知道Nginx的,它既可以做Web服务器,又可以做反向代理实现负载均衡。
Nginx的代码非常值得阅读,通过阅读其代码可以熟悉如下内容:
Leveldb是一个google实现的非常高效的kv数据库,RocksDB功能与其相同,但其内部做了很多完善和改进。两者都是在互联网领域应用广发的开源项目。
学习其源代码可以对如下领域有更加深入的理解:
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQlite的代码量才1万行左右,去掉注释后5千多行,代码量不大,注释丰富,非常适合学习。
阅读其代码可以对关系型数据库的实现细节有深入的了解。特别是数据的组织、磁盘访问和数据一致性的保证等。
Nginx的代码量是比较大的,几万行的代码阅读起来可能比较吃力。如果想了解HTTP协议的具体实现,由不太敢阅读Nginx的代码怎么办?正好有个替代方案,那就是tinyhttpd,它是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。
好了,先介绍到这,相信还有很多值得学习的开源项目,这里就不一一介绍了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。