Guan 发布的文章

C语言中的静/动态库文件


起因

之前一直对 .a .so 文件的存在犯迷糊。现在想来,之所以当时会有不解,是因为从没用 C 语言写过项目,顶多只是语法的测试,以及一些算法实现。现在略微搞明白些了,于是有了这篇总结。


当新浪防盗链时,我在想些什么?


正文

有一天我打开 CSDN,发现放在页面左边的赞赏图不能显示了。几次刷新浏览器,无果。但我想,别看 5G 现在宣传得沸沸扬扬,网络不稳定仍是寻常事。也就没放心上。后来渐渐地,开始听到有人说新浪图床加了防盗链。于是赶忙打开自己的网站确认,可一切正常如初呀。旋即便想,大概哪儿有闲人“寻欢作乐”地随便说说,就像杨幂刘恺威隔几个月就要“被离婚”一次。三人成虎,消息在圈子里迅速流传,若不是看到图片在网页上安之若素,恐怕我也信以为真。


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):每秒中断次数。