Monthly Archives: March 2021

Ctrl + c , Ctrl + v 如何工作

做为一个胶水程序员, Ctrl+C 和Ctrl+V是必备的技能之一.

从VS Code复制东西到word和VS复制到word, 怎么VS里面有些高亮的东西没了, 怎么掉色了? 复制到OneNote更是掉色的彻底, 字体高亮都没了,全是黑色字体了.

做为一个胶水程序员, Google是必备的技能之一.

以下为Windows上复制和粘贴的一些记录:

  1. Copy and paste本质上是IPC, 也就是是进程间通信, 比如前面的数据从VS到了Word
  2. 当然, 这个由操作系统调度, 内容在RAM中, 文件/目录的话应该是它的地址, Windows10云粘贴板的话数据要到云端了
  3. 粘贴板的内容有格式, 并且有多种格式并且复制时操作系统会生成多种格式的复制供粘贴选择, 比如从浏览器复制了一个带链接的文本, 到NotePad++里面就是纯文本,到OneNote里面就是带链接的
  4. 粘贴到target的内容的样式, 其实是类似”协商”的结果, target可以按照优先级选择要粘贴的格式

通过以上可以看到复制粘贴也是有些复杂的, 至少比想象的复杂的多..

测量

在玩<文明5>的时候, 了解到了一句来自大物理学家-伽利略·伽利莱(Galileo Galilei)的话:

Measure what is measurable, and make measurable what is not so

多么有雄心的话! 可以想象, 在他生活的时代有太多未解之谜, 在解开谜题的时候他发现很多东西没有办法用数字来表达.

到了现代, 地球上大部分东西都被研究到了, 几乎多有可见的东西可以从多个维度准确的表达:

声音: 音波,音色音速等
颜色: 光谱
物体: 硬度,密度,摩擦系数,外形等

不过还是有些无法准备测量,比如味觉,感情等比较主观的. 不过人们还是在想办法把他们从某个维度数值化, 比如网上一道菜的评分.

量纲

要使一个对象可以被测量, 得有量纲.

计算机世界

计算机世界的测量就简单的多了, 相对来说不像地球这么复杂. 在这个由0和1组成的世界中, 电子在各个元器件中流转, 通过电压表示1或者0. 从数据的角度, 人们发明了字节这个量纲, 表示一个对象的大小. 与物体移动类似, 数据也需要移动,于是有了带宽. 数据需要被CPU处理, CPU通过连续的脉冲信号触发逻辑运算, 于是有了时钟频率的单位.

代码世界

往上面去, 就到了代码的世界, 人们通常用世界空间复杂度来表示其效率, 如O(n^2)表示对于一个规模为100的问题, 需要100*100 次运算或者空间. 在健壮性方便, 可以通过UT的通过率表示.

系统世界

代码组成了系统, 系统根据其类似也有一些表示, 比如GUI相关的, 可以有帧数来测量是否流程, website通过TTFB表示服务器响应速度, QPS, TPS等表示系统处理请求的能力等.

(未完)