內(nèi)存的分配方式
分配方式有三種,請記住,說不定那天去面試的時候就會有人問你這問題
1、 靜態(tài)存儲區(qū),是在程序編譯時就已經(jīng)分配好的,在整個運行期間都存在,如全局變量、常量。
2、 棧上分配,函數(shù)內(nèi)的局部變量就是從這分配的,但分配的內(nèi)存容易有限。
3、 堆上分配,也稱動態(tài)分配,如我們用new,malloc分配內(nèi)存,用delete,free來釋放的內(nèi)存。
內(nèi)存分配的注意事項
用new或malloc分配內(nèi)存時,必須要對此指針賦初值。
用delete 或free釋放內(nèi)存后,必須要將指針指向NULL
不能修改指向常量的指針數(shù)據(jù)
黑盒測試
黑盒測試主要是為了發(fā)現(xiàn)以下幾類錯誤:
1、是否有不正確或遺漏的功能?
2、在接口上,輸入是否能正確的接受?能否輸出正確的結(jié)果?
3、是否有數(shù)據(jù)結(jié)構錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?
4、性能上是否能夠滿足要求?
5、是否有初始化或終止性錯誤?
白盒測試
白盒測試主要是想對程序模塊進行如下檢查:
1、對程序模塊的所有獨立的執(zhí)行路徑至少測試一遍。
2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。
3、在循環(huán)的邊界和運行的界限內(nèi)執(zhí)行循環(huán)體。
4、測試內(nèi)部數(shù)據(jù)結(jié)構的有效性,等等。
什么是模式?
模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結(jié)歸納到理論高度,那就是模式。
Alexander給出的經(jīng)典定義是:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復相同的工作。
模式有不同的領域,建筑領域有建筑模式,軟件設計領域也有設計模式。當一個領域逐漸成熟的時候,自然會出現(xiàn)很多模式。
什么是框架?
框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。
Turbine:
主要應用方面:WEB層。
主要應用技術:servlet等
出處:http://jakarta.apache.org/turbine/index.html
簡述:這是APACHE的開源項目。基于SERVLET。據(jù)說速度比較快,基于service(pluggable implementation可插拔的執(zhí)行組件)的方式提供各種服務。
免費。
心跳包
為了減少服務端的工作壓力可以用以下方案: C定時向S發(fā)送心跳包(30秒/次) S收到C的心跳包后將包到來的時間記錄到數(shù)據(jù)庫中去.(并不須回C我收到你的心跳包) 如果S想檢測該C是不是仍在線,可取出最后一次心跳時間然后與當前時間進行比較如果大于30秒,則認為該C已經(jīng)斷線了,否則該C仍在線. 這種方案適合于客戶端意外斷線,或卦了.通常情況下客戶正常下線是要發(fā)一個包告訴服務端我已經(jīng)下線了.
一般是用來判斷對方(設備,進程或其它網(wǎng)元)是否正常動行,一般采用定時發(fā)送簡單的通訊包,如果在指定時間段內(nèi)未收到對方響應,則判斷對方已經(jīng)當?shù)簟S糜跈z測TCP的異常斷開。
基本原因是服務器端不能有效的判斷客戶端是否在線也就是說,服務器無法區(qū)分客戶端是長時間在空閑,還是已經(jīng)掉線的情況.所謂的心跳包就是客戶端定時發(fā)送簡單的信息給服務器端告訴它我還在而已。
代碼就是每隔幾分鐘發(fā)送一個固定信息給服務端,服務端收到后回復一個固定信息
如果服務端幾分鐘內(nèi)沒有收到客戶端信息則視客戶端斷開。比如有些通信軟件長時間不使用,要想知道它的狀態(tài)是在線還是離線就需要心跳包,定時發(fā)包收包。
發(fā)包方:可以是客戶也可以是服務端,看哪邊實現(xiàn)方便合理。一般是客戶端。服務器也可以定時輪詢發(fā)心跳下去。
一般來說,出于效率的考慮,是由客戶端主動向服務器端發(fā)包,而不是相反。
stdlib.h里面定義了五種類型、一些宏和通用工具函數(shù)。
類型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函數(shù)如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
下面列出了一些常見的光柵操作代碼:
BLACKNESS:表示使用與物理調(diào)色板索引0相關的色彩來填充目標矩形區(qū)域,(對缺省的物理調(diào)色板而言,該顏色為黑色)。
DSTINVERT:表示使目標矩形區(qū)域顏色取反。
MERGECOPY:表示使用布爾類型的AND(與)操作符將源矩形區(qū)域的顏色與特定模式組合一起。
MERGEPAINT:通過使用布爾類型的OR(或)操作符將反向的源矩形區(qū)域的顏色與目標矩形區(qū)域的顏色合并。
NOTSRCCOPY:將源矩形區(qū)域顏色取反,再拷貝到目標矩形區(qū)域。
NOTSRCERASE:使用布爾類型的OR(或)操作符組合源和目標矩形區(qū)域的顏色值,然后將怕顏色取反。
PATCOPY:將特定的模式拷貝到位圖上。
PATPAINT:通過使用布爾OR(或)操作符將源矩形區(qū)域取反后的顏色值與特定模式的顏色合并。然后使用OR(或)操作符將該操作的結(jié)果與目標矩形區(qū)域內(nèi)的顏色合并。
PATINVERT:通過使用XOR(異或)操作符將目標矩形區(qū)域內(nèi)的顏色與特定模式的顏色合并。
SRCAND:通過使用AND(與)操作符將來源和目標矩形區(qū)域內(nèi)的顏色合并。
SRCCOPY:將源矩形區(qū)域直接拷貝到目標矩形區(qū)域。
SRCERASE:通過使用AND(與)操作符將目標矩形區(qū)域顏色取反后與源矩形區(qū)域的顏色值合并。
SRCCINVERT:通過使用布爾型的XOR(異或)操作符將源和目標矩形區(qū)域的顏色合并。
SRCPAINT:通過使用布爾型的OR(或)操作符將源和目標矩形區(qū)域的顏色合并。
WHITENESS:使用與物理調(diào)色板中索引1有關的顏色填充目標矩形區(qū)域。(對于缺省物理調(diào)色板來說,這個顏色就是白色)。
·列出命題公式真假值的表。通常以 1表示真,0 表示假。命題公式的取值由組成命題公式的命題變元的取值和命題聯(lián)結(jié)詞決定,命題聯(lián)結(jié)詞的真值表給出了真假值的算法: 即:當P為假時,P為真;當P為真時,P為假 真值表是在邏輯中使用的一類數(shù)學表,用來確定一個表達式是否為真或有效。 (表達式可以是論證;就是說,表達式的合取,它的每個結(jié)合項(conjunct)都是最后要做的結(jié)論的一個前提。) 真值表被用來計算真值泛函表達式的值(就是說是一個判定過程)。真值泛函表達式要么是原子(就是說是命題變量(或占位符)或命題函數(shù) - 比如 Px)或建造自使用邏輯運算符(就是說 ∧ (AND),∨ (OR),¬ (NOT) - 例如 Fx & Gx)的原子公式。