殷东亮的博客

操作系统的设备管理

Apr 28, 2021
操作系统

计算机除了 CPU、内存、硬盘,还需要各种设备才能实现对计算机的操作。本文讨论计算机是如何管理设备的输入输出的。 设备控制器 # 设备控制器接收 CPU 发来的命令,去控制 I/O 设备工作,使 CPU 从繁杂缓慢的设备控制事务中解 ...

操作系统的文件系统

Apr 22, 2021
操作系统, Linux

文件是操作系统进行存储时使用最多的抽象之一,在 Linux 中,一切皆文件。本文以 Linux 为例,介绍下文件系统中的基础概念。 数据结构 # 每个文件实质上是一个有名字的字符序列,序列的内容为文件数据(file data),而序 ...

“结点”还是“节点”?

Apr 8, 2021
算法, 生活

“结点” 还是 “节点” ? # 刷题时,总会遇到“节点”和“结点”的词汇混用,非常困惑,查了一下,一般认为: 节点是一个实体,它具有处理的能力,比如网络上的一台计算机。 结点是一个交叉点、一个标记,算法中的点一般 ...

实现限流的几种方案

Apr 4, 2021
Go, 系统设计, 算法

限流是服务在高并发的情况下,通过限制处理请求的速率,以达到保证服务不过载的目的,实现高可用和稳定性的目标。限流的方案一般有计数法、滑动窗口、漏桶、令牌桶几种,其中各有各的特点,通常需要根据场景采用不同 ...

Go 程序是怎样跑起来的?

Mar 31, 2021
Go, 编译原理

Go 程序是怎么跑起来的?面对问题我第一反应是,Go 是静态编译型语言,和 C 语言一样,就是编译、链接那一套,尤其是最近对着 Go 的一些资料看感觉又学习了一遍编译原理。编译原理的内容本身就很深,本文仅以我暂时理解 ...

Go 语言的垃圾回收机制概览

Mar 22, 2021
Go, 内存管理

之前已经看过了 常见的垃圾回收算法,有了一定的基础,现在再来了解下 Go 语言的垃圾回收机制。 三色抽象 # Go 语言如今已经演变成增量式的垃圾回收策略,即不是一口气运行 GC,而是和 Mutator 交替运行的,因此不会长时间妨碍到 ...

Go 语言的内存管理机制概览

Mar 9, 2021
Go, 内存管理

程序中的数据和变量在运行时会被分配到程序所在的虚拟内存中,内存空间包含两个重要的区域:堆(heap)和栈(stack),函数调用的参数、返回值以及局部变量大都会被分配到栈上,这部分内存由编译器进行管理 ...

常见的垃圾回收算法

Feb 28, 2021
操作系统, 内存管理, 读书笔记

本来想直接看下 Go 的垃圾回收机制,但是发现自己现在对内存管理和垃圾回收的了解都比较少,所以只能先来研究下常见的垃圾回收算法了,本篇即是《垃圾回收的算法与实现》的学习笔记,目标是能够描述清楚各种 GC 算法的复 ...

Go 语言中的拷贝和传值

Feb 25, 2021
Go

同很多其他语言如 Python、JavaScript 一样,在 Go 中涉及到复制数据的场景也需要注意深拷贝和浅拷贝的问题。 深拷贝和浅拷贝 # Go 的数据类型可以分为值类型和引用类型两种。值类型的变量和变量的数据都是 ...


© 2012-2024 YINDONGLIANG