Guan 发布的文章

vim 的 molokai 主题太刺眼


在 vim 下表示最喜欢 molokai 主题,但不知道大家有没有觉得 molokai 主题下,白色和黄色都有些刺眼,乍一看会很不舒畅。经过多次尝试,终于找到与原主题相似,但没那么刺眼的替代色。


什么是上下文切换


上下文

首先,需要讲清楚什么是上下文。

每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,这就涉及到 CPU 寄存器程序计数器(PC)

  • CPU 寄存器是 CPU 内置的容量小、但速度极快的内存;
  • 程序计数器会存储 CPU 正在执行的指令位置,或者即将执行的指令位置。

这两个是 CPU 运行任何任务前都必须依赖的环境,因此叫做 CPU 上下文


如何查看系统的上下文切换


vmstat

vmstat:主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断次数。

# 1 表示 每 1 秒 输出一次数据
->:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 5787772   2108 3448464    0    0   530  1766  699  975 14  9 73  5  0
 0  0      0 5787648   2108 3448464    0    0     0     0  167  136  0  0 100  0  0
 0  0      0 5787624   2108 3448464    0    0     0     0  196  167  0  0 100  0  0
  • r(Running or Runnable):就绪队列的长度,即,正在运行和等待 CPU 的进程数;
  • b(Blocked):处于不可中断睡眠状态的进程数;
  • cs(context switch):每秒上下文切换次数;
  • in(interrupt):每秒中断次数。


Python 导包技巧


起因

起初学 Go 语言的时候,对它的导包规则感到痛苦,——“那么麻烦干嘛呢!”。但最近接到一些新功能开发任务,于是 “啪嗒啪嗒” 写代码,结果更痛苦了。公司项目目录规划打一开始就不合理,以此为基础的 “繁荣发展” 导致更多混乱与麻烦。于是马上翻开《Python cookbook》解惑,有些心得,这里记之。


C语言-预处理(2)


起因

之前对预处理、宏定义、条件编译,以及文件包含做了个小小总结。涉及而又常用的预处理相关知识还有一些,这次仍然粗略记下。

预处理操作符

C 语言中有两个预处理操作符:#(字符串化运算符)、##(记号粘贴运算符),都可以在 #define 中使用。