| layout | default |
|---|---|
| title | Categories |
该页面开头是主要分类及其介绍,主要是可以根据分类进行查询,后面会有根据标签(tags)的全部文章的分类,和侧边相似。
{: .pull-center}
从 1994.3 Linux1.0 发布到现在,几乎可以说 Linux 已经成为最流行的操作系统,涉及到了服务器、桌面、嵌入式等多种场景,而且支持绝大多数平台。
鄙人从大三开始用 Linux,开始就是看着 Ubuntu 的 3D 桌面比较酷,然后开始零零散散地使用,一直到现在,几乎所有的日常操作都在使用 Linux 的桌面发行版;目前使用的是 CentOS 版本。
在此,仅介绍 Linux 相关内容,包括了常用的方法,以及相应的内核介绍。
对与内核中网络部分的介绍。
- Linux 网络协议栈简介,简单介绍一下与 Linux 协议栈相关的内容。
- Linux 网络设置,Linux 中一些常见的网络设置。
- Netstat VS. ss,netstat 和 ss 命令是比较典型的网络监控工具,在此介绍对比下。
- Linux 常用网络命令,简单记录常用网络命令,如 tcpdump、netcat 等。
- Linux 网络常见监控项以及报错,与网络相关的调试、查看方法,当然也包括了报错相关的内容。
- Linux 通讯协议,简单记录下 Linux 常见的通讯协议,如 SNMP 协议。
- Linux 的防火墙,Linux 中的防火墙策略,包括 netfilter 和 iptables 。
- TCP/IP 协议简介,简单介绍一下与 Linux 协议栈相关的内容。
- TCP/IP 协议之 TIME_WAIT,简单介绍下 TCP 协议栈中,TIME_WAIT 这一特殊的状态值。
实际上现在很火的 Docker 的底层是基于容器的,这部分也比较复杂,所以就单独摘出来。
- Linux Chroot,这实际上是做目录隔离的方法,也是最初的一种方式。
- LXC 简介,对 Linux Container 的简单介绍,包括如何安装、新建、启动容器等操作。
- LXC sshd 单进程启动,介绍如何启动一个单进程,对于资源隔离有很大的参考意义。
- 容器之 CGroup,介绍 CentOS 中 systemd 以及 cgroup-tools 相关的内容。
Nginx 一款轻量级且高性能的 Web 服务器、反向代理服务器,通过 C 语言编写;另外,还包括了前端相关的内容。
- Nginx 入门,介绍一些常见的操作,例如安装、启动、设置等。
- Nginx 监控,关于 Nginx 的简单监控内容。
- Nginx 源码解析,介绍主要的代码实现过程。
- Nginx 通用网关,与 CGI 相关的内容,以及部分的实现。
- Nginx 日志解析,简单介绍 Nginx 中的日志,以及原子写入的简介。
- Nginx https,简单介绍如何使用 Nginx 搭建 https 服务。
- HTTP 协议简介,简单介绍下 HTTP 内容以及其演变过程。
- HTTPS 协议详解,简单介绍下 HTTPS 协议是如何实现的
记录与监控相关的内容。
- Linux 监控,简单记录一下在 Linux 监控中一些比较常见的工具、网站、资料等信息。
- Linux 监控之 CPU,简单介绍下 Linux 中与 CPU 监控相关的内容。
- Linux 监控之 Memory,简单介绍下 Linux 中与 Memory 监控相关的内容。
- Linux 监控之 IO,简单介绍下 Linux 中与 IO 监控、测试相关的内容。
- Linux 监控杂项,简单列举一些常见的监控工具 (sar, top),以及配置方式等。
- Dstat 使用及其原理,一个使用 Python 编写的跨平台监控工具。
- Systemtap,介绍内核神器 Systemtap 的使用方式,包括了如何使用最新的安全特性。
- Collectd 简介,一个 C 语言编写的多线程监控采集程序,对其进行简单的介绍。
- Collectd 源码解析,详细介绍 Collectd 的源码实现。
介绍下 Linux 内核相关的内容。
- Linux 内核编译,简单介绍如何手动编译内核。
- Linux 硬件启动,从内核加电之后,简单介绍如何从硬件加载启动。
- Linux 启动过程,通过 GRUB 启动之后,然后开始加载内核,再次简单介绍。
- Linux 内核模块,简单介绍下 Linux 中的内核模块编写,包括了内核签名机制的配置。
- Linux 系统调用,简单介绍下 Linux 中系统调用相关的内容。
- Linux 调度系统,与内核的进程调度相关的内容。
- Linux 进程相关,简单介绍进程相关的东西,如进程创建、优先级、进程之间的关系等。
- Linux IO 多路复用,通过 IO 复用,可以有效提高程序的效率,增加吞吐。
- Linux 共享内存,Linux 中与共享内存相关的内容。
- Linux 物理映射,x86 中逻辑地址到物理地址的映射关系,包括了具体的实验。
- Linux 映射文件,也就是 mmap() 函数的使用方法。
- Linux 内存-用户空间,用户空间的内存管理,包括了内存的布局、内存申请等操作。
- Linux 内存-内核空间,包括了内核中与内存相关内容,包括了初始化、内存分配等。
- Kernel 内存杂项,简单介绍下内核中与内存相关的内容,以及常见的故障处理。
简单介绍下与 C 语言相关的内容。
- libev 事件库,一个 C 编写的高性能事件循环库,类似库还有 libevent、libubox 等。
- libev 时间处理,简单介绍下 libev 库中与时间相关的内容。
- C 语言的字符串,简单介绍下 C 语言中与字符串、内存操作相关的函数。
- C 语言的奇技淫巧,整理下 C 语言中常用的技巧。
- C 编译链接,与 C 语言相关的编译链接概念
- C 加载过程,通过动态库可以减小空间,提高效率,这里简单介绍加载过程。
- C 网络编程,简单介绍下,在 Linux C 中进行网络编程时常用到的一些技巧。
- Linux 线程编程,简单介绍下 Linux 中与线程相关的编程。
- Linux 线程同步,线程编程时经常使用的同步方式,如锁、条件变量、信号量等。
- Linux 时间函数,简单介绍下 Linux 中与时间相关的函数。
- Linux IO 多路复用,通过 IO 多路复用提高系统性能,包括了 select、poll、epoll 。
- Linux AIO,简单介绍下 Linux 平台下的异步读写模型。
简单介绍下与 Java 语言相关的内容。
- Java 环境搭建,简单记录一下 Linux 下的 Java 环境搭建,以及使用方法。
- Java JDBC 驱动介绍,先看 JDBC 的使用方法,然后看看其具体的实现原理
- Java C 程序调用,简单介绍下 Java 和 C 程序的相互调用。
主要是 Linux 下与安全相关的内容。
- 加密算法简介,简单介绍一些常见的加密算法等。
- PGP 简介,一个基于公钥加密体系的加密软件。
- Linux 密码管理,简单介绍下 Linux 中的密码管理。
- SELinux 简介,一种强制存取控制的实现。
简单记录一些乱七八糟的东西。
- Linux 用户管理,简单介绍 Linux 用户管理相关的内容。
- CentOS 安装与配置,简单介绍 CentOS 在安装时需要作的一些常用配置。
- Linux 自动编译,简单介绍 Linux 下的自动编译工具,如 Makefile、Autotools 等。
- RPM 包制作,如何在 CentOS 中创建 RPM 包。
- Linux 常用技巧,简单记录了一些在 Linux 中常用的技巧。
- Linux 常用命令 -- 文本处理,简单介绍下 Linux 常用的文本处理方式。
- Linux 常用命令 -- 杂项,常用命令,如 find 。
- TMUX 简介,一个终端复用工具,类似 screen 但是更加方便使用,更加高端。
- Linux 绘图工具,这是一个命令行驱动的绘图工具,支持多个平台。
- Bash 相关内容,一些与 Bash 相关的内容,如命令执行顺序、配置文件等。
- Bash 重定向,简单介绍 Bash 中 IO 重定相关的内容,包括其使用方法。
- Logrotate 使用方法,一个不错的日志切割管理程序。
- Linux 后台服务管理,介绍目前常用的后台服务管理。
- 你所不知道的定时任务,也就是 Linux 中如何使用 crontab,以及常见错误。
- Linux 时间同步,介绍部分与时间相关的概念,例如时区、闰秒、夏令时、NTP 等。
- Systemd 使用简介,一般新发行版本采用的是 systemd,在此简单介绍下。
- Rsync & Inotify,通过这两个命令可以快速实现文件的同步。
- VIM 使用简介,一个功能强大、高度可定制的文本编辑器,简单介绍。
{: .pull-center}
MySQL 是一款最流行的开源关系型数据库,最初由瑞典的 MySQL AB 公司开发,目前已被 Oracle 收购,现在比较流行的开源分支包括了 MariaDB 和 Percona。
其中 MariaDB 由 MySQL 创始人 Michael Widenius 主导开发,主要原因之一是:Oracle 收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。为了与原 MySQL 区分,不再使用原来的版本号,而是采用新的 10.0。
Percona 是最接近官方 MySQL Enterprise 发行版的版本,也就是说它提供了一些 MySQL 企业版采用的功能,并且包括了一些比较好用的常用工具。其中的缺点是,为了确保对产品中所包含功能的控制,他们自己管理代码,并不接受社区开发人员的贡献。
- MySQL 写在开头,主要保存一些经常使用的 MySQL 资源。
- MySQL 简单介绍,简单介绍 MySQL 常见的使用方法,包括安装启动、客户端使用、调试等。
- MySQL 基本概念,介绍 MySQL 中一些基本的概念,包括了 SQL、JOIN、常见测试库等。
- MySQL 监控指标,包括了一些 MySQL 常见的监控指标及其含义等。
- MySQL Handler 监控,主要介绍下监控指标中与 handler_read_* 相关的内容。
- MySQL 用户管理,一些用户相关的操作,包括了用户管理、授权、密码恢复等。
- MySQL 通讯协议,简单介绍 MySQL 的服务器与客户端是如何进行通讯的。
- MySQL 语法解析,SQL 的处理过程包括了词法分析、语法分析、语义分析、构造执行树等。
- MySQL 插件详解,关于 MySQL 中一些插件功能的实现,主要是一些通用插件的介绍。
- MySQL 存储引擎,介绍下与存储引擎相关的内容,包括了提供的接口,实现方法等。
- MySQL 线上部署,简单记录一些线上部署时常见的配置内容。
- MySQL 执行简介,简单介绍 MySQL 中的查询最终是如何执行的。
- MySQL 自带工具,简单介绍下 MySQL 中自带的工具集。
- MySQL 常用工具,一些运维过程中常见的三方工具,包括压测工具。
- MySQL Sandbox,本地搭建多个 MySQL 实例的工具,包括主备、循环复制、一主多备等等。
- MySQL 启动脚本,详细介绍下 mysqld_safe 脚本的执行流程。
- MySQL Core 文件,一些关于 CoreDump 文件以及 debuginfo 的介绍。
- MySQL 关闭过程,简单分析下 mysqld 进程关闭的过程,以及关闭过程中执行的操作。
- MySQL 杂项,简单记录下 MySQL 常见的一些操作。
- MySQL 日志相关,一些常见的日志介绍,同时也包括了 binlog 的详细介绍。
- MySQL 组提交,主要是关于 binlog 的组提交实现,介绍各个阶段的实现原理。
- MySQL 复制方式,数据复制方法,也是一些高可用解决方案的基础,介绍概念、配置方式。
- MySQL 复制源码解析,从源码的角度看看复制是如何执行的。
- MySQL 半同步复制,关于半同步复制的详细解析,包括了源码的实现方式。
- MySQL GTID 简介,主要介绍下 GTID 配置、实现方式,有那些限制,运维场景等。
- MySQL Crash-Safe 复制,在主备复制时,如何保证数据的一致性,当然主要是备库。
- MySQL 主备数据校验,由于各种原因,主从架构可能会出现数据不一致,简单介绍校验方式。
- MySQL 高可用 MHA,相对成熟的方案,能做到30秒内自动故障切换,且尽可能保证数据一致性。
- MySQL 组复制,也就是基于 Paxos 协议变体实现,提供了一种高可用、强一致的实现。
- InnoDB 简单介绍,介绍一下与 InnoDB 相关的资料。
- InnoDB 隔离级别,主要介绍下 InnoDB 中如何使用事务的隔离级别。
- InnoDB Redo Log,介绍 redo log 相关。
- InnoDB Checkpoint,介绍 InnoDB 中与 checkpoint 相关内容,包括如何写入、何时写入。
- InnoDB Double Write Buffer,介绍为什么会有 dblwr 机制,以及 InnoDB 中如何实现。
- InnoDB 崩溃恢复,简单介绍下在服务器启动的时候执行崩溃恢复的流程。
{: .pull-center width="521"}
PostgreSQL 可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多。
PostgreSQL 基本上见证了数据库理论和技术的发展历程,由 UCB 计算机教授 Michael Stonebraker 于 1986 年创建。在此之前,Stonebraker 教授主导了关系数据库 Ingres 研究项目,88 年,提出了 Postgres 的第一个原型设计。
MySQL 号称是使用最广泛的开源数据库,而 PG 则被称为功能最强大的开源数据库。
- PostgreSQL 简单介绍,简单介绍 PG 的使用方法,如安装启动、客户端使用、调试等。
- PostgreSQL 结构及权限,介绍 PG 中常见的概念,如 Schema、Database 等,以及权限管理。
- PostgreSQL C 语言编程,PG 通过 libpq 库提供 C 语言对外的 API 接口,这里简单介绍使用方法。
- JavaScript 环境,介绍 JavaScript 常用工具,如 node、npm、WebPack 等。
- JS React 语法简介,介绍 JS 和 React 的一些常见语法规则,以及调试工具。
- React 简明教程,通过一些示例简单介绍 React 的使用方法。
{: .pull-center width="420"}
通常当我们讨论 Python 时,指的是 Python 语言以及 CPython 实现。而实际上 Python 只是一种语言的规范,可以根据该规范使用不同的语言去实现相应的解析器,除了 CPython 之外,常见的还有 PyPy、Jython、IronPython、MicroPython 等。
对于传统语言,如 C/C++ 等,会直接将代码编译为机器语言后运行,而对于不同的平台或者 CPU 需要重新编译才可以,而 Python 可以直接跨平台运行。
CPython 通过 C 语言实现,也是目前使用最为广泛的版本,虽然 PyPy 现在的发展势头不错,不过估计短时间内还是不会替代 CPython。CPython 也需要编译 (编译成字节码),然后运行,其核心实际上是一个字节码解析器 (Bytecode Interpreter),用于模拟堆栈操作,或者称之为 Virtual Stack Machines。
如果没有特殊说明的话,在此特指 CPython;另外,比较想提一下的是 MicroPython,这是一个用于微控制器的 Python 实现 ^_^
Just More Pythonic ~~~
记录 C 语言实现的 Python 的简介。
- Python 基本语法,一些常见容易混淆的概念。
- Python 模块简介,简单介绍一下 Python 中的模块,以及一些常用的模块。
- Python 的垃圾回收,详细介绍 Python 特有的垃圾回收机制。
- Python 动态执行,允许通过 exec 和 eval 执行以字符串形式表示的代码片段,这里简单介绍。
- Python ORM 简介,简单介绍一些常用 ORM 工具,及其使用方法。
- Python 常用工具,一些常用的工具,例如 pyenv、virtualenv 等。
- Python 杂项,记录了 Python 中常见技巧,一些乱七八糟的东西。
一个使用 Python 编写的轻量级 Web 应用框架,采用 BSD 授权。
- Flask 简介,简单介绍 flask 的安装、配置、使用,常用的三方模块等。
- Flask 常见示例,包括了 Flask 中的一些常见示例,可以作为参考使用。
- Nginx uWSGI Flask,这里简单介绍如何通过 Nginx + uWSGI 搭建 Flask 运行环境。
- Flask 请求处理流程,介绍一次请求所经过的处理过程。
- Flask 上下文理解,主要介绍上下文、session 的使用以及源码的实现。
- Flask 路由控制,介绍 flask 中 URL 是如何进行路由的。
- Flask 单元测试,简单介绍对 flask 进行单元测试。
记录乱七八糟的东西。
- Python 常用工具,介绍一些 Python 中经常使用,比较经典的工具,如 virtualenv 。
- SaltStack 简介,一个轻量级的运维工具,具备配置管理、远程执行、监控等功能。
- Ansible 简介,一个配置管理工具,无需安装服务端和客户端,只要有ssh即可,而且使用简单。
- Python 异步任务队列,介绍一些常用的调度系统,如APScheduler、Redis Queue、Celery等。
- ZeroMQ 简介,一个 C++ 编写的高性能分布式消息队列,非常简单好用的传输层。
{: .pull-center width="350"}
Golang 从 2007 年末由 Robert Griesemer、Rob Pike、Ken Thompson 主持开发,后来还加入了 Ian Lance Taylor、Russ Cox 等人,最终于 2009 年 11 月开源,在 2012 年发布了稳定版本。
实际上,Golang 基于现有的技术实现,例如协程 (Coroutine)、IO 多路复用 (multiplexing)、异步 IO 等,然后在此之上进行了一些原语的封装。开始 Golang 包含了很多 C 语言代码,在 1.5 版本开始,包括运行时 (runtime)、编译器 (compiler)和连接器 (linker) 也都全部是由 Golang 所编写。
现在 Golang 的开发已经是完全开放的,并且拥有一个活跃的社区。简单来说,Golang 是一个开源、高并发、高效的编程语言,支持垃圾回收,具有很好的可伸缩性。
而且,越来越多的项目开始使用 Golang 进行开发,例如 Docker、LXD、InfluxDB、etcd 等等。另外,与 Golang 类似的高并发语言还可以参考 Rust、Elixir 。
- GoLang 简介,主要介绍 Golang 的环境搭建,常用工具等。
- GoLang 如何编码?,一篇官方文章的翻译,介绍如何进行编写代码。
- GoLang 语法简介,简单介绍常见的语法,例如 import、异常处理、反射等。
- GoLang 语法之接口,相比来说接口要复杂很多,这里拆出来单独讨论。
- GoLang 常用模块,常见的三方模块使用,例如 log、unsafe 等。
- GoLang JSON 编码解码,简单记录使用 JSON 的常用技巧。
一个开源分布式时序、事件和指标数据库。
- InfluxDB 简介,简单介绍常见概念,如何安装,常用操作等。
一些杂七杂八的东西。
{: .pull-center width="125" }
Lua 在葡萄牙语中是 “月亮” 的意思,是一个小巧的脚本语言,官方版本只包括一个精简的核心和最基本的库,使得其体积小、启动速度快,从而特别适合嵌入到其它程序里。
这里简单介绍其使用方法。
- Lua 简介,简单介绍常见概念,包括安装、语法规则、常用模块等。
- Lua 协程,作为一种简单的语言,仍支持闭包、协程等较新的特性,简单介绍协程使用。
- Lua 源码解析,其核心代码总共才 2W 行左右,但是却实现了很多不错的特性。
- Lua CAPI 使用,简单介绍 Lua 和 C 之间的调用,常见的概念如栈、CAPI等概念。
{: .pull-center width="150" }
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现,一种命令行的远程登录工具,使用加密的远程登录实现,可以有效保护登录及数据的安全,同时提供了安全的文件传输功能。
这里主要介绍 SSH 一些常见的操作。
- SSH 简介,简单介绍 OpenSSH 相关的内容。
- SSH 代理设置,关于一些常见代理设置,如本地转发、远程转发、动态转发等。
- SSH Simplify Your Life,用来配置一些常见的设置,简化登陆方式。
- SSH 杂项,记录一些常见的示例。
{: .pull-center width="130" }
Git 是一免费、开源的分布式版本控制系统,可有效、高速的处理从很小到非常大的项目版本管理,该工具是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发,其本意是为了替换 BitKeeper 。
除了 GitHub 外,开源的工具还有 GitLab、Gogs,以及 C 的相关库 libgit2 。
这里简单介绍一下常见概念及其操作。
{: .pull-center width="210" }
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 简介,主要介绍 ETCD 如何使用,包括安装、部署、使用以及常见的介绍。
- ETCD 示例源码,源码中关于如何 RAFT 协议的示例代码,直接使用的是内存数据库。
- ETCD 源码解析,除了上述的示例代码,这里简单介绍其代码的实现。
{% for category in site.categories %}
- {% for post in category[1] %}
- {{ post.date | date: "%Y-%m-%d" }} {{ post.title }} {% endfor %}