02 Sep 2014
Brendan Gregg 在他的 Linux Performance Tools 中给出了分析 Linux 性能问题的工具集图并在上述链接中维持更新。
图中基本涵盖了常见问题的常用分析工具。与 IO 相关的性能分析由于明显的瓶颈点和各种复杂的关系(cache、buffer、io scheduler 等等)是各种数据处理类应用的重中之重。
Thomas Krenn Wiki 发布了基于3.17版内核的 Linux I/O Stack Diagram ,在进行 IO 性能分析时非常有参考价值。
11 Aug 2014
What’s BOM(Byte-Order Mark)
引自Wikipedia (中文版 ):
The byte order mark (BOM) is a Unicode character used to signal the endianness (byte order) of a text file or stream. It is encoded at U+FEFF byte order mark (BOM). BOM use is optional, and, if used, should appear at the start of the text stream. Beyond its specific use as a byte-order indicator, the BOM character may also indicate which of the several Unicode representations the text is encoded in.
[Wikipedia](http://en.wikipedia.org/wiki/Byte_order_mark)
常用编码中,有 BOM 标识的如下表:
Encoding
Representation
Bytes as CP1252 characters
Notes
UTF-8
EF BB BF

UTF-8 实际上不存在字节序 问题,因此通常不使用 BOM
UTF-16 (BE)
FE FF
þÿ
UTF-16 (LE)
FF FE
ÿþ
UTF-32 (BE)
00 00 FE FF
<00><00>þÿ
<00> refers to the ASCII null character
UTF-32 (LE)
FF FE 00 00
ÿþ<00><00>
<00> refers to the ASCII null character
GB18030
84 31 95 33
„1•3
GB18030 实际上不存在字节序 问题,因此通常不使用 BOM
其中:
UTF-16 和 UTF-32 的BOM 标识暂时没有发现无法正常处理的应用程序
GB18030 的 BOM 标识非常罕见,需要注意的是 iconv 和 libiconv 处理行为与 UTF-8 BOM 类似,请参考“ICONV PROBLEM ”
07 May 2014
由于许多环境使用GBK(Microsoft CP936,非GB13000.1)作为主要的汉字编码环境,并且GBK、GB18030在编码实现上的奇葩之处,造成GBK <-> UTF-8转换存在许多问题。
这里主要讨论以下几种:
哪些字符造成编码识别错误。
由于编码识别错误造成的无损转换:只是显示错误,不造成内容丢失。
由于编码识别错误造成的有损转换:显示错误,且内容丢失。
29 Dec 2010
dmesg 里报出来的最后一个 error 的意思是:
BIT位
0
1
0
no page found
protection fault
1
read
write
2
kernel
user-mode
3
NULL
fault was an instruction fetch
dmesg 的错误号就是这四个位的组合,例如:
segfault at 0000000000000010 rip 000000552aaaf8ac rsp 0000000041408a80 error 6
0
1
1
0
NULL
user-mode
write
no page found
是指用户空间写 page 时 page not found
02 May 2010
之前一直是使用 Dia 画流程图的,从功能性来说,跟 visio 应该差不多(好吧,我坦白我只看别人用过 visio )。但是画一张图的大部分时间都被用在调整组件的位置上,如果图片比较复杂的话,花费的时间会非常夸张。之前尝试过一段时间 TeX,觉得 WYTIWYG 的方式更适合一些,所以尝试使用 Graphviz。