杂记
同一编译单元内部重名符号在编译期便被阻止,而不同编译单元之间重名符号要到链接期才会被发现。
编译单元:#include 完头文件的内容之后(即将头文件内容粘贴到cpp中之后)的cpp文件就是编译单元,简单说便是经过预处理的cpp文件。
条件编译是为了防止同一个.c文件中包含多个相同的.h文件。
C++ primer P58:头文件中一般包含类的定义,extern变量和函数声明。
CAS:将某处内存地址值(1个字节)与期望值比较,若相等,则将该内存地址处值替换为新值。
命名空间的修改:可以多次声明和定义同一命名空间,每次给这一命名空间添加新成员,编译器会自动合并这些同名命名空间。
Linux关闭防火墙:
1.重启后生效:
开启:chkconfig iptables on
关闭:chkconfig iptables off
2.即时生效:
开启:service iptables start
关闭:service iptables stop
telnet 远程登录
FTP 文件传输协议
SMTP 简单邮件传送协议
SNMP 简单网络管理协议
ARP 地址解析协议
RARP 逆地址解析协议
A 0.0.0.0
B 128.0.0.0
C 192.0.0.0
D 224.0.0.0
E 240.0.0.0
gdb 调试
set print repeats
设置打印数组长度上限值,如果数组中连续相同的成员数量超过这个上限,gdb会打印字符串“<repeats n times>”,而不是重复打印这些相同的成员。
show print repeats
显示打印重复相同成员上限数量。
apache:侧重http server
tomcat:侧重servlet引擎,若以standalone方式运行,功能上与Apache等效,支持jsp,但对静态网页不太理想。
Apache是web服务器,tomcat是应用(Java)服务器,只是一个servlet容器,可认为是Apache扩展,但可以独立于Apache运行,换句话说,Apache是辆卡车,可以装一些诸如html的东西,但不能装水,装水要有容器,该容器可以不放在卡车上。
指针类型的强制转换只是将地址中取出的数据解释为不同类型。
int temp = 55; char *p = (char*)&temp; printf("p=%c\n",*p);
输出结果是:p=7。 (7的ASCII码为55)
windows下转换成功的utf-8格式txt可能为由玻镁板格式,会引起解析错误,没法去掉该bomb头,改为无bomb的utf-8格式文件。
检测utf-8中BOM命令:
grep -I -r -l $'\xEF\xBB\xBF' /path
如果将中文直接写到源文件里,编译时,就会以当时文件编码规范来为该字符串常量编码,程序打出来的是以当时文件编码格式决定的。
一般来说,包含中文的文件被file判断成ISO-8859就说明该文件是gbk编码,因为ISO-8859所有系列都没有一个是支持中文的编码流。
Unicode是字符集,utf-8是编码方式。
utf-8在有大量英文少量中文的文件里远比gbk要省空间,比如各种程序代码。
GBK兼容GB2312,繁简都有,后者只是简体字。