Time of Update: 2018-12-06
在Linux核心中,經常會看到do{}while(0)這樣的語句,許多人開始都會疑惑,認為do{}while(0)毫無意義,因為他只會執行一次,加不加do{}while(0)效果是完全一樣的,其實do{}while(0)主要用於宏定義中。這裡用一個簡單點的宏來示範:#define SAFE_FREE(p) do { free(p); p = NULL; } while(0)假設這裡去掉do...while(0),即定義SAFE_FREE為:#define SAFE_FREE(p) free(p)
Time of Update: 2018-12-06
一、vmlinuz vmlinuz是可引導的、壓縮的核心。“vm”代表“Virtual Memory”。Linux 支援虛擬內存,不像老的作業系統比如DOS有640KB記憶體的限制。Linux能夠使用硬碟空間作為虛擬記憶體,因此得名“vm”。vmlinuz是可執行檔Linux核心,它位於/boot/vmlinuz,它一般是一個軟連結,比中是vmlinuz-2.4.7-10的軟連結。 vmlinuz的建立有兩種方式。 一是編譯核心時通過“make zImage”建立,然後通過:“
Time of Update: 2018-12-06
1. 檔案描述符在核心中資料結構 在具體說dup/dup2之前, 我認為有必要先瞭解一下檔案描述符在核心中的形態。一個進程在此存在期間,會有一些檔案被開啟,從而會返回一些檔案描述符,從shell中運行一個進程,預設會有3個檔案描述符存在(0、1、2),
Time of Update: 2018-12-06
"每個任務(進程)有一個棧,在這個進程中每個函數被調用時分別從這個棧佔用一段地區,稱為幀(frame)。%esp寄存器指向當前整個棧的棧頂,%ebp指向當前幀的幀底。不是當前幀(調用者)的幀底都已經被壓棧。上一級調用者的幀底被壓入當前%ebp內容所指的地址,也就是當前幀的幀底位置儲存了上一級調用者的%ebp指標值(幀底),而每個%ebp的前一個單元存放的就是當前函數的返回地址(它是由調用者在call指令中入的棧),保證是在上一級幀的最後一個空間單元。這樣就可以根據當前%ebp的值回溯出整個任務的
Time of Update: 2018-12-06
很多文章都是講如何書寫正確的代碼,如何書寫高效的代碼,其實代碼中的錯誤、BUG才是真正應該正視的。非常感謝下面這位分享經驗的前輩!warning比error更重要!!!!引用——“只有你不給自己留退路,你才會真正關心代碼品質”1、錯誤必須正確分類網線斷掉、硬體不穩定等等都是正常情況,設計師必須預先考慮到這些,設定合理的處理/恢複邏輯。代碼中的邏輯錯誤與以上相同,在總體設計層面上也是正常情況,沒有為這些東西準備措施的就是麵條設計師。2、不同錯誤不同對待正常情況式的異常將納入系統異常流程,邏輯錯誤必
Time of Update: 2018-12-06
#include <iostream>#include <stdarg.h>const int N=5;using namespace std;void Stdarg(int a1,...){ va_list argp; int i; int ary[N]; va_start(argp,a1); ary[0]=a1; for(i=1;i< N;i++) ary[i]=va_arg(argp,int);
Time of Update: 2018-12-06
兩者主要在安全性上存在差別。函數名: fgets功 能: 從流中讀取一字串用 法: char *fgets(char *string, int n, FILE *stream);形參注釋:*string輸入資料的首地址;n-1:一次讀入資料區塊的長度,其預設值為1k,即1024;stream檔案指標序 例:#include <string.h>#include <stdio.h>int main(void){ FILE *stream; char string[]
Time of Update: 2018-12-06
標準庫<cstdlib>(被包含於<iostream>中)提供兩個協助產生偽隨機數的函數:函數一:int rand(void);從srand (seed)中指定的seed開始,返回一個[seed, RAND_MAX(0x7fff))間的隨機整數。函數二:void srand(unsigned seed);參數seed是rand()的種子,用來初始化rand()的起始值。可以認為rand()在每次被調用的時候,它會查看:1) 如果使用者在此之前調用過srand(seed)
Time of Update: 2018-12-06
同學參加了EMC的筆試回來,說了一個EMC的一個筆試題目,他沒有答上來,就問我。我感覺很有意思,就拿出來分析一下。======================================int main(int argc, char* argv[]){ fork(); fork() && fork() || fork(); fork();}不算main這個進程自身,到底建立了多少個進程啊?=====================================
Time of Update: 2018-12-06
among the rest 在其中bad sailor 容易暈船的人block-buster 風行的事物busy-body 愛管閑事的人compare notes 交換意見dry goods 穀物(英),紡織品(美)familiar talk 庸俗的談話go on strike 舉行罷工(而不是繼續罷工)go to bed 在報刊用語中為:付印house flag (商船上的)公司旗lazy Susan 旋轉餐桌land shark 向上岸的水手行騙的人merchant of death
Time of Update: 2018-12-06
本文轉自http://www.cnblogs.com/qianxudetianxia extjs的預設皮膚很好看,但是我們還可以變換樣式切換其他皮膚.1.直接添加其他css檔案換膚. 皮膚檔案:xtheme-olive.zip下載 把皮膚檔案解壓,把css檔案(如xtheme-olive.css)拷貝到extjs的resources目錄下css檔案夾裡面:解壓皮膚檔案,把裡面的相應的 image檔案夾下的目錄(比如olive)拷貝到extjs的resources目錄下images檔案夾下
Time of Update: 2018-12-06
od (octal dump)和 xd(hexdump)命令可以以十進位、八進位、十六進位和ASCII碼來顯示檔案或者流,它們對於訪問或可視地檢查檔案中不能直接顯示在終端上的字元很有用。 文法:od [選項] 檔案… 命令中各選項的含義:- A 指定地址基數,包括:d 十進位o 八進位(系統預設值)x 十六進位n 不列印位移值- t 指定資料的顯示格式,主要的參數有:c ASCII字元或反斜線序列d 有符號十進位數f 浮點數o 八進位(系統預設值為02)u 無符號十進位數x
Time of Update: 2018-12-06
1, EXT的form表單ajax提交(預設提交方式) 1. function login(item) { 2. 3. if (validatorForm()) { 4. // 登入時將登入按鈕設為disabled,防止重複提交 5. this.disabled = true; 6. 7. /
Time of Update: 2018-12-06
Ubuntu 9.10剛剛release,就有人在網上發表了貼子告訴大家在裝完這個作業系統後,還需要去安裝的一些開源免費軟體,相當豐富。不過,這個貼子的連結被 GFW幹掉了,所以,你需要使用Tor的支援,或是使用Google
Time of Update: 2018-12-06
"格式描述串"是由一系列的"格式轉換說明符號"組成,格式轉換說明符號的描述形式如下: % [+][-] 0 m[.n] [輸出精度] <形式字母> %c 字元 %d 十進位整數%e 浮點數,指數e的形式%s 字串 %E 浮點數,指數E的形式%u 無符號十進位整數%f 浮點數,小數點形式%g 輸出%f與%e較短者%o 無符號八進位整數%G 輸出%F與%E較短者%x 無符號十六進位整數,以0~f表示%X 無符號十六進位整數,以0~F表示%l
Time of Update: 2018-12-06
fgets讀到檔案最後一行的時候(返回不是NULL) ,feof測試為假,再fgets一次(返回為NULL),再feof測試為真。 feof是通過判斷read返回錯誤時,才判斷流已經到達結尾。 在對流操作的時候,應該判斷fgets()為NULL其實正確使用 feof 函數很容易,只要記住一個原則就是了:“先讀檔案後用 feof 判斷”。foef(stream)針對的是”流“,
Time of Update: 2018-12-06
你已經成為DBA一段時間了,你現在希望你的技術水平提高一階嗎?下一步該怎麼做?首先,往回看前面的部分,確認你已經完成了所有的步驟。徹底理解 SQL語言是十分重要的。理解關係型資料庫理論和掌握基本的資料庫管理工作也是非常重要的。到如今,你應該閱讀文檔和其他書籍到已經鬱悶了。假如沒有,那 麼你還沒準備好繼續深造,增長你的DBA的技術水平。假如你已經準備好繼續了,我已為你的繼續深造準備了一些方法。 步驟#1: 學習作業系統和你的伺服器硬體 -
Time of Update: 2018-12-06
核心代碼sch_fifo.c中有這麼一行代碼:CODE:u32 limit = sch->dev->tx_queue_len ? : 1;在另外一個地方,看到有朋友分析這段代碼時,提到了這個執行的結果是limit取sch->dev->tx_queue_len的值,如果該值小於1,則至少為1.我們常用的"? :"是三目運算子,這裡好像沒有“:”左邊沒有任何成員。寫了個測試程式,大致總結如下:(1)如果"?" 左邊就是數值的話,只要其不為0,limit就取它的值,否則為1;(
Time of Update: 2018-12-06
以前我一直以為G10的光學變焦和單反相機的變焦鏡頭一樣是無級的。後來在使用中我逐漸發現,G10的鏡頭的變焦並非如單反那樣是無級的,並非是可以停留在任意位置上的。於是我開始對鏡頭的光學變焦進行測試。每次盡量使用最小的變化量,結果發現鏡頭的變焦確實不是無級的,而是分為14級。除了這預先設好的14級外,使用者調不出其他的變焦倍數來。這14級分別是:1、6.1mm; 相當於35毫米相機的焦距是28mm2、6.785mm;
Time of Update: 2018-12-06
有一些常規選項還是要事先設定好的,我的如下:1、自動對焦框:自由移動;2、自動對焦點放大:關閉;3、伺服自動對焦:關閉,連拍、運動拍攝時開啟;4、自動對焦模式:單次自動對焦,連拍時用連續自動對焦;5、數位變焦:關閉;6、校正對比:關,留給後期了;7、重點測光AF區:自動對焦點;8、自動ISO位移:關閉,不然相機暗光時自動提高ISO噪點受不了;9、手動對焦點放大:關閉;10、安全手動對焦:關閉;11、自動對焦輔助光:關閉,暗光時開啟;12、查看資訊:詳細;13、自動指定類別:關閉;14、映像穩定器