beihai

beihai blog

Redis db 的实现 · Analyze

在了解 Redis 的底层数据结构之后,Redis 是如何将这些碎片化的数据以键值对的形式存储在数据库中,并执行内存回收操作,Redis 数据库的实现又存在哪些特殊之处?这篇文章将会分析 Redis 数据库的实现。

Redis ll2string 算法

Redis 内部一个有趣的小算法,将`long long` 类型转换为 `string` 类型数据。这个算法的原理十分巧妙,在一些编程语言中也有类似的实现方式。

Redis 对象的实现 · Analyze

Redis 内部实现了一组比较全面的数据结构类型,但并没有直接使用这些数据结构来实现键值对数据库,而是构建了一个对象系统,利用对象系统将这些数据结构进一步封装。对象系统的设计不但可以针对不同的使用场景,为一种键值对设置不同的底层数据结构,还简化了键值对的回收、共享等操作。这篇文章将简要分析 Redis 对象系统的实现。

为什么进程 fork 采用写时复制 · Why

fork 是目前使用最广泛的进程创建机制,进程通过系统调用函数 fork 能够创建若干个新的进程,前者称为父进程,后者称为子进程。为了减少进程创建的开销,现代操作系统会使用`写时复制`技术,父进程与子进程共享同一内存空间,从而实现数据的“拷贝”,这篇文章将会分析这个问题。

浅论并发编程中的同步问题 · Analyze

为什么要考虑同步问题?在很多时候,我们需要多个进程或线程之间相互配合完成一个任务,多个串行程序可能都要对一个共享资源进行访问,或者相互传递一些数据。这种情况下,我们需要协调程序的执行。同步的作用是避免在并发访问共享资源时可能发生的冲突,以及确保有条不紊地传递信息。

浅析进程与线程的设计 · Analyze

并发这个概念由来已久,其主要思想是使多个任务可以在同一个时间段内下执行以便更快地得到结果。最早支持并发编程的语言是汇编语言,不过那时并没有任何的理论基础来支持这种编程方式,一个细微的编程错误就可能使程序变得非常不稳定,而且对程序的测试也几乎是不可能的。随着计算机软硬件技术的发展,如今并发程序的编写早已没有以前那么复杂。做为并发编程中的底层基础,本篇文章将会浅入浅出,简要分析进程与线程的设计原理。

04-文本文件处理

一个 Web 应用应该具有哪些特性,开发过程中注意哪些问题,这是我在初学 Web 时常常思考的问题。在此系列中作者不会用长长的列表指出开发者需要掌握的工具、框架,也不会刻画入微地去深究某一项程序设计的实现原理,旨在为初学者构建知识体系。如果你有想了解的问题、错误指正,可以在文章下面留言。

03-Web 服务

一个 Web 应用应该具有哪些特性,开发过程中注意哪些问题,这是我在初学 Web 时常常思考的问题。在此系列中作者不会用长长的列表指出开发者需要掌握的工具、框架,也不会刻画入微地去深究某一项程序设计的实现原理,旨在为初学者构建知识体系。如果你有想了解的问题、错误指正,可以在文章下面留言。

02-Web 基础原理

一个 Web 应用应该具有哪些特性,开发过程中注意哪些问题,这是我在初学 Web 时常常思考的问题。在此系列中作者不会用长长的列表指出开发者需要掌握的工具、框架,也不会刻画入微地去深究某一项程序设计的实现原理,旨在为初学者构建知识体系。如果你有想了解的问题、错误指正,可以在文章下面留言。