这里将大部分 Blog 进行了归档,以便于查看,与 Hugo 相关可以参考 Cheat Sheets 中的常见命令以及 Hello World 示例,以及常见的 SEO 搜索优化技巧,可以参考本站的 robots.txt 以及 sitemap.xml,同时提供了 个人简历

编程语言

Program Logo

所谓的编程语言,也就是码农的工具,简单来说就是用来解释给机器如何执行,有问题还得调试,一耍脾气就要再研究几天,类似于猫奴,渺小的人类完全就是机器的奴隶。

即使如此,仍要注意:

Programs must be written for people to read, and only incidentally for machines to execute.

  • 开发环境 包括了 git、vim、tmux 等基础开发平台的介绍。

语言

  • Lua 及其小巧的脚本语言,特别适合嵌入到其它程序中。
  • Bash 运维最常用的语言了,实际上就是将各种命令进行拼装。
  • Rust 一个面向编译器的语言,提供了令人头大的内存安全特性。
  • Webs 包含了前端相关的内容,除了 JavaScript 还有 HTML、CSS、React 等。
  • Java 由 Sun 公司推出的跨平台高级语言,周边扩展组件丰富,可以快速搭建应用。
  • C/C++ 最为简单基础的语言,如果是复杂应用建议 C++ 语言。
  • Python 一种解释型语言,相比其它语言要高效、严谨,在 DevOps 以及 AI 领域使用比较广泛。
  • GoLang 由 Google 主导开发的语言,在语言层面提供了协程支持,在云原生广泛使用。

其它

  • 算法详解 详细介绍常见的算法原理和实现。
  • 并发编程 包括了分布式和单机的并发编程,场景不同但是策略比较相似。

常用链接

一些常用的网站参考,还可以参考当前整理的 Awesome Projects

操作系统

Operation System Logo

从 1994.3 Linux1.0 发布到现在,几乎可以说 Linux 已经成为最流行的操作系统,涉及到了服务器、桌面、嵌入式等多种场景,而且支持绝大多数平台。

在此,仅介绍 Linux 相关内容,包括了常用的方法,以及相应的内核介绍。

  • 环境搭建 包括了如何搭建 Linux 环境、相关工具以及对应的基本概念等。
  • 容器专题 不只是与 cgroup 相关的容器,还有 ulimit 机制、chroot、虚拟化相关的内容。
  • 运维监控 与 Linux 相关的指标监控和性能调优相关的内容,包括常用工具以及基本原理。
  • 内核解析 内核机制相关的介绍,会包含部分内核源码内容。
  • 安全相关 在 Linux 中与安全相关的概念,也包括了一些基础概念,包括了 SSH、TLS 等等。
  • 网络相关 包含了一些基础的网络概念、常用软件、通讯协议等相关的介绍。

常用链接

比较经典的常用网站。

  • Linux Inside 一个电子书,详细介绍了 Linux 相关的基本概念。

数据库

Database Logo

数据库管理系统,Database Management System 估计应该是除了操作系统之外的最为复杂的系统了,按照不同的方式可以分成不同的类型,例如关系型和非关系型。

包括了商业数据库 Oracle,开源的 MySQL、PostgreSQL等关系型数据库,小型的嵌入式 SQLite,还有最新的 OceanBase、TiDB 等分布式数据库。

  • MySQL 使用最广的一款开源数据库,现在已经被 Oracle 收购,有多个类似 MariaDB、Percona 等衍生版本。
  • PostgreSQL MySQL 号称是使用最广泛的开源数据库,而 PG 则被称为功能最强大的开源数据库。

ETCD

RAFT Logo

PAXOS 算法从 90 年提出到现在已经有二十几年了,不过其流程过于复杂,目前较多的有 Chubby、libpaxos ,以及 Zookeeper 修改后的 Zookeeper Atomic Broadcase, ZAB 。

RAFT 是斯坦福的 Diego Ongaro、John Ousterhout 两人设计的一致性算法,在 2013 年发布了论文 《In Search of an Understandable Consensus Algorithm》,目前已经有近十多种语言的实现,其中使用较多的是 ETCD 。

  • RAFT 一个为真实世界应用建立的协议,注重落地性和可理解性。
  • 基本介绍 主要介绍 ETCD 如何使用,包括安装、部署、使用以及常见的介绍。
  • 示例源码 源码中关于如何 RAFT 协议的示例代码,直接使用的是内存数据库。
  • 源码解析 除了上述的示例代码,这里简单介绍其代码的实现。
  • 网络模块 包括了集群节点内部网络通讯,除此之外还有客户端与服务器之间的通讯。
  • 存储模块 核心的 RAFT 协议已经实现,不过存储模块需要单独实现,提供了 BoltDB 作为存储。
  • 一致性读 一致性越强,代价越高,同时应用也越友好。

时序数据库

类似监控、IoT 设备等,很多场景下需要通过时序数据库保存指标类似的数据。

  • 基本概念 介绍相关的基本概念、数据存储方式、数据格式等信息。
  • InfluxDB 开源解决方案,最初由 GoLang 编写,后面通过 Rust 进行了重构。
  • Beringei 由 FaceBook 开源的内存分布时时序数据库存储。
  • Prophet 用来处理单变量的时间序列,对于一些异常数据、周期性的数据比较好处理。

SQLite

SQLite 是一个开源的嵌入式关系数据库,一个简单无需配置的小型数据库,支持事物,在嵌入式设备或者小型应用中使用较多,例如 Android、Chrome、WeChat 等系统。

它在 2000 年由 D. Richard Hipp 发布,用来减少应用程序管理数据的开销,可移植性好、很容易使用、高效而且可靠。

  • 使用简介 包含基本的使用方式,以及需要注意的事项。
  • 优化实践 最简单的就是升级磁盘规格,除此之外,还有些常用方法。
  • 源码解析 介绍部分代码的实现原理。

其它

  • Memcached 高性能分布式内存缓存,通常用于缓存数据库查询结果。
  • Redis 同样是高性能分布式内存缓存,不过功能更多,维护也更加复杂。
  • Beanstalk 一个消息或者任务队列,支持优先级、延时、超时重发、预留等机制。
  • LMDB 嵌入式存储引擎,通过 mmap 实现,支持 B+Tree 索引、MVCC 能力。
  • BlotDB 通过 GoLang 编写的 KV 数据库,由 ETCD 团队研发。

其它

  • 数据仓库 介绍常见大数据组件的使用。
  • 人工智能 包含基础原理的介绍以及对应的代码实践。