同一編譯單元內部重名符號在編譯期便被阻止,而不同編譯單元之間重名符號要到鏈接期才會被發現。
編譯單元:#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); View Code輸出結果是: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,繁簡都有,後者只是簡體字。