AlexiaChen.github.io icon indicating copy to clipboard operation
AlexiaChen.github.io copied to clipboard

推荐阅读的开源项目代码

Open AlexiaChen opened this issue 5 years ago • 0 comments

前言

有我自己读过(一部分),没有读过且计划阅读的。这里以语言和领域来划分,我不会什么都推荐,没有口碑和个人接触过的就不推荐了,即使某个项目星星很多,所以并不是简单的名词罗列,不然就把自己github上标注的星星全部搬运过来了。

网络

  • TinyHttpd, C语言编写。个人全部读过,并不觉得很好,500行太短,也不是什么精髓,就是别人写出的玩具,如果非要说适合学习,那么适合超级小白,也就是大一,大二的学生。

  • muduo, C++ 11/14编写,比较现代,一个事件驱动的多线程网络库(Reactor模型),陈硕的个人作品。个人没有全盘读过,只读过日志实现部分,也是口碑好,所以推荐了。

  • cnetpp, 一个github用户个人作品,一个轻量的C++异步网络库,适合初学者,别人推荐的,我没有读过。

  • Webbench, C语言编写的一个Linux下的网站压测工具,非常简单,使用fork()模拟多个客户端,个人完全读过,没有什么太多值得学习的,也是适合大一,大二的学生阅读

  • Libev, Libuv, Libevent, 这三个库都是C语言的异步事件库,工业级的,个人没有读过。Libevent最复杂,可能libev简单精炼点,看别人推荐也是libev多些。

  • seastar, C++ 11编写的高性能异步事件驱动框架,整合了网络,文件等各个方面的异步,服务端的选择,别人推荐,个人没有看过。

  • Nginx, 个人没有读过,估计现在代码规模也大到几十万行了,但是资料多,可以对照特定版本看,章亦春老师写的源码剖析很多。

  • Netty,Java的高性能网络库,个人没有读过,很多人推荐。

  • Tomcat,Servlet容器实现,http实现都有,有人推荐看。

版本管理系统

  • Git, 个人没有读过,但是很多人读了git的早期版本(第一个commit),写的很简单,但是这些就是git的精髓。

数据结构与算法

  • TinySTL, 一个github的个人作品,C++ STL一些基本容器的实现,我感觉实现挺干净的,适合阅读,我几乎全部看过。没SGI STL规模大,适合STL入门。

  • SGI STL, 个人没有读过,完整的STL工业级实现,听很多人推荐,口碑好。侯捷的《STL源码剖析》就是用SGI讲解的。听说微软实现的STL完全不能看。

区块链

  • btcd, 比特币非官方的全节点实现,Golang版本。个人读过部分,参考过检查点实现的源码,用在了我司的项目上。没有全盘读过,不过扫了一眼,我觉得质量要比官方实现的C++版本可读性更高。比官方,实现还是少了很多东西。

  • Bitcoin, 比特币官方C++实现。个人读过部分,也是参考了某些代码。

  • Ethereum, 以太坊官方实现,Golang。据说现在很多区块链公司自己的链大部分是通过以太坊改的,我个人没有读过。所以作为区块链行业的程序员,应该花时间来读一读。

解析器

  • cJSON, ANSI C语言编写的JSON解析器,个人没有读过,口碑好,也是推荐了。

  • TinyXML2, C++编写的XML解析器,个人没有读过,但是从名字上看tiny,应该适合学习,所以推荐。

编译器

  • Lua, 纯C实现,实现得相当干净,手工用递归下降分析Lua语句,标准工业级的典范,阿里褚霸等等多位大神多次强烈推荐过。个人没有读过。

数据库

  • LevelDB, Google Jeff Dean大神的作品,工业级的嵌入式KV存储引擎。C++的用法不是那么现代,但是是入门LSM Tree这样的存储引擎的经典,个人读过一点点,memtable用了skiplist。网络上有无数资料和源码分析,都可以对照着来分析。

  • boltdb, Golang实现的嵌入式KV存储引擎,基于B+Tree。代码结构非常清晰,个人没有读过,但是口碑很好。

  • Redis, NoSQL数据库,性能非常高,业界出名,个人没有读过,听说它的网络模块值得一读。据说6.0已经出来了,单线程I/O已经改成了多线程I/O, 性能又提升了。以前网络上的文章一直说,I/O单线程就够用了,看来实际情况不是这样,趋势还是尽可能利用多核优势。

  • memcached, 以前业内也有名气,不过慢慢过时,C语言开发,个人读过早期版本的部分源码,那时候感觉代码实现比较烂,不好读。不知道现在行不行了。有人说它代码烂,也有人说清晰,也不知道这些人读的是哪个版本了。

  • SQLite, 单机嵌入式关系数据库,完整的ACID支持。纯C编写。个人没有读过,很多人说,要进入数据库领域,可以以SQLite源码切入。据说,其单元测试覆盖100%,极其变态,工业级中的工业级。

工具类大杂烩

  • Folly, FaceBook开源的现代C++的工具组件库,业界口碑很好,里面包含数据结构,算法等等,是STL和Boost的有效补充。个人没有看过。

  • Guava, Google开源的java常用基础类库,比较多。

  • OpenJDK,这个涉及有点多,这里主要推荐看concurrent这里面相关涉及并发的数据结构(HashMap等)和锁等等

  • disruptor, java的高性能并发框架。

ORM

  • MyBatis, java的一个有名的ORM框架,严格来说不是,但是有前阿里大神推荐。

权限框架

  • Apache Shiro, java写的权限框架,包括身份验证,授权,密码管理等。

AlexiaChen avatar Oct 08 '20 07:10 AlexiaChen