这里将大部分 Blog 进行了归档,以便于查看,与 Hugo 相关可以参考 Cheat Sheets 中的常见命令以及 Hello World 示例,以及常见的 SEO 搜索优化技巧,可以参考本站的 robots.txt 以及 sitemap.xml,同时提供了 个人简历 。
编程语言
所谓的编程语言,也就是码农的工具,简单来说就是用来解释给机器如何执行,有问题还得调试,一耍脾气就要再研究几天,类似于猫奴,渺小的人类完全就是机器的奴隶。
即使如此,仍要注意:
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 。
- www.tiobe.com 各个语言的排名。
- turnoff.us 编程语言、Web、云计算、Linux 相关的漫画。
- build-your-own-x 要不要自己造轮子,这是个问题。
操作系统
从 1994.3 Linux1.0 发布到现在,几乎可以说 Linux 已经成为最流行的操作系统,涉及到了服务器、桌面、嵌入式等多种场景,而且支持绝大多数平台。
在此,仅介绍 Linux 相关内容,包括了常用的方法,以及相应的内核介绍。
- 环境搭建 包括了如何搭建 Linux 环境、相关工具以及对应的基本概念等。
- 容器专题 不只是与 cgroup 相关的容器,还有 ulimit 机制、chroot、虚拟化相关的内容。
- 运维监控 与 Linux 相关的指标监控和性能调优相关的内容,包括常用工具以及基本原理。
- 内核解析 内核机制相关的介绍,会包含部分内核源码内容。
- 安全相关 在 Linux 中与安全相关的概念,也包括了一些基础概念,包括了 SSH、TLS 等等。
- 网络相关 包含了一些基础的网络概念、常用软件、通讯协议等相关的介绍。
常用链接
比较经典的常用网站。
- Linux Inside 一个电子书,详细介绍了 Linux 相关的基本概念。
数据库
数据库管理系统,Database Management System 估计应该是除了操作系统之外的最为复杂的系统了,按照不同的方式可以分成不同的类型,例如关系型和非关系型。
包括了商业数据库 Oracle,开源的 MySQL、PostgreSQL等关系型数据库,小型的嵌入式 SQLite,还有最新的 OceanBase、TiDB 等分布式数据库。
- MySQL 使用最广的一款开源数据库,现在已经被 Oracle 收购,有多个类似 MariaDB、Percona 等衍生版本。
- PostgreSQL MySQL 号称是使用最广泛的开源数据库,而 PG 则被称为功能最强大的开源数据库。
ETCD
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 团队研发。