Time of Update: 2018-12-07
1.strlen()用來計算指定的字串s的長度,不包括結束字元'\0'。strlen所作的僅僅是一個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體地區)開始掃描,直到碰到第一個字串結束符'\0'為止,然後返回計數器值,在程式運行時計算。原文:http://baike.baidu.com/view/736226.htm2.sizeof是運算子,可用於任何變數名、類型名或常量值,當用於變數名(不是數組名)或常量時,它不需要用圓括弧。它在編譯時間起作用,而不
Time of Update: 2018-12-07
欄位分隔字元 FS (field seperator) 是awk的內建變數,其預設值是空白及tab. awk每次切割欄位時都會先參考FS 的內容. 若把":"也當成分隔字元, 則awk 便能自動把小時數及分鐘數分隔成不同的欄位.故令FS = "[ \t:]+" (注: [ \t:]+ 為一Regular Expression ) Regular Expression 中使用中括弧 [ ... ] 表示一個字元集合,用以表示任意一個位於兩中括弧間的字元.故可用"[ \t:]"表示 一個 空白 ,
Time of Update: 2018-12-07
bash shell的命令分為兩類:外部命令和內部命令。外部命令是通過系統調用或獨立的程式實現的,如sed、awk等等。內部命令是由特殊的檔案格式(.def)所實現,如cd、history、exec等等。環境變數(傳給子進程的變數,遺傳性是本地變數和環境變數的根本區別)只能單向從父進程傳給子進程。不管子進程的環境變數如何變化,都不會影響父進程的環境變數。shell script:有兩種方法執行shell scripts,一種是新產生一個shell,然後執行相應的shell
Time of Update: 2018-12-07
刪除特殊大小的檔案1. 根據檔案的時間,建立人,大小等特徵,用find命令找到檔案find . -maxdepth 1 -type f -size +72019c -size -72021c 解釋: -maxdepth 1 搜尋深度為1 -type f 搜尋普通檔案 -size +72019c 檔案大於72019byte ;-size -72021c 檔案小於 72021byte2. 添加 -exec 選項find . -maxdepth 1 -type f -size +72019c
Time of Update: 2018-12-07
連接字串sprintf 的格式控制串中既然可以插入各種東西,並最終把它們“連成一串”,自然也就能夠連接字串,從而在許多場合可以替代strcat,但sprintf 能夠一次串連多個字串(自然也可以同時在它們中間插入別的內容,總之非常靈活)。比如:char* who = "I";char* whom = "CSDN";sprintf(s, "%s love %s.", who, whom); //產生:"I love CSDN. "strcat
Time of Update: 2018-12-07
hd: short int d: int ld: long int lld: long long intLinux基礎資料型別 (Elementary Data Type)大小——int,char,long int,long long int在Linux作業系統下使用GCC進行編程,目前一般處理器為32位字寬,下面是/usr/include/limit.h檔案對Linux下資料類型的限制及儲存位元組大小的說明。/* We don't have #include_next. Define
Time of Update: 2018-12-07
Linux通過一個叫做 task_statm 的函數來返回進程的記憶體使用量狀況int task_statm(struct mm_struct *mm, int *shared, int *text,int *data, int *resident){*shared = get_mm_counter(mm, file_rss);*text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK))>>
Time of Update: 2018-12-07
下面這個名單會因為 不同Unix的實現而發生變化,所以或許準確性有了水份。請注意子進程得到的是 這些東西的 拷貝,不是它們本身。由子進程自父進程繼承到:① 進程的資格(真實(real)/有效(effective)/已儲存(saved) 使用者號(UIDs)和組號(GIDs))② 環境(environment)③ 堆棧④ 記憶體⑤ 開啟檔案的描述符(注意對應的檔案的位置由父子進程共用, 這會引起含糊情況)⑥ 執行時關閉(close-on-exec) 標誌
Time of Update: 2018-12-07
1、0的原碼和補碼0可以是+0,也可以是-00的原碼為:10000(-0),00000(+0)+0的補碼和原碼相同,為00000-0的補碼是在-0的原碼(10000)的基礎上,符號位不變,其它位按位取反再在低位加1(11111+1=00000),進而得到-0的補碼00000所以補碼錶示0隻有一種情況00000。而原碼則表示了兩次,分別為10000和00000.2、127的原碼和反碼-127 11111111 原碼-127 10000001 補碼3、-128的原碼和補碼用10000000 表示-1
Time of Update: 2018-12-07
列印地址資訊有時偵錯工具時,我們可能想查看某些變數或者成員的地址,由於地址或者指標也不過是個32 位的數,你完全可以使用列印不帶正負號的整數的“%u”把他們列印出來:sprintf(s, "%u", &i);不過通常人們還是喜歡使用16 進位而不是10 進位來顯示一個地址:sprintf(s, "%08X", &i);然而,這些都是間接的方法,對於地址列印,sprintf 提供了專門的“%p”:sprintf(s, "%p",
Time of Update: 2018-12-07
這裡要注意一個符號擴充的問題:比如,假如我們想列印短整數(short)-1 的記憶體16 進位表示形式,在Win32 平台上,一個short 型佔2 個位元組,所以我們自然希望用4 個16 進位數字來列印它:short si = -1;sprintf(s, "%04X", si);產生“FFFFFFFF”,怎麼回事?因為spritnf 是個變參函數,除了前面兩個參數之外,後面的參數都不是型別安全的,函數更沒有辦法僅僅通過一個“%X”就能得知當初函數調用前參數壓棧時被壓進來的到底是個4
Time of Update: 2018-12-07
HTTP基於請求與響應模式的、無狀態的、應用程式層的協議,常基於TCP的串連方式。HTTP允許傳輸任意類型的資料對象,HTTP協議是無狀態協議。無狀態是指協議對於交易處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次串連傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。在用戶端發出HTTP請求並受到伺服器端響應後,串連就會斷開,下次的訪問與前一次的訪問無關,因此如果需要維護用戶端的資訊,必須在伺服器端維持狀態資料。一、HTTP
Time of Update: 2018-12-07
Linux系統出現了效能問題,一般我們可以通過top、iostat、free、vmstat等命令來查看初步定位問題。其中iostat可以給我們提供豐富的IO狀態資料。$iostat -d -k 1 10參數 -d 表示,顯示裝置(磁碟)使用狀態;-k某些使用block為單位的列強制使用Kilobytes為單位;1 10表示,資料顯示每隔1秒重新整理一次,共顯示10次。tps:該裝置每秒的傳輸次數(Indicate the number of transfers per second that
Time of Update: 2018-12-07
munmapmunmap(解除記憶體映射)相關函數 mmap表標頭檔 #include<unistd.h>#include<sys/mman.h>定義函數 int munmap(void *start,size_t length);函數說明 munmap()用來取消參數start所指的映射記憶體起始地址,參數length則是欲取消的記憶體大小。當進程結束或利用exec相關函數來執行其他程式時,映射記憶體會自動解除,但關閉對應的檔案描述詞時不會解除映射。傳回值
Time of Update: 2018-12-07
VIRT:1、進程“需要的”虛擬記憶體大小,包括進程使用的庫、代碼、資料,以及malloc、new分配的堆空間和分配的棧空間等;2、假如進程新申請10MB的記憶體,但實際只使用了1MB,那麼它會增長10MB,而不是實際的1MB使用量。3、VIRT = SWAP + RESRES:1、進程當前使用的記憶體大小,包括使用中的malloc、new分配的堆空間和分配的棧空間,但不包括swap out量;2、包含其他進程的共用;3、如果申請10MB的記憶體,實際使用1MB,它只增長1MB,與VIRT相反;
Time of Update: 2018-12-07
sprintf 是個變參函數,使用時經常出問題,而且只要出問題通常就是能導致程式崩潰的記憶體訪問錯誤,但好在由sprintf 誤用導致的問題雖然嚴重,卻很容易找出,無非就是那麼幾種情況,通常用眼睛再把出錯的代碼多看幾眼就看出來了。sprintf_s()是sprintf()的安全版本,通過指定緩衝區長度來避免sprintf()存在的溢出風險 。這個安全版本的原型是:int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [
Time of Update: 2018-12-07
1、用一個已存在的對象去構造一個不存在的對象(構造之前不存在),就是拷貝構造。用一個已存在的對象去覆蓋另一個已存在的對象,就是賦值運算。String(const char *str = NULL);// 普通建構函式String(const String &other); // 拷貝建構函式拷貝建構函式將在對象傳值,傳回值,拋出異常中被調用。2、“引用”不可能是NULL,而“指標”可以為NULL。注意函數strlen返回的是有效字串長度,不包含結束符‘\0’。函數strcpy則連‘\0’
Time of Update: 2018-12-07
反向 Proxy伺服器的工作原理最近有打算研讀nginx原始碼,看到網上介紹nginx可以作為一個反向 Proxy伺服器完成負載平衡。所以搜羅了一些關於反向 Proxy伺服器的內容,整理綜合。一 概述反向 Proxy(Reverse Proxy)方式是指以Proxy 伺服器來接受Internet上的串連請求,然後將請求轉寄給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求串連的用戶端,此時Proxy 伺服器對外就表現為一個伺服器。通常的Proxy
Time of Update: 2018-12-07
查看記憶體使用量情況1.top“2 users”為當前登入到系統的使用者,更確切的說是登入到使用者的終端數 -- 同一個使用者同一時間對系統多個終端的串連將被視為多個使用者串連到系統,這裡的使用者數也將表現為終端的數目;“load average”為當前系統負載的平均值,後面的三個值分別為1分鐘前、5分鐘前、15分鐘前進程的平均數,一般的可以認為這個數值超過 CPU 數目時,CPU
Time of Update: 2018-12-07
int轉換成float1、取整數部分,電腦計算的時候有浮點副處理器,硬體可以轉,如果沒有浮點副處理器那就要軟體類比。[1]2、C語言中,不管運算式的值怎樣,系統都自動將其轉為賦值運算子左部變數的類型。[2]3、由int轉為float時會存在精度丟失的情況,因為int的有效為31位,而float小數有效位為23位。double形小數有效位為52位,所以平時int轉成浮點數要轉成double型。[3]原文[1]