dirtysalt's homepage

Table of Contents

1 On The Top

2 Operating System

3 Network Programming

  • UNP Unix网络编程(Unix Network Programming),W. Richard Stevens的又一神作。笔记里面只是对于TCP原理有比较详细讨论,这部分笔记也包含了TCP Illustrated v1里面和TCP相关的章节内容。对于编程方面也着重TCP socket使用,毕竟在大部分应用场景下面我们选用TCP模型更多,并且TCP里面有很多非常琐碎的知识。
  • itachi 自己两天时间写完的异步网络编程框架,当然有很多地方需要改进,但是内核基本稳定了。并且在上面做了asocket封装,编写网络程序非常方便。
  • libev 开源的事件触发器。被认为是更高效的libevent. itachi 这个项目开始想自己编写事件触发器,但是发现工作比较琐碎枯燥,所以底层还是选择使用libev.
  • hpserver 开源的网络编程框架。可以当做一个入门级的网络编程框架阅读。这个是我最开始阅读的网络编程框架(1st).
  • nmstl 开源的网络编程框架。一个很早期的作品,代码十分简洁。主要是内部实现了SEDA的思想。这个是我第二个阅读的网络编程框架(2nd).
  • muduo 开源的网络编程框架。作者理想中的网络编程框架实现,里面有很多mina/netty的影子。这个是我三个阅读的网络编程框架(3rd).
  • kylin Baidu in-house的异步编程框架,是linsd(百度首席架构师林仕鼎)的神作,通过阅读这个框架的代码让我理解了异步编程模型。这个是我第四个阅读的网络编程框架(4th).
  • zeromq 开源的消息传输系统。颠覆我们思考和编写网络通信程序的方式。
  • ACE 开源的网络编程框架。非常重量级,也被人诟病为学术产物而不是适合生产实践。
  • netty an asynchronous event-driven network application framework in Java based on Java NIO.
  • nginx an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). (简直就是webserver里面的要你命3000啊!)
  • 深入NGINX:我们如何设计它的性能和扩展性
  • finagle an extensible RPC system for the JVM, used to construct high-concurrency servers.
  • HAProxy 高性能的负载均衡器,可以提供4(TCP),7(HTTP)层反向代理。
  • gunicorn Python WSGI HTTP Server. green unicorn(Ruby实现)

4 Storage System

  • Storage System Reading 存储系统方面的一些文章
  • SSD solid state disk. 固态硬盘
  • RAID Redundant Array of Inexpensive Disk. 廉价磁盘冗余阵列
  • DBMS (database management system) Intro & Impl
  • gizzard a library for creating distributed datastores 可以认为是数据库中间层,完成partition/replication,也做fault-tolerant migration. (obsolete)
  • leveldb Google的开源kv存储系统。支持billion级别的数据量,适合于写少读多的情况。当时阅读的时候是从github上面clone下来的,可能还存相当多的bug.
  • mongodb 面向文档的分布式存储系统,但是却可以针对文档字段索引来加快查询。功能上比通常我们认为的NoSQL强但是弱于RDBMS.
  • redis 内存存储系统,支持丰富的数据类型以及相应的计算(支持持久化)。外围包装网络访问接口(并且提供了丰富的客户端),可以比较方便地在分布式系统内或者是环境下面使用.
  • mysql 开源关系型数据库。The world's most popular open source database.
  • galera 基于MySQL的同步多主备份集群(synchronous multi-master replication cluster).
  • memcached an in-memory key-value store for small chunks of arbitrary data (strings, objects) 可以用来搭建分布式缓存服务,没有持久化存储。
  • rocksdb A persistent key-value store for fast storage environments. 基于 leveldb 构建
  • rcfile / orcfile / parquet 几种列式存储(columnar storage)实现

5 Distributed System

notes

articles

papers

6 Algorithm

7 Programming Language

  • Thoughts on Prog Lang
  • build-system 在实现Baidu in-house的构建工具 Comake2 之前做的构建系统调研总结.
  • C/C++ # C++ (pronounced "cee plus plus") is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. Wikipedia
  • Scheme # Scheme is a functional programming language and one of the two main dialects of the programming language Lisp. Wikipedia
  • Java # Java is a programming language originally developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. Wikipedia
    • maven 针对JVM语言项目的"基于工程对象模型(POM, Project Object Model)"构建系统
    • JNI Java Native Interface
    • JVM Java Virtual Machine
  • Clojure # Clojure (pronounced like "closure") is a recent dialect of the Lisp programming language created by Rich Hickey. It is a functional general-purpose language. Its focus on programming with immutable values and explicit progression-of-time constructs are intended to facilitate the development of more robust programs, particularly multithreaded ones. Wikipedia
  • Python # Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Its syntax is said to be clear and expressive. Python has a large and comprehensive standard library. Wikipedia
  • Go # Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc. Wikipedia
  • Scala # Scala is an object-functional programming and scripting language for general software applications, statically typed, designed to concisely express solutions in an elegant, type-safe and lightweight (low ceremonial) manner. Wikipedia

8 Software Design

articles

blogs

books

9 Machine Learning

10 Compression

11 Misc Books

comments powered by Disqus