0%

个人博客自 2013 年开机至今,已有四年余时间。自 2015 年 4 月 10 日引入 Bruce 开发的不蒜子,博客开始记录全站和单页的访问。

时至今日,个人博客总访问量已逾一百万,撒花庆祝!

百万访问纪念

此篇基本上是译文,原文是 Victor Eijkhout 所著的《TeX by Topic》的第一章。译文项目参见:CTeX-org/tex-by-topic-cn
转载请保留本段文字,尊重原作者和译者版权。
由于原著使用 GFDL,故而本文也被传染地同样使用 GFDL 许可,而不是本站默认的 BY-NC-SA 4.0 许可。

TeX 处理输入的过程可分为 4 个层次。你可以认为 TeX 处理器(也称 TeX 引擎)有4 个独立的单元,每个单元接收前序步骤的输出,并将输出作为后续单元的输入。第一阶段的输入是 .tex 文件,最后一个阶段的输出是 .dvi 文件。

阅读全文 »

前作提到为了防止中间人攻击,SSH 会要求 client 用户确认 server 的密钥指纹。这个设计很有用,但是如果在可靠环境里有大量机器组成的集群,而我们需要自动化地进行 SSH 访问和相关部署,交叉地去确认密钥指纹是很大的工作量。

前作提到了 ssh-keygen 命令,用以在机器上生成密钥。此处我们需要用到 ssh-keyscan 命令,批量获取集群上机器的密钥指纹。

阅读全文 »

一直听说 C++ 继承体系中对虚函数调用的动态绑定是基于虚函数表和虚表指针的,但是因为一些原因,我一直没有去搞清楚。今天想起这件事情,就去翻看了 C++ 的标准文档。然而,标准文档只提及了动态绑定的各种规则,却并没有提及任何有关虚函数表或虚表指针的内容。显然,我看的不会是假的标准文档,那么只可能是动态绑定是由编译器实现决定的了。

本想具体详细地写一写虚函数表相关的问题,但已入深夜,就简单记录一份实验的代码吧。详细的内容待后续再讨论。

阅读全文 »

最近在讨论多线程编程中的一个可能的 false sharing 问题时,有人提出加 volatile 可能可以解决问题。这种错误的认识荼毒多年,促使我写下这篇文章。

阅读全文 »