坚实的幻想

ON A CLEAR DISK YOU CAN SEEK FOREVER

用 awk 实现一个关系型数据库

AWK & relational DB

awk 的祖师爷 Brian W. Kernighan,写过一本 《The AWK Programming Language》,这本书一如 Brian W. Kernighan 的其他书,简明扼要却不乏深入。更厉害的是这本书在淘宝上的售价居然高达 1000 多。 书中用 awk + 纯文本数据模拟了一个微型的关系型数据库外加一个数据库查询语言编译器,看完真让我感觉脑洞大开。 本文将整个过...

计算机原理 —— 计算机是如何启动的

How computer booted

这是来自于 Gustavo Duarte 博客的一系列的计算机内部原理的科普文章,本人出于兴趣翻译过来。原文:How Computers Boot Up 上一篇文章讲了 Intel 系统的主板与内存映射。计算机启动是一个复杂的,充满黑科技的(原文是 hacky),多阶段的过程。这里是整个过程的概要图: 当你按下电源键的那一刻,计算机的的启动就开始了。当主板启动后,它开始初始化...

计算机原理 —— 主板与内存映射

Motherboard and memory map

这是来自于 Gustavo Duarte 博客的一系列的计算机内部原理的科普文章,本人出于兴趣翻译过来。原文:Motherboard Chipsets and the Memory Map 我打算写几篇关于计算机内部原理的文章,来帮助解释现代操作系统内核是如何工作的。我希望这些文章能对那些对这部分内容感兴趣但又没有相关经验的爱好者和程序员们有所帮助。文章主要关注 Linux,Win...

DNS 与 BIND

DNS 简述 DNS 的全称是 Domain Name System,DNS 负责主机名字之间和互联网络地址之间的映射,在我们上网或者发送电子邮件的时候,一般都会使用主机名而不是 IP 地址,因为前者更容易记忆,但是对于计算机,使用数字(IP 地址)则更为方便。DNS 能够帮助我们将主机名转换成计算机更容易识别的 IP 地址。从而完成主机之前的通信。 DNS 发展史 20 世纪 60年代...

Linux Kickstart 自动安装

Unattended installation with kickstart

从系统安装说起 在 RHEL,CentOS,Fedora 等系统中,安装系统使用的程序名叫 anaconda,它属于 FedoraProject,由 Python 开发,能够提供图形或者文本界面用于系统安装。 在安装系统之前,计算机的硬件上可能是没有操作系统的,因此为了能够运行安装程序,需要一个临时的操作系统,引导开机,启动安装程序,在使用光盘安装操作 linux 系统(这里特指 RHEL...

Linux 进程的管理与监控

Process Management

这篇文章主要讲 Linux 中进程的概念和进程的管理工具。 进程的概念 什么是进程 进程(Process)是计算机中程序执的实体。程序通常是由指令和相关数据组成的,在 Linux 系统中,程序的运行通常是由用户通过一个命令行解释器(例如 bash shell)发起执行,或者由其他进程派生而来。 进程标识符 每个进程都有一个非负整数表示的唯一标识符,进程运行时 PID 是由操作系统随机分配...

我的 2014 书单

Book list of 2014

2014 年是我工作的第一年,这一年的进步还是很明显的,阅读是最好的知识获取方式。临近年终,总结一下今年读过的书,其中大部分是在 kindle 上阅读的,一部分英文书是在电脑上阅读的 PDF 版本,还有几本纸质书。 有了 kindle 之后开始大量阅读电子书,人文类书籍适合看 epub/mobi 电子版本,多看,亚马逊这些书城已经可以覆盖大部分的常见书了。PDF 版本的书非常适合英文版的技...

Linux 共享库指南

Shared Library in Linux

初学 Linux 时,常常被系统中各种库文件和链接弄得摸不着头脑,它们分别有什么作用?本文解释了 Linux 中使用共享库时的约定与行为。 动态库和静态库 库文件是编译好的程序,这类程序通常没有执行入口,需要其他程序的调用才会执行。 Linux 中的 so(shared object,共享对象) 也叫做动态链接库,在 Linux 中是一系列以 .so 为后缀名(后面可能还跟有版本号)的...

Linux 性能优化之 IO 子系统

Dive into IO subsystem

本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具。 本文的大部分内容来自 IBM Redbook - Linux Performance and Tuning Guidelines FileSystem VFS(Virtual FileSystem) 虚拟文件系统 文件系统是内核的功能,是一种工作在内核空间的软件,访问一个文件必须要需要...

MySQL 运行环境优化(Linux)

小白的数据库调优指北

数据库系统通常是企业的核心应用,因此针对运行 MySQL 的 Linux 系统通常需要进行一些特殊的优化。 本人非 MySQL 大牛,本文不涉及 MySQL 参数优化,仅对 Linux 系统优化进行一些总结。 CPU 现代操作系统都是多任务多用户的操作系统,服务器能够支持的CPU数量也越来越多,对于多CPU的服务器有多种架构,常见的是 NUMA 和 SMP. SMP SMP 即 S...